summaryrefslogtreecommitdiff
path: root/doc/dbusxml.doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc/dbusxml.doc')
-rw-r--r--doc/dbusxml.doc149
1 files changed, 149 insertions, 0 deletions
diff --git a/doc/dbusxml.doc b/doc/dbusxml.doc
new file mode 100644
index 0000000..e487126
--- /dev/null
+++ b/doc/dbusxml.doc
@@ -0,0 +1,149 @@
+/*! \page dbusxml DBus XML output format
+
+\addindex dbusxml
+
+<p>Doxygen can generate documentation for DBus XML files. This way
+DBus interfaces can be annotated with doxygen style comments, and
+without writing custom XML parsers. Doxygen extracts its text from
+all XML comments starting with '*' or '!'. An additional '<' can be
+used to assign the documentation string to the previous entity instead
+of the one following the comment.
+
+Note that before the parsing of DBus XML file works one has to
+assign the .xml extension to the DBus XML parser using the
+following configuration option:
+
+\verbatim
+EXTENSION_MAPPING = xml=dbusxml
+\endverbatim
+
+\section dbusxml_supported Supported XML elements and attributes
+
+<p>The following DBus XML elemets can be annotated:
+
+<ul>
+<li><b>interface</b>
+
+<li><b>method</b> or <b>signal</b>
+
+<li><b>arg</b>
+
+<li><b>property</b>
+
+</ul>
+
+Additional elements are supported. These are available once
+the xmlns "http://psiamp.org/dtd/doxygen_dbusxml.dtd" is
+available.
+
+<ul>
+<li><b>namespace</b>: This can be used to group other more of the
+additional elemets. This element requires a <b>name</b> attribute.
+
+<li><b>enum</b> is used to define enums. <b>value</b> element is
+ then used to define the individual values in the enum. This element
+ requires the <b>name</b> and <b>type</b> attributes. A
+ optional <b>named-type</b> attribute is allowed, referrencing typed
+ previously defined by one of the additional elements. A enum name
+ can be used anywhere a type is required using the <b>named-type</b>
+ attribute.
+
+<li><b>flagset</b> is used to define sets of flags. Required and
+ optional attributes are identical to the ones used by <b>enum</b>.
+ While <b>enum</b>s assume the values to be consecutive, while
+ a <b>flagset</b> is values suitable for flags. A flagset name
+ can be used anywhere a type is required using the <b>named-type</b>
+ attribute.
+
+<li><b>struct</b> is used to define structures. A <b>name</b>
+ attribute is required.
+
+<li><b>member</b> is used to define members of <b>structs</b>. It
+ is valid inside <b>struct</b> elements. This
+ element requires <b>name</b> and <b>type</b> attributes. In
+ addition to (or even instead of) the <b>type</b> attribute a
+ <b>named-type</b> attribute may be used to reference types defined
+ by <b>enum</b>, <b>flagset</b> or <b>struct</b>.
+
+\section dbusxml_example Example
+
+<pre>
+<?xml version="1.0" ?>
+<!-- Comment -->
+<!--*< File comment -->
+<node name="/SomeNode" xmlns:dx="http://psiamp.org/dtd/doxygen_dbusxml.dtd">
+ <!--* test struct outside a namespace and interface -->
+ <dx:struct name="StructOutsideNamespace">
+ <!--* member 1 -->
+ <dx:member name="member1" type="s"/>
+ <!--* complex member 1 -->
+ <dx:member name="complexMember1" type="(ssu)"/>
+ </dx:struct>
+
+ <!--* Test flag set -->
+ <dx:flagset name="flagset">
+ <!--* Flag 1 of flagset. -->
+ <dx:value name="FLAG1"/>
+ </dx:flagset>
+
+ <!--* namespace comment -->
+ <dx:namespace name="SomeNamespace">
+ <!--* struct inside a namespace -->
+ <dx:struct name="StructInNamespace">
+ <!--* member 2 -->
+ <dx:member name="member2" type="s"/>
+ </dx:struct>
+ </dx:namespace>
+ <!--* Documentation on the interface -->
+ <interface name="nl.stack.doxygen.test.interface">
+ <!--* Test Enum documentation -->
+ <dx:enum name="TestEnum">
+ <!--* key 1 with value 13 -->
+ <dx:value name="KEY1" value="13"/>
+ <!--* key 2 without a value -->
+ <dx:value name="KEY2"/>
+ </dx:enum>
+
+ <!--* struct inside a interface -->
+ <dx:struct name="StructInInterface">
+ <!--* member 3 -->
+ <dx:member name="member3" type="s"/>
+ <!--* Struct in a struct -->
+ <dx:struct name="StructInAStruct">
+ <!--* member4 -->
+ <dx:member name="member4" type="s"/>
+ </dx:struct>
+ <!--* struct member -->
+ <dx:member name="structMembor" type="(s)" named-type="StructInAStruct"/>
+ </dx:struct>
+ <!--* Document method
+
+ Some extended documentation for the method.
+
+ @param[in] input blah.
+ @param[out] output blub
+ -->
+ <method name="method">
+ <arg direction="in" name="input" type="(s(s))" named-type="::nl::stack::doxygen::test::interface::StructInInterface"/>
+ <arg direction="out" type="v" name="output"/>
+ </method>
+
+ <signal name="signal">
+ <!--*< Documentation for signal.
+
+ @param parameter some parameter.
+ -->
+ <arg name="parameter" type="s"/>
+ </signal>
+
+ <!--* property documentation -->
+ <property name="property" type="s" access="readwrite"/>
+
+ <!--* property documentation read-only -->
+ <property name="propertyRead" type="s" access="read"/>
+ <!--* property documentation write-only -->
+ <property name="propertyWrite" type="s" access="write"/>
+ </interface>
+</node>
+</pre>
+*/