PageRenderTime 225ms CodeModel.GetById 52ms RepoModel.GetById 33ms app.codeStats 0ms

/Source/Swig/swig.h

https://github.com/sunaku/swig-ruby-ffi
C Header | 408 lines | 303 code | 69 blank | 36 comment | 0 complexity | 9d21e4d7722c2e8c88be452031e9d40a MD5 | raw file
Possible License(s): 0BSD, GPL-2.0, LGPL-2.1
  1. /* -----------------------------------------------------------------------------
  2. * See the LICENSE file for information on copyright, usage and redistribution
  3. * of SWIG, and the README file for authors - http://www.swig.org/release.html.
  4. *
  5. * swig.h
  6. *
  7. * Header file for the SWIG core.
  8. * ----------------------------------------------------------------------------- */
  9. /* $Id$ */
  10. #ifndef SWIGCORE_H_
  11. #define SWIGCORE_H_
  12. #ifndef MACSWIG
  13. #include "swigconfig.h"
  14. #endif
  15. #include <stdio.h>
  16. #include <string.h>
  17. #include <stdlib.h>
  18. #include <assert.h>
  19. #ifdef __cplusplus
  20. extern "C" {
  21. #endif
  22. #include "doh.h"
  23. /* Status codes */
  24. #define SWIG_OK 1
  25. #define SWIG_ERROR 0
  26. #define SWIG_NOWRAP 0
  27. /* Short names for common data types */
  28. typedef DOH String;
  29. typedef DOH Hash;
  30. typedef DOH List;
  31. typedef DOH String_or_char;
  32. typedef DOH File;
  33. typedef DOH Parm;
  34. typedef DOH ParmList;
  35. typedef DOH Node;
  36. typedef DOH Symtab;
  37. typedef DOH Typetab;
  38. typedef DOH SwigType;
  39. /* --- Legacy DataType interface. These type codes are provided solely
  40. for backwards compatibility with older modules --- */
  41. /* --- The ordering of type values is used to determine type-promotion
  42. in the parser. Do not change */
  43. /* Numeric types */
  44. #define T_BOOL 1
  45. #define T_SCHAR 2
  46. #define T_UCHAR 3
  47. #define T_SHORT 4
  48. #define T_USHORT 5
  49. #define T_ENUM 6
  50. #define T_INT 7
  51. #define T_UINT 8
  52. #define T_LONG 9
  53. #define T_ULONG 10
  54. #define T_LONGLONG 11
  55. #define T_ULONGLONG 12
  56. #define T_FLOAT 20
  57. #define T_DOUBLE 21
  58. #define T_LONGDOUBLE 22
  59. #define T_FLTCPLX 23
  60. #define T_DBLCPLX 24
  61. #define T_NUMERIC 25
  62. #define T_COMPLEX T_DBLCPLX
  63. /* non-numeric */
  64. #define T_CHAR 29
  65. #define T_WCHAR 30
  66. #define T_USER 31
  67. #define T_VOID 32
  68. #define T_STRING 33
  69. #define T_POINTER 34
  70. #define T_REFERENCE 35
  71. #define T_ARRAY 36
  72. #define T_FUNCTION 37
  73. #define T_MPOINTER 38
  74. #define T_VARARGS 39
  75. #define T_SYMBOL 98
  76. #define T_ERROR 99
  77. /* --- File interface --- */
  78. #include "swigfile.h"
  79. /* --- Command line parsing --- */
  80. #include "swigopt.h"
  81. /* --- Scanner Interface --- */
  82. #include "swigscan.h"
  83. /* --- Functions for manipulating the string-based type encoding --- */
  84. extern SwigType *NewSwigType(int typecode);
  85. extern SwigType *SwigType_del_element(SwigType *t);
  86. extern SwigType *SwigType_add_pointer(SwigType *t);
  87. extern SwigType *SwigType_add_memberpointer(SwigType *t, const_String_or_char_ptr qual);
  88. extern SwigType *SwigType_del_memberpointer(SwigType *t);
  89. extern SwigType *SwigType_del_pointer(SwigType *t);
  90. extern SwigType *SwigType_add_array(SwigType *t, const_String_or_char_ptr size);
  91. extern SwigType *SwigType_del_array(SwigType *t);
  92. extern SwigType *SwigType_pop_arrays(SwigType *t);
  93. extern SwigType *SwigType_add_reference(SwigType *t);
  94. extern SwigType *SwigType_del_reference(SwigType *t);
  95. extern SwigType *SwigType_add_qualifier(SwigType *t, const_String_or_char_ptr qual);
  96. extern SwigType *SwigType_del_qualifier(SwigType *t);
  97. extern SwigType *SwigType_add_function(SwigType *t, ParmList *parms);
  98. extern SwigType *SwigType_add_template(SwigType *t, ParmList *parms);
  99. extern SwigType *SwigType_pop_function(SwigType *t);
  100. extern ParmList *SwigType_function_parms(SwigType *t);
  101. extern List *SwigType_split(const SwigType *t);
  102. extern String *SwigType_pop(SwigType *t);
  103. extern void SwigType_push(SwigType *t, SwigType *s);
  104. extern List *SwigType_parmlist(const SwigType *p);
  105. extern String *SwigType_parm(String *p);
  106. extern String *SwigType_str(SwigType *s, const_String_or_char_ptr id);
  107. extern String *SwigType_lstr(SwigType *s, const_String_or_char_ptr id);
  108. extern String *SwigType_rcaststr(SwigType *s, const_String_or_char_ptr id);
  109. extern String *SwigType_lcaststr(SwigType *s, const_String_or_char_ptr id);
  110. extern String *SwigType_manglestr(SwigType *t);
  111. extern SwigType *SwigType_ltype(SwigType *t);
  112. extern int SwigType_ispointer(SwigType *t);
  113. extern int SwigType_ispointer_return(SwigType *t);
  114. extern int SwigType_isfunctionpointer(SwigType *t);
  115. extern int SwigType_ismemberpointer(SwigType *t);
  116. extern int SwigType_isreference(SwigType *t);
  117. extern int SwigType_isreference_return(SwigType *t);
  118. extern int SwigType_isarray(SwigType *t);
  119. extern int SwigType_prefix_is_simple_1D_array(SwigType *t);
  120. extern int SwigType_isfunction(SwigType *t);
  121. extern int SwigType_isqualifier(SwigType *t);
  122. extern int SwigType_isconst(SwigType *t);
  123. extern int SwigType_issimple(SwigType *t);
  124. extern int SwigType_ismutable(SwigType *t);
  125. extern int SwigType_isvarargs(const SwigType *t);
  126. extern int SwigType_istemplate(const SwigType *t);
  127. extern int SwigType_isenum(SwigType *t);
  128. extern int SwigType_check_decl(SwigType *t, const_String_or_char_ptr decl);
  129. extern SwigType *SwigType_strip_qualifiers(SwigType *t);
  130. extern SwigType *SwigType_functionpointer_decompose(SwigType *t);
  131. extern String *SwigType_base(const SwigType *t);
  132. extern String *SwigType_namestr(const SwigType *t);
  133. extern String *SwigType_templateprefix(const SwigType *t);
  134. extern String *SwigType_templatesuffix(const SwigType *t);
  135. extern String *SwigType_templateargs(const SwigType *t);
  136. extern String *SwigType_prefix(const SwigType *t);
  137. extern int SwigType_array_ndim(SwigType *t);
  138. extern String *SwigType_array_getdim(SwigType *t, int n);
  139. extern void SwigType_array_setdim(SwigType *t, int n, const_String_or_char_ptr rep);
  140. extern SwigType *SwigType_array_type(SwigType *t);
  141. extern String *SwigType_default(SwigType *t);
  142. extern void SwigType_typename_replace(SwigType *t, String *pat, String *rep);
  143. extern SwigType *SwigType_alttype(SwigType *t, int ltmap);
  144. extern void SwigType_template_defargs(Parm *parms, Parm *targs, Symtab *tscope, Symtab *tsdecl);
  145. extern SwigType *SwigType_template_deftype(const SwigType *type, Symtab *tscope);
  146. /* --- Type-system managment --- */
  147. extern void SwigType_typesystem_init(void);
  148. extern int SwigType_typedef(SwigType *type, const_String_or_char_ptr name);
  149. extern int SwigType_typedef_class(const_String_or_char_ptr name);
  150. extern int SwigType_typedef_using(const_String_or_char_ptr qname);
  151. extern void SwigType_inherit(String *subclass, String *baseclass, String *cast, String *conversioncode);
  152. extern int SwigType_issubtype(SwigType *subtype, SwigType *basetype);
  153. extern void SwigType_scope_alias(String *aliasname, Typetab *t);
  154. extern void SwigType_using_scope(Typetab *t);
  155. extern void SwigType_new_scope(const_String_or_char_ptr name);
  156. extern void SwigType_inherit_scope(Typetab *scope);
  157. extern Typetab *SwigType_pop_scope(void);
  158. extern Typetab *SwigType_set_scope(Typetab *h);
  159. extern void SwigType_print_scope(Typetab *t);
  160. extern SwigType *SwigType_typedef_resolve(const SwigType *t);
  161. extern SwigType *SwigType_typedef_resolve_all(SwigType *t);
  162. extern SwigType *SwigType_typedef_qualified(SwigType *t);
  163. extern int SwigType_istypedef(SwigType *t);
  164. extern int SwigType_isclass(SwigType *t);
  165. extern void SwigType_attach_symtab(Symtab *syms);
  166. extern void SwigType_remember(SwigType *t);
  167. extern void SwigType_remember_clientdata(SwigType *t, const_String_or_char_ptr clientdata);
  168. extern void SwigType_remember_mangleddata(String *mangled, const_String_or_char_ptr clientdata);
  169. extern void (*SwigType_remember_trace(void (*tf) (SwigType *, String *, String *))) (SwigType *, String *, String *);
  170. extern void SwigType_emit_type_table(File *f_headers, File *f_table);
  171. extern int SwigType_type(SwigType *t);
  172. /* --- Symbol table module --- */
  173. extern void Swig_symbol_print_tables(Symtab *symtab);
  174. extern void Swig_symbol_print_tables_summary(void);
  175. extern void Swig_symbol_print_symbols(void);
  176. extern void Swig_symbol_print_csymbols(void);
  177. extern void Swig_symbol_init(void);
  178. extern void Swig_symbol_setscopename(const_String_or_char_ptr name);
  179. extern String *Swig_symbol_getscopename(void);
  180. extern String *Swig_symbol_qualifiedscopename(Symtab *symtab);
  181. extern Symtab *Swig_symbol_newscope(void);
  182. extern Symtab *Swig_symbol_setscope(Symtab *);
  183. extern Symtab *Swig_symbol_getscope(const_String_or_char_ptr symname);
  184. extern Symtab *Swig_symbol_global_scope(void);
  185. extern Symtab *Swig_symbol_current(void);
  186. extern Symtab *Swig_symbol_popscope(void);
  187. extern Node *Swig_symbol_add(const_String_or_char_ptr symname, Node *node);
  188. extern void Swig_symbol_cadd(const_String_or_char_ptr symname, Node *node);
  189. extern Node *Swig_symbol_clookup(const_String_or_char_ptr symname, Symtab *tab);
  190. extern Node *Swig_symbol_clookup_check(const_String_or_char_ptr symname, Symtab *tab, int (*check) (Node *));
  191. extern Symtab *Swig_symbol_cscope(const_String_or_char_ptr symname, Symtab *tab);
  192. extern Node *Swig_symbol_clookup_local(const_String_or_char_ptr symname, Symtab *tab);
  193. extern Node *Swig_symbol_clookup_local_check(const_String_or_char_ptr symname, Symtab *tab, int (*check) (Node *));
  194. extern String *Swig_symbol_qualified(Node *node);
  195. extern Node *Swig_symbol_isoverloaded(Node *node);
  196. extern void Swig_symbol_remove(Node *node);
  197. extern void Swig_symbol_alias(const_String_or_char_ptr aliasname, Symtab *tab);
  198. extern void Swig_symbol_inherit(Symtab *tab);
  199. extern SwigType *Swig_symbol_type_qualify(const SwigType *ty, Symtab *tab);
  200. extern String *Swig_symbol_string_qualify(String *s, Symtab *tab);
  201. extern SwigType *Swig_symbol_typedef_reduce(SwigType *ty, Symtab *tab);
  202. extern ParmList *Swig_symbol_template_defargs(Parm *parms, Parm *targs, Symtab *tscope, Symtab *tsdecl);
  203. extern SwigType *Swig_symbol_template_deftype(const SwigType *type, Symtab *tscope);
  204. extern SwigType *Swig_symbol_template_param_eval(const SwigType *p, Symtab *symtab);
  205. /* --- Parameters and Parameter Lists --- */
  206. #include "swigparm.h"
  207. extern String *ParmList_errorstr(ParmList *);
  208. extern int ParmList_is_compactdefargs(ParmList *p);
  209. /* --- Parse tree support --- */
  210. #include "swigtree.h"
  211. /* -- Wrapper function Object */
  212. #include "swigwrap.h"
  213. /* --- Naming functions --- */
  214. extern void Swig_name_register(const_String_or_char_ptr method, const_String_or_char_ptr format);
  215. extern void Swig_name_unregister(const_String_or_char_ptr method);
  216. extern String *Swig_name_mangle(const_String_or_char_ptr s);
  217. extern String *Swig_name_wrapper(const_String_or_char_ptr fname);
  218. extern String *Swig_name_member(const_String_or_char_ptr classname, const_String_or_char_ptr mname);
  219. extern String *Swig_name_get(const_String_or_char_ptr vname);
  220. extern String *Swig_name_set(const_String_or_char_ptr vname);
  221. extern String *Swig_name_construct(const_String_or_char_ptr classname);
  222. extern String *Swig_name_copyconstructor(const_String_or_char_ptr classname);
  223. extern String *Swig_name_destroy(const_String_or_char_ptr classname);
  224. extern String *Swig_name_disown(const_String_or_char_ptr classname);
  225. extern void Swig_naming_init(void);
  226. extern void Swig_name_namewarn_add(String *prefix, String *name, SwigType *decl, Hash *namewrn);
  227. extern Hash *Swig_name_namewarn_get(Node *n, String *prefix, String *name, SwigType *decl);
  228. extern void Swig_name_rename_add(String *prefix, String *name, SwigType *decl, Hash *namewrn, ParmList *declaratorparms);
  229. extern void Swig_name_inherit(String *base, String *derived);
  230. extern int Swig_need_protected(Node *n);
  231. extern int Swig_need_name_warning(Node *n);
  232. extern int Swig_need_redefined_warn(Node *a, Node *b, int InClass);
  233. extern String *Swig_name_make(Node *n, String *prefix, const_String_or_char_ptr cname, SwigType *decl, String *oldname);
  234. extern String *Swig_name_warning(Node *n, String *prefix, String *name, SwigType *decl);
  235. extern String *Swig_name_decl(Node *n);
  236. extern String *Swig_name_fulldecl(Node *n);
  237. /* --- parameterized rename functions --- */
  238. extern void Swig_name_object_set(Hash *namehash, String *name, SwigType *decl, DOH *object);
  239. extern DOH *Swig_name_object_get(Hash *namehash, String *prefix, String *name, SwigType *decl);
  240. extern void Swig_name_object_inherit(Hash *namehash, String *base, String *derived);
  241. extern void Swig_features_get(Hash *features, String *prefix, String *name, SwigType *decl, Node *n);
  242. extern void Swig_feature_set(Hash *features, const_String_or_char_ptr name, SwigType *decl, const_String_or_char_ptr featurename, String *value, Hash *featureattribs);
  243. /* --- Misc --- */
  244. extern char *Swig_copy_string(const char *c);
  245. extern void Swig_set_fakeversion(const char *version);
  246. extern const char *Swig_package_version(void);
  247. extern void Swig_banner(File *f);
  248. extern void Swig_banner_target_lang(File *f, const_String_or_char_ptr commentchar);
  249. extern String *Swig_strip_c_comments(const String *s);
  250. extern String *Swig_filename_escape(String *filename);
  251. extern void Swig_filename_correct(String *filename);
  252. extern String *Swig_string_escape(String *s);
  253. extern String *Swig_string_mangle(const String *s);
  254. extern void Swig_scopename_split(const String *s, String **prefix, String **last);
  255. extern String *Swig_scopename_prefix(const String *s);
  256. extern String *Swig_scopename_last(const String *s);
  257. extern String *Swig_scopename_first(const String *s);
  258. extern String *Swig_scopename_suffix(const String *s);
  259. extern int Swig_scopename_check(const String *s);
  260. extern String *Swig_string_lower(String *s);
  261. extern String *Swig_string_upper(String *s);
  262. extern String *Swig_string_title(String *s);
  263. extern void Swig_init(void);
  264. extern void Swig_warn(const char *filename, int line, const char *msg);
  265. extern int Swig_value_wrapper_mode(int mode);
  266. #define WARNING(msg) Swig_warn(__FILE__,__LINE__,msg)
  267. typedef enum { EMF_STANDARD, EMF_MICROSOFT } ErrorMessageFormat;
  268. extern void Swig_warning(int num, const_String_or_char_ptr filename, int line, const char *fmt, ...);
  269. extern void Swig_error(const_String_or_char_ptr filename, int line, const char *fmt, ...);
  270. extern int Swig_error_count(void);
  271. extern void Swig_error_silent(int s);
  272. extern void Swig_warnfilter(const_String_or_char_ptr wlist, int val);
  273. extern void Swig_warnall(void);
  274. extern int Swig_warn_count(void);
  275. extern void Swig_error_msg_format(ErrorMessageFormat format);
  276. /* --- C Wrappers --- */
  277. extern String *Swig_cparm_name(Parm *p, int i);
  278. extern String *Swig_wrapped_var_type(SwigType *t, int varcref);
  279. extern int Swig_cargs(Wrapper *w, ParmList *l);
  280. extern String *Swig_cresult(SwigType *t, const_String_or_char_ptr name, const_String_or_char_ptr decl);
  281. extern String *Swig_cfunction_call(const_String_or_char_ptr name, ParmList *parms);
  282. extern String *Swig_cconstructor_call(const_String_or_char_ptr name);
  283. extern String *Swig_cppconstructor_call(const_String_or_char_ptr name, ParmList *parms);
  284. extern String *Swig_unref_call(Node *n);
  285. extern String *Swig_ref_call(Node *n, const String *lname);
  286. extern String *Swig_cdestructor_call(Node *n);
  287. extern String *Swig_cppdestructor_call(Node *n);
  288. extern String *Swig_cmemberset_call(const_String_or_char_ptr name, SwigType *type, String *self, int varcref);
  289. extern String *Swig_cmemberget_call(const_String_or_char_ptr name, SwigType *t, String *self, int varcref);
  290. extern int Swig_add_extension_code(Node *n, const String *function_name, ParmList *parms, SwigType *return_type, const String *code, int cplusplus, const String *self);
  291. /* --- Transformations --- */
  292. extern int Swig_MethodToFunction(Node *n, String *classname, int flags, SwigType *director_type, int is_director);
  293. extern int Swig_ConstructorToFunction(Node *n, String *classname, String *none_comparison, String *director_ctor, int cplus, int flags);
  294. extern int Swig_DestructorToFunction(Node *n, String *classname, int cplus, int flags);
  295. extern int Swig_MembersetToFunction(Node *n, String *classname, int flags, String **call);
  296. extern int Swig_MembergetToFunction(Node *n, String *classname, int flags);
  297. extern int Swig_VargetToFunction(Node *n, int flags);
  298. extern int Swig_VarsetToFunction(Node *n, int flags);
  299. #define CWRAP_EXTEND 0x01
  300. #define CWRAP_SMART_POINTER 0x02
  301. #define CWRAP_NATURAL_VAR 0x04
  302. #define CWRAP_DIRECTOR_ONE_CALL 0x08
  303. #define CWRAP_DIRECTOR_TWO_CALLS 0x10
  304. #define CWRAP_ALL_PROTECTED_ACCESS 0x20
  305. /* --- Director Helpers --- */
  306. extern Node *Swig_methodclass(Node *n);
  307. extern int Swig_directorclass(Node *n);
  308. extern Node *Swig_directormap(Node *n, String *type);
  309. /* --- Legacy Typemap API (somewhat simplified, ha!) --- */
  310. extern void Swig_typemap_init(void);
  311. extern void Swig_typemap_register(const_String_or_char_ptr tmap_method, ParmList *pattern, const_String_or_char_ptr code, ParmList *locals, ParmList *kwargs);
  312. extern int Swig_typemap_copy(const_String_or_char_ptr tmap_method, ParmList *srcpattern, ParmList *pattern);
  313. extern void Swig_typemap_clear(const_String_or_char_ptr tmap_method, ParmList *pattern);
  314. extern int Swig_typemap_apply(ParmList *srcpat, ParmList *destpat);
  315. extern void Swig_typemap_clear_apply(ParmList *pattern);
  316. extern void Swig_typemap_debug(void);
  317. extern String *Swig_typemap_lookup(const_String_or_char_ptr tmap_method, Node *n, const_String_or_char_ptr lname, Wrapper *f);
  318. extern String *Swig_typemap_lookup_out(const_String_or_char_ptr tmap_method, Node *n, const_String_or_char_ptr lname, Wrapper *f, String *actioncode);
  319. extern void Swig_typemap_new_scope(void);
  320. extern Hash *Swig_typemap_pop_scope(void);
  321. extern void Swig_typemap_attach_parms(const_String_or_char_ptr tmap_method, ParmList *parms, Wrapper *f);
  322. /* --- Code fragment support --- */
  323. extern void Swig_fragment_register(Node *fragment);
  324. extern void Swig_fragment_emit(String *name);
  325. extern void Swig_fragment_clear(String *section);
  326. /* hacks defined in C++ ! */
  327. extern int Swig_director_mode(void);
  328. extern int Swig_director_protected_mode(void);
  329. extern int Swig_all_protected_mode(void);
  330. extern void Wrapper_director_mode_set(int);
  331. extern void Wrapper_director_protected_mode_set(int);
  332. extern void Wrapper_all_protected_mode_set(int);
  333. extern void Language_replace_special_variables(String *method, String *tm, Parm *parm);
  334. /* -- template init -- */
  335. extern void SwigType_template_init(void);
  336. #ifdef __cplusplus
  337. }
  338. #endif
  339. #endif