Changeset View
Changeset View
Standalone View
Standalone View
tools/bluezapi2qt/XmlGenerator.cpp
Show First 20 Lines • Show All 73 Lines • ▼ Show 20 Line(s) | 37 | { | |||
---|---|---|---|---|---|
74 | return true; | 74 | return true; | ||
75 | } | 75 | } | ||
76 | 76 | | |||
77 | void XmlGenerator::writeHeader(QTextStream &stream) | 77 | void XmlGenerator::writeHeader(QTextStream &stream) | ||
78 | { | 78 | { | ||
79 | stream << "<?xml version=\"1.0\"?>\n"; | 79 | stream << "<?xml version=\"1.0\"?>\n"; | ||
80 | stream << "<!DOCTYPE node PUBLIC \"-//freedesktop//DTD D-BUS Object Introspection 1.0//EN\" \"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd\">\n"; | 80 | stream << "<!DOCTYPE node PUBLIC \"-//freedesktop//DTD D-BUS Object Introspection 1.0//EN\" \"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd\">\n"; | ||
81 | stream << "<node>\n"; | 81 | stream << "<node>\n"; | ||
82 | stream.flush(); | | |||
83 | } | 82 | } | ||
84 | 83 | | |||
85 | void XmlGenerator::writeFooter(QTextStream &stream) | 84 | void XmlGenerator::writeFooter(QTextStream &stream) | ||
86 | { | 85 | { | ||
87 | stream << "</node>\n"; | 86 | stream << "</node>\n"; | ||
88 | stream.flush(); | | |||
89 | } | 87 | } | ||
90 | 88 | | |||
91 | void XmlGenerator::writeInterface(QTextStream &stream, const QString &name) | 89 | void XmlGenerator::writeInterface(QTextStream &stream, const QString &name) | ||
92 | { | 90 | { | ||
93 | stream << " <interface name=\"" << name << "\">\n"; | 91 | stream << " <interface name=\"" << name << "\">\n"; | ||
94 | stream.flush(); | | |||
95 | } | 92 | } | ||
96 | 93 | | |||
97 | void XmlGenerator::closeInterface(QTextStream &stream) | 94 | void XmlGenerator::closeInterface(QTextStream &stream) | ||
98 | { | 95 | { | ||
99 | stream << " </interface>\n"; | 96 | stream << " </interface>\n"; | ||
100 | stream.flush(); | | |||
101 | } | 97 | } | ||
102 | 98 | | |||
103 | bool XmlGenerator::writeMethod(QTextStream &stream, const Method &method) | 99 | bool XmlGenerator::writeMethod(QTextStream &stream, const Method &method) | ||
104 | { | 100 | { | ||
105 | stream << " <method name=\"" << method.name() << "\""; | 101 | stream << " <method name=\"" << method.name() << "\""; | ||
106 | 102 | | |||
107 | // Some beautification | 103 | // Some beautification | ||
108 | if (method.inParameters().empty() && method.outParameters().empty()) { | 104 | if (method.inParameters().empty() && method.outParameters().empty()) { | ||
109 | stream << "/>\n"; | 105 | stream << "/>\n"; | ||
110 | stream.flush(); | | |||
111 | return true; | 106 | return true; | ||
112 | } | 107 | } | ||
113 | 108 | | |||
114 | stream << ">\n"; | 109 | stream << ">\n"; | ||
115 | 110 | | |||
116 | for (const auto ¶m : method.inParameters()) { | 111 | for (const auto ¶m : method.inParameters()) { | ||
117 | if (!writeArg(stream, param, QStringLiteral("in"))) { | 112 | if (!writeArg(stream, param, QStringLiteral("in"))) { | ||
118 | return false; | 113 | return false; | ||
119 | } | 114 | } | ||
120 | } | 115 | } | ||
121 | for (const auto ¶m : method.outParameters()) { | 116 | for (const auto ¶m : method.outParameters()) { | ||
122 | if (!writeArg(stream, param, QStringLiteral("out"))) { | 117 | if (!writeArg(stream, param, QStringLiteral("out"))) { | ||
123 | return false; | 118 | return false; | ||
124 | } | 119 | } | ||
125 | } | 120 | } | ||
126 | for (int i = 0; i < method.inParameters().size(); ++i) { | 121 | for (int i = 0; i < method.inParameters().size(); ++i) { | ||
127 | writeAnnotation(stream, method.inParameters().at(i), QStringLiteral("In"), i); | 122 | writeAnnotation(stream, method.inParameters().at(i), QStringLiteral("In"), i); | ||
128 | } | 123 | } | ||
129 | for (int i = 0; i < method.outParameters().size(); ++i) { | 124 | for (int i = 0; i < method.outParameters().size(); ++i) { | ||
130 | writeAnnotation(stream, method.outParameters().at(i), QStringLiteral("Out"), i); | 125 | writeAnnotation(stream, method.outParameters().at(i), QStringLiteral("Out"), i); | ||
131 | } | 126 | } | ||
132 | 127 | | |||
133 | stream << " </method>\n"; | 128 | stream << " </method>\n"; | ||
134 | stream.flush(); | | |||
135 | 129 | | |||
136 | return true; | 130 | return true; | ||
137 | } | 131 | } | ||
138 | 132 | | |||
139 | bool XmlGenerator::writeArg(QTextStream &stream, const Parameter ¶m, const QString &dir) | 133 | bool XmlGenerator::writeArg(QTextStream &stream, const Parameter ¶m, const QString &dir) | ||
140 | { | 134 | { | ||
141 | auto dbusType = annotateType(AnnotationType::Bluez, AnnotationType::Dbus, param.type()); | 135 | auto dbusType = annotateType(AnnotationType::Bluez, AnnotationType::Dbus, param.type()); | ||
142 | if (dbusType.isEmpty()) { | 136 | if (dbusType.isEmpty()) { | ||
143 | return false; | 137 | return false; | ||
144 | } | 138 | } | ||
145 | stream << " <arg name=\"" << param.name() << "\" type=\"" << dbusType << | 139 | stream << " <arg name=\"" << param.name() << "\" type=\"" << dbusType << | ||
146 | "\" direction=\"" << dir << "\"/>\n"; | 140 | "\" direction=\"" << dir << "\"/>\n"; | ||
147 | stream.flush(); | | |||
148 | 141 | | |||
149 | return true; | 142 | return true; | ||
150 | } | 143 | } | ||
151 | 144 | | |||
152 | void XmlGenerator::writeAnnotation(QTextStream &stream, const Parameter ¶m, const QString &dir, int i) | 145 | void XmlGenerator::writeAnnotation(QTextStream &stream, const Parameter ¶m, const QString &dir, int i) | ||
153 | { | 146 | { | ||
154 | auto qtType = annotateType(AnnotationType::Bluez, AnnotationType::Qt, param.type()); | 147 | auto qtType = annotateType(AnnotationType::Bluez, AnnotationType::Qt, param.type()); | ||
155 | if (qtType.isEmpty()) { | 148 | if (qtType.isEmpty()) { | ||
156 | return; | 149 | return; | ||
157 | } | 150 | } | ||
158 | stream << " <annotation name=\"org.qtproject.QtDBus.QtTypeName." << dir << | 151 | stream << " <annotation name=\"org.qtproject.QtDBus.QtTypeName." << dir << | ||
159 | QString::number(i) << "\" value=\"" << qtType << "\"/>\n"; | 152 | QString::number(i) << "\" value=\"" << qtType << "\"/>\n"; | ||
160 | stream.flush(); | | |||
161 | 153 | | |||
162 | return; | 154 | return; | ||
163 | } | 155 | } |