some formating
This commit is contained in:
parent
25a2ef65af
commit
7a8c64c2a6
1 changed files with 88 additions and 88 deletions
|
@ -40,10 +40,10 @@ extern const char *dbus_includes;
|
||||||
*/
|
*/
|
||||||
void generate_adaptor(Xml::Document &doc, const char *filename)
|
void generate_adaptor(Xml::Document &doc, const char *filename)
|
||||||
{
|
{
|
||||||
ostringstream body;
|
ostringstream body;
|
||||||
ostringstream head;
|
ostringstream head;
|
||||||
vector <string> include_vector;
|
vector <string> include_vector;
|
||||||
|
|
||||||
head << header;
|
head << header;
|
||||||
string filestring = filename;
|
string filestring = filename;
|
||||||
underscorize(filestring);
|
underscorize(filestring);
|
||||||
|
@ -276,7 +276,7 @@ void generate_adaptor(Xml::Document &doc, const char *filename)
|
||||||
Xml::Nodes args_out = args.select("direction","out");
|
Xml::Nodes args_out = args.select("direction","out");
|
||||||
Xml::Nodes annotations = args["annotation"];
|
Xml::Nodes annotations = args["annotation"];
|
||||||
Xml::Nodes annotations_object = annotations.select("name","org.freedesktop.DBus.Object");
|
Xml::Nodes annotations_object = annotations.select("name","org.freedesktop.DBus.Object");
|
||||||
string arg_object;
|
string arg_object;
|
||||||
|
|
||||||
if (annotations_object.size() > 0)
|
if (annotations_object.size() > 0)
|
||||||
{
|
{
|
||||||
|
@ -285,55 +285,55 @@ void generate_adaptor(Xml::Document &doc, const char *filename)
|
||||||
|
|
||||||
body << tab << "virtual ";
|
body << tab << "virtual ";
|
||||||
|
|
||||||
// return type is 'void' if none or multible return values
|
// return type is 'void' if none or multible return values
|
||||||
if (args_out.size() == 0 || args_out.size() > 1)
|
if (args_out.size() == 0 || args_out.size() > 1)
|
||||||
{
|
{
|
||||||
body << "void ";
|
body << "void ";
|
||||||
}
|
}
|
||||||
else if (args_out.size() == 1)
|
else if (args_out.size() == 1)
|
||||||
{
|
{
|
||||||
// generate basic or object return type
|
// generate basic or object return type
|
||||||
if (arg_object.length())
|
if (arg_object.length())
|
||||||
{
|
{
|
||||||
body << arg_object << " ";
|
body << arg_object << " ";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
body << signature_to_type(args_out.front()->get("type")) << " ";
|
body << signature_to_type(args_out.front()->get("type")) << " ";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// generate the method name
|
// generate the method name
|
||||||
body << method.get("name") << "(";
|
body << method.get("name") << "(";
|
||||||
|
|
||||||
// generate the methods 'in' variables
|
// generate the methods 'in' variables
|
||||||
unsigned int i = 0;
|
unsigned int i = 0;
|
||||||
for (Xml::Nodes::iterator ai = args_in.begin(); ai != args_in.end(); ++ai, ++i)
|
for (Xml::Nodes::iterator ai = args_in.begin(); ai != args_in.end(); ++ai, ++i)
|
||||||
{
|
{
|
||||||
Xml::Node &arg = **ai;
|
Xml::Node &arg = **ai;
|
||||||
Xml::Nodes annotations = arg["annotation"];
|
Xml::Nodes annotations = arg["annotation"];
|
||||||
Xml::Nodes annotations_object = annotations.select("name","org.freedesktop.DBus.Object");
|
Xml::Nodes annotations_object = annotations.select("name","org.freedesktop.DBus.Object");
|
||||||
string arg_name = arg.get("name");
|
string arg_name = arg.get("name");
|
||||||
string arg_object;
|
string arg_object;
|
||||||
|
|
||||||
if (annotations_object.size() > 0)
|
if (annotations_object.size() > 0)
|
||||||
{
|
{
|
||||||
arg_object = annotations_object.front()->get("value");
|
arg_object = annotations_object.front()->get("value");
|
||||||
}
|
}
|
||||||
|
|
||||||
// generate basic signature only if no object name available...
|
// generate basic signature only if no object name available...
|
||||||
if (!arg_object.length())
|
if (!arg_object.length())
|
||||||
{
|
{
|
||||||
body << "const " << signature_to_type(arg.get("type")) << "& ";
|
body << "const " << signature_to_type(arg.get("type")) << "& ";
|
||||||
}
|
}
|
||||||
// ...or generate object style if available
|
// ...or generate object style if available
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
body << "const " << arg_object << "& ";
|
body << "const " << arg_object << "& ";
|
||||||
|
|
||||||
// store a object name to later generate header includes
|
// store a object name to later generate header includes
|
||||||
include_vector.push_back (arg_object);
|
include_vector.push_back (arg_object);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (arg_name.length())
|
if (arg_name.length())
|
||||||
body << arg_name;
|
body << arg_name;
|
||||||
|
@ -411,20 +411,20 @@ void generate_adaptor(Xml::Document &doc, const char *filename)
|
||||||
arg_object = annotations_object.front()->get("value");
|
arg_object = annotations_object.front()->get("value");
|
||||||
}
|
}
|
||||||
|
|
||||||
// generate basic signature only if no object name available...
|
// generate basic signature only if no object name available...
|
||||||
if (!arg_object.length())
|
if (!arg_object.length())
|
||||||
{
|
{
|
||||||
body << "const " << signature_to_type(arg.get("type")) << "& arg" << i+1;
|
body << "const " << signature_to_type(arg.get("type")) << "& arg" << i+1;
|
||||||
}
|
}
|
||||||
// ...or generate object style if available
|
// ...or generate object style if available
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
body << "const " << arg_object << "& arg" << i+1;
|
body << "const " << arg_object << "& arg" << i+1;
|
||||||
|
|
||||||
// store a object name to later generate header includes
|
// store a object name to later generate header includes
|
||||||
include_vector.push_back (arg_object);
|
include_vector.push_back (arg_object);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (i+1 != args.size())
|
if (i+1 != args.size())
|
||||||
body << ", ";
|
body << ", ";
|
||||||
}
|
}
|
||||||
|
@ -433,7 +433,7 @@ void generate_adaptor(Xml::Document &doc, const char *filename)
|
||||||
<< tab << "{" << endl
|
<< tab << "{" << endl
|
||||||
<< tab << tab << "::DBus::SignalMessage sig(\"" << signal.get("name") <<"\");" << endl;
|
<< tab << tab << "::DBus::SignalMessage sig(\"" << signal.get("name") <<"\");" << endl;
|
||||||
|
|
||||||
// generate the signal body
|
// generate the signal body
|
||||||
if (args.size() > 0)
|
if (args.size() > 0)
|
||||||
{
|
{
|
||||||
body << tab << tab << "::DBus::MessageIter wi = sig.writer();" << endl;
|
body << tab << tab << "::DBus::MessageIter wi = sig.writer();" << endl;
|
||||||
|
@ -494,54 +494,54 @@ void generate_adaptor(Xml::Document &doc, const char *filename)
|
||||||
for (Xml::Nodes::iterator ai = args_in.begin(); ai != args_in.end(); ++ai, ++i)
|
for (Xml::Nodes::iterator ai = args_in.begin(); ai != args_in.end(); ++ai, ++i)
|
||||||
{
|
{
|
||||||
Xml::Node &arg = **ai;
|
Xml::Node &arg = **ai;
|
||||||
|
|
||||||
body << tab << tab << signature_to_type(arg.get("type")) << " argin" << i << ";" << " ";
|
body << tab << tab << signature_to_type(arg.get("type")) << " argin" << i << ";" << " ";
|
||||||
body << "ri >> argin" << i << ";" << endl;
|
body << "ri >> argin" << i << ";" << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
// generate the 'in' object variables
|
// generate the 'in' object variables
|
||||||
i = 1;
|
i = 1;
|
||||||
for (Xml::Nodes::iterator ai = args_in.begin(); ai != args_in.end(); ++ai, ++i)
|
for (Xml::Nodes::iterator ai = args_in.begin(); ai != args_in.end(); ++ai, ++i)
|
||||||
{
|
{
|
||||||
Xml::Node &arg = **ai;
|
Xml::Node &arg = **ai;
|
||||||
Xml::Nodes annotations = arg["annotation"];
|
Xml::Nodes annotations = arg["annotation"];
|
||||||
Xml::Nodes annotations_object = annotations.select("name","org.freedesktop.DBus.Object");
|
Xml::Nodes annotations_object = annotations.select("name","org.freedesktop.DBus.Object");
|
||||||
string arg_object;
|
string arg_object;
|
||||||
|
|
||||||
if (annotations_object.size() > 0)
|
if (annotations_object.size() > 0)
|
||||||
{
|
{
|
||||||
arg_object = annotations_object.front()->get("value");
|
arg_object = annotations_object.front()->get("value");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (arg_object.length())
|
if (arg_object.length())
|
||||||
{
|
{
|
||||||
body << tab << tab << arg_object << " _argin" << i << ";";
|
body << tab << tab << arg_object << " _argin" << i << ";";
|
||||||
body << " " << "_argin" << i << " << " << "argin" << i << ";" << endl;
|
body << " " << "_argin" << i << " << " << "argin" << i << ";" << endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// generate 'out' variables
|
// generate 'out' variables
|
||||||
if (args_out.size() > 0)
|
if (args_out.size() > 0)
|
||||||
{
|
{
|
||||||
unsigned int i = 1;
|
unsigned int i = 1;
|
||||||
for (Xml::Nodes::iterator ao = args_out.begin(); ao != args_out.end(); ++ao, ++i)
|
for (Xml::Nodes::iterator ao = args_out.begin(); ao != args_out.end(); ++ao, ++i)
|
||||||
{
|
{
|
||||||
Xml::Node &arg = **ao;
|
Xml::Node &arg = **ao;
|
||||||
|
|
||||||
body << tab << tab << signature_to_type(arg.get("type")) << " argout" << i;
|
body << tab << tab << signature_to_type(arg.get("type")) << " argout" << i;
|
||||||
|
|
||||||
if (args_out.size() == 1) // a single 'out' parameter will be assigned
|
if (args_out.size() == 1) // a single 'out' parameter will be assigned
|
||||||
{
|
{
|
||||||
body << " = ";
|
body << " = ";
|
||||||
}
|
}
|
||||||
else // multible 'out' parameters will be handled as parameters below
|
else // multible 'out' parameters will be handled as parameters below
|
||||||
{
|
{
|
||||||
body << ";" << endl;
|
body << ";" << endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// generate 'out' object variables
|
// generate 'out' object variables
|
||||||
if (args_out.size() > 0)
|
if (args_out.size() > 0)
|
||||||
{
|
{
|
||||||
unsigned int i = 1;
|
unsigned int i = 1;
|
||||||
|
@ -557,11 +557,11 @@ void generate_adaptor(Xml::Document &doc, const char *filename)
|
||||||
arg_object = annotations_object.front()->get("value");
|
arg_object = annotations_object.front()->get("value");
|
||||||
}
|
}
|
||||||
|
|
||||||
// generate object types
|
// generate object types
|
||||||
if (arg_object.length())
|
if (arg_object.length())
|
||||||
{
|
{
|
||||||
body << tab << tab << arg_object << " _argout" << i << ";" << endl;
|
body << tab << tab << arg_object << " _argout" << i << ";" << endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -694,7 +694,7 @@ void generate_adaptor(Xml::Document &doc, const char *filename)
|
||||||
}
|
}
|
||||||
|
|
||||||
body << "#endif //" << cond_comp << endl;
|
body << "#endif //" << cond_comp << endl;
|
||||||
|
|
||||||
// remove all duplicates in the header include vector
|
// remove all duplicates in the header include vector
|
||||||
vector<string>::const_iterator vec_end_it = unique (include_vector.begin (), include_vector.end ());
|
vector<string>::const_iterator vec_end_it = unique (include_vector.begin (), include_vector.end ());
|
||||||
|
|
||||||
|
@ -715,8 +715,8 @@ void generate_adaptor(Xml::Document &doc, const char *filename)
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
file << head.str ();
|
file << head.str ();
|
||||||
file << body.str ();
|
file << body.str ();
|
||||||
|
|
||||||
file.close();
|
file.close();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue