ReactOS  0.4.14-dev-98-gb0d4763
header.h
Go to the documentation of this file.
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_HEADER_H
22 #define __WIDL_HEADER_H
23 
24 #include "typetree.h"
25 
26 extern int is_ptrchain_attr(const var_t *var, enum attr_type t);
27 extern int is_aliaschain_attr(const type_t *var, enum attr_type t);
28 extern int is_attr(const attr_list_t *list, enum attr_type t);
29 extern void *get_attrp(const attr_list_t *list, enum attr_type t);
30 extern unsigned int get_attrv(const attr_list_t *list, enum attr_type t);
31 extern const char* get_name(const var_t *v);
32 extern void write_type_left(FILE *h, type_t *t, enum name_type name_type, int declonly);
33 extern void write_type_right(FILE *h, type_t *t, int is_field);
34 extern void write_type_decl(FILE *f, type_t *t, const char *name);
35 extern void write_type_decl_left(FILE *f, type_t *t);
36 extern unsigned int get_context_handle_offset( const type_t *type );
37 extern unsigned int get_generic_handle_offset( const type_t *type );
38 extern int needs_space_after(type_t *t);
39 extern int is_object(const type_t *iface);
40 extern int is_local(const attr_list_t *list);
41 extern int count_methods(const type_t *iface);
42 extern int need_stub(const type_t *iface);
43 extern int need_proxy(const type_t *iface);
44 extern int need_inline_stubs(const type_t *iface);
45 extern int need_stub_files(const statement_list_t *stmts);
46 extern int need_proxy_file(const statement_list_t *stmts);
47 extern int need_proxy_delegation(const statement_list_t *stmts);
48 extern int need_inline_stubs_file(const statement_list_t *stmts);
49 extern const var_t *is_callas(const attr_list_t *list);
50 extern void write_args(FILE *h, const var_list_t *arg, const char *name, int obj, int do_indent);
51 extern const type_t* get_explicit_generic_handle_type(const var_t* var);
52 extern const var_t *get_func_handle_var( const type_t *iface, const var_t *func,
53  unsigned char *explicit_fc, unsigned char *implicit_fc );
54 extern int has_out_arg_or_return(const var_t *func);
55 extern int is_const_decl(const var_t *var);
56 
57 extern void write_serialize_functions(FILE *file, const type_t *type, const type_t *iface);
58 
59 static inline int is_ptr(const type_t *t)
60 {
61  return type_get_type(t) == TYPE_POINTER;
62 }
63 
64 static inline int is_array(const type_t *t)
65 {
66  return type_get_type(t) == TYPE_ARRAY;
67 }
68 
69 static inline int is_void(const type_t *t)
70 {
71  return type_get_type(t) == TYPE_VOID;
72 }
73 
74 static inline int is_declptr(const type_t *t)
75 {
77 }
78 
79 static inline int is_conformant_array(const type_t *t)
80 {
82 }
83 
84 static inline int last_ptr(const type_t *type)
85 {
87 }
88 
89 static inline int last_array(const type_t *type)
90 {
92 }
93 
94 static inline int is_string_type(const attr_list_t *attrs, const type_t *type)
95 {
97  && (last_ptr(type) || last_array(type)));
98 }
99 
100 static inline int is_context_handle(const type_t *type)
101 {
102  const type_t *t;
103  for (t = type;
104  is_ptr(t) || type_is_alias(t);
106  if (is_attr(t->attrs, ATTR_CONTEXTHANDLE))
107  return 1;
108  return 0;
109 }
110 
111 #endif
void write_type_right(FILE *h, type_t *t, int is_field)
Definition: header.c:437
GLenum func
Definition: glext.h:6028
void write_type_left(FILE *h, type_t *t, enum name_type name_type, int declonly)
Definition: header.c:297
int is_ptrchain_attr(const var_t *var, enum attr_type t)
Definition: header.c:66
int needs_space_after(type_t *t)
Definition: header.c:282
int is_aliaschain_attr(const type_t *var, enum attr_type t)
Definition: header.c:86
const char * get_name(const var_t *v)
Definition: header.c:181
static type_t * type_array_get_element(const type_t *type)
Definition: typetree.h:253
GLdouble GLdouble t
Definition: gl.h:2047
void * get_attrp(const attr_list_t *list, enum attr_type t)
Definition: header.c:107
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
int is_const_decl(const var_t *var)
Definition: header.c:801
name_type
Definition: typetree.h:27
int need_inline_stubs(const type_t *iface)
Definition: proxy.c:819
int count_methods(const type_t *iface)
Definition: proxy.c:465
int need_proxy_delegation(const statement_list_t *stmts)
Definition: proxy.c:814
GLfloat GLfloat GLfloat GLfloat h
Definition: glext.h:7723
static type_t * type_pointer_get_ref(const type_t *type)
Definition: typetree.h:292
static int is_declptr(const type_t *t)
Definition: header.h:74
int need_proxy_file(const statement_list_t *stmts)
Definition: proxy.c:809
void write_args(FILE *h, const var_list_t *arg, const char *name, int obj, int do_indent)
Definition: header.c:1058
int has_out_arg_or_return(const var_t *func)
Definition: header.c:908
static int is_ptr(const type_t *t)
Definition: header.h:59
static int type_is_alias(const type_t *type)
Definition: typetree.h:274
static int is_array(const type_t *t)
Definition: header.h:64
int need_inline_stubs_file(const statement_list_t *stmts)
Definition: proxy.c:855
static int is_conformant_array(const type_t *t)
Definition: header.h:79
attr_type
Definition: widltypes.h:68
unsigned int get_attrv(const attr_list_t *list, enum attr_type t)
Definition: header.c:115
GLfloat f
Definition: glext.h:7540
static int last_array(const type_t *type)
Definition: header.h:89
static int is_string_type(const attr_list_t *attrs, const type_t *type)
Definition: header.h:94
static enum type_type type_get_type(const type_t *type)
Definition: typetree.h:68
static int last_ptr(const type_t *type)
Definition: header.h:84
unsigned int get_context_handle_offset(const type_t *type)
Definition: header.c:598
const type_t * get_explicit_generic_handle_type(const var_t *var)
Definition: header.c:855
int need_stub_files(const statement_list_t *stmts)
Definition: proxy.c:850
int need_proxy(const type_t *iface)
Definition: proxy.c:796
Definition: _list.h:228
int is_local(const attr_list_t *list)
Definition: header.c:938
int need_stub(const type_t *iface)
Definition: proxy.c:804
const GLdouble * v
Definition: gl.h:2040
const var_t * get_func_handle_var(const type_t *iface, const var_t *func, unsigned char *explicit_fc, unsigned char *implicit_fc)
Definition: header.c:867
static int is_context_handle(const type_t *type)
Definition: header.h:100
static type_t * type_alias_get_aliasee(const type_t *type)
Definition: typetree.h:279
void write_serialize_functions(FILE *file, const type_t *type, const type_t *iface)
Definition: client.c:338
void write_type_decl_left(FILE *f, type_t *t)
Definition: header.c:566
const var_t * is_callas(const attr_list_t *list)
Definition: header.c:943
void write_type_decl(FILE *f, type_t *t, const char *name)
Definition: header.c:561
int is_attr(const attr_list_t *list, enum attr_type t)
Definition: header.c:99
Definition: name.c:36
static int type_array_is_decl_as_ptr(const type_t *type)
Definition: typetree.h:260
static int type_array_has_conformance(const type_t *type)
Definition: typetree.h:218
static int is_void(const type_t *t)
Definition: header.h:69
int is_object(const type_t *iface)
Definition: header.c:928
unsigned int get_generic_handle_offset(const type_t *type)
Definition: header.c:618
Definition: fci.c:126