diff options
author | Andreas Volz <andreas@frodo.mittelerde> | 2009-03-28 13:46:03 +0100 |
---|---|---|
committer | Andreas Volz <andreas@frodo.mittelerde> | 2009-03-28 13:46:03 +0100 |
commit | 3b3ffe166bb01405e75e1f558ccb76ab668d6711 (patch) | |
tree | f68c914b6096fc096f222f8b96e2eb523cf7ddaf | |
parent | eefe20a40da700d5e29f5925262609cbcce68175 (diff) | |
download | dbus-c++-3b3ffe166bb01405e75e1f558ccb76ab668d6711.tar.gz |
- stripped not needed code from /ecore-integration
- bugfix for xml2cpp generator with out parameters
-rw-r--r-- | include/dbus-c++/ecore-integration.h | 13 | ||||
-rw-r--r-- | src/ecore-integration.cpp | 84 | ||||
-rw-r--r-- | tools/xml2cpp.cpp | 58 |
3 files changed, 59 insertions, 96 deletions
diff --git a/include/dbus-c++/ecore-integration.h b/include/dbus-c++/ecore-integration.h index 25f461f..b475533 100644 --- a/include/dbus-c++/ecore-integration.h +++ b/include/dbus-c++/ecore-integration.h @@ -41,7 +41,7 @@ class DXXAPI BusTimeout : public Timeout { private: - BusTimeout( Timeout::Internal*/*, GMainContext* */); + BusTimeout( Timeout::Internal*); ~BusTimeout(); @@ -55,8 +55,6 @@ private: private: Ecore_Timer *_etimer; - //GSource* _source; - //GMainContext* _ctx; friend class BusDispatcher; }; @@ -65,7 +63,7 @@ class DXXAPI BusWatch : public Watch { private: - BusWatch( Watch::Internal*/*, GMainContext* */); + BusWatch( Watch::Internal*); ~BusWatch(); @@ -80,8 +78,6 @@ private: void _disable(); private: - //GSource* _source; - //GMainContext* _ctx; Ecore_Fd_Handler *fd_handler_read; Ecore_Fd_Handler *fd_handler_error; @@ -91,9 +87,9 @@ friend class BusDispatcher; class DXXAPI BusDispatcher : public Dispatcher { public: - BusDispatcher() /*: _ctx(NULL) */{} + BusDispatcher() {} - void attach(/* GMainContext* */); + void attach(); void enter() {} @@ -109,7 +105,6 @@ public: private: - //GMainContext* _ctx; }; } /* namespace Ecore */ diff --git a/src/ecore-integration.cpp b/src/ecore-integration.cpp index 282cdd0..2a5ef68 100644 --- a/src/ecore-integration.cpp +++ b/src/ecore-integration.cpp @@ -31,8 +31,8 @@ using namespace DBus; -Ecore::BusTimeout::BusTimeout( Timeout::Internal* ti/*, GMainContext* ctx */) -: Timeout(ti)/*, _ctx(ctx)*/ +Ecore::BusTimeout::BusTimeout( Timeout::Internal* ti) +: Timeout(ti) { _enable(); } @@ -63,16 +63,9 @@ int Ecore::BusTimeout::timeout_handler( void *data ) void Ecore::BusTimeout::_enable() { - // TODO: port - // _source => Ecore_Timer - // g_source_set_callback => EcoreDispatcher init() debug_log("Ecore::BusTimeout::_enable()"); _etimer = ecore_timer_add (((double)Timeout::interval())/1000, timeout_handler, this); - - /*_source = g_timeout_source_new(); - g_source_set_callback(_source, timeout_handler, this, NULL); - g_source_attach(_source, _ctx);*/ } void Ecore::BusTimeout::_disable() @@ -80,17 +73,9 @@ void Ecore::BusTimeout::_disable() debug_log("Ecore::BusTimeout::_disable()"); ecore_timer_del (_etimer); - //g_source_destroy(_source); } -struct BusSource -{ - // TODO: needed? - //GSource source; - //GPollFD poll; -}; - -static bool watch_prepare( /*GSource *source,*/ int *timeout ) +static bool watch_prepare( int *timeout ) { debug_log("ecore: watch_prepare"); @@ -98,35 +83,24 @@ static bool watch_prepare( /*GSource *source,*/ int *timeout ) return false; } -static bool watch_check( /*GSource *source*/ ) +static bool watch_check( ) { debug_log("ecore: watch_check"); - //BusSource* io = (BusSource*)source; - return true;//io->poll.revents ? true : false; + return true; } -// TODO: port parameters -static bool watch_dispatch(/* GSource *source, GSourceFunc callback, */void *data ) +static bool watch_dispatch( void *data ) { debug_log("ecore: watch_dispatch"); - bool cb = true;//callback(data); + bool cb = true; DBus::default_dispatcher->dispatch_pending(); //TODO: won't work in case of multiple dispatchers return cb; } -// TODO: needed? -/*static GSourceFuncs watch_funcs = { - watch_prepare, - watch_check, - watch_dispatch, - NULL -};*/ - -// TODO: port parameter -Ecore::BusWatch::BusWatch( Watch::Internal* wi/*, GMainContext* ctx */) -: Watch(wi)/*, _ctx(ctx)*/ +Ecore::BusWatch::BusWatch( Watch::Internal* wi) +: Watch(wi) { _enable(); } @@ -169,8 +143,6 @@ int Ecore::BusWatch::watch_handler_error( void *data, Ecore_Fd_Handler *fdh ) watch_dispatch(NULL); - //w->handle(flags); - return 1; } @@ -179,18 +151,6 @@ void Ecore::BusWatch::_enable() debug_log("Ecore::BusWatch::_enable()"); int flags = Watch::flags(); - //Ecore_Fd_Handler_Flags condition = ECORE_FD_READ; - - // TODO: create second handler for ECORE_FD_ERROR case - - /*if(flags & DBUS_WATCH_READABLE) - condition |= ECORE_FD_READ; -// if(flags & DBUS_WATCH_WRITABLE) -// condition |= G_IO_OUT; - if(flags & DBUS_WATCH_ERROR) - condition |= ECORE_FD_ERROR; - //if(flags & DBUS_WATCH_HANGUP) - //condition |= G_IO_HUP;*/ fd_handler_read = ecore_main_fd_handler_add (Watch::descriptor(), ECORE_FD_READ, @@ -207,41 +167,21 @@ void Ecore::BusWatch::_enable() NULL, NULL); ecore_main_fd_handler_active_set(fd_handler_error, ECORE_FD_ERROR); - - // TODO: port this - /*_source = g_source_new(&watch_funcs, sizeof(BusSource)); - g_source_set_callback(_source, watch_handler, this, NULL); - - - - GPollFD* poll = &(((BusSource*)_source)->poll); - poll->fd = Watch::descriptor(); - poll->events = condition; - poll->revents = 0; - - g_source_add_poll(_source, poll); - g_source_attach(_source, _ctx);*/ } void Ecore::BusWatch::_disable() { ecore_main_fd_handler_del (fd_handler_read); ecore_main_fd_handler_del (fd_handler_error); - - // TODO: port this - /*GPollFD* poll = &(((BusSource*)_source)->poll); - g_source_remove_poll(_source, poll); - g_source_destroy(_source);*/ } -void Ecore::BusDispatcher::attach( /*GMainContext* ctx */) +void Ecore::BusDispatcher::attach( ) { - //_ctx = ctx ? ctx : g_main_context_default(); } Timeout* Ecore::BusDispatcher::add_timeout( Timeout::Internal* wi ) { - Timeout* t = new Ecore::BusTimeout(wi/*, _ctx*/); + Timeout* t = new Ecore::BusTimeout( wi ); debug_log("ecore: added timeout %p (%s)", t, t->enabled() ? "on":"off"); @@ -257,7 +197,7 @@ void Ecore::BusDispatcher::rem_timeout( Timeout* t ) Watch* Ecore::BusDispatcher::add_watch( Watch::Internal* wi ) { - Watch* w = new Ecore::BusWatch(wi/*, _ctx*/); + Watch* w = new Ecore::BusWatch(wi); debug_log("ecore: added watch %p (%s) fd=%d flags=%d", w, w->enabled() ? "on":"off", w->descriptor(), w->flags() diff --git a/tools/xml2cpp.cpp b/tools/xml2cpp.cpp index dcde076..870b2cc 100644 --- a/tools/xml2cpp.cpp +++ b/tools/xml2cpp.cpp @@ -1287,6 +1287,16 @@ void generate_adaptor(Xml::Document &doc, const char *filename) for (Xml::Nodes::iterator ai = args_in.begin(); ai != args_in.end(); ++ai, ++i) { Xml::Node &arg = **ai; + + body << tab << tab << signature_to_type(arg.get("type")) << " argin" << i << ";" << " "; + body << "ri >> argin" << i << ";" << endl; + } + + // generate the 'in' object variables + i = 1; + for (Xml::Nodes::iterator ai = args_in.begin(); ai != args_in.end(); ++ai, ++i) + { + Xml::Node &arg = **ai; Xml::Nodes annotations = arg["annotation"]; Xml::Nodes annotations_object = annotations.select("name","org.freedesktop.DBus.Object"); string arg_object; @@ -1296,17 +1306,36 @@ void generate_adaptor(Xml::Document &doc, const char *filename) arg_object = annotations_object.front()->get("value"); } - body << tab << tab << signature_to_type(arg.get("type")) << " argin" << i << ";" << endl; - body << tab << tab << "ri >> argin" << i << ";" << endl; - if (arg_object.length()) { - body << tab << tab << arg_object << " _argin" << i << ";" << endl; + body << tab << tab << arg_object << " _argin" << i << ";"; + body << " " << "_argin" << i << " << " << "argin" << i << ";" << endl; } } - // generate out variables - if (args_out.size() != 0) + // generate 'out' variables + if (args_out.size() > 0) + { + unsigned int i = 1; + for (Xml::Nodes::iterator ao = args_out.begin(); ao != args_out.end(); ++ao, ++i) + { + Xml::Node &arg = **ao; + + body << tab << tab << signature_to_type(arg.get("type")) << " argout" << i; + + if (args_out.size() == 1) // a single 'out' parameter will be assigned + { + body << " = "; + } + else // multible 'out' parameters will be handled as parameters below + { + body << ";" << endl; + } + } + } + + // generate 'out' object variables + if (args_out.size() > 0) { unsigned int i = 1; for (Xml::Nodes::iterator ao = args_out.begin(); ao != args_out.end(); ++ao, ++i) @@ -1320,9 +1349,7 @@ void generate_adaptor(Xml::Document &doc, const char *filename) { arg_object = annotations_object.front()->get("value"); } - - body << tab << tab << signature_to_type(arg.get("type")) << " argout" << i << ";" << endl; - + // generate object types if (arg_object.length()) { @@ -1344,14 +1371,15 @@ void generate_adaptor(Xml::Document &doc, const char *filename) { arg_object = annotations_object.front()->get("value"); } - - if (arg_object.length()) - { - body << tab << tab << "_argin" << i+1 << " << " << "argin" << i+1 << ";" << endl; - } + } + + // do correct indent + if (args_out.size() != 1 ) + { + body << tab << tab; } - body << tab << tab << method.get("name") << "("; + body << method.get("name") << "("; // generate call stub parameters i = 0; |