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 @@ - - - - - - - - - - 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 & 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 + +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 + +#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 + +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 + +#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 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 '}': {