ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

typegen.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 doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.