- NO FUNCTIONAL CODE CHANGES!!!!

- changed code formating from tabs to spaces and others
- used astyle with this option:
  --style=ansi --indent=spaces=2 -M --pad-oper --unpad-paren --pad-header --align-pointer=name --lineend=linux
This commit is contained in:
Andreas Volz 2011-11-28 12:44:11 +01:00
parent b100e9d32a
commit 1c8e43e6d6
76 changed files with 5691 additions and 5492 deletions

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -42,136 +42,140 @@ const char *dbus_includes = "\n\
#include <cassert>\n\
";
void underscorize(string &str)
{
for (unsigned int i = 0; i < str.length(); ++i)
{
if (!isalpha(str[i]) && !isdigit(str[i])) str[i] = '_';
}
}
void underscorize(string &str)
{
for (unsigned int i = 0; i < str.length(); ++i)
{
if (!isalpha(str[i]) && !isdigit(str[i])) str[i] = '_';
}
}
string stub_name(string name)
{
underscorize(name);
string stub_name(string name)
{
underscorize(name);
return "_" + name + "_stub";
}
return "_" + name + "_stub";
}
const char *atomic_type_to_string(char t)
{
static struct { char type; const char *name; } atos[] =
{
{ 'y', "uint8_t" },
{ 'b', "bool" },
{ 'n', "int16_t" },
{ 'q', "uint16_t" },
{ 'i', "int32_t" },
{ 'u', "uint32_t" },
{ 'x', "int64_t" },
{ 't', "uint64_t" },
{ 'd', "double" },
{ 's', "std::string" },
{ 'o', "::DBus::Path" },
{ 'g', "::DBus::Signature" },
{ 'v', "::DBus::Variant" },
{ '\0', "" }
};
int i;
const char *atomic_type_to_string(char t)
{
static struct
{
char type;
const char *name;
} atos[] =
{
{ 'y', "uint8_t" },
{ 'b', "bool" },
{ 'n', "int16_t" },
{ 'q', "uint16_t" },
{ 'i', "int32_t" },
{ 'u', "uint32_t" },
{ 'x', "int64_t" },
{ 't', "uint64_t" },
{ 'd', "double" },
{ 's', "std::string" },
{ 'o', "::DBus::Path" },
{ 'g', "::DBus::Signature" },
{ 'v', "::DBus::Variant" },
{ '\0', "" }
};
int i;
for (i = 0; atos[i].type; ++i)
{
if (atos[i].type == t) break;
}
return atos[i].name;
}
for (i = 0; atos[i].type; ++i)
{
if (atos[i].type == t) break;
}
return atos[i].name;
}
static void _parse_signature(const string &signature, string &type, unsigned int &i, bool only_once = false)
{
/*cout << "signature: " << signature << endl;
cout << "type: " << type << endl;
cout << "i: " << i << ", signature[i]: " << signature[i] << endl;*/
for (; i < signature.length(); ++i)
{
switch (signature[i])
{
case 'a':
{
switch (signature[++i])
{
case '{':
{
type += "std::map< ";
++i;
_parse_signature(signature, type, i);
type += " >";
break;
}
case '(':
{
type += "std::vector< ::DBus::Struct< ";
++i;
_parse_signature(signature, type, i);
type += " > >";
static void _parse_signature(const string &signature, string &type, unsigned int &i, bool only_once = false)
{
/*cout << "signature: " << signature << endl;
cout << "type: " << type << endl;
cout << "i: " << i << ", signature[i]: " << signature[i] << endl;*/
break;
}
default:
{
type += "std::vector< ";
_parse_signature(signature, type, i, true);
for (; i < signature.length(); ++i)
{
switch (signature[i])
{
case 'a':
{
switch (signature[++i])
{
case '{':
{
type += "std::map< ";
++i;
_parse_signature(signature, type, i);
type += " >";
type += " >";
break;
}
}
break;
}
case '(':
{
type += "::DBus::Struct< ";
++i;
break;
}
case '(':
{
type += "std::vector< ::DBus::Struct< ";
++i;
_parse_signature(signature, type, i);
type += " > >";
_parse_signature(signature, type, i);
break;
}
default:
{
type += "std::vector< ";
_parse_signature(signature, type, i, true);
type += " >";
break;
}
case ')':
case '}':
{
return;
}
default:
{
const char *atom = atomic_type_to_string(signature[i]);
if (!atom)
{
cerr << "invalid signature" << endl;
exit(-1);
}
type += atom;
type += " >";
break;
}
}
break;
}
}
break;
}
case '(':
{
type += "::DBus::Struct< ";
++i;
if (only_once)
return;
_parse_signature(signature, type, i);
if (i+1 < signature.length() && signature[i+1] != ')' && signature[i+1] != '}')
{
type += ", ";
}
}
}
type += " >";
break;
}
case ')':
case '}':
{
return;
}
default:
{
const char *atom = atomic_type_to_string(signature[i]);
if (!atom)
{
cerr << "invalid signature" << endl;
exit(-1);
}
type += atom;
string signature_to_type(const string &signature)
{
string type;
unsigned int i = 0;
_parse_signature(signature, type, i);
return type;
}
break;
}
}
if (only_once)
return;
if (i + 1 < signature.length() && signature[i + 1] != ')' && signature[i + 1] != '}')
{
type += ", ";
}
}
}
string signature_to_type(const string &signature)
{
string type;
unsigned int i = 0;
_parse_signature(signature, type, i);
return type;
}

