Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygentypegen.h
Go to the documentation of this file.
00001 /* 00002 * Format String Generator for IDL Compiler 00003 * 00004 * Copyright 2005-2006 Eric Kohl 00005 * Copyright 2005 Robert Shearman 00006 * 00007 * This library is free software; you can redistribute it and/or 00008 * modify it under the terms of the GNU Lesser General Public 00009 * License as published by the Free Software Foundation; either 00010 * version 2.1 of the License, or (at your option) any later version. 00011 * 00012 * This library is distributed in the hope that it will be useful, 00013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00015 * Lesser General Public License for more details. 00016 * 00017 * You should have received a copy of the GNU Lesser General Public 00018 * License along with this library; if not, write to the Free Software 00019 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 00020 */ 00021 00022 #include <stdarg.h> 00023 00024 enum pass 00025 { 00026 PASS_IN, 00027 PASS_OUT, 00028 PASS_RETURN 00029 }; 00030 00031 enum remoting_phase 00032 { 00033 PHASE_BUFFERSIZE, 00034 PHASE_MARSHAL, 00035 PHASE_UNMARSHAL, 00036 PHASE_FREE 00037 }; 00038 00039 enum typegen_detect_flags 00040 { 00041 TDT_ALL_TYPES = 1 << 0, 00042 TDT_IGNORE_STRINGS = 1 << 1, 00043 TDT_IGNORE_RANGES = 1 << 2, 00044 }; 00045 00046 enum typegen_type 00047 { 00048 TGT_INVALID, 00049 TGT_USER_TYPE, 00050 TGT_CTXT_HANDLE, 00051 TGT_CTXT_HANDLE_POINTER, 00052 TGT_STRING, 00053 TGT_POINTER, 00054 TGT_ARRAY, 00055 TGT_IFACE_POINTER, 00056 TGT_BASIC, 00057 TGT_ENUM, 00058 TGT_STRUCT, 00059 TGT_UNION, 00060 TGT_RANGE, 00061 }; 00062 00063 typedef int (*type_pred_t)(const type_t *); 00064 00065 void write_formatstringsdecl(FILE *f, int indent, const statement_list_t *stmts, type_pred_t pred); 00066 void write_procformatstring(FILE *file, const statement_list_t *stmts, type_pred_t pred); 00067 void write_typeformatstring(FILE *file, const statement_list_t *stmts, type_pred_t pred); 00068 void write_procformatstring_offsets( FILE *file, const type_t *iface ); 00069 void print_phase_basetype(FILE *file, int indent, const char *local_var_prefix, enum remoting_phase phase, 00070 enum pass pass, const var_t *var, const char *varname); 00071 void write_parameter_conf_or_var_exprs(FILE *file, int indent, const char *local_var_prefix, 00072 enum remoting_phase phase, const var_t *var, int valid_variance); 00073 void write_remoting_arguments(FILE *file, int indent, const var_t *func, const char *local_var_prefix, 00074 enum pass pass, enum remoting_phase phase); 00075 unsigned int get_size_procformatstring_func(const type_t *iface, const var_t *func); 00076 unsigned int get_size_procformatstring(const statement_list_t *stmts, type_pred_t pred); 00077 unsigned int get_size_typeformatstring(const statement_list_t *stmts, type_pred_t pred); 00078 void assign_stub_out_args( FILE *file, int indent, const var_t *func, const char *local_var_prefix ); 00079 void declare_stub_args( FILE *file, int indent, const var_t *func ); 00080 void write_func_param_struct( FILE *file, const type_t *iface, const type_t *func, 00081 const char *var_decl, int add_retval ); 00082 void write_pointer_checks( FILE *file, int indent, const var_t *func ); 00083 int write_expr_eval_routines(FILE *file, const char *iface); 00084 void write_expr_eval_routine_list(FILE *file, const char *iface); 00085 void write_user_quad_list(FILE *file); 00086 void write_endpoints( FILE *f, const char *prefix, const str_list_t *list ); 00087 void write_client_call_routine( FILE *file, const type_t *iface, const var_t *func, 00088 const char *prefix, unsigned int proc_offset ); 00089 void write_exceptions( FILE *file ); 00090 unsigned int type_memsize(const type_t *t); 00091 int decl_indirect(const type_t *t); 00092 int is_interpreted_func(const type_t *iface, const var_t *func); 00093 void write_parameters_init(FILE *file, int indent, const var_t *func, const char *local_var_prefix); 00094 void print(FILE *file, int indent, const char *format, va_list ap); 00095 expr_t *get_size_is_expr(const type_t *t, const char *name); 00096 int is_full_pointer_function(const var_t *func); 00097 void write_full_pointer_init(FILE *file, int indent, const var_t *func, int is_server); 00098 void write_full_pointer_free(FILE *file, int indent, const var_t *func); 00099 unsigned char get_basic_fc(const type_t *type); 00100 unsigned char get_pointer_fc(const type_t *type, const attr_list_t *attrs, int toplevel_param); 00101 unsigned char get_struct_fc(const type_t *type); 00102 enum typegen_type typegen_detect_type(const type_t *type, const attr_list_t *attrs, unsigned int flags); Generated on Fri May 25 2012 04:36:15 for ReactOS by
1.7.6.1
|