diff options
author | Andreas Volz <andreas@er00923n.(none)> | 2011-02-15 23:58:42 +0100 |
---|---|---|
committer | Andreas Volz <andreas@er00923n.(none)> | 2011-02-15 23:58:42 +0100 |
commit | cdedb019b026eb7bc1b909fd73d12e9c78b32a88 (patch) | |
tree | c1666dc1f63b6f41a62818226e177ad07ed3cd5d | |
parent | 466931e52791521eb648ae21c614105e913270d4 (diff) | |
download | dbus-c++-cdedb019b026eb7bc1b909fd73d12e9c78b32a88.tar.gz |
- fixed Strcut generation in generator tool
- added some test cases
-rw-r--r-- | Makefile.am | 2 | ||||
-rw-r--r-- | configure.ac | 4 | ||||
-rw-r--r-- | examples/echo/echo-introspect.xml | 10 | ||||
-rw-r--r-- | examples/echo/echo-server.h | 4 | ||||
-rw-r--r-- | test/Makefile.am | 6 | ||||
-rw-r--r-- | test/generator/Makefile.am | 40 | ||||
-rw-r--r-- | test/generator/dbuscxx_test_generator-client.cpp | 7 | ||||
-rw-r--r-- | test/generator/dbuscxx_test_generator-client.h | 5 | ||||
-rw-r--r-- | test/generator/dbuscxx_test_generator-server.cpp | 8 | ||||
-rw-r--r-- | test/generator/dbuscxx_test_generator-server.h | 6 | ||||
-rw-r--r-- | test/generator/dbuscxx_test_generator.xml | 232 | ||||
-rw-r--r-- | tools/generator_utils.cpp | 12 |
12 files changed, 319 insertions, 17 deletions
diff --git a/Makefile.am b/Makefile.am index 912f64b..6bfa677 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,4 +1,4 @@ -SUBDIRS = src tools data doc examples +SUBDIRS = src tools data doc examples test EXTRA_DIST = autogen.sh bootstrap libdbus-c++.spec libdbus-c++.spec.in diff --git a/configure.ac b/configure.ac index fc9f063..64923a5 100644 --- a/configure.ac +++ b/configure.ac @@ -182,7 +182,9 @@ AC_OUTPUT( Makefile src/Makefile tools/Makefile - data/Makefile + test/Makefile + test/generator/Makefile + data/Makefile doc/Makefile doc/Doxyfile examples/Makefile diff --git a/examples/echo/echo-introspect.xml b/examples/echo/echo-introspect.xml index c276eb9..899612a 100644 --- a/examples/echo/echo-introspect.xml +++ b/examples/echo/echo-introspect.xml @@ -27,15 +27,5 @@ <arg type="a{ss}" name="info" direction="out"/> </method> - <method name="Foo"> - <arg type="a(a(uu)s)" name="array" direction="out" /> - </method> - - <method name="Foo2"> - <arg type="i" name="result" direction="out" /> - <arg type="i" name="direction" direction="in" /> - <arg type="a(a(uu)s)" name="array" direction="out" /> - </method> - </interface> </node> diff --git a/examples/echo/echo-server.h b/examples/echo/echo-server.h index 491a7d8..3f0be58 100644 --- a/examples/echo/echo-server.h +++ b/examples/echo/echo-server.h @@ -24,10 +24,6 @@ public: int32_t Sum(const std::vector<int32_t> & ints); std::map< std::string, std::string > Info(); - - std::vector< ::DBus::Struct< std::vector< ::DBus::Struct< uint32_t, uint32_t > >, std::string > > Foo() {}; - - void Foo2(const int32_t& direction, int32_t& result, std::vector< ::DBus::Struct< std::vector< ::DBus::Struct< uint32_t, uint32_t > >, std::string > >& array) {}; }; #endif//__DEMO_ECHO_SERVER_H diff --git a/test/Makefile.am b/test/Makefile.am new file mode 100644 index 0000000..536fbaf --- /dev/null +++ b/test/Makefile.am @@ -0,0 +1,6 @@ + +SUBDIRS = \ + generator + +## File created by the gnome-build tools + diff --git a/test/generator/Makefile.am b/test/generator/Makefile.am new file mode 100644 index 0000000..1a29204 --- /dev/null +++ b/test/generator/Makefile.am @@ -0,0 +1,40 @@ +EXTRA_DIST = dbuscxx_test_generator.xml + +AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/include + +noinst_PROGRAMS = dbuscxx_test_generator_server + +dbuscxx_test_generator_server_SOURCES = dbuscxx_test_generator-server-glue.h \ + dbuscxx_test_generator-server.h \ + dbuscxx_test_generator-server.cpp + +dbuscxx_test_generator_server_LDADD = $(top_builddir)/src/libdbus-c++-1.la @PTHREAD_LIBS@ +dbuscxx_test_generator_server_CXXFLAGS = @PTHREAD_CFLAGS@ + +dbuscxx_test_generator-server-glue.h: dbuscxx_test_generator.xml + $(top_builddir)/tools/dbusxx-xml2cpp $^ --adaptor=$@ + +###### + +noinst_PROGRAMS += dbuscxx_test_generator_client + +dbuscxx_test_generator_client_SOURCES = dbuscxx_test_generator-client-glue.h \ + dbuscxx_test_generator-client.h \ + dbuscxx_test_generator-client.cpp + +dbuscxx_test_generator_client_LDADD = $(top_builddir)/src/libdbus-c++-1.la @PTHREAD_LIBS@ +dbuscxx_test_generator_client_CXXFLAGS = @PTHREAD_CFLAGS@ + +dbuscxx_test_generator-client-glue.h: dbuscxx_test_generator.xml + $(top_builddir)/tools/dbusxx-xml2cpp $^ --proxy=$@ + +BUILT_SOURCES = dbuscxx_test_generator-server-glue.h \ + dbuscxx_test_generator-client-glue.h + +CLEANFILES = $(BUILT_SOURCES) + +dist-hook: + cd $(distdir); rm -f $(BUILT_SOURCES) + +MAINTAINERCLEANFILES = \ + Makefile.in diff --git a/test/generator/dbuscxx_test_generator-client.cpp b/test/generator/dbuscxx_test_generator-client.cpp new file mode 100644 index 0000000..2135986 --- /dev/null +++ b/test/generator/dbuscxx_test_generator-client.cpp @@ -0,0 +1,7 @@ +#include <dbuscxx_test_generator-client.h> + +int main (int argc, char **argv) +{ + + return 0; +} diff --git a/test/generator/dbuscxx_test_generator-client.h b/test/generator/dbuscxx_test_generator-client.h new file mode 100644 index 0000000..1d93f9e --- /dev/null +++ b/test/generator/dbuscxx_test_generator-client.h @@ -0,0 +1,5 @@ +#ifndef DBUSCXX_TEST_GENERATOR_CLIENT_H + +#include <dbuscxx_test_generator-client-glue.h> + +#endif // DBUSCXX_TEST_GENERATOR_CLIENT_H diff --git a/test/generator/dbuscxx_test_generator-server.cpp b/test/generator/dbuscxx_test_generator-server.cpp new file mode 100644 index 0000000..9ac6913 --- /dev/null +++ b/test/generator/dbuscxx_test_generator-server.cpp @@ -0,0 +1,8 @@ +#include <dbuscxx_test_generator-server.h> + +int main (int argc, char **argv) +{ + + return 0; +} + diff --git a/test/generator/dbuscxx_test_generator-server.h b/test/generator/dbuscxx_test_generator-server.h new file mode 100644 index 0000000..f736ddf --- /dev/null +++ b/test/generator/dbuscxx_test_generator-server.h @@ -0,0 +1,6 @@ +#ifndef DBUSCXX_TEST_GENERATOR_SERVER_H + +#include <dbuscxx_test_generator-server-glue.h> + +#endif // DBUSCXX_TEST_GENERATOR_SERVER_H + diff --git a/test/generator/dbuscxx_test_generator.xml b/test/generator/dbuscxx_test_generator.xml new file mode 100644 index 0000000..813bc75 --- /dev/null +++ b/test/generator/dbuscxx_test_generator.xml @@ -0,0 +1,232 @@ +<?xml version="1.0" ?> +<node name="/org/freedesktop/DBus/test/generator"> + <interface name="org.freedesktop.DBus.test.generator"> + + <!-- method calls with a single parameter (in) --> + <method name="testByteIn"> + <arg type="y" name="Byte" direction="in"/> + </method> + + <method name="testBoolIn"> + <arg type="b" name="Bool" direction="in"/> + </method> + + <method name="testUInt16In"> + <arg type="q" name="UInt16" direction="in"/> + </method> + + <method name="testInt32In"> + <arg type="i" name="Int32" direction="in"/> + </method> + + <method name="testUInt32In"> + <arg type="u" name="UInt32" direction="in"/> + </method> + + <method name="testInt64In"> + <arg type="x" name="Int64" direction="in"/> + </method> + + <method name="testUInt64In"> + <arg type="t" name="UInt64" direction="in"/> + </method> + + <method name="testDoubleIn"> + <arg type="d" name="Double" direction="in"/> + </method> + + <method name="testStringIn"> + <arg type="s" name="String" direction="in"/> + </method> + + <method name="testPathIn"> + <arg type="o" name="Path" direction="in"/> + </method> + + <method name="testSignatureIn"> + <arg type="g" name="Signature" direction="in"/> + </method> + + <method name="testVariantIn"> + <arg type="v" name="Variant" direction="in"/> + </method> + + <!-- method calls with a single parameter (out) --> + <method name="testByteOut"> + <arg type="y" name="Byte" direction="out"/> + </method> + + <method name="testBoolOut"> + <arg type="b" name="Bool" direction="out"/> + </method> + + <method name="testUInt16Out"> + <arg type="q" name="UInt16" direction="out"/> + </method> + + <method name="testInt32Out"> + <arg type="i" name="Int32" direction="out"/> + </method> + + <method name="testUInt32Out"> + <arg type="u" name="UInt32" direction="out"/> + </method> + + <method name="testInt64Out"> + <arg type="x" name="Int64" direction="out"/> + </method> + + <method name="testUInt64Out"> + <arg type="t" name="UInt64" direction="out"/> + </method> + + <method name="testDoubleOut"> + <arg type="d" name="Double" direction="out"/> + </method> + + <method name="testStringOut"> + <arg type="s" name="String" direction="out"/> + </method> + + <method name="testPathOut"> + <arg type="o" name="Path" direction="out"/> + </method> + + <method name="testSignatureOut"> + <arg type="g" name="Signature" direction="out"/> + </method> + + <method name="testVariantOut"> + <arg type="v" name="Variant" direction="out"/> + </method> + + <!-- updates with a single parameter --> + <signal name="updateTestByte"> + <arg type="y" name="Byte"/> + </signal> + + <signal name="updateTestBool"> + <arg type="b" name="Bool"/> + </signal> + + <signal name="updateTestUInt16"> + <arg type="q" name="UInt16"/> + </signal> + + <signal name="updateTestInt32"> + <arg type="i" name="Int32"/> + </signal> + + <signal name="updateTestUInt32"> + <arg type="u" name="UInt32"/> + </signal> + + <signal name="updateTestInt64"> + <arg type="x" name="Int64"/> + </signal> + + <signal name="updateTestUInt64"> + <arg type="t" name="UInt64"/> + </signal> + + <signal name="updateTestDouble"> + <arg type="d" name="Double"/> + </signal> + + <signal name="updateTestString"> + <arg type="s" name="String"/> + </signal> + + <signal name="updateTestPath"> + <arg type="o" name="Path"/> + </signal> + + <signal name="updateTestSignature"> + <arg type="g" name="Signature"/> + </signal> + + <signal name="updateTestVariant"> + <arg type="v" name="Variant"/> + </signal> + + <!-- method calls with multible parameters (out) --> + <method name="testMultibleOut"> + <arg type="y" name="Byte" direction="out"/> + <arg type="b" name="Bool" direction="out"/> + <arg type="q" name="UInt16" direction="out"/> + <arg type="i" name="Int32" direction="out"/> + <arg type="u" name="UInt32" direction="out"/> + <arg type="x" name="Int64" direction="out"/> + <arg type="t" name="UInt64" direction="out"/> + <arg type="d" name="Double" direction="out"/> + <arg type="s" name="String" direction="out"/> + <arg type="o" name="Path" direction="out"/> + <arg type="g" name="Signature" direction="out"/> + <arg type="v" name="Variant" direction="out"/> + </method> + + <!-- method with all types combined (in) --> + <method name="testAllSimpleTypes"> + <arg type="y" name="Byte" direction="in"/> + <arg type="b" name="Bool" direction="in"/> + <arg type="q" name="UInt16" direction="in"/> + <arg type="i" name="Int32" direction="in"/> + <arg type="u" name="UInt32" direction="in"/> + <arg type="x" name="Int64" direction="in"/> + <arg type="t" name="UInt64" direction="in"/> + <arg type="d" name="Double" direction="in"/> + <arg type="s" name="String" direction="in"/> + <arg type="o" name="Path" direction="in"/> + <arg type="g" name="Signature" direction="in"/> + <arg type="v" name="Variant" direction="in"/> + </method> + + <!-- signal with all types combined --> + <signal name="updateTestAllSimpleTypes"> + <arg type="y" name="Byte"/> + <arg type="b" name="Bool"/> + <arg type="q" name="UInt16"/> + <arg type="i" name="Int32"/> + <arg type="u" name="UInt32"/> + <arg type="x" name="Int64"/> + <arg type="t" name="UInt64"/> + <arg type="d" name="Double"/> + <arg type="s" name="String"/> + <arg type="o" name="Path"/> + <arg type="g" name="Signature"/> + <arg type="v" name="Variant"/> + </signal> + + <!-- test std::map (in) --> + <method name="testMap"> + <arg type="a{si}" name="MapStringInt32" direction="in"/> + </method> + + <!-- test std::vector (in) --> + <method name="testVector"> + <arg type="as" name="VectorString" direction="in"/> + </method> + + <!-- test Struct (in) --> + <method name="testStruct"> + <arg type="(isb)" name="Struct" direction="in"/> + </method> + + <!-- test Vector of Struct (in) --> + <method name="testVectorStruct"> + <arg type="a(isb)" name="VectorString" direction="in"/> + </method> + + <!-- test various unsorted combinations --> + <method name="Unsorted1"> + <arg type="a(a(uu)s)" name="array" direction="out" /> + </method> + + <method name="Unsorted2"> + <arg type="i" name="result" direction="out" /> + <arg type="i" name="direction" direction="in" /> + <arg type="a(a(uu)s)" name="array" direction="out" /> + </method> + + </interface> +</node> diff --git a/tools/generator_utils.cpp b/tools/generator_utils.cpp index c984959..9066394 100644 --- a/tools/generator_utils.cpp +++ b/tools/generator_utils.cpp @@ -122,7 +122,7 @@ void _parse_signature(const string &signature, string &type, unsigned int &i) type += "std::vector< "; _parse_signature(signature, type, i); - type += " >"; + type += " >"; break; } @@ -135,6 +135,16 @@ void _parse_signature(const string &signature, string &type, unsigned int &i) break; } + case '(': + { + type += "::DBus::Struct< "; + ++i; + + _parse_signature(signature, type, i); + + type += " >"; + break; + } case ')': case '}': { |