~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Wine Cross Reference
wine/tools/widl/widltypes.h

Version: ~ [ wine-1.1.5 ] ~ [ wine-1.1.4 ] ~ [ wine-1.1.3 ] ~ [ wine-1.1.2 ] ~ [ wine-1.1.1 ] ~ [ wine-1.1.0 ] ~ [ wine-1.0 ] ~ [ wine-1.0-rc5 ] ~ [ wine-1.0-rc4 ] ~ [ wine-1.0-rc3 ] ~ [ wine-1.0-rc2 ] ~ [ wine-1.0-rc1 ] ~ [ wine-0.9.61 ] ~ [ wine-0.9.60 ] ~ [ wine-0.9.59 ] ~ [ wine-0.9.58 ] ~ [ wine-0.9.57 ] ~ [ wine-0.9.56 ] ~ [ wine-0.9.55 ] ~ [ wine-0.9.54 ] ~ [ wine-0.9.53 ] ~ [ wine-0.9.52 ] ~ [ wine-0.9.51 ] ~ [ wine-0.9.50 ] ~ [ wine-0.9.49 ] ~ [ wine-0.9.48 ] ~ [ wine-0.9.47 ] ~ [ wine-0.9.46 ] ~ [ wine-0.9.45 ] ~ [ wine-0.9.44 ] ~ [ wine-0.9.43 ] ~ [ wine-0.9.42 ] ~ [ wine-0.9.41 ] ~ [ wine-0.9.40 ] ~ [ wine-0.9.39 ] ~ [ wine-0.9.38 ] ~ [ wine-0.9.37 ] ~ [ wine-0.9.36 ] ~ [ wine-0.9.35 ] ~ [ wine-0.9.34 ] ~ [ wine-0.9.33 ] ~ [ wine-0.9.32 ] ~ [ wine-0.9.31 ] ~ [ wine-0.9.30 ] ~ [ wine-0.9.29 ] ~ [ wine-0.9.28 ] ~ [ wine-0.9.27 ] ~ [ wine-0.9.26 ] ~ [ wine-0.9.25 ] ~ [ wine-0.9.24 ] ~ [ wine-0.9.23 ] ~ [ wine-0.9.22 ] ~ [ wine-0.9.21 ] ~ [ wine-0.9.20 ] ~ [ wine-0.9.19 ] ~ [ wine-0.9.18 ] ~ [ wine-0.9.17 ] ~ [ wine-0.9.16 ] ~ [ wine-0.9.15 ] ~ [ wine-0.9.14 ] ~ [ wine-0.9.13 ] ~ [ wine-0.9.12 ] ~ [ wine-0.9.11 ] ~ [ wine-0.9.10 ] ~ [ wine-0.9.9 ] ~ [ wine-0.9.8 ] ~ [ wine-0.9.7 ] ~ [ wine-0.9.6 ] ~ [ wine-0.9.5 ] ~ [ wine-0.9.4 ] ~ [ wine-0.9.3 ] ~ [ wine-0.9.2 ] ~ [ wine-0.9.1 ] ~ [ wine-0.9 ] ~ [ wine20050930 ] ~ [ wine20050830 ] ~ [ wine20050725 ] ~ [ wine20050628 ] ~ [ wine20050524 ] ~ [ wine20050419 ] ~ [ wine20050310 ] ~ [ wine20050211 ] ~ [ wine20050111 ] ~ [ wine20041201 ] ~ [ wine20041019 ] ~ [ wine20040914 ] ~ [ wine20040813 ] ~ [ wine20040716 ] ~ [ wine20040615 ] ~ [ wine20040505 ] ~ [ wine20040408 ] ~ [ wine20040309 ] ~ [ wine20040213 ] ~ [ wine20040121 ] ~ [ wine20031212 ] ~ [ wine20031118 ] ~ [ wine20031016 ] ~ [ wine20030911 ] ~ [ wine20030813 ] ~ [ wine20030709 ] ~ [ wine20030618 ] ~ [ wine20030508 ] ~ [ wine20030408 ] ~ [ wine20030318 ] ~ [ wine20030219 ] ~ [ wine20030115 ] ~ [ wine20021219 ] ~ [ wine20021125 ] ~ [ wine20021031 ] ~ [ wine20021007 ] ~ [ wine20020904 ] ~ [ wine20020804 ] ~ [ wine20020710 ] ~ [ wine20020605 ] ~ [ wine20020509 ] ~ [ wine20020411 ] ~ [ wine20020310 ] ~ [ wine20020228 ] ~ [ wine20011226 ] ~ [ wine20011108 ] ~ [ wine20011004 ] ~ [ wine20010824 ] ~ [ wine20010731 ] ~ [ wine20010629 ] ~ [ wine20010510 ] ~ [ wine20010418 ] ~ [ wine20010326 ] ~ [ wine20010305 ] ~ [ wine20010216 ] ~ [ wine20010112 ] ~ [ wine20001222 ] ~ [ wine20001202 ] ~ [ wine20001026 ] ~ [ wine20001002 ] ~ [ wine20000909 ] ~ [ wine20000821 ] ~ [ wine20000801 ] ~ [ wine20000716 ] ~ [ wine20000326 ] ~ [ wine20000227 ] ~ [ wine20000130 ] ~ [ wine20000109 ] ~

  1 /*
  2  * IDL Compiler
  3  *
  4  * Copyright 2002 Ove Kaaven
  5  *
  6  * This library is free software; you can redistribute it and/or
  7  * modify it under the terms of the GNU Lesser General Public
  8  * License as published by the Free Software Foundation; either
  9  * version 2.1 of the License, or (at your option) any later version.
 10  *
 11  * This library is distributed in the hope that it will be useful,
 12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 14  * Lesser General Public License for more details.
 15  *
 16  * You should have received a copy of the GNU Lesser General Public
 17  * License along with this library; if not, write to the Free Software
 18  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 19  */
 20 
 21 #ifndef __WIDL_WIDLTYPES_H
 22 #define __WIDL_WIDLTYPES_H
 23 
 24 #include <stdarg.h>
 25 #include "guiddef.h"
 26 #include "wine/rpcfc.h"
 27 #include "wine/list.h"
 28 
 29 #ifndef UUID_DEFINED
 30 #define UUID_DEFINED
 31 typedef GUID UUID;
 32 #endif
 33 
 34 #define TRUE 1
 35 #define FALSE 0
 36 
 37 #define RPC_FC_COCLASS  0xfd
 38 #define RPC_FC_FUNCTION 0xfe
 39 
 40 typedef struct _loc_info_t loc_info_t;
 41 typedef struct _attr_t attr_t;
 42 typedef struct _expr_t expr_t;
 43 typedef struct _type_t type_t;
 44 typedef struct _typeref_t typeref_t;
 45 typedef struct _var_t var_t;
 46 typedef struct _declarator_t declarator_t;
 47 typedef struct _func_t func_t;
 48 typedef struct _ifref_t ifref_t;
 49 typedef struct _typelib_entry_t typelib_entry_t;
 50 typedef struct _importlib_t importlib_t;
 51 typedef struct _importinfo_t importinfo_t;
 52 typedef struct _typelib_t typelib_t;
 53 typedef struct _user_type_t user_type_t;
 54 typedef struct _user_type_t context_handle_t;
 55 typedef struct _type_list_t type_list_t;
 56 typedef struct _statement_t statement_t;
 57 
 58 typedef struct list attr_list_t;
 59 typedef struct list str_list_t;
 60 typedef struct list func_list_t;
 61 typedef struct list expr_list_t;
 62 typedef struct list var_list_t;
 63 typedef struct list declarator_list_t;
 64 typedef struct list ifref_list_t;
 65 typedef struct list array_dims_t;
 66 typedef struct list user_type_list_t;
 67 typedef struct list context_handle_list_t;
 68 typedef struct list statement_list_t;
 69 
 70 enum attr_type
 71 {
 72     ATTR_AGGREGATABLE,
 73     ATTR_APPOBJECT,
 74     ATTR_ASYNC,
 75     ATTR_AUTO_HANDLE,
 76     ATTR_BINDABLE,
 77     ATTR_BROADCAST,
 78     ATTR_CALLAS,
 79     ATTR_CALLCONV, /* calling convention pseudo-attribute */
 80     ATTR_CASE,
 81     ATTR_CONST, /* const pseudo-attribute */
 82     ATTR_CONTEXTHANDLE,
 83     ATTR_CONTROL,
 84     ATTR_DEFAULT,
 85     ATTR_DEFAULTCOLLELEM,
 86     ATTR_DEFAULTVALUE,
 87     ATTR_DEFAULTVTABLE,
 88     ATTR_DISPINTERFACE,
 89     ATTR_DISPLAYBIND,
 90     ATTR_DLLNAME,
 91     ATTR_DUAL,
 92     ATTR_ENDPOINT,
 93     ATTR_ENTRY,
 94     ATTR_EXPLICIT_HANDLE,
 95     ATTR_HANDLE,
 96     ATTR_HELPCONTEXT,
 97     ATTR_HELPFILE,
 98     ATTR_HELPSTRING,
 99     ATTR_HELPSTRINGCONTEXT,
100     ATTR_HELPSTRINGDLL,
101     ATTR_HIDDEN,
102     ATTR_ID,
103     ATTR_IDEMPOTENT,
104     ATTR_IIDIS,
105     ATTR_IMMEDIATEBIND,
106     ATTR_IMPLICIT_HANDLE,
107     ATTR_IN,
108     ATTR_INLINE,
109     ATTR_INPUTSYNC,
110     ATTR_LENGTHIS,
111     ATTR_LIBLCID,
112     ATTR_LOCAL,
113     ATTR_NONBROWSABLE,
114     ATTR_NONCREATABLE,
115     ATTR_NONEXTENSIBLE,
116     ATTR_OBJECT,
117     ATTR_ODL,
118     ATTR_OLEAUTOMATION,
119     ATTR_OPTIONAL,
120     ATTR_OUT,
121     ATTR_POINTERDEFAULT,
122     ATTR_POINTERTYPE,
123     ATTR_PROPGET,
124     ATTR_PROPPUT,
125     ATTR_PROPPUTREF,
126     ATTR_PUBLIC,
127     ATTR_RANGE,
128     ATTR_READONLY,
129     ATTR_REQUESTEDIT,
130     ATTR_RESTRICTED,
131     ATTR_RETVAL,
132     ATTR_SIZEIS,
133     ATTR_SOURCE,
134     ATTR_STRICTCONTEXTHANDLE,
135     ATTR_STRING,
136     ATTR_SWITCHIS,
137     ATTR_SWITCHTYPE,
138     ATTR_TRANSMITAS,
139     ATTR_UUID,
140     ATTR_V1ENUM,
141     ATTR_VARARG,
142     ATTR_VERSION,
143     ATTR_WIREMARSHAL
144 };
145 
146 enum expr_type
147 {
148     EXPR_VOID,
149     EXPR_NUM,
150     EXPR_HEXNUM,
151     EXPR_DOUBLE,
152     EXPR_IDENTIFIER,
153     EXPR_NEG,
154     EXPR_NOT,
155     EXPR_PPTR,
156     EXPR_CAST,
157     EXPR_SIZEOF,
158     EXPR_SHL,
159     EXPR_SHR,
160     EXPR_MUL,
161     EXPR_DIV,
162     EXPR_ADD,
163     EXPR_SUB,
164     EXPR_AND,
165     EXPR_OR,
166     EXPR_COND,
167     EXPR_TRUEFALSE,
168     EXPR_ADDRESSOF,
169     EXPR_MEMBER,
170     EXPR_ARRAY,
171     EXPR_MOD,
172     EXPR_LOGOR,
173     EXPR_LOGAND,
174     EXPR_XOR,
175     EXPR_EQUALITY,
176     EXPR_INEQUALITY,
177     EXPR_GTR,
178     EXPR_LESS,
179     EXPR_GTREQL,
180     EXPR_LESSEQL,
181     EXPR_LOGNOT,
182     EXPR_POS,
183     EXPR_STRLIT,
184     EXPR_WSTRLIT,
185 };
186 
187 enum type_kind
188 {
189     TKIND_PRIMITIVE = -1,
190     TKIND_ENUM,
191     TKIND_RECORD,
192     TKIND_MODULE,
193     TKIND_INTERFACE,
194     TKIND_DISPATCH,
195     TKIND_COCLASS,
196     TKIND_ALIAS,
197     TKIND_UNION,
198     TKIND_MAX
199 };
200 
201 enum storage_class
202 {
203     STG_NONE,
204     STG_STATIC,
205     STG_EXTERN,
206     STG_REGISTER,
207 };
208 
209 enum statement_type
210 {
211     STMT_LIBRARY,
212     STMT_DECLARATION,
213     STMT_TYPE,
214     STMT_TYPEREF,
215     STMT_MODULE,
216     STMT_TYPEDEF,
217     STMT_IMPORT,
218     STMT_IMPORTLIB,
219     STMT_CPPQUOTE
220 };
221 
222 struct _loc_info_t
223 {
224     const char *input_name;
225     int line_number;
226     const char *near_text;
227 };
228 
229 struct str_list_entry_t
230 {
231     char *str;
232     struct list entry;
233 };
234 
235 struct _attr_t {
236   enum attr_type type;
237   union {
238     unsigned long ival;
239     void *pval;
240   } u;
241   /* parser-internal */
242   struct list entry;
243 };
244 
245 struct _expr_t {
246   enum expr_type type;
247   const expr_t *ref;
248   union {
249     long lval;
250     double dval;
251     const char *sval;
252     const expr_t *ext;
253     type_t *tref;
254   } u;
255   const expr_t *ext2;
256   int is_const;
257   long cval;
258   /* parser-internal */
259   struct list entry;
260 };
261 
262 struct _type_t {
263   const char *name;
264   enum type_kind kind;
265   unsigned char type;
266   struct _type_t *ref;
267   attr_list_t *attrs;
268   func_list_t *funcs;             /* interfaces and modules */
269   var_list_t *fields_or_args;     /* interfaces, structures, enumerations and functions (for args) */
270   ifref_list_t *ifaces;           /* coclasses */
271   unsigned long dim;              /* array dimension */
272   expr_t *size_is, *length_is;
273   type_t *orig;                   /* dup'd types */
274   unsigned int typestring_offset;
275   unsigned int ptrdesc;           /* used for complex structs */
276   int typelib_idx;
277   loc_info_t loc_info;
278   unsigned int declarray : 1;     /* if declared as an array */
279   unsigned int ignore : 1;
280   unsigned int defined : 1;
281   unsigned int written : 1;
282   unsigned int user_types_registered : 1;
283   unsigned int tfswrite : 1;   /* if the type needs to be written to the TFS */
284   unsigned int checked : 1;
285   int sign : 2;
286 };
287 
288 struct _var_t {
289   char *name;
290   type_t *type;
291   attr_list_t *attrs;
292   expr_t *eval;
293   enum storage_class stgclass;
294 
295   struct _loc_info_t loc_info;
296 
297   /* parser-internal */
298   struct list entry;
299 };
300 
301 struct _declarator_t {
302   var_t *var;
303   type_t *type;
304   type_t *func_type;
305   array_dims_t *array;
306 
307   /* parser-internal */
308   struct list entry;
309 };
310 
311 struct _func_t {
312   var_t *def;
313   var_list_t *args;
314   int ignore, idx;
315 
316   /* parser-internal */
317   struct list entry;
318 };
319 
320 struct _ifref_t {
321   type_t *iface;
322   attr_list_t *attrs;
323 
324   /* parser-internal */
325   struct list entry;
326 };
327 
328 struct _typelib_entry_t {
329     type_t *type;
330     struct list entry;
331 };
332 
333 struct _importinfo_t {
334     int offset;
335     GUID guid;
336     int flags;
337     int id;
338 
339     char *name;
340 
341     importlib_t *importlib;
342 };
343 
344 struct _importlib_t {
345     char *name;
346 
347     int version;
348     GUID guid;
349 
350     importinfo_t *importinfos;
351     int ntypeinfos;
352 
353     int allocated;
354 
355     struct list entry;
356 };
357 
358 struct _typelib_t {
359     char *name;
360     char *filename;
361     const attr_list_t *attrs;
362     struct list entries;
363     struct list importlibs;
364     statement_list_t *stmts;
365 };
366 
367 struct _user_type_t {
368     struct list entry;
369     const char *name;
370 };
371 
372 struct _type_list_t {
373     type_t *type;
374     struct _type_list_t *next;
375 };
376 
377 struct _statement_t {
378     struct list entry;
379     enum statement_type type;
380     union
381     {
382         ifref_t iface;
383         type_t *type;
384         const char *str;
385         var_t *var;
386         typelib_t *lib;
387         type_list_t *type_list;
388     } u;
389 };
390 
391 extern unsigned char pointer_default;
392 
393 extern user_type_list_t user_type_list;
394 void check_for_additional_prototype_types(const var_list_t *list);
395 
396 void init_types(void);
397 type_t *alloc_type(void);
398 void set_all_tfswrite(int val);
399 
400 type_t *duptype(type_t *t, int dupname);
401 type_t *alias(type_t *t, const char *name);
402 
403 int is_ptr(const type_t *t);
404 int is_array(const type_t *t);
405 int is_var_ptr(const var_t *v);
406 int cant_be_null(const var_t *v);
407 int is_struct(unsigned char tc);
408 int is_union(unsigned char tc);
409 
410 var_t *find_const(const char *name, int f);
411 type_t *find_type(const char *name, int t);
412 type_t *make_type(unsigned char type, type_t *ref);
413 
414 void init_loc_info(loc_info_t *);
415 
416 static inline type_t *get_func_return_type(const func_t *func)
417 {
418   return func->def->type->ref;
419 }
420 
421 #endif
422 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.