1 /* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */
2 /*
3  *  ianjuta-symbol.h -- Autogenerated from libanjuta.idl
4  *
5  *  This program is free software; you can redistribute it and/or modify
6  *  it under the terms of the GNU General Public License as published by
7  *  the Free Software Foundation; either version 2 of the License, or
8  *  (at your option) any later version.
9  *
10  *  This program is distributed in the hope that it will be useful,
11  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  *  GNU Library General Public License for more details.
14  *
15  *  You should have received a copy of the GNU General Public License
16  *  along with this program; if not, write to the Free Software
17  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18  */
19 
20 #ifndef _IANJUTA_SYMBOL_H_
21 #define _IANJUTA_SYMBOL_H_
22 
23 #include <glib-object.h>
24 #include <gdk/gdk.h>
25 #include <gio/gio.h>
26 
27 G_BEGIN_DECLS
28 
29 #define IANJUTA_TYPE_SYMBOL (ianjuta_symbol_get_type ())
30 #define IANJUTA_SYMBOL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), IANJUTA_TYPE_SYMBOL, IAnjutaSymbol))
31 #define IANJUTA_IS_SYMBOL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IANJUTA_TYPE_SYMBOL))
32 #define IANJUTA_SYMBOL_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), IANJUTA_TYPE_SYMBOL, IAnjutaSymbolIface))
33 
34 #define IANJUTA_TYPE_SYMBOL_FIELD (ianjuta_symbol_field_get_type())
35 #define IANJUTA_TYPE_SYMBOL_TYPE (ianjuta_symbol_type_get_type())
36 
37 #define IANJUTA_SYMBOL_ERROR ianjuta_symbol_error_quark()
38 
39 typedef struct _IAnjutaSymbol IAnjutaSymbol;
40 typedef struct _IAnjutaSymbolIface IAnjutaSymbolIface;
41 
42 /**
43  * IAnjutaSymbolField:
44  * @IANJUTA_SYMBOL_FIELD_ID: Integer. A unique ID of the symbol
45  * @IANJUTA_SYMBOL_FIELD_NAME: String. Name of the symbol
46  * @IANJUTA_SYMBOL_FIELD_FILE_POS: Integer. The file line number where the symbol is found.
47  * @IANJUTA_SYMBOL_FIELD_SCOPE_DEF_ID: Integer. A unique ID to define scope created by this symbol.
48  * @IANJUTA_SYMBOL_FIELD_FILE_SCOPE: Boolean: TRUE if symbol is within file scope,
49  *     otherwise FALSE.
50  * @IANJUTA_SYMBOL_FIELD_SIGNATURE: String. Signature of a method, if symbol is a funtion.
51  *     Namely, the arguments list of the funtion.
52  * @IANJUTA_SYMBOL_FIELD_RETURNTYPE: String. Return type of a method, if symbol is a function.
53  * @IANJUTA_SYMBOL_FIELD_FILE_PATH: String. The relative path to the file where the symbol is found.
54  * @IANJUTA_SYMBOL_FIELD_PROJECT_NAME: String. The project name to which the symbol belongs to.
55  * @IANJUTA_SYMBOL_FIELD_PROJECT_VERSION: String. The project version to which the symbol belongs to.
56  * @IANJUTA_SYMBOL_FIELD_IMPLEMENTATION: String. Implementation attribute of a symbol. It may be
57  *     "pure virtual", "virtual", etc.
58  * @IANJUTA_SYMBOL_FIELD_ACCESS: String. Access attribute of a symbol.
59  *     It may be "public", "private" etc.
60  * @IANJUTA_SYMBOL_FIELD_KIND: Kind attribute of a symbol, such as
61  *     "enumerator", "namespace", "class" etc.
62  * @IANJUTA_SYMBOL_FIELD_TYPE: Both string and Integer. Type attribute of a symbol.
63  *     In string form, it is name of the type in string form.
64  *     In integer form, it is IAnjutaSymbolType enumerator value.
65  * @IANJUTA_SYMBOL_FIELD_TYPE_NAME: type_name attribute of a symbol.
66  *     If a type could be "class" then its type_name may be "MyFooClass" etc.
67  * @IANJUTA_SYMBOL_FIELD_IS_CONTAINER: Boolean. TRUE if symbol is
68  *     a scope container, such as namespace, class, struct etc., otherwise
69  *     FALSE.
70  * @IANJUTA_SYMBOL_FIELD_END: The end marker.
71  *
72  * Symbol Fields. Used to define and retrieve results from query. Each of
73  * these fields are either integer or string. Use the right method to
74  * retrieve them. That is, for integer use ianjuta_symbol_get_int(),
75  * for string use ianjuta_symbol_get_string(), and for boolean use
76  * ianjuta_symbol_get_boolean(). Some fields can be in both forms,
77  * e.g. #IANJUTA_SYMBOL_FIELD_TYPE.
78  */
79 typedef enum {
80 	IANJUTA_SYMBOL_FIELD_ID,
81 	IANJUTA_SYMBOL_FIELD_NAME,
82 	IANJUTA_SYMBOL_FIELD_FILE_POS,
83 	IANJUTA_SYMBOL_FILED_SCOPE_DEF_ID,
84 	IANJUTA_SYMBOL_FIELD_FILE_SCOPE,
85 	IANJUTA_SYMBOL_FIELD_SIGNATURE,
86 	IANJUTA_SYMBOL_FIELD_RETURNTYPE,
87 	IANJUTA_SYMBOL_FIELD_TYPE,
88 	IANJUTA_SYMBOL_FIELD_TYPE_NAME,
89 	IANJUTA_SYMBOL_FIELD_FILE_PATH,
90 	IANJUTA_SYMBOL_FIELD_PROJECT_NAME,
91 	IANJUTA_SYMBOL_FIELD_PROJECT_VERSION,
92 	IANJUTA_SYMBOL_FIELD_IMPLEMENTATION,
93 	IANJUTA_SYMBOL_FIELD_ACCESS,
94 	IANJUTA_SYMBOL_FIELD_KIND,
95 	IANJUTA_SYMBOL_FIELD_IS_CONTAINER,
96 	IANJUTA_SYMBOL_FIELD_END
97 } IAnjutaSymbolField;
98 
99 /**
100  * IAnjutaSymbolType:
101  * @IANJUTA_SYMBOL_TYPE_NONE: None spedified.
102  * @IANJUTA_SYMBOL_TYPE_UNDEF: Unknown type.
103  * @IANJUTA_SYMBOL_TYPE_CLASS: Class declaration
104  * @IANJUTA_SYMBOL_TYPE_ENUM: Enum declaration
105  * @IANJUTA_SYMBOL_TYPE_ENUMERATOR: Enumerator value
106  * @IANJUTA_SYMBOL_TYPE_FIELD: Field (Java only)
107  * @IANJUTA_SYMBOL_TYPE_FUNCTION: Function definition
108  * @IANJUTA_SYMBOL_TYPE_INTERFACE: Interface (Java only)
109  * @IANJUTA_SYMBOL_TYPE_MEMBER: Member variable of class/struct
110  * @IANJUTA_SYMBOL_TYPE_METHOD: Class method (Java only)
111  * @IANJUTA_SYMBOL_TYPE_NAMESPACE: Namespace declaration
112  * @IANJUTA_SYMBOL_TYPE_PACKAGE: Package (Java only)
113  * @IANJUTA_SYMBOL_TYPE_PROTOTYPE: Function prototype
114  * @IANJUTA_SYMBOL_TYPE_STRUCT: Struct declaration
115  * @IANJUTA_SYMBOL_TYPE_TYPEDEF: Typedef
116  * @IANJUTA_SYMBOL_TYPE_UNION: Union
117  * @IANJUTA_SYMBOL_TYPE_VARIABLE: Variable
118  * @IANJUTA_SYMBOL_TYPE_EXTERNVAR: Extern or forward declaration
119  * @IANJUTA_SYMBOL_TYPE_MACRO: Macro (without arguments)
120  * @IANJUTA_SYMBOL_TYPE_MACRO_WITH_ARG: Parameterized macro
121  * @IANJUTA_SYMBOL_TYPE_FILE: File (Pseudo tag)
122  * @IANJUTA_SYMBOL_TYPE_OTHER: Other (non C/C++/Java tag)
123  * @IANJUTA_SYMBOL_TYPE_SCOPE_CONTAINER: types which are subjected to create a scope.
124  * @IANJUTA_SYMBOL_TYPE_MAX: Maximum value, used as end marker.
125  */
126 typedef enum {
127 	IANJUTA_SYMBOL_TYPE_NONE = 0,
128 	IANJUTA_SYMBOL_TYPE_UNDEF = 1,
129 	IANJUTA_SYMBOL_TYPE_CLASS = 2,
130 	IANJUTA_SYMBOL_TYPE_ENUM = 4,
131 	IANJUTA_SYMBOL_TYPE_ENUMERATOR = 8,
132 	IANJUTA_SYMBOL_TYPE_FIELD = 16,
133 	IANJUTA_SYMBOL_TYPE_FUNCTION = 32,
134 	IANJUTA_SYMBOL_TYPE_INTERFACE = 64,
135 	IANJUTA_SYMBOL_TYPE_MEMBER = 128,
136 	IANJUTA_SYMBOL_TYPE_METHOD = 256,
137 	IANJUTA_SYMBOL_TYPE_NAMESPACE = 512,
138 	IANJUTA_SYMBOL_TYPE_PACKAGE = 1024,
139 	IANJUTA_SYMBOL_TYPE_PROTOTYPE = 2048,
140 	IANJUTA_SYMBOL_TYPE_STRUCT = 4096,
141 	IANJUTA_SYMBOL_TYPE_TYPEDEF = 8192,
142 	IANJUTA_SYMBOL_TYPE_UNION = 16384,
143 	IANJUTA_SYMBOL_TYPE_VARIABLE = 32768,
144 	IANJUTA_SYMBOL_TYPE_EXTERNVAR = 65536,
145 	IANJUTA_SYMBOL_TYPE_MACRO = 131072,
146 	IANJUTA_SYMBOL_TYPE_MACRO_WITH_ARG = 262144,
147 	IANJUTA_SYMBOL_TYPE_FILE = 524288,
148 	IANJUTA_SYMBOL_TYPE_OTHER = 1048576,
149 	IANJUTA_SYMBOL_TYPE_SCOPE_CONTAINER = IANJUTA_SYMBOL_TYPE_CLASS | IANJUTA_SYMBOL_TYPE_ENUM | IANJUTA_SYMBOL_TYPE_INTERFACE | IANJUTA_SYMBOL_TYPE_NAMESPACE | IANJUTA_SYMBOL_TYPE_PACKAGE | IANJUTA_SYMBOL_TYPE_STRUCT | IANJUTA_SYMBOL_TYPE_UNION,
150 	IANJUTA_SYMBOL_TYPE_MAX = 2097151
151 } IAnjutaSymbolType;
152 
153 
154 struct _IAnjutaSymbolIface {
155 	GTypeInterface g_iface;
156 
157 
158 	gboolean (*get_boolean) (IAnjutaSymbol *obj, IAnjutaSymbolField field, GError **err);
159 	GFile* (*get_file) (IAnjutaSymbol *obj, GError **err);
160 	const GdkPixbuf * (*get_icon) (IAnjutaSymbol *obj, GError **err);
161 	gint (*get_int) (IAnjutaSymbol *obj, IAnjutaSymbolField field, GError **err);
162 	const gchar* (*get_string) (IAnjutaSymbol *obj, IAnjutaSymbolField field, GError **err);
163 	IAnjutaSymbolType (*get_sym_type) (IAnjutaSymbol *obj, GError **err);
164 
165 };
166 
167 GType ianjuta_symbol_field_get_type (void);
168 GType ianjuta_symbol_type_get_type (void);
169 
170 GQuark ianjuta_symbol_error_quark     (void);
171 GType  ianjuta_symbol_get_type        (void);
172 
173 gboolean ianjuta_symbol_get_boolean (IAnjutaSymbol *obj, IAnjutaSymbolField field, GError **err);
174 
175 GFile* ianjuta_symbol_get_file (IAnjutaSymbol *obj, GError **err);
176 
177 const GdkPixbuf * ianjuta_symbol_get_icon (IAnjutaSymbol *obj, GError **err);
178 
179 gint ianjuta_symbol_get_int (IAnjutaSymbol *obj, IAnjutaSymbolField field, GError **err);
180 
181 const gchar* ianjuta_symbol_get_string (IAnjutaSymbol *obj, IAnjutaSymbolField field, GError **err);
182 
183 IAnjutaSymbolType ianjuta_symbol_get_sym_type (IAnjutaSymbol *obj, GError **err);
184 
185 
186 G_END_DECLS
187 
188 #endif
189