File: type.h

package info (click to toggle)
libnih 1.0.3-4.1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 10,544 kB
  • sloc: ansic: 188,634; sh: 11,217; makefile: 1,116; yacc: 291; xml: 239; sed: 16
file content (137 lines) | stat: -rw-r--r-- 4,457 bytes parent folder | download | duplicates (6)
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 */