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