Free memory with dbus_free instead of free. Account for NULL signatures.
[dbus-cxx-async.git] / include / dbus-c++ / introspection.h
blobb6389e09e643d73a7562307af241bd6454032d14
1 /*
3 * D-Bus++ - C++ bindings for D-Bus
5 * Copyright (C) 2005-2009 Paolo Durante <shackan@gmail.com>
8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either
11 * version 2.1 of the License, or (at your option) any later version.
13 * This library is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with this library; if not, write to the Free Software
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
25 #ifndef __DBUSXX_INTROSPECTION_H
26 #define __DBUSXX_INTROSPECTION_H
28 #include "api.h"
29 #include "interface.h"
31 namespace DBus {
33 struct DBUSXXAPI IntrospectedArgument
35 const char *name;
36 const char *type;
37 const bool in;
40 struct DBUSXXAPI IntrospectedMethod
42 const char *name;
43 const IntrospectedArgument *args;
46 struct DBUSXXAPI IntrospectedProperty
48 const char *name;
49 const char *type;
50 const bool read;
51 const bool write;
54 struct DBUSXXAPI IntrospectedInterface
56 const char *name;
57 const IntrospectedMethod *methods;
58 const IntrospectedMethod *signals;
59 const IntrospectedProperty *properties;
62 class DBUSXXAPI IntrospectableAdaptor : public InterfaceAdaptor, virtual public CallbackTarget
64 public:
66 IntrospectableAdaptor();
68 Message Introspect(const CallMessage &);
70 protected:
72 IntrospectedInterface *const introspect() const;
75 class DBUSXXAPI IntrospectableProxy : public InterfaceProxy
77 public:
79 IntrospectableProxy();
81 std::string Introspect();
84 } /* namespace DBus */
86 #endif//__DBUSXX_INTROSPECTION_H