2003-09-07 Havoc Pennington <hp@pobox.com>
[platform/upstream/dbus.git] / glib / dbus-gidl.h
1 /* -*- mode: C; c-file-style: "gnu" -*- */
2 /* dbus-gidl.h data structure describing an interface, to be generated from IDL
3  *             or something
4  *
5  * Copyright (C) 2003  Red Hat, Inc.
6  *
7  * Licensed under the Academic Free License version 1.2
8  * 
9  * This program is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation; either version 2 of the License, or
12  * (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU General Public License for more details.
18  * 
19  * You should have received a copy of the GNU General Public License
20  * along with this program; if not, write to the Free Software
21  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
22  *
23  */
24 #ifndef DBUS_GLIB_IDL_H
25 #define DBUS_GLIB_IDL_H
26
27 #ifndef DOXYGEN_SHOULD_SKIP_THIS
28
29 #include <dbus/dbus.h>
30 #include <glib.h>
31
32 G_BEGIN_DECLS
33
34 typedef struct NodeInfo      NodeInfo;
35 typedef struct InterfaceInfo InterfaceInfo;
36 typedef struct MethodInfo    MethodInfo;
37 typedef struct SignalInfo    SignalInfo;
38 typedef struct ArgInfo       ArgInfo;
39
40 typedef enum
41 {
42   ARG_IN,
43   ARG_OUT
44 } ArgDirection;
45
46 NodeInfo*      node_info_new              (const char    *name);
47 void           node_info_ref              (NodeInfo      *info);
48 void           node_info_unref            (NodeInfo      *info);
49 const char*    node_info_get_name         (NodeInfo      *info);
50 GSList*        node_info_get_interfaces   (NodeInfo      *info);
51 void           node_info_add_interface    (NodeInfo      *info,
52                                            InterfaceInfo *interface);
53
54 InterfaceInfo* interface_info_new         (const char    *name);
55 void           interface_info_ref         (InterfaceInfo *info);
56 void           interface_info_unref       (InterfaceInfo *info);
57 const char*    interface_info_get_name    (InterfaceInfo *info);
58 GSList*        interface_info_get_methods (InterfaceInfo *info);
59 GSList*        interface_info_get_signals (InterfaceInfo *info);
60 void           interface_info_add_method  (InterfaceInfo *info,
61                                            MethodInfo    *method);
62 void           interface_info_add_signal  (InterfaceInfo *info,
63                                            SignalInfo    *signal);
64
65 MethodInfo*    method_info_new            (const char    *name);
66 void           method_info_ref            (MethodInfo    *info);
67 void           method_info_unref          (MethodInfo    *info);
68
69 const char*    method_info_get_name       (MethodInfo    *info);
70 GSList*        method_info_get_args       (MethodInfo    *info);
71 void           method_info_add_arg        (MethodInfo    *info,
72                                            ArgInfo       *arg);
73
74 SignalInfo*    signal_info_new            (const char    *name);
75 void           signal_info_ref            (SignalInfo    *info);
76 void           signal_info_unref          (SignalInfo    *info);
77
78 const char*    signal_info_get_name       (SignalInfo    *info);
79 GSList*        signal_info_get_args       (SignalInfo    *info);
80 void           signal_info_add_arg        (SignalInfo    *info,
81                                            ArgInfo       *arg);
82
83 ArgInfo*       arg_info_new               (const char    *name,
84                                            ArgDirection   direction,
85                                            int            type);
86 void           arg_info_ref               (ArgInfo       *info);
87 void           arg_info_unref             (ArgInfo       *info);
88 const char*    arg_info_get_name          (ArgInfo       *info);
89 int            arg_info_get_type          (ArgInfo       *info);
90 ArgDirection   arg_info_get_direction     (ArgInfo       *info);
91
92 G_END_DECLS
93
94 #endif /* DBUS_GLIB_IDL_H */
95
96 #endif /* DOXYGEN_SHOULD_SKIP_THIS */