1 /*! \page dbusxml DBus XML output format
5 <p>Doxygen can generate documentation for DBus XML files. This way
6 DBus interfaces can be annotated with doxygen style comments, and
7 without writing custom XML parsers. Doxygen extracts its text from
8 all XML comments starting with '*' or '!'. An additional '<' can be
9 used to assign the documentation string to the previous entity instead
10 of the one following the comment.
12 Note that before the parsing of DBus XML file works one has to
13 assign the .xml extension to the DBus XML parser using the
14 following configuration option:
17 EXTENSION_MAPPING = xml=dbusxml
20 \section dbusxml_supported Supported XML elements and attributes
22 <p>The following DBus XML elemets can be annotated:
27 <li><b>method</b> or <b>signal</b>
35 Additional elements are supported. These are available once
36 the xmlns "http://psiamp.org/dtd/doxygen_dbusxml.dtd" is
40 <li><b>namespace</b>: This can be used to group other more of the
41 additional elemets. This element requires a <b>name</b> attribute.
43 <li><b>enum</b> is used to define enums. <b>value</b> element is
44 then used to define the individual values in the enum. This element
45 requires the <b>name</b> and <b>type</b> attributes. A
46 optional <b>named-type</b> attribute is allowed, referrencing typed
47 previously defined by one of the additional elements. A enum name
48 can be used anywhere a type is required using the <b>named-type</b>
51 <li><b>flagset</b> is used to define sets of flags. Required and
52 optional attributes are identical to the ones used by <b>enum</b>.
53 While <b>enum</b>s assume the values to be consecutive, while
54 a <b>flagset</b> is values suitable for flags. A flagset name
55 can be used anywhere a type is required using the <b>named-type</b>
58 <li><b>struct</b> is used to define structures. A <b>name</b>
59 attribute is required.
61 <li><b>member</b> is used to define members of <b>structs</b>. It
62 is valid inside <b>struct</b> elements. This
63 element requires <b>name</b> and <b>type</b> attributes. In
64 addition to (or even instead of) the <b>type</b> attribute a
65 <b>named-type</b> attribute may be used to reference types defined
66 by <b>enum</b>, <b>flagset</b> or <b>struct</b>.
68 \section dbusxml_example Example
71 <?xml version="1.0" ?>
73 <!--*< File comment -->
74 <node name="/SomeNode" xmlns:dx="http://psiamp.org/dtd/doxygen_dbusxml.dtd">
75 <!--* test struct outside a namespace and interface -->
76 <dx:struct name="StructOutsideNamespace">
78 <dx:member name="member1" type="s"/>
79 <!--* complex member 1 -->
80 <dx:member name="complexMember1" type="(ssu)"/>
83 <!--* Test flag set -->
84 <dx:flagset name="flagset">
85 <!--* Flag 1 of flagset. -->
86 <dx:value name="FLAG1"/>
89 <!--* namespace comment -->
90 <dx:namespace name="SomeNamespace">
91 <!--* struct inside a namespace -->
92 <dx:struct name="StructInNamespace">
94 <dx:member name="member2" type="s"/>
97 <!--* Documentation on the interface -->
98 <interface name="nl.stack.doxygen.test.interface">
99 <!--* Test Enum documentation -->
100 <dx:enum name="TestEnum">
101 <!--* key 1 with value 13 -->
102 <dx:value name="KEY1" value="13"/>
103 <!--* key 2 without a value -->
104 <dx:value name="KEY2"/>
107 <!--* struct inside a interface -->
108 <dx:struct name="StructInInterface">
110 <dx:member name="member3" type="s"/>
111 <!--* Struct in a struct -->
112 <dx:struct name="StructInAStruct">
114 <dx:member name="member4" type="s"/>
116 <!--* struct member -->
117 <dx:member name="structMembor" type="(s)" named-type="StructInAStruct"/>
119 <!--* Document method
121 Some extended documentation for the method.
123 @param[in] input blah.
124 @param[out] output blub
126 <method name="method">
127 <arg direction="in" name="input" type="(s(s))" named-type="::nl::stack::doxygen::test::interface::StructInInterface"/>
128 <arg direction="out" type="v" name="output"/>
131 <signal name="signal">
132 <!--*< Documentation for signal.
134 @param parameter some parameter.
136 <arg name="parameter" type="s"/>
139 <!--* property documentation -->
140 <property name="property" type="s" access="readwrite"/>
142 <!--* property documentation read-only -->
143 <property name="propertyRead" type="s" access="read"/>
144 <!--* property documentation write-only -->
145 <property name="propertyWrite" type="s" access="write"/>