1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
|
/* nih-dbus-tool
*
* Copyright © 2009 Scott James Remnant <scott@netsplit.com>.
* Copyright © 2009 Canonical Ltd.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2, as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#ifndef NIH_DBUS_TOOL_TYPE_H
#define NIH_DBUS_TOOL_TYPE_H
#include <nih/macros.h>
#include <nih/list.h>
#include <dbus/dbus.h>
/**
* TypeVar:
* @entry: list entry,
* @type: C type,
* @name: variable name,
* @array: TRUE of the variable is an array.
*
* This structure represents a C variable declaration, containing both
* the type and name of the variable. They are returned by the marshal()
* and demarshal() functions via the locals list.
**/
typedef struct type_var {
NihList entry;
char * type;
char * name;
int array;
} TypeVar;
/**
* TypeFunc:
* @entry: list entry,
* @type: C function return type,
* @name: function name,
* @args: function arguments,
* @attribs: attributes.
*
* This structure represents a C function definition or prototype,
* containing its return type, name, arguments and any function attributes
* for compiler hints. They are returned by the various function
* generators via the prototypes or externs lists.
*
* @args is a list of TypeVar entries, @attribs is a list of NihListEntry
* entries with strings as the data pointer.
**/
typedef struct type_func {
NihList entry;
char * type;
char * name;
NihList args;
NihList attribs;
} TypeFunc;
/**
* TypeStruct:
* @entry: list entry,
* @name: structure name,
* @members: structure members.
*
* This structure represents a C structure definition, defined as a
* typedef called @name with an actual structure name converted from
* that.
*
* @members is a list of TypeVar entries.
**/
typedef struct type_struct {
NihList entry;
char * name;
NihList members;
} TypeStruct;
NIH_BEGIN_EXTERN
const char *type_const (int dbus_type);
const char *type_basic_type (int dbus_type);
char * type_of (const void * parent,
DBusSignatureIter *iter)
__attribute__ ((warn_unused_result, malloc));
TypeVar * type_var_new (const void *parent, const char *type,
const char *name)
__attribute__ ((warn_unused_result, malloc));
char * type_var_to_string (const void *parent, TypeVar *var)
__attribute__ ((warn_unused_result, malloc));
char * type_var_layout (const void *parent, NihList *vars)
__attribute__ ((warn_unused_result, malloc));
TypeFunc * type_func_new (const void *parent, const char *type,
const char *name)
__attribute__ ((warn_unused_result, malloc));
char * type_func_to_string (const void *parent, TypeFunc *func)
__attribute__ ((warn_unused_result, malloc));
char * type_func_to_typedef (const void *parent, TypeFunc *func)
__attribute__ ((warn_unused_result, malloc));
char * type_func_layout (const void *parent, NihList *funcs)
__attribute__ ((warn_unused_result, malloc));
TypeStruct *type_struct_new (const void *parent, const char *name)
__attribute__ ((warn_unused_result, malloc));
char * type_struct_to_string (const void *parent, TypeStruct *structure)
__attribute__ ((warn_unused_result, malloc));
char * type_to_const (char **type, const void *parent)
__attribute__ ((warn_unused_result, malloc));
char * type_to_pointer (char **type, const void *parent)
__attribute__ ((warn_unused_result, malloc));
char * type_to_static (char **type, const void *parent)
__attribute__ ((warn_unused_result, malloc));
char * type_to_extern (char **type, const void *parent)
__attribute__ ((warn_unused_result, malloc));
char * type_strcat_assert (char **block, const void *parent,
TypeVar *var, TypeVar *prev, TypeVar *next)
__attribute__ ((warn_unused_result, malloc));
NIH_END_EXTERN
#endif /* NIH_DBUS_TOOL_TYPE_H */
|