View file

@ -35,7 +35,7 @@ void underscorize(std::string &str);
/// create std::string from any number
template <typename T>
std::string toString (const T &thing, int w = 0, int p = 0)
std::string toString(const T &thing, int w = 0, int p = 0)
{
std::ostringstream os;
os << std::setw(w) << std::setprecision(p) << thing;

View file

@ -34,46 +34,46 @@ static char *service;
void niam(int sig)
{
DBus::Connection conn = systembus ? DBus::Connection::SystemBus() : DBus::Connection::SessionBus();
DBus::Connection conn = systembus ? DBus::Connection::SystemBus() : DBus::Connection::SessionBus();
IntrospectedObject io(conn, path, service);
IntrospectedObject io(conn, path, service);
std::cout << io.Introspect();
std::cout << io.Introspect();
dispatcher.leave();
dispatcher.leave();
}
int main(int argc, char ** argv)
int main(int argc, char **argv)
{
signal(SIGTERM, niam);
signal(SIGINT, niam);
signal(SIGALRM, niam);
signal(SIGTERM, niam);
signal(SIGINT, niam);
signal(SIGALRM, niam);
if (argc == 1)
{
std::cerr << std::endl << "Usage: " << argv[0] << " [--system] <object_path> [<destination>]" << std::endl << std::endl;
}
else
{
if (strcmp(argv[1], "--system"))
{
systembus = false;
path = argv[1];
service = argc > 2 ? argv[2] : 0;
}
else
{
systembus = true;
path = argv[2];
service = argc > 3 ? argv[3] : 0;
}
if (argc == 1)
{
std::cerr << std::endl << "Usage: " << argv[0] << " [--system] <object_path> [<destination>]" << std::endl << std::endl;
}
else
{
if (strcmp(argv[1], "--system"))
{
systembus = false;
path = argv[1];
service = argc > 2 ? argv[2] : 0;
}
else
{
systembus = true;
path = argv[2];
service = argc > 3 ? argv[3] : 0;
}
DBus::default_dispatcher = &dispatcher;
DBus::default_dispatcher = &dispatcher;
alarm(1);
alarm(1);
dispatcher.enter();
}
dispatcher.enter();
}
return 0;
return 0;
}

View file

@ -36,9 +36,9 @@ class IntrospectedObject : public DBus::IntrospectableProxy, public DBus::Object
{
public:
IntrospectedObject(DBus::Connection &conn, const char *path, const char *service)
: DBus::ObjectProxy(conn, path, service)
{}
IntrospectedObject(DBus::Connection &conn, const char *path, const char *service)
: DBus::ObjectProxy(conn, path, service)
{}
};
#endif//__DBUSXX_TOOLS_INTROSPECT_H

View file

@ -28,16 +28,16 @@
std::istream &operator >> (std::istream &in, DBus::Xml::Document &doc)
{
std::stringbuf xmlbuf;
in.get(xmlbuf, '\0');
doc.from_xml(xmlbuf.str());
std::stringbuf xmlbuf;
in.get(xmlbuf, '\0');
doc.from_xml(xmlbuf.str());
return in;
return in;
}
std::ostream &operator << (std::ostream &out, const DBus::Xml::Document &doc)
{
return out << doc.to_xml();
return out << doc.to_xml();
}
using namespace DBus;
@ -45,209 +45,209 @@ using namespace DBus::Xml;
Error::Error(const char *error, int line, int column)
{
std::ostringstream estream;
std::ostringstream estream;
estream << "line " << line << ", column " << column << ": " << error;
estream << "line " << line << ", column " << column << ": " << error;
_error = estream.str();
_error = estream.str();
}
Node::Node(const char *n, const char ** a)
: name(n)
Node::Node(const char *n, const char **a)
: name(n)
{
if (a)
for (int i = 0; a[i]; i += 2)
{
_attrs[a[i]] = a[i+1];
if (a)
for (int i = 0; a[i]; i += 2)
{
_attrs[a[i]] = a[i + 1];
//debug_log("xml:\t%s = %s", a[i], a[i+1]);
}
//debug_log("xml:\t%s = %s", a[i], a[i+1]);
}
}
Nodes Nodes::operator[](const std::string &key)
{
Nodes result;
Nodes result;
for (iterator i = begin(); i != end(); ++i)
{
Nodes part = (**i)[key];
for (iterator i = begin(); i != end(); ++i)
{
Nodes part = (**i)[key];
result.insert(result.end(), part.begin(), part.end());
}
return result;
result.insert(result.end(), part.begin(), part.end());
}
return result;
}
Nodes Nodes::select(const std::string &attr, const std::string &value)
{
Nodes result;
Nodes result;
for (iterator i = begin(); i != end(); ++i)
{
if ((*i)->get(attr) == value)
result.insert(result.end(), *i);
}
return result;
for (iterator i = begin(); i != end(); ++i)
{
if ((*i)->get(attr) == value)
result.insert(result.end(), *i);
}
return result;
}
Nodes Node::operator[](const std::string &key)
{
Nodes result;
Nodes result;
if (key.length() == 0) return result;
if (key.length() == 0) return result;
for (Children::iterator i = children.begin(); i != children.end(); ++i)
{
if (i->name == key)
result.push_back(&(*i));
}
return result;
for (Children::iterator i = children.begin(); i != children.end(); ++i)
{
if (i->name == key)
result.push_back(&(*i));
}
return result;
}
std::string Node::get(const std::string &attribute)
{
if (_attrs.find(attribute) != _attrs.end())
return _attrs[attribute];
else
return "";
if (_attrs.find(attribute) != _attrs.end())
return _attrs[attribute];
else
return "";
}
void Node::set(const std::string &attribute, std::string value)
{
if (value.length())
_attrs[attribute] = value;
else
_attrs.erase(value);
if (value.length())
_attrs[attribute] = value;
else
_attrs.erase(value);
}
std::string Node::to_xml() const
{
std::string xml;
int depth = 0;
std::string xml;
int depth = 0;
_raw_xml(xml, depth);
_raw_xml(xml, depth);
return xml;
return xml;
}
void Node::_raw_xml(std::string &xml, int &depth) const
{
xml.append(depth *2, ' ');
xml.append("<"+name);
xml.append(depth * 2, ' ');
xml.append("<" + name);
for (Attributes::const_iterator i = _attrs.begin(); i != _attrs.end(); ++i)
{
xml.append(" "+i->first+"=\""+i->second+"\"");
}
for (Attributes::const_iterator i = _attrs.begin(); i != _attrs.end(); ++i)
{
xml.append(" " + i->first + "=\"" + i->second + "\"");
}
if (cdata.length() == 0 && children.size() == 0)
{
xml.append("/>\n");
}
else
{
xml.append(">");
if (cdata.length())
{
xml.append(cdata);
}
if (cdata.length() == 0 && children.size() == 0)
{
xml.append("/>\n");
}
else
{
xml.append(">");
if (children.size())
{
xml.append("\n");
depth++;
if (cdata.length())
{
xml.append(cdata);
}
for (Children::const_iterator i = children.begin(); i != children.end(); ++i)
{
i->_raw_xml(xml, depth);
}
if (children.size())
{
xml.append("\n");
depth++;
depth--;
xml.append(depth *2, ' ');
}
xml.append("</"+name+">\n");
}
for (Children::const_iterator i = children.begin(); i != children.end(); ++i)
{
i->_raw_xml(xml, depth);
}
depth--;
xml.append(depth * 2, ' ');
}
xml.append("</" + name + ">\n");
}
}
Document::Document()
: root(0), _depth(0)
: root(0), _depth(0)
{
}
Document::Document(const std::string &xml)
: root(0), _depth(0)
: root(0), _depth(0)
{
from_xml(xml);
from_xml(xml);
}
Document::~Document()
{
delete root;
delete root;
}
struct Document::Expat
{
static void start_doctype_decl_handler(
void *data, const XML_Char *name, const XML_Char *sysid, const XML_Char *pubid, int has_internal_subset
);
static void end_doctype_decl_handler(void *data);
static void start_element_handler(void *data, const XML_Char *name, const XML_Char **atts);
static void character_data_handler(void *data, const XML_Char *chars, int len);
static void end_element_handler(void *data, const XML_Char *name);
static void start_doctype_decl_handler(
void *data, const XML_Char *name, const XML_Char *sysid, const XML_Char *pubid, int has_internal_subset
);
static void end_doctype_decl_handler(void *data);
static void start_element_handler(void *data, const XML_Char *name, const XML_Char **atts);
static void character_data_handler(void *data, const XML_Char *chars, int len);
static void end_element_handler(void *data, const XML_Char *name);
};
void Document::from_xml(const std::string &xml)
{
_depth = 0;
delete root;
root = 0;
_depth = 0;
delete root;
root = 0;
XML_Parser parser = XML_ParserCreate("UTF-8");
XML_Parser parser = XML_ParserCreate("UTF-8");
XML_SetUserData(parser, this);
XML_SetUserData(parser, this);
XML_SetDoctypeDeclHandler(
parser,
Document::Expat::start_doctype_decl_handler,
Document::Expat::end_doctype_decl_handler
);
XML_SetDoctypeDeclHandler(
parser,
Document::Expat::start_doctype_decl_handler,
Document::Expat::end_doctype_decl_handler
);
XML_SetElementHandler(
parser,
Document::Expat::start_element_handler,
Document::Expat::end_element_handler
);
XML_SetElementHandler(
parser,
Document::Expat::start_element_handler,
Document::Expat::end_element_handler
);
XML_SetCharacterDataHandler(
parser,
Document::Expat::character_data_handler
);
XML_SetCharacterDataHandler(
parser,
Document::Expat::character_data_handler
);
XML_Status status = XML_Parse(parser, xml.c_str(), xml.length(), true);
XML_Status status = XML_Parse(parser, xml.c_str(), xml.length(), true);
if (status == XML_STATUS_ERROR)
{
const char *error = XML_ErrorString(XML_GetErrorCode(parser));
int line = XML_GetCurrentLineNumber(parser);
int column = XML_GetCurrentColumnNumber(parser);
if (status == XML_STATUS_ERROR)
{
const char *error = XML_ErrorString(XML_GetErrorCode(parser));
int line = XML_GetCurrentLineNumber(parser);
int column = XML_GetCurrentColumnNumber(parser);
XML_ParserFree(parser);
XML_ParserFree(parser);
throw Error(error, line, column);
}
else
{
XML_ParserFree(parser);
}
throw Error(error, line, column);
}
else
{
XML_ParserFree(parser);
}
}
std::string Document::to_xml() const
{
return root->to_xml();
return root->to_xml();
}
void Document::Expat::start_doctype_decl_handler(
void *data, const XML_Char *name, const XML_Char *sysid, const XML_Char *pubid, int has_internal_subset
void *data, const XML_Char *name, const XML_Char *sysid, const XML_Char *pubid, int has_internal_subset
)
{
}
@ -258,56 +258,56 @@ void Document::Expat::end_doctype_decl_handler(void *data)
void Document::Expat::start_element_handler(void *data, const XML_Char *name, const XML_Char **atts)
{
Document *doc = (Document *)data;
Document *doc = (Document *)data;
//debug_log("xml:%d -> %s", doc->_depth, name);
//debug_log("xml:%d -> %s", doc->_depth, name);
if (!doc->root)
{
doc->root = new Node(name, atts);
}
else
{
Node::Children *cld = &(doc->root->children);
if (!doc->root)
{
doc->root = new Node(name, atts);
}
else
{
Node::Children *cld = &(doc->root->children);
for (int i = 1; i < doc->_depth; ++i)
{
cld = &(cld->back().children);
}
cld->push_back(Node(name, atts));
for (int i = 1; i < doc->_depth; ++i)
{
cld = &(cld->back().children);
}
cld->push_back(Node(name, atts));
//std::cerr << doc->to_xml() << std::endl;
}
doc->_depth++;
//std::cerr << doc->to_xml() << std::endl;
}
doc->_depth++;
}
void Document::Expat::character_data_handler(void *data, const XML_Char *chars, int len)
{
Document *doc = (Document *)data;
Document *doc = (Document *)data;
Node *nod = doc->root;
Node *nod = doc->root;
for (int i = 1; i < doc->_depth; ++i)
{
nod = &(nod->children.back());
}
int x, y;
for (int i = 1; i < doc->_depth; ++i)
{
nod = &(nod->children.back());
}
int x, y;
x = 0;
y = len-1;
x = 0;
y = len - 1;
while (isspace(chars[y]) && y > 0) --y;
while (isspace(chars[x]) && x < y) ++x;
while (isspace(chars[y]) && y > 0) --y;
while (isspace(chars[x]) && x < y) ++x;
nod->cdata = std::string(chars, x, y+1);
nod->cdata = std::string(chars, x, y + 1);
}
void Document::Expat::end_element_handler(void *data, const XML_Char *name)
{
Document *doc = (Document *)data;
Document *doc = (Document *)data;
//debug_log("xml:%d <- %s", doc->_depth, name);
//debug_log("xml:%d <- %s", doc->_depth, name);
doc->_depth--;
doc->_depth--;
}

View file

@ -36,27 +36,29 @@
#include <iostream>
#include <sstream>
namespace DBus {
namespace DBus
{
namespace Xml {
namespace Xml
{
class Error : public std::exception
{
public:
Error(const char *error, int line, int column);
Error(const char *error, int line, int column);
~Error() throw()
{}
~Error() throw()
{}
const char *what() const throw()
{
return _error.c_str();
}
const char *what() const throw()
{
return _error.c_str();
}
private:
std::string _error;
std::string _error;
};
class Node;
@ -65,71 +67,71 @@ class Nodes : public std::vector<Node *>
{
public:
Nodes operator[](const std::string &key);
Nodes operator[](const std::string &key);
Nodes select(const std::string &attr, const std::string &value);
Nodes select(const std::string &attr, const std::string &value);
};
class Node
{
public:
typedef std::map<std::string, std::string> Attributes;
typedef std::map<std::string, std::string> Attributes;
typedef std::vector<Node> Children;
typedef std::vector<Node> Children;
std::string name;
std::string cdata;
Children children;
std::string name;
std::string cdata;
Children children;
Node(std::string &n, Attributes &a)
: name(n), _attrs(a)
{}
Node(std::string &n, Attributes &a)
: name(n), _attrs(a)
{}
Node(const char *n, const char ** a = NULL);
Node(const char *n, const char **a = NULL);
Nodes operator[](const std::string &key);
Nodes operator[](const std::string &key);
std::string get(const std::string &attribute);
std::string get(const std::string &attribute);
void set(const std::string &attribute, std::string value);
void set(const std::string &attribute, std::string value);
std::string to_xml() const;
std::string to_xml() const;
Node &add(Node child)
{
children.push_back(child);
return children.back();
}
Node &add(Node child)
{
children.push_back(child);
return children.back();
}
private:
void _raw_xml(std::string &xml, int &depth) const;
void _raw_xml(std::string &xml, int &depth) const;
Attributes _attrs;
Attributes _attrs;
};
class Document
{
public:
struct Expat;
struct Expat;
Node *root;
Node *root;
Document();
Document();
Document(const std::string &xml);
Document(const std::string &xml);
~Document();
~Document();
void from_xml(const std::string &xml);
void from_xml(const std::string &xml);
std::string to_xml() const;
std::string to_xml() const;
private:
int _depth;
int _depth;
};
} /* namespace Xml */

View file

@ -40,9 +40,9 @@ using namespace DBus;
void usage(const char *argv0)
{
cerr << endl << "Usage: " << argv0 << " <xmlfile> [ --proxy=<outfile.h> ] [ --adaptor=<outfile.h> ]"
<< endl << endl;
exit(-1);
cerr << endl << "Usage: " << argv0 << " <xmlfile> [ --proxy=<outfile.h> ] [ --adaptor=<outfile.h> ]"
<< endl << endl;
exit(-1);
}
/*int char_to_atomic_type(char t)
@ -61,68 +61,67 @@ void usage(const char *argv0)
}*/
int main(int argc, char ** argv)
int main(int argc, char **argv)
{
if (argc < 2)
{
usage(argv[0]);
}
if (argc < 2)
{
usage(argv[0]);
}
bool proxy_mode, adaptor_mode;
char *proxy, *adaptor;
bool proxy_mode, adaptor_mode;
char *proxy, *adaptor;
proxy_mode = false;
proxy = 0;
proxy_mode = false;
proxy = 0;
adaptor_mode = false;
adaptor = 0;
for (int a = 1; a < argc; ++a)
{
if (!strncmp(argv[a], "--proxy=", 8))
{
proxy_mode = true;
proxy = argv[a] +8;
}
else
if (!strncmp(argv[a], "--adaptor=", 10))
{
adaptor_mode = true;
adaptor = argv[a] +10;
}
}
adaptor_mode = false;
adaptor = 0;
if (!proxy_mode && !adaptor_mode) usage(argv[0]);
for (int a = 1; a < argc; ++a)
{
if (!strncmp(argv[a], "--proxy=", 8))
{
proxy_mode = true;
proxy = argv[a] + 8;
}
else if (!strncmp(argv[a], "--adaptor=", 10))
{
adaptor_mode = true;
adaptor = argv[a] + 10;
}
}
ifstream xmlfile(argv[1]);
if (!proxy_mode && !adaptor_mode) usage(argv[0]);
if (xmlfile.bad())
{
cerr << "unable to open file " << argv[1] << endl;
return -1;
}
ifstream xmlfile(argv[1]);
Xml::Document doc;
if (xmlfile.bad())
{
cerr << "unable to open file " << argv[1] << endl;
return -1;
}
try
{
xmlfile >> doc;
//cout << doc.to_xml();
}
catch(Xml::Error &e)
{
cerr << "error parsing " << argv[1] << ": " << e.what() << endl;
return -1;
}
Xml::Document doc;
if (!doc.root)
{
cerr << "empty document" << endl;
return -1;
}
try
{
xmlfile >> doc;
//cout << doc.to_xml();
}
catch (Xml::Error &e)
{
cerr << "error parsing " << argv[1] << ": " << e.what() << endl;
return -1;
}
if (proxy_mode) generate_proxy(doc, proxy);
if (adaptor_mode) generate_adaptor(doc, adaptor);
if (!doc.root)
{
cerr << "empty document" << endl;
return -1;
}
return 0;
if (proxy_mode) generate_proxy(doc, proxy);
if (adaptor_mode) generate_adaptor(doc, adaptor);
return 0;
}