dbus-cxx logo

object.h

Go to the documentation of this file.
00001 
00002 // -*- c++ -*-
00003 /* Do not edit! -- generated file */
00004 
00005 /***************************************************************************
00006  *   Copyright (C) 2009,2010 by Rick L. Vinyard, Jr.                       *
00007  *   rvinyard@cs.nmsu.edu                                                  *
00008  *                                                                         *
00009  *   This file is part of the dbus-cxx library.                            *
00010  *                                                                         *
00011  *   The dbus-cxx library is free software; you can redistribute it and/or *
00012  *   modify it under the terms of the GNU General Public License           *
00013  *   version 3 as published by the Free Software Foundation.               *
00014  *                                                                         *
00015  *   The dbus-cxx library is distributed in the hope that it will be       *
00016  *   useful, but WITHOUT ANY WARRANTY; without even the implied warranty   *
00017  *   of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU   *
00018  *   General Public License for more details.                              *
00019  *                                                                         *
00020  *   You should have received a copy of the GNU General Public License     *
00021  *   along with this software. If not see <http://www.gnu.org/licenses/>.  *
00022  ***************************************************************************/
00023 #include <sigc++/sigc++.h>
00024 
00025 #include <string>
00026 #include <map>
00027 
00028 #include <dbus-cxx/forward_decls.h>
00029 #include <dbus-cxx/objectpathhandler.h>
00030 #include <dbus-cxx/dbus_signal.h>
00031 
00032 #ifndef DBUSCXXOBJECT_H
00033 #define DBUSCXXOBJECT_H
00034 
00035 namespace DBus
00036 {
00096   class Object: public ObjectPathHandler
00097   {
00098     protected:
00099 
00104       Object( const std::string& path, PrimaryFallback pf=PRIMARY );
00105 
00106     public:
00107 
00113       typedef DBusCxxPointer<Object> pointer;
00114 
00125       typedef std::multimap<std::string, DBusCxxPointer<Interface> > Interfaces;
00126 
00137       typedef std::map<std::string, Object::pointer> Children;
00138 
00144       static pointer create( const std::string& path = std::string(), PrimaryFallback pf=PRIMARY );
00145 
00146       virtual ~Object();
00147 
00149       virtual bool register_with_connection(DBusCxxPointer<Connection> conn);
00150 
00152       const Interfaces& interfaces() const;
00153 
00155       DBusCxxPointer<Interface> interface( const std::string& name ) const;
00156 
00158       bool add_interface( DBusCxxPointer<Interface> interface );
00159 
00165       DBusCxxPointer<Interface> create_interface( const std::string& name );
00166 
00175       template <class T_return>
00176       DBusCxxPointer<Method<T_return> >
00177       create_method( const std::string& method_name, sigc::slot0<T_return> slot );
00178 
00187       template <class T_return, class T_arg1>
00188       DBusCxxPointer<Method<T_return, T_arg1> >
00189       create_method( const std::string& method_name, sigc::slot1<T_return, T_arg1> slot );
00190 
00199       template <class T_return, class T_arg1,class T_arg2>
00200       DBusCxxPointer<Method<T_return, T_arg1,T_arg2> >
00201       create_method( const std::string& method_name, sigc::slot2<T_return, T_arg1,T_arg2> slot );
00202 
00211       template <class T_return, class T_arg1,class T_arg2,class T_arg3>
00212       DBusCxxPointer<Method<T_return, T_arg1,T_arg2,T_arg3> >
00213       create_method( const std::string& method_name, sigc::slot3<T_return, T_arg1,T_arg2,T_arg3> slot );
00214 
00223       template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4>
00224       DBusCxxPointer<Method<T_return, T_arg1,T_arg2,T_arg3,T_arg4> >
00225       create_method( const std::string& method_name, sigc::slot4<T_return, T_arg1,T_arg2,T_arg3,T_arg4> slot );
00226 
00235       template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
00236       DBusCxxPointer<Method<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5> >
00237       create_method( const std::string& method_name, sigc::slot5<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5> slot );
00238 
00247       template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
00248       DBusCxxPointer<Method<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6> >
00249       create_method( const std::string& method_name, sigc::slot6<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6> slot );
00250 
00259       template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
00260       DBusCxxPointer<Method<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7> >
00261       create_method( const std::string& method_name, sigc::slot7<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7> slot );
00262 
00263 
00272       template <class T_return>
00273       DBusCxxPointer<Method<T_return> >
00274       create_method( const std::string& interface_name, const std::string& method_name, sigc::slot0<T_return> slot );
00275 
00284       template <class T_return, class T_arg1>
00285       DBusCxxPointer<Method<T_return, T_arg1> >
00286       create_method( const std::string& interface_name, const std::string& method_name, sigc::slot1<T_return, T_arg1> slot );
00287 
00296       template <class T_return, class T_arg1,class T_arg2>
00297       DBusCxxPointer<Method<T_return, T_arg1,T_arg2> >
00298       create_method( const std::string& interface_name, const std::string& method_name, sigc::slot2<T_return, T_arg1,T_arg2> slot );
00299 
00308       template <class T_return, class T_arg1,class T_arg2,class T_arg3>
00309       DBusCxxPointer<Method<T_return, T_arg1,T_arg2,T_arg3> >
00310       create_method( const std::string& interface_name, const std::string& method_name, sigc::slot3<T_return, T_arg1,T_arg2,T_arg3> slot );
00311 
00320       template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4>
00321       DBusCxxPointer<Method<T_return, T_arg1,T_arg2,T_arg3,T_arg4> >
00322       create_method( const std::string& interface_name, const std::string& method_name, sigc::slot4<T_return, T_arg1,T_arg2,T_arg3,T_arg4> slot );
00323 
00332       template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
00333       DBusCxxPointer<Method<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5> >
00334       create_method( const std::string& interface_name, const std::string& method_name, sigc::slot5<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5> slot );
00335 
00344       template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
00345       DBusCxxPointer<Method<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6> >
00346       create_method( const std::string& interface_name, const std::string& method_name, sigc::slot6<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6> slot );
00347 
00356       template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
00357       DBusCxxPointer<Method<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7> >
00358       create_method( const std::string& interface_name, const std::string& method_name, sigc::slot7<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7> slot );
00359 
00360 
00362       void remove_interface( const std::string& name );
00363 
00369       bool has_interface( const std::string& name );
00370 
00375       DBusCxxPointer<Interface> default_interface() const;
00376 
00386       bool set_default_interface( const std::string& new_default_name );
00387 
00392       void remove_default_interface();
00393 
00401       template <class T_return>
00402       DBusCxxPointer<signal<T_return> >
00403       create_signal( const std::string& name );
00404 
00412       template <class T_return, class T_arg1>
00413       DBusCxxPointer<signal<T_return, T_arg1> >
00414       create_signal( const std::string& name );
00415 
00423       template <class T_return, class T_arg1,class T_arg2>
00424       DBusCxxPointer<signal<T_return, T_arg1,T_arg2> >
00425       create_signal( const std::string& name );
00426 
00434       template <class T_return, class T_arg1,class T_arg2,class T_arg3>
00435       DBusCxxPointer<signal<T_return, T_arg1,T_arg2,T_arg3> >
00436       create_signal( const std::string& name );
00437 
00445       template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4>
00446       DBusCxxPointer<signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4> >
00447       create_signal( const std::string& name );
00448 
00456       template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
00457       DBusCxxPointer<signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5> >
00458       create_signal( const std::string& name );
00459 
00467       template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
00468       DBusCxxPointer<signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6> >
00469       create_signal( const std::string& name );
00470 
00478       template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
00479       DBusCxxPointer<signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7> >
00480       create_signal( const std::string& name );
00481 
00482 
00490       template <class T_return>
00491       DBusCxxPointer<signal<T_return> >
00492       create_signal( const std::string& iface, const std::string& name );
00493 
00501       template <class T_return, class T_arg1>
00502       DBusCxxPointer<signal<T_return, T_arg1> >
00503       create_signal( const std::string& iface, const std::string& name );
00504 
00512       template <class T_return, class T_arg1,class T_arg2>
00513       DBusCxxPointer<signal<T_return, T_arg1,T_arg2> >
00514       create_signal( const std::string& iface, const std::string& name );
00515 
00523       template <class T_return, class T_arg1,class T_arg2,class T_arg3>
00524       DBusCxxPointer<signal<T_return, T_arg1,T_arg2,T_arg3> >
00525       create_signal( const std::string& iface, const std::string& name );
00526 
00534       template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4>
00535       DBusCxxPointer<signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4> >
00536       create_signal( const std::string& iface, const std::string& name );
00537 
00545       template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
00546       DBusCxxPointer<signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5> >
00547       create_signal( const std::string& iface, const std::string& name );
00548 
00556       template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
00557       DBusCxxPointer<signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6> >
00558       create_signal( const std::string& iface, const std::string& name );
00559 
00567       template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
00568       DBusCxxPointer<signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7> >
00569       create_signal( const std::string& iface, const std::string& name );
00570 
00571 
00572 
00574       const Children& children() const;
00575 
00581       Object::pointer child(const std::string& name) const;
00582 
00592       bool add_child(const std::string& name, Object::pointer child, bool force=false);
00593 
00599       bool remove_child(const std::string& name);
00600 
00606       bool has_child(const std::string& name) const;
00607 
00609       std::string introspect(int space_depth=0) const;
00610 
00616       sigc::signal<void,DBusCxxPointer<Interface> > signal_interface_added();
00617 
00623       sigc::signal<void,DBusCxxPointer<Interface> > signal_interface_removed();
00624 
00632       sigc::signal<void,DBusCxxPointer<Interface> /*old default*/,DBusCxxPointer<Interface> /*new default*/> signal_default_interface_changed();
00633 
00655       virtual HandlerResult handle_message( DBusCxxPointer<Connection> conn, Message::const_pointer msg);
00656 
00657     protected:
00658 
00659       Children m_children;
00660       
00661       mutable pthread_rwlock_t m_interfaces_rwlock;
00662 
00663       pthread_mutex_t m_name_mutex;
00664 
00665       Interfaces m_interfaces;
00666 
00667       DBusCxxPointer<Interface>  m_default_interface;
00668 
00669       sigc::signal<void,DBusCxxPointer<Interface> ,DBusCxxPointer<Interface> > m_signal_default_interface_changed;
00670 
00671       sigc::signal<void,DBusCxxPointer<Interface> > m_signal_interface_added;
00672 
00673       sigc::signal<void,DBusCxxPointer<Interface> > m_signal_interface_removed;
00674 
00675       typedef std::map<DBusCxxPointer<Interface> ,sigc::connection> InterfaceSignalNameConnections;
00676 
00677       InterfaceSignalNameConnections m_interface_signal_name_connections;
00678 
00683       void on_interface_name_changed(const std::string& oldname, const std::string& newname, DBusCxxPointer<Interface>  interface);
00684 
00685   };
00686 
00687 }
00688 
00689 #include <dbus-cxx/interface.h>
00690 
00691 /************************
00692  * Template definitions *
00693  ************************/
00694 
00695 namespace DBus {
00696 
00697   template <class T_return>
00698   DBusCxxPointer<Method<T_return> >
00699   Object::create_method( const std::string& method_name, sigc::slot0<T_return> slot )
00700   {
00701     if ( not m_default_interface )
00702     {
00703       this->create_interface("");
00704       this->set_default_interface("");
00705     }
00706     // TODO throw an error if the default interface still doesn't exist
00707 
00708     DBusCxxPointer< Method<T_return> > method;
00709     method = m_default_interface->create_method<T_return>(method_name);
00710     method->set_method( slot );
00711     return method;
00712   }
00713 
00714   template <class T_return, class T_arg1>
00715   DBusCxxPointer<Method<T_return, T_arg1> >
00716   Object::create_method( const std::string& method_name, sigc::slot1<T_return, T_arg1> slot )
00717   {
00718     if ( not m_default_interface )
00719     {
00720       this->create_interface("");
00721       this->set_default_interface("");
00722     }
00723     // TODO throw an error if the default interface still doesn't exist
00724 
00725     DBusCxxPointer< Method<T_return, T_arg1> > method;
00726     method = m_default_interface->create_method<T_return, T_arg1>(method_name);
00727     method->set_method( slot );
00728     return method;
00729   }
00730 
00731   template <class T_return, class T_arg1,class T_arg2>
00732   DBusCxxPointer<Method<T_return, T_arg1,T_arg2> >
00733   Object::create_method( const std::string& method_name, sigc::slot2<T_return, T_arg1,T_arg2> slot )
00734   {
00735     if ( not m_default_interface )
00736     {
00737       this->create_interface("");
00738       this->set_default_interface("");
00739     }
00740     // TODO throw an error if the default interface still doesn't exist
00741 
00742     DBusCxxPointer< Method<T_return, T_arg1,T_arg2> > method;
00743     method = m_default_interface->create_method<T_return, T_arg1,T_arg2>(method_name);
00744     method->set_method( slot );
00745     return method;
00746   }
00747 
00748   template <class T_return, class T_arg1,class T_arg2,class T_arg3>
00749   DBusCxxPointer<Method<T_return, T_arg1,T_arg2,T_arg3> >
00750   Object::create_method( const std::string& method_name, sigc::slot3<T_return, T_arg1,T_arg2,T_arg3> slot )
00751   {
00752     if ( not m_default_interface )
00753     {
00754       this->create_interface("");
00755       this->set_default_interface("");
00756     }
00757     // TODO throw an error if the default interface still doesn't exist
00758 
00759     DBusCxxPointer< Method<T_return, T_arg1,T_arg2,T_arg3> > method;
00760     method = m_default_interface->create_method<T_return, T_arg1,T_arg2,T_arg3>(method_name);
00761     method->set_method( slot );
00762     return method;
00763   }
00764 
00765   template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4>
00766   DBusCxxPointer<Method<T_return, T_arg1,T_arg2,T_arg3,T_arg4> >
00767   Object::create_method( const std::string& method_name, sigc::slot4<T_return, T_arg1,T_arg2,T_arg3,T_arg4> slot )
00768   {
00769     if ( not m_default_interface )
00770     {
00771       this->create_interface("");
00772       this->set_default_interface("");
00773     }
00774     // TODO throw an error if the default interface still doesn't exist
00775 
00776     DBusCxxPointer< Method<T_return, T_arg1,T_arg2,T_arg3,T_arg4> > method;
00777     method = m_default_interface->create_method<T_return, T_arg1,T_arg2,T_arg3,T_arg4>(method_name);
00778     method->set_method( slot );
00779     return method;
00780   }
00781 
00782   template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
00783   DBusCxxPointer<Method<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5> >
00784   Object::create_method( const std::string& method_name, sigc::slot5<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5> slot )
00785   {
00786     if ( not m_default_interface )
00787     {
00788       this->create_interface("");
00789       this->set_default_interface("");
00790     }
00791     // TODO throw an error if the default interface still doesn't exist
00792 
00793     DBusCxxPointer< Method<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5> > method;
00794     method = m_default_interface->create_method<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>(method_name);
00795     method->set_method( slot );
00796     return method;
00797   }
00798 
00799   template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
00800   DBusCxxPointer<Method<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6> >
00801   Object::create_method( const std::string& method_name, sigc::slot6<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6> slot )
00802   {
00803     if ( not m_default_interface )
00804     {
00805       this->create_interface("");
00806       this->set_default_interface("");
00807     }
00808     // TODO throw an error if the default interface still doesn't exist
00809 
00810     DBusCxxPointer< Method<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6> > method;
00811     method = m_default_interface->create_method<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>(method_name);
00812     method->set_method( slot );
00813     return method;
00814   }
00815 
00816   template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
00817   DBusCxxPointer<Method<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7> >
00818   Object::create_method( const std::string& method_name, sigc::slot7<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7> slot )
00819   {
00820     if ( not m_default_interface )
00821     {
00822       this->create_interface("");
00823       this->set_default_interface("");
00824     }
00825     // TODO throw an error if the default interface still doesn't exist
00826 
00827     DBusCxxPointer< Method<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7> > method;
00828     method = m_default_interface->create_method<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>(method_name);
00829     method->set_method( slot );
00830     return method;
00831   }
00832 
00833 
00834   template <class T_return>
00835   DBusCxxPointer<Method<T_return> >
00836   Object::create_method( const std::string& interface_name, const std::string& method_name, sigc::slot0<T_return> slot )
00837   {
00838     Interface::pointer interface;
00839     interface = this->interface(interface_name);
00840     if ( not interface ) interface = this->create_interface(interface_name);
00841     // TODO throw an error if the interface still doesn't exist
00842 
00843     DBusCxxPointer< Method<T_return> > method;
00844     method = interface->create_method<T_return>(method_name);
00845     method->set_method( slot );
00846     return method;
00847   }
00848 
00849   template <class T_return, class T_arg1>
00850   DBusCxxPointer<Method<T_return, T_arg1> >
00851   Object::create_method( const std::string& interface_name, const std::string& method_name, sigc::slot1<T_return, T_arg1> slot )
00852   {
00853     Interface::pointer interface;
00854     interface = this->interface(interface_name);
00855     if ( not interface ) interface = this->create_interface(interface_name);
00856     // TODO throw an error if the interface still doesn't exist
00857 
00858     DBusCxxPointer< Method<T_return, T_arg1> > method;
00859     method = interface->create_method<T_return, T_arg1>(method_name);
00860     method->set_method( slot );
00861     return method;
00862   }
00863 
00864   template <class T_return, class T_arg1,class T_arg2>
00865   DBusCxxPointer<Method<T_return, T_arg1,T_arg2> >
00866   Object::create_method( const std::string& interface_name, const std::string& method_name, sigc::slot2<T_return, T_arg1,T_arg2> slot )
00867   {
00868     Interface::pointer interface;
00869     interface = this->interface(interface_name);
00870     if ( not interface ) interface = this->create_interface(interface_name);
00871     // TODO throw an error if the interface still doesn't exist
00872 
00873     DBusCxxPointer< Method<T_return, T_arg1,T_arg2> > method;
00874     method = interface->create_method<T_return, T_arg1,T_arg2>(method_name);
00875     method->set_method( slot );
00876     return method;
00877   }
00878 
00879   template <class T_return, class T_arg1,class T_arg2,class T_arg3>
00880   DBusCxxPointer<Method<T_return, T_arg1,T_arg2,T_arg3> >
00881   Object::create_method( const std::string& interface_name, const std::string& method_name, sigc::slot3<T_return, T_arg1,T_arg2,T_arg3> slot )
00882   {
00883     Interface::pointer interface;
00884     interface = this->interface(interface_name);
00885     if ( not interface ) interface = this->create_interface(interface_name);
00886     // TODO throw an error if the interface still doesn't exist
00887 
00888     DBusCxxPointer< Method<T_return, T_arg1,T_arg2,T_arg3> > method;
00889     method = interface->create_method<T_return, T_arg1,T_arg2,T_arg3>(method_name);
00890     method->set_method( slot );
00891     return method;
00892   }
00893 
00894   template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4>
00895   DBusCxxPointer<Method<T_return, T_arg1,T_arg2,T_arg3,T_arg4> >
00896   Object::create_method( const std::string& interface_name, const std::string& method_name, sigc::slot4<T_return, T_arg1,T_arg2,T_arg3,T_arg4> slot )
00897   {
00898     Interface::pointer interface;
00899     interface = this->interface(interface_name);
00900     if ( not interface ) interface = this->create_interface(interface_name);
00901     // TODO throw an error if the interface still doesn't exist
00902 
00903     DBusCxxPointer< Method<T_return, T_arg1,T_arg2,T_arg3,T_arg4> > method;
00904     method = interface->create_method<T_return, T_arg1,T_arg2,T_arg3,T_arg4>(method_name);
00905     method->set_method( slot );
00906     return method;
00907   }
00908 
00909   template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
00910   DBusCxxPointer<Method<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5> >
00911   Object::create_method( const std::string& interface_name, const std::string& method_name, sigc::slot5<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5> slot )
00912   {
00913     Interface::pointer interface;
00914     interface = this->interface(interface_name);
00915     if ( not interface ) interface = this->create_interface(interface_name);
00916     // TODO throw an error if the interface still doesn't exist
00917 
00918     DBusCxxPointer< Method<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5> > method;
00919     method = interface->create_method<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>(method_name);
00920     method->set_method( slot );
00921     return method;
00922   }
00923 
00924   template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
00925   DBusCxxPointer<Method<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6> >
00926   Object::create_method( const std::string& interface_name, const std::string& method_name, sigc::slot6<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6> slot )
00927   {
00928     Interface::pointer interface;
00929     interface = this->interface(interface_name);
00930     if ( not interface ) interface = this->create_interface(interface_name);
00931     // TODO throw an error if the interface still doesn't exist
00932 
00933     DBusCxxPointer< Method<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6> > method;
00934     method = interface->create_method<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>(method_name);
00935     method->set_method( slot );
00936     return method;
00937   }
00938 
00939   template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
00940   DBusCxxPointer<Method<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7> >
00941   Object::create_method( const std::string& interface_name, const std::string& method_name, sigc::slot7<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7> slot )
00942   {
00943     Interface::pointer interface;
00944     interface = this->interface(interface_name);
00945     if ( not interface ) interface = this->create_interface(interface_name);
00946     // TODO throw an error if the interface still doesn't exist
00947 
00948     DBusCxxPointer< Method<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7> > method;
00949     method = interface->create_method<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>(method_name);
00950     method->set_method( slot );
00951     return method;
00952   }
00953 
00954 
00955   template <class T_return>
00956   DBusCxxPointer<signal<T_return> >
00957   Object::create_signal( const std::string& name )
00958   {
00959     DBusCxxPointer<DBus::signal<T_return> > sig;
00960     Interface::pointer iface = this->default_interface();
00961     if ( not iface ) iface = this->create_interface("");
00962     sig = iface->create_signal<T_return>(name);
00963     return sig;
00964   }
00965 
00966   template <class T_return, class T_arg1>
00967   DBusCxxPointer<signal<T_return, T_arg1> >
00968   Object::create_signal( const std::string& name )
00969   {
00970     DBusCxxPointer<DBus::signal<T_return, T_arg1> > sig;
00971     Interface::pointer iface = this->default_interface();
00972     if ( not iface ) iface = this->create_interface("");
00973     sig = iface->create_signal<T_return, T_arg1>(name);
00974     return sig;
00975   }
00976 
00977   template <class T_return, class T_arg1,class T_arg2>
00978   DBusCxxPointer<signal<T_return, T_arg1,T_arg2> >
00979   Object::create_signal( const std::string& name )
00980   {
00981     DBusCxxPointer<DBus::signal<T_return, T_arg1,T_arg2> > sig;
00982     Interface::pointer iface = this->default_interface();
00983     if ( not iface ) iface = this->create_interface("");
00984     sig = iface->create_signal<T_return, T_arg1,T_arg2>(name);
00985     return sig;
00986   }
00987 
00988   template <class T_return, class T_arg1,class T_arg2,class T_arg3>
00989   DBusCxxPointer<signal<T_return, T_arg1,T_arg2,T_arg3> >
00990   Object::create_signal( const std::string& name )
00991   {
00992     DBusCxxPointer<DBus::signal<T_return, T_arg1,T_arg2,T_arg3> > sig;
00993     Interface::pointer iface = this->default_interface();
00994     if ( not iface ) iface = this->create_interface("");
00995     sig = iface->create_signal<T_return, T_arg1,T_arg2,T_arg3>(name);
00996     return sig;
00997   }
00998 
00999   template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4>
01000   DBusCxxPointer<signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4> >
01001   Object::create_signal( const std::string& name )
01002   {
01003     DBusCxxPointer<DBus::signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4> > sig;
01004     Interface::pointer iface = this->default_interface();
01005     if ( not iface ) iface = this->create_interface("");
01006     sig = iface->create_signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4>(name);
01007     return sig;
01008   }
01009 
01010   template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
01011   DBusCxxPointer<signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5> >
01012   Object::create_signal( const std::string& name )
01013   {
01014     DBusCxxPointer<DBus::signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5> > sig;
01015     Interface::pointer iface = this->default_interface();
01016     if ( not iface ) iface = this->create_interface("");
01017     sig = iface->create_signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>(name);
01018     return sig;
01019   }
01020 
01021   template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
01022   DBusCxxPointer<signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6> >
01023   Object::create_signal( const std::string& name )
01024   {
01025     DBusCxxPointer<DBus::signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6> > sig;
01026     Interface::pointer iface = this->default_interface();
01027     if ( not iface ) iface = this->create_interface("");
01028     sig = iface->create_signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>(name);
01029     return sig;
01030   }
01031 
01032   template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
01033   DBusCxxPointer<signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7> >
01034   Object::create_signal( const std::string& name )
01035   {
01036     DBusCxxPointer<DBus::signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7> > sig;
01037     Interface::pointer iface = this->default_interface();
01038     if ( not iface ) iface = this->create_interface("");
01039     sig = iface->create_signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>(name);
01040     return sig;
01041   }
01042 
01043 
01044   template <class T_return>
01045   DBusCxxPointer<signal<T_return> >
01046   Object::create_signal( const std::string& iface, const std::string& name )
01047   {
01048     DBusCxxPointer<DBus::signal<T_return> > sig;
01049     if ( not has_interface(iface) ) this->create_interface(iface);
01050     sig = this->interface(iface)->create_signal<T_return>(name);
01051     return sig;
01052   }
01053 
01054   template <class T_return, class T_arg1>
01055   DBusCxxPointer<signal<T_return, T_arg1> >
01056   Object::create_signal( const std::string& iface, const std::string& name )
01057   {
01058     DBusCxxPointer<DBus::signal<T_return, T_arg1> > sig;
01059     if ( not has_interface(iface) ) this->create_interface(iface);
01060     sig = this->interface(iface)->create_signal<T_return, T_arg1>(name);
01061     return sig;
01062   }
01063 
01064   template <class T_return, class T_arg1,class T_arg2>
01065   DBusCxxPointer<signal<T_return, T_arg1,T_arg2> >
01066   Object::create_signal( const std::string& iface, const std::string& name )
01067   {
01068     DBusCxxPointer<DBus::signal<T_return, T_arg1,T_arg2> > sig;
01069     if ( not has_interface(iface) ) this->create_interface(iface);
01070     sig = this->interface(iface)->create_signal<T_return, T_arg1,T_arg2>(name);
01071     return sig;
01072   }
01073 
01074   template <class T_return, class T_arg1,class T_arg2,class T_arg3>
01075   DBusCxxPointer<signal<T_return, T_arg1,T_arg2,T_arg3> >
01076   Object::create_signal( const std::string& iface, const std::string& name )
01077   {
01078     DBusCxxPointer<DBus::signal<T_return, T_arg1,T_arg2,T_arg3> > sig;
01079     if ( not has_interface(iface) ) this->create_interface(iface);
01080     sig = this->interface(iface)->create_signal<T_return, T_arg1,T_arg2,T_arg3>(name);
01081     return sig;
01082   }
01083 
01084   template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4>
01085   DBusCxxPointer<signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4> >
01086   Object::create_signal( const std::string& iface, const std::string& name )
01087   {
01088     DBusCxxPointer<DBus::signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4> > sig;
01089     if ( not has_interface(iface) ) this->create_interface(iface);
01090     sig = this->interface(iface)->create_signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4>(name);
01091     return sig;
01092   }
01093 
01094   template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
01095   DBusCxxPointer<signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5> >
01096   Object::create_signal( const std::string& iface, const std::string& name )
01097   {
01098     DBusCxxPointer<DBus::signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5> > sig;
01099     if ( not has_interface(iface) ) this->create_interface(iface);
01100     sig = this->interface(iface)->create_signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>(name);
01101     return sig;
01102   }
01103 
01104   template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
01105   DBusCxxPointer<signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6> >
01106   Object::create_signal( const std::string& iface, const std::string& name )
01107   {
01108     DBusCxxPointer<DBus::signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6> > sig;
01109     if ( not has_interface(iface) ) this->create_interface(iface);
01110     sig = this->interface(iface)->create_signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>(name);
01111     return sig;
01112   }
01113 
01114   template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
01115   DBusCxxPointer<signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7> >
01116   Object::create_signal( const std::string& iface, const std::string& name )
01117   {
01118     DBusCxxPointer<DBus::signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7> > sig;
01119     if ( not has_interface(iface) ) this->create_interface(iface);
01120     sig = this->interface(iface)->create_signal<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>(name);
01121     return sig;
01122   }
01123 
01124 
01125 
01126 }
01127 
01128 
01129 #endif

Generated on Thu Mar 18 09:30:55 2010 for dbus-cxx by doxygen 1.6.1