glib (2.79.0)
       1  /* GDBus - GLib D-Bus Library
       2   *
       3   * Copyright (C) 2008-2010 Red Hat, Inc.
       4   *
       5   * SPDX-License-Identifier: LGPL-2.1-or-later
       6   *
       7   * This library is free software; you can redistribute it and/or
       8   * modify it under the terms of the GNU Lesser General Public
       9   * License as published by the Free Software Foundation; either
      10   * version 2.1 of the License, or (at your option) any later version.
      11   *
      12   * This library is distributed in the hope that it will be useful,
      13   * but WITHOUT ANY WARRANTY; without even the implied warranty of
      14   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      15   * Lesser General Public License for more details.
      16   *
      17   * You should have received a copy of the GNU Lesser General
      18   * Public License along with this library; if not, see <http://www.gnu.org/licenses/>.
      19   *
      20   * Author: David Zeuthen <davidz@redhat.com>
      21   */
      22  
      23  #ifndef __G_DBUS_INTROSPECTION_H__
      24  #define __G_DBUS_INTROSPECTION_H__
      25  
      26  #if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
      27  #error "Only <gio/gio.h> can be included directly."
      28  #endif
      29  
      30  #include <gio/giotypes.h>
      31  
      32  G_BEGIN_DECLS
      33  
      34  /**
      35   * GDBusAnnotationInfo:
      36   * @ref_count: The reference count or -1 if statically allocated.
      37   * @key: The name of the annotation, e.g. "org.freedesktop.DBus.Deprecated".
      38   * @value: The value of the annotation.
      39   * @annotations: (array zero-terminated=1): A pointer to a %NULL-terminated array of pointers to #GDBusAnnotationInfo structures or %NULL if there are no annotations.
      40   *
      41   * Information about an annotation.
      42   *
      43   * Since: 2.26
      44   */
      45  struct _GDBusAnnotationInfo
      46  {
      47    /*< public >*/
      48    gint                  ref_count;  /* (atomic) */
      49    gchar                *key;
      50    gchar                *value;
      51    GDBusAnnotationInfo **annotations;
      52  };
      53  
      54  /**
      55   * GDBusArgInfo:
      56   * @ref_count: The reference count or -1 if statically allocated.
      57   * @name: Name of the argument, e.g. @unix_user_id.
      58   * @signature: D-Bus signature of the argument (a single complete type).
      59   * @annotations: (array zero-terminated=1): A pointer to a %NULL-terminated array of pointers to #GDBusAnnotationInfo structures or %NULL if there are no annotations.
      60   *
      61   * Information about an argument for a method or a signal.
      62   *
      63   * Since: 2.26
      64   */
      65  struct _GDBusArgInfo
      66  {
      67    /*< public >*/
      68    gint                  ref_count;  /* (atomic) */
      69    gchar                *name;
      70    gchar                *signature;
      71    GDBusAnnotationInfo **annotations;
      72  };
      73  
      74  /**
      75   * GDBusMethodInfo:
      76   * @ref_count: The reference count or -1 if statically allocated.
      77   * @name: The name of the D-Bus method, e.g. @RequestName.
      78   * @in_args: (array zero-terminated=1): A pointer to a %NULL-terminated array of pointers to #GDBusArgInfo structures or %NULL if there are no in arguments.
      79   * @out_args: (array zero-terminated=1): A pointer to a %NULL-terminated array of pointers to #GDBusArgInfo structures or %NULL if there are no out arguments.
      80   * @annotations: (array zero-terminated=1): A pointer to a %NULL-terminated array of pointers to #GDBusAnnotationInfo structures or %NULL if there are no annotations.
      81   *
      82   * Information about a method on an D-Bus interface.
      83   *
      84   * Since: 2.26
      85   */
      86  struct _GDBusMethodInfo
      87  {
      88    /*< public >*/
      89    gint                  ref_count;  /* (atomic) */
      90    gchar                *name;
      91    GDBusArgInfo        **in_args;
      92    GDBusArgInfo        **out_args;
      93    GDBusAnnotationInfo **annotations;
      94  };
      95  
      96  /**
      97   * GDBusSignalInfo:
      98   * @ref_count: The reference count or -1 if statically allocated.
      99   * @name: The name of the D-Bus signal, e.g. "NameOwnerChanged".
     100   * @args: (array zero-terminated=1): A pointer to a %NULL-terminated array of pointers to #GDBusArgInfo structures or %NULL if there are no arguments.
     101   * @annotations: (array zero-terminated=1): A pointer to a %NULL-terminated array of pointers to #GDBusAnnotationInfo structures or %NULL if there are no annotations.
     102   *
     103   * Information about a signal on a D-Bus interface.
     104   *
     105   * Since: 2.26
     106   */
     107  struct _GDBusSignalInfo
     108  {
     109    /*< public >*/
     110    gint                  ref_count;  /* (atomic) */
     111    gchar                *name;
     112    GDBusArgInfo        **args;
     113    GDBusAnnotationInfo **annotations;
     114  };
     115  
     116  /**
     117   * GDBusPropertyInfo:
     118   * @ref_count: The reference count or -1 if statically allocated.
     119   * @name: The name of the D-Bus property, e.g. "SupportedFilesystems".
     120   * @signature: The D-Bus signature of the property (a single complete type).
     121   * @flags: Access control flags for the property.
     122   * @annotations: (array zero-terminated=1): A pointer to a %NULL-terminated array of pointers to #GDBusAnnotationInfo structures or %NULL if there are no annotations.
     123   *
     124   * Information about a D-Bus property on a D-Bus interface.
     125   *
     126   * Since: 2.26
     127   */
     128  struct _GDBusPropertyInfo
     129  {
     130    /*< public >*/
     131    gint                      ref_count;  /* (atomic) */
     132    gchar                    *name;
     133    gchar                    *signature;
     134    GDBusPropertyInfoFlags    flags;
     135    GDBusAnnotationInfo     **annotations;
     136  };
     137  
     138  /**
     139   * GDBusInterfaceInfo:
     140   * @ref_count: The reference count or -1 if statically allocated.
     141   * @name: The name of the D-Bus interface, e.g. "org.freedesktop.DBus.Properties".
     142   * @methods: (array zero-terminated=1): A pointer to a %NULL-terminated array of pointers to #GDBusMethodInfo structures or %NULL if there are no methods.
     143   * @signals: (array zero-terminated=1): A pointer to a %NULL-terminated array of pointers to #GDBusSignalInfo structures or %NULL if there are no signals.
     144   * @properties: (array zero-terminated=1): A pointer to a %NULL-terminated array of pointers to #GDBusPropertyInfo structures or %NULL if there are no properties.
     145   * @annotations: (array zero-terminated=1): A pointer to a %NULL-terminated array of pointers to #GDBusAnnotationInfo structures or %NULL if there are no annotations.
     146   *
     147   * Information about a D-Bus interface.
     148   *
     149   * Since: 2.26
     150   */
     151  struct _GDBusInterfaceInfo
     152  {
     153    /*< public >*/
     154    gint                  ref_count;  /* (atomic) */
     155    gchar                *name;
     156    GDBusMethodInfo     **methods;
     157    GDBusSignalInfo     **signals;
     158    GDBusPropertyInfo   **properties;
     159    GDBusAnnotationInfo **annotations;
     160  };
     161  
     162  /**
     163   * GDBusNodeInfo:
     164   * @ref_count: The reference count or -1 if statically allocated.
     165   * @path: The path of the node or %NULL if omitted. Note that this may be a relative path. See the D-Bus specification for more details.
     166   * @interfaces: (array zero-terminated=1): A pointer to a %NULL-terminated array of pointers to #GDBusInterfaceInfo structures or %NULL if there are no interfaces.
     167   * @nodes: (array zero-terminated=1): A pointer to a %NULL-terminated array of pointers to #GDBusNodeInfo structures or %NULL if there are no nodes.
     168   * @annotations: (array zero-terminated=1): A pointer to a %NULL-terminated array of pointers to #GDBusAnnotationInfo structures or %NULL if there are no annotations.
     169   *
     170   * Information about nodes in a remote object hierarchy.
     171   *
     172   * Since: 2.26
     173   */
     174  struct _GDBusNodeInfo
     175  {
     176    /*< public >*/
     177    gint                  ref_count;  /* (atomic) */
     178    gchar                *path;
     179    GDBusInterfaceInfo  **interfaces;
     180    GDBusNodeInfo       **nodes;
     181    GDBusAnnotationInfo **annotations;
     182  };
     183  
     184  GIO_AVAILABLE_IN_ALL
     185  const gchar        *g_dbus_annotation_info_lookup          (GDBusAnnotationInfo **annotations,
     186                                                              const gchar          *name);
     187  GIO_AVAILABLE_IN_ALL
     188  GDBusMethodInfo    *g_dbus_interface_info_lookup_method    (GDBusInterfaceInfo   *info,
     189                                                              const gchar          *name);
     190  GIO_AVAILABLE_IN_ALL
     191  GDBusSignalInfo    *g_dbus_interface_info_lookup_signal    (GDBusInterfaceInfo   *info,
     192                                                              const gchar          *name);
     193  GIO_AVAILABLE_IN_ALL
     194  GDBusPropertyInfo  *g_dbus_interface_info_lookup_property  (GDBusInterfaceInfo   *info,
     195                                                              const gchar          *name);
     196  GIO_AVAILABLE_IN_ALL
     197  void                g_dbus_interface_info_cache_build      (GDBusInterfaceInfo   *info);
     198  GIO_AVAILABLE_IN_ALL
     199  void                g_dbus_interface_info_cache_release    (GDBusInterfaceInfo   *info);
     200  
     201  GIO_AVAILABLE_IN_ALL
     202  void                g_dbus_interface_info_generate_xml     (GDBusInterfaceInfo   *info,
     203                                                              guint                 indent,
     204                                                              GString              *string_builder);
     205  
     206  GIO_AVAILABLE_IN_ALL
     207  GDBusNodeInfo      *g_dbus_node_info_new_for_xml           (const gchar          *xml_data,
     208                                                              GError              **error);
     209  GIO_AVAILABLE_IN_ALL
     210  GDBusInterfaceInfo *g_dbus_node_info_lookup_interface      (GDBusNodeInfo        *info,
     211                                                              const gchar          *name);
     212  GIO_AVAILABLE_IN_ALL
     213  void                g_dbus_node_info_generate_xml          (GDBusNodeInfo        *info,
     214                                                              guint                 indent,
     215                                                              GString              *string_builder);
     216  
     217  GIO_AVAILABLE_IN_ALL
     218  GDBusNodeInfo       *g_dbus_node_info_ref                  (GDBusNodeInfo        *info);
     219  GIO_AVAILABLE_IN_ALL
     220  GDBusInterfaceInfo  *g_dbus_interface_info_ref             (GDBusInterfaceInfo   *info);
     221  GIO_AVAILABLE_IN_ALL
     222  GDBusMethodInfo     *g_dbus_method_info_ref                (GDBusMethodInfo      *info);
     223  GIO_AVAILABLE_IN_ALL
     224  GDBusSignalInfo     *g_dbus_signal_info_ref                (GDBusSignalInfo      *info);
     225  GIO_AVAILABLE_IN_ALL
     226  GDBusPropertyInfo   *g_dbus_property_info_ref              (GDBusPropertyInfo    *info);
     227  GIO_AVAILABLE_IN_ALL
     228  GDBusArgInfo        *g_dbus_arg_info_ref                   (GDBusArgInfo         *info);
     229  GIO_AVAILABLE_IN_ALL
     230  GDBusAnnotationInfo *g_dbus_annotation_info_ref            (GDBusAnnotationInfo  *info);
     231  
     232  GIO_AVAILABLE_IN_ALL
     233  void                 g_dbus_node_info_unref                (GDBusNodeInfo        *info);
     234  GIO_AVAILABLE_IN_ALL
     235  void                 g_dbus_interface_info_unref           (GDBusInterfaceInfo   *info);
     236  GIO_AVAILABLE_IN_ALL
     237  void                 g_dbus_method_info_unref              (GDBusMethodInfo      *info);
     238  GIO_AVAILABLE_IN_ALL
     239  void                 g_dbus_signal_info_unref              (GDBusSignalInfo      *info);
     240  GIO_AVAILABLE_IN_ALL
     241  void                 g_dbus_property_info_unref            (GDBusPropertyInfo    *info);
     242  GIO_AVAILABLE_IN_ALL
     243  void                 g_dbus_arg_info_unref                 (GDBusArgInfo         *info);
     244  GIO_AVAILABLE_IN_ALL
     245  void                 g_dbus_annotation_info_unref          (GDBusAnnotationInfo  *info);
     246  
     247  /**
     248   * G_TYPE_DBUS_NODE_INFO:
     249   *
     250   * The #GType for a boxed type holding a #GDBusNodeInfo.
     251   *
     252   * Since: 2.26
     253   */
     254  #define G_TYPE_DBUS_NODE_INFO       (g_dbus_node_info_get_type ())
     255  
     256  /**
     257   * G_TYPE_DBUS_INTERFACE_INFO:
     258   *
     259   * The #GType for a boxed type holding a #GDBusInterfaceInfo.
     260   *
     261   * Since: 2.26
     262   */
     263  #define G_TYPE_DBUS_INTERFACE_INFO  (g_dbus_interface_info_get_type ())
     264  
     265  /**
     266   * G_TYPE_DBUS_METHOD_INFO:
     267   *
     268   * The #GType for a boxed type holding a #GDBusMethodInfo.
     269   *
     270   * Since: 2.26
     271   */
     272  #define G_TYPE_DBUS_METHOD_INFO     (g_dbus_method_info_get_type ())
     273  
     274  /**
     275   * G_TYPE_DBUS_SIGNAL_INFO:
     276   *
     277   * The #GType for a boxed type holding a #GDBusSignalInfo.
     278   *
     279   * Since: 2.26
     280   */
     281  #define G_TYPE_DBUS_SIGNAL_INFO     (g_dbus_signal_info_get_type ())
     282  
     283  /**
     284   * G_TYPE_DBUS_PROPERTY_INFO:
     285   *
     286   * The #GType for a boxed type holding a #GDBusPropertyInfo.
     287   *
     288   * Since: 2.26
     289   */
     290  #define G_TYPE_DBUS_PROPERTY_INFO   (g_dbus_property_info_get_type ())
     291  
     292  /**
     293   * G_TYPE_DBUS_ARG_INFO:
     294   *
     295   * The #GType for a boxed type holding a #GDBusArgInfo.
     296   *
     297   * Since: 2.26
     298   */
     299  #define G_TYPE_DBUS_ARG_INFO        (g_dbus_arg_info_get_type ())
     300  
     301  /**
     302   * G_TYPE_DBUS_ANNOTATION_INFO:
     303   *
     304   * The #GType for a boxed type holding a #GDBusAnnotationInfo.
     305   *
     306   * Since: 2.26
     307   */
     308  #define G_TYPE_DBUS_ANNOTATION_INFO (g_dbus_annotation_info_get_type ())
     309  
     310  GIO_AVAILABLE_IN_ALL
     311  GType g_dbus_node_info_get_type       (void) G_GNUC_CONST;
     312  GIO_AVAILABLE_IN_ALL
     313  GType g_dbus_interface_info_get_type  (void) G_GNUC_CONST;
     314  GIO_AVAILABLE_IN_ALL
     315  GType g_dbus_method_info_get_type     (void) G_GNUC_CONST;
     316  GIO_AVAILABLE_IN_ALL
     317  GType g_dbus_signal_info_get_type     (void) G_GNUC_CONST;
     318  GIO_AVAILABLE_IN_ALL
     319  GType g_dbus_property_info_get_type   (void) G_GNUC_CONST;
     320  GIO_AVAILABLE_IN_ALL
     321  GType g_dbus_arg_info_get_type        (void) G_GNUC_CONST;
     322  GIO_AVAILABLE_IN_ALL
     323  GType g_dbus_annotation_info_get_type (void) G_GNUC_CONST;
     324  
     325  G_END_DECLS
     326  
     327  #endif /* __G_DBUS_INTROSPECTION_H__ */