PageRenderTime 57ms CodeModel.GetById 17ms RepoModel.GetById 1ms app.codeStats 0ms

/tags/rel-1-3-30rc1-b4beautify/SWIG/Source/Swig/swig.h

#
C++ Header | 560 lines | 522 code | 20 blank | 18 comment | 0 complexity | d0b64e83f87f9f0a007f87464495aabb MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
  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. /* $Header$ */
  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. extern List *Swig_add_directory(const String_or_char *dirname);
  79. extern void Swig_push_directory(const String_or_char *dirname);
  80. extern void Swig_pop_directory();
  81. extern String *Swig_last_file();
  82. extern List *Swig_search_path();
  83. extern FILE *Swig_open(const String_or_char *name);
  84. extern String *Swig_read_file(FILE *f);
  85. extern String *Swig_include(const String_or_char *name);
  86. extern String *Swig_include_sys(const String_or_char *name);
  87. extern int Swig_insert_file(const String_or_char *name, File *outfile);
  88. extern void Swig_set_config_file(const String_or_char *filename);
  89. extern String *Swig_get_config_file(void);
  90. extern void Swig_set_push_dir(int dopush);
  91. extern int Swig_get_push_dir(void);
  92. extern void Swig_swiglib_set(const String_or_char *);
  93. extern String *Swig_swiglib_get();
  94. extern void Swig_register_filebyname(const String_or_char *filename, File *outfile);
  95. extern File *Swig_filebyname(const String_or_char *filename);
  96. extern char *Swig_file_suffix(const String_or_char *filename);
  97. extern char *Swig_file_basename(const String_or_char *filename);
  98. extern char *Swig_file_filename(const String_or_char *filename);
  99. extern char *Swig_file_dirname(const String_or_char *filename);
  100. #if defined(MACSWIG)
  101. # define SWIG_FILE_DELIMETER ":"
  102. #elif defined(_WIN32)
  103. # define SWIG_FILE_DELIMETER "\\"
  104. #else
  105. # define SWIG_FILE_DELIMETER "/"
  106. #endif
  107. /* --- Command line parsing --- */
  108. extern void Swig_init_args(int argc, char **argv);
  109. extern void Swig_mark_arg(int n);
  110. extern int Swig_check_marked(int n);
  111. extern void Swig_check_options(int check_input);
  112. extern void Swig_arg_error();
  113. /* --- Scanner Interface --- */
  114. typedef struct SwigScanner SwigScanner;
  115. extern SwigScanner *NewSwigScanner();
  116. extern void DelSwigScanner(SwigScanner *);
  117. extern void SwigScanner_clear(SwigScanner *);
  118. extern void SwigScanner_push(SwigScanner *, String *);
  119. extern void SwigScanner_pushtoken(SwigScanner *, int);
  120. extern int SwigScanner_token(SwigScanner *);
  121. extern String *SwigScanner_text(SwigScanner *);
  122. extern void SwigScanner_skip_line(SwigScanner *);
  123. extern int SwigScanner_skip_balanced(SwigScanner *, int startchar, int endchar);
  124. extern void SwigScanner_set_location(SwigScanner *, String *file, int line);
  125. extern String *SwigScanner_get_file(SwigScanner *);
  126. extern int SwigScanner_get_line(SwigScanner *);
  127. extern void SwigScanner_idstart(SwigScanner *, char *idchar);
  128. #define SWIG_MAXTOKENS 512
  129. #define SWIG_TOKEN_LPAREN 1
  130. #define SWIG_TOKEN_RPAREN 2
  131. #define SWIG_TOKEN_SEMI 3
  132. #define SWIG_TOKEN_COMMA 4
  133. #define SWIG_TOKEN_STAR 5
  134. #define SWIG_TOKEN_LBRACE 6
  135. #define SWIG_TOKEN_RBRACE 7
  136. #define SWIG_TOKEN_EQUAL 8
  137. #define SWIG_TOKEN_EQUALTO 9
  138. #define SWIG_TOKEN_NOTEQUAL 10
  139. #define SWIG_TOKEN_PLUS 11
  140. #define SWIG_TOKEN_MINUS 12
  141. #define SWIG_TOKEN_AND 13
  142. #define SWIG_TOKEN_LAND 14
  143. #define SWIG_TOKEN_OR 15
  144. #define SWIG_TOKEN_LOR 16
  145. #define SWIG_TOKEN_XOR 17
  146. #define SWIG_TOKEN_LESSTHAN 18
  147. #define SWIG_TOKEN_GREATERTHAN 19
  148. #define SWIG_TOKEN_LTEQUAL 20
  149. #define SWIG_TOKEN_GTEQUAL 21
  150. #define SWIG_TOKEN_NOT 22
  151. #define SWIG_TOKEN_LNOT 23
  152. #define SWIG_TOKEN_LBRACKET 24
  153. #define SWIG_TOKEN_RBRACKET 25
  154. #define SWIG_TOKEN_SLASH 26
  155. #define SWIG_TOKEN_BACKSLASH 27
  156. #define SWIG_TOKEN_ENDLINE 28
  157. #define SWIG_TOKEN_STRING 29
  158. #define SWIG_TOKEN_POUND 30
  159. #define SWIG_TOKEN_PERCENT 31
  160. #define SWIG_TOKEN_COLON 32
  161. #define SWIG_TOKEN_DCOLON 33
  162. #define SWIG_TOKEN_LSHIFT 34
  163. #define SWIG_TOKEN_RSHIFT 35
  164. #define SWIG_TOKEN_ID 36
  165. #define SWIG_TOKEN_FLOAT 37
  166. #define SWIG_TOKEN_DOUBLE 38
  167. #define SWIG_TOKEN_INT 39
  168. #define SWIG_TOKEN_UINT 40
  169. #define SWIG_TOKEN_LONG 41
  170. #define SWIG_TOKEN_ULONG 42
  171. #define SWIG_TOKEN_CHAR 43
  172. #define SWIG_TOKEN_PERIOD 44
  173. #define SWIG_TOKEN_AT 45
  174. #define SWIG_TOKEN_DOLLAR 46
  175. #define SWIG_TOKEN_CODEBLOCK 47
  176. #define SWIG_TOKEN_RSTRING 48
  177. #define SWIG_TOKEN_LONGLONG 49
  178. #define SWIG_TOKEN_ULONGLONG 50
  179. #define SWIG_TOKEN_ILLEGAL 98
  180. #define SWIG_TOKEN_LAST 99
  181. /* --- Functions for manipulating the string-based type encoding --- */
  182. extern SwigType *NewSwigType(int typecode);
  183. extern SwigType *SwigType_del_element(SwigType *t);
  184. extern SwigType *SwigType_add_pointer(SwigType *t);
  185. extern SwigType *SwigType_add_memberpointer(SwigType *t, const String_or_char *qual);
  186. extern SwigType *SwigType_del_pointer(SwigType *t);
  187. extern SwigType *SwigType_add_array(SwigType *t, const String_or_char *size);
  188. extern SwigType *SwigType_del_array(SwigType *t);
  189. extern SwigType *SwigType_pop_arrays(SwigType *t);
  190. extern SwigType *SwigType_add_reference(SwigType *t);
  191. extern SwigType *SwigType_del_reference(SwigType *t);
  192. extern SwigType *SwigType_add_qualifier(SwigType *t, const String_or_char *qual);
  193. extern SwigType *SwigType_del_qualifier(SwigType *t);
  194. extern SwigType *SwigType_add_function(SwigType *t, ParmList *parms);
  195. extern SwigType *SwigType_add_template(SwigType *t, ParmList *parms);
  196. extern SwigType *SwigType_pop_function(SwigType *t);
  197. extern ParmList *SwigType_function_parms(SwigType *t);
  198. extern List *SwigType_split(const SwigType *t);
  199. extern String *SwigType_pop(SwigType *t);
  200. extern void SwigType_push(SwigType *t, SwigType *s);
  201. extern List *SwigType_parmlist(const SwigType *p);
  202. extern String *SwigType_parm(String *p);
  203. extern String *SwigType_str(SwigType *s, const String_or_char *id);
  204. extern String *SwigType_lstr(SwigType *s, const String_or_char *id);
  205. extern String *SwigType_rcaststr(SwigType *s, const String_or_char *id);
  206. extern String *SwigType_lcaststr(SwigType *s, const String_or_char *id);
  207. extern String *SwigType_manglestr(SwigType *t);
  208. extern SwigType *SwigType_ltype(SwigType *t);
  209. extern int SwigType_ispointer(SwigType *t);
  210. extern int SwigType_ispointer_return(SwigType *t);
  211. extern int SwigType_ismemberpointer(SwigType *t);
  212. extern int SwigType_isreference(SwigType *t);
  213. extern int SwigType_isreference_return(SwigType *t);
  214. extern int SwigType_isarray(SwigType *t);
  215. extern int SwigType_isfunction(SwigType *t);
  216. extern int SwigType_isqualifier(SwigType *t);
  217. extern int SwigType_isconst(SwigType *t);
  218. extern int SwigType_issimple(SwigType *t);
  219. extern int SwigType_ismutable(SwigType *t);
  220. extern int SwigType_isvarargs(const SwigType *t);
  221. extern int SwigType_istemplate(const SwigType *t);
  222. extern int SwigType_isenum(SwigType *t);
  223. extern int SwigType_check_decl(SwigType *t, const String_or_char *decl);
  224. extern SwigType *SwigType_strip_qualifiers(SwigType *t);
  225. extern String *SwigType_base(const SwigType *t);
  226. extern String *SwigType_namestr(const SwigType *t);
  227. extern String *SwigType_templateprefix(const SwigType *t);
  228. extern String *SwigType_templatesuffix(const SwigType *t);
  229. extern String *SwigType_templateargs(const SwigType *t);
  230. extern String *SwigType_prefix(const SwigType *t);
  231. extern int SwigType_array_ndim(SwigType *t);
  232. extern String *SwigType_array_getdim(SwigType *t, int n);
  233. extern void SwigType_array_setdim(SwigType *t, int n, const String_or_char *rep);
  234. extern SwigType *SwigType_array_type(SwigType *t);
  235. extern String *SwigType_default(SwigType *t);
  236. extern void SwigType_typename_replace(SwigType *t, String *pat, String *rep);
  237. extern SwigType *SwigType_alttype(SwigType *t, int ltmap);
  238. extern void SwigType_template_defargs(Parm *parms, Parm *targs, Symtab *tscope, Symtab *tsdecl);
  239. extern SwigType* SwigType_template_deftype(const SwigType *type, Symtab *tscope);
  240. /* --- Type-system managment --- */
  241. extern void SwigType_typesystem_init();
  242. extern int SwigType_typedef(SwigType *type, String_or_char *name);
  243. extern int SwigType_typedef_class(String_or_char *name);
  244. extern int SwigType_typedef_using(String_or_char *qname);
  245. extern void SwigType_inherit(String *subclass, String *baseclass, String *cast);
  246. extern int SwigType_issubtype(SwigType *subtype, SwigType *basetype);
  247. extern void SwigType_scope_alias(String *aliasname, Typetab *t);
  248. extern void SwigType_using_scope(Typetab *t);
  249. extern void SwigType_new_scope(const String_or_char *name);
  250. extern void SwigType_inherit_scope(Typetab *scope);
  251. extern Typetab *SwigType_pop_scope();
  252. extern Typetab *SwigType_set_scope(Typetab *h);
  253. extern void SwigType_print_scope(Typetab *t);
  254. extern SwigType *SwigType_typedef_resolve(SwigType *t);
  255. extern SwigType *SwigType_typedef_resolve_all(SwigType *t);
  256. extern SwigType *SwigType_typedef_qualified(SwigType *t);
  257. extern int SwigType_istypedef(SwigType *t);
  258. extern int SwigType_isclass(SwigType *t);
  259. extern void SwigType_attach_symtab(Symtab *syms);
  260. extern void SwigType_remember(SwigType *t);
  261. extern void SwigType_remember_clientdata(SwigType *t, const String_or_char *clientdata);
  262. extern void SwigType_remember_mangleddata(String *mangled, const String_or_char *clientdata);
  263. extern void (*SwigType_remember_trace(void (*tf)(SwigType *, String *, String *)))(SwigType *, String *, String *);
  264. extern void SwigType_emit_type_table(File *f_headers, File *f_table);
  265. extern int SwigType_type(SwigType *t);
  266. /* --- Symbol table module --- */
  267. extern void Swig_symbol_init();
  268. extern void Swig_symbol_setscopename(const String_or_char *name);
  269. extern String *Swig_symbol_getscopename();
  270. extern String *Swig_symbol_qualifiedscopename(Symtab *symtab);
  271. extern Symtab *Swig_symbol_newscope();
  272. extern Symtab *Swig_symbol_setscope(Symtab *);
  273. extern Symtab *Swig_symbol_getscope(const String_or_char *symname);
  274. extern Symtab *Swig_symbol_current();
  275. extern Symtab *Swig_symbol_popscope();
  276. extern Node *Swig_symbol_add(String_or_char *symname, Node *node);
  277. extern void Swig_symbol_cadd(String_or_char *symname, Node *node);
  278. extern Node *Swig_symbol_clookup(String_or_char *symname, Symtab *tab);
  279. extern Node *Swig_symbol_clookup_check(String_or_char *symname, Symtab *tab, int (*check)(Node *));
  280. extern Symtab *Swig_symbol_cscope(String_or_char *symname, Symtab *tab);
  281. extern Node *Swig_symbol_clookup_local(String_or_char *symname, Symtab *tab);
  282. extern Node *Swig_symbol_clookup_local_check(String_or_char *symname, Symtab *tab, int (*check)(Node *));
  283. extern String *Swig_symbol_qualified(Node *node);
  284. extern Node *Swig_symbol_isoverloaded(Node *node);
  285. extern void Swig_symbol_remove(Node *node);
  286. extern void Swig_symbol_alias(String_or_char *aliasname, Symtab *tab);
  287. extern void Swig_symbol_inherit(Symtab *tab);
  288. extern SwigType *Swig_symbol_type_qualify(const SwigType *ty, Symtab *tab);
  289. extern String *Swig_symbol_string_qualify(String *s, Symtab *tab);
  290. extern SwigType *Swig_symbol_typedef_reduce(SwigType *ty, Symtab *tab);
  291. extern void Swig_symbol_template_defargs(Parm *parms, Parm *targs, Symtab *tscope, Symtab *tsdecl);
  292. extern SwigType *Swig_symbol_template_deftype(const SwigType *type, Symtab *tscope);
  293. extern SwigType *Swig_symbol_template_param_eval(const SwigType *p, Symtab *symtab);
  294. /* --- Parameters and Parameter Lists --- */
  295. /* Parameters are really just hidden behind a DOH object. The following
  296. interface will probably be simplified even further. */
  297. extern Parm *NewParm(SwigType *type, const String_or_char *name);
  298. extern Parm *NewParmFromNode(SwigType *type, const String_or_char *name, Node *n);
  299. extern Parm *CopyParm(Parm *p);
  300. extern ParmList *CopyParmList(ParmList *);
  301. extern int ParmList_len(ParmList *);
  302. extern int ParmList_numarg(ParmList *);
  303. extern int ParmList_numrequired(ParmList *);
  304. extern String *ParmList_str(ParmList *);
  305. extern String *ParmList_str_defaultargs(ParmList *);
  306. extern String *ParmList_protostr(ParmList *);
  307. extern int ParmList_is_compactdefargs(ParmList *p);
  308. extern int ParmList_has_defaultargs(ParmList *p);
  309. extern ParmList *ParmList_copy_all_except_last_parm(ParmList *p);
  310. /* --- Parse tree support --- */
  311. /* DOM-like node access */
  312. #include "swigkeys.h"
  313. #define nodeType(x) Getattr(x,k_nodetype)
  314. #define parentNode(x) Getattr(x,k_parentnode)
  315. #define previousSibling(x) Getattr(x,k_previoussibling)
  316. #define nextSibling(x) Getattr(x,k_nextsibling)
  317. #define firstChild(x) Getattr(x,k_firstchild)
  318. #define lastChild(x) Getattr(x,k_lastchild)
  319. extern int checkAttribute(Node *obj, const String_or_char *name, const String_or_char *value);
  320. /* Macros to set up the DOM tree (mostly used by the parser) */
  321. #define set_nodeType(x,v) Setattr(x,"nodeType",v)
  322. #define set_parentNode(x,v) Setattr(x,"parentNode",v)
  323. #define set_previousSibling(x,v) Setattr(x,"previousSibling",v)
  324. #define set_nextSibling(x,v) Setattr(x,"nextSibling",v)
  325. #define set_firstChild(x,v) Setattr(x,"firstChild",v)
  326. #define set_lastChild(x,v) Setattr(x,"lastChild",v)
  327. extern void appendChild(Node *node, Node *child);
  328. extern void preppendChild(Node *node, Node *child);
  329. extern void deleteNode(Node *node);
  330. extern Node *copyNode(Node *node);
  331. extern void Swig_tag_nodes(Node *node, const String_or_char *attrname, DOH *value);
  332. extern int Swig_require(const char *ns, Node *node, ...);
  333. extern int Swig_save(const char *ns, Node *node,...);
  334. extern void Swig_restore(Node *node);
  335. /* Debugging of parse trees */
  336. extern void Swig_print_tags(File *obj, Node *root);
  337. extern void Swig_print_tree(Node *obj);
  338. extern void Swig_print_node(Node *obj);
  339. extern void Swig_print_xml(Node *obj, String* filename);
  340. /* -- Wrapper function Object */
  341. typedef struct {
  342. Hash *localh;
  343. String *def;
  344. String *locals;
  345. String *code;
  346. } Wrapper;
  347. extern Wrapper *NewWrapper();
  348. extern void DelWrapper(Wrapper *w);
  349. extern void Wrapper_compact_print_mode_set(int flag);
  350. extern void Wrapper_pretty_print(String *str, File *f);
  351. extern void Wrapper_compact_print(String *str, File *f);
  352. extern void Wrapper_print(Wrapper *w, File *f);
  353. extern int Wrapper_add_local(Wrapper *w, const String_or_char *name, const String_or_char *decl);
  354. extern int Wrapper_add_localv(Wrapper *w, const String_or_char *name, ...);
  355. extern int Wrapper_check_local(Wrapper *w, const String_or_char *name);
  356. extern char *Wrapper_new_local(Wrapper *w, const String_or_char *name, const String_or_char *decl);
  357. extern char *Wrapper_new_localv(Wrapper *w, const String_or_char *name, ...);
  358. /* --- Naming functions --- */
  359. extern void Swig_name_register(const String_or_char *method, const String_or_char *format);
  360. extern void Swig_name_unregister(const String_or_char *method);
  361. extern String *Swig_name_mangle(const String_or_char *s);
  362. extern String *Swig_name_wrapper(const String_or_char *fname);
  363. extern String *Swig_name_member(const String_or_char *classname, const String_or_char *mname);
  364. extern String *Swig_name_get(const String_or_char *vname);
  365. extern String *Swig_name_set(const String_or_char *vname);
  366. extern String *Swig_name_construct(const String_or_char *classname);
  367. extern String *Swig_name_copyconstructor(const String_or_char *classname);
  368. extern String *Swig_name_destroy(const String_or_char *classname);
  369. extern String *Swig_name_disown(const String_or_char *classname);
  370. extern void Swig_naming_init();
  371. extern void Swig_name_namewarn_add(String *prefix, String *name, SwigType *decl, Hash *namewrn);
  372. extern Hash *Swig_name_namewarn_get(Node *n, String *prefix, String *name,SwigType *decl);
  373. extern void Swig_name_rename_add(String *prefix, String *name, SwigType *decl, Hash *namewrn, ParmList *declaratorparms);
  374. extern void Swig_name_inherit(String *base, String *derived);
  375. extern int Swig_need_protected(Node *n);
  376. extern int Swig_need_name_warning(Node *n);
  377. extern int Swig_need_redefined_warn(Node* a, Node* b, int InClass);
  378. extern String *Swig_name_make(Node *n, String *prefix, String_or_char *cname, SwigType *decl, String *oldname);
  379. extern String *Swig_name_warning(Node *n, String *prefix, String *name,SwigType *decl);
  380. /* --- parameterized rename functions --- */
  381. extern void Swig_name_object_set(Hash *namehash, String_or_char *name, SwigType *decl, DOH *object);
  382. extern DOH *Swig_name_object_get(Hash *namehash, String_or_char *prefix, String_or_char *name, SwigType *decl);
  383. extern void Swig_name_object_inherit(Hash *namehash, String *base, String *derived);
  384. extern void Swig_features_get(Hash *features, String_or_char *prefix, String_or_char *name, SwigType *decl, Node *n);
  385. extern void Swig_feature_set(Hash *features, const String_or_char *name, SwigType *decl, const String_or_char *featurename, String *value, Hash *featureattribs);
  386. /* --- Misc --- */
  387. extern char *Swig_copy_string(const char *c);
  388. extern void Swig_banner(File *f);
  389. extern String *Swig_string_escape(String *s);
  390. extern String *Swig_string_mangle(const String *s);
  391. extern void Swig_scopename_split(String *s, String **prefix, String **last);
  392. extern String *Swig_scopename_prefix(String *s);
  393. extern String *Swig_scopename_last(String *s);
  394. extern String *Swig_scopename_first(String *s);
  395. extern String *Swig_scopename_suffix(String *s);
  396. extern int Swig_scopename_check(String *s);
  397. extern String *Swig_string_lower(String *s);
  398. extern String *Swig_string_upper(String *s);
  399. extern String *Swig_string_title(String *s);
  400. extern void Swig_init();
  401. extern void Swig_warn(const char *filename, int line, const char *msg);
  402. extern int Swig_value_wrapper_mode(int mode);
  403. #define WARNING(msg) Swig_warn(__FILE__,__LINE__,msg)
  404. typedef enum { EMF_STANDARD, EMF_MICROSOFT } ErrorMessageFormat;
  405. extern void Swig_warning(int num, const String_or_char *filename, int line, const char *fmt, ...);
  406. extern void Swig_error(const String_or_char *filename, int line, const char *fmt, ...);
  407. extern int Swig_error_count(void);
  408. extern void Swig_error_silent(int s);
  409. extern void Swig_warnfilter(const String_or_char *wlist, int val);
  410. extern void Swig_warnall(void);
  411. extern int Swig_warn_count(void);
  412. extern void Swig_error_msg_format(ErrorMessageFormat format);
  413. /* --- C Wrappers --- */
  414. extern String *Swig_cparm_name(Parm *p, int i);
  415. extern String *Swig_wrapped_var_type(SwigType *t, int varcref);
  416. extern int Swig_cargs(Wrapper *w, ParmList *l);
  417. extern String *Swig_cresult(SwigType *t, const String_or_char *name, const String_or_char *decl);
  418. extern String *Swig_cfunction_call(String_or_char *name, ParmList *parms);
  419. extern String *Swig_cconstructor_call(String_or_char *name);
  420. extern String *Swig_cppconstructor_call(String_or_char *name, ParmList *parms);
  421. extern String *Swig_unref_call(Node *n);
  422. extern String *Swig_ref_call(Node *n, const String* lname);
  423. extern String *Swig_cdestructor_call(Node *n);
  424. extern String *Swig_cppdestructor_call(Node *n);
  425. extern String *Swig_cmemberset_call(String_or_char *name, SwigType *type, String_or_char *self, int varcref);
  426. extern String *Swig_cmemberget_call(const String_or_char *name, SwigType *t, String_or_char *self, int varcref);
  427. extern String *Swig_extension_code(const String *function_name,
  428. ParmList *parms, SwigType* return_type, const String *code, int cplusplus);
  429. extern int Swig_add_extension_code(Node *n, const String *function_name, ParmList *parms, SwigType* return_type, const String *code, int cplusplus);
  430. /* --- Transformations --- */
  431. extern int Swig_MethodToFunction(Node *n, String *classname, int flags, SwigType *director_type, int is_director);
  432. extern int Swig_ConstructorToFunction(Node *n, String *classname,
  433. String *none_comparison,
  434. String *director_ctor,
  435. int cplus, int flags);
  436. extern int Swig_DestructorToFunction(Node *n, String *classname, int cplus, int flags);
  437. extern int Swig_MembersetToFunction(Node *n, String *classname, int flags);
  438. extern int Swig_MembergetToFunction(Node *n, String *classname, int flags);
  439. extern int Swig_VargetToFunction(Node *n, int flags);
  440. extern int Swig_VarsetToFunction(Node *n, int flags);
  441. #define CWRAP_EXTEND 0x01
  442. #define CWRAP_SMART_POINTER 0x02
  443. #define CWRAP_NATURAL_VAR 0x04
  444. #define CWRAP_DIRECTOR_ONE_CALL 0x08
  445. #define CWRAP_DIRECTOR_TWO_CALLS 0x10
  446. /* --- Director Helpers --- */
  447. extern Node *Swig_methodclass(Node *n);
  448. extern int Swig_directorclass(Node *n);
  449. extern Node *Swig_directormap(Node *n, String *type);
  450. /* --- Legacy Typemap API (somewhat simplified, ha!) --- */
  451. extern void Swig_typemap_init();
  452. extern void Swig_typemap_register(const String_or_char *op, ParmList *pattern, String_or_char *code, ParmList *locals, ParmList *kwargs);
  453. extern int Swig_typemap_copy(const String_or_char *op, ParmList *srcpattern, ParmList *pattern);
  454. extern void Swig_typemap_clear(const String_or_char *op, ParmList *pattern);
  455. extern int Swig_typemap_apply(ParmList *srcpat, ParmList *destpat);
  456. extern void Swig_typemap_clear_apply(ParmList *pattern);
  457. extern void Swig_typemap_debug();
  458. extern Hash *Swig_typemap_search(const String_or_char *op, SwigType *type, const String_or_char *pname, SwigType **matchtype);
  459. extern Hash *Swig_typemap_search_multi(const String_or_char *op, ParmList *parms, int *nmatch);
  460. extern String *Swig_typemap_lookup(const String_or_char *op, SwigType *type, String_or_char *pname, String_or_char *lname,
  461. String_or_char *source, String_or_char *target, Wrapper *f);
  462. extern String *Swig_typemap_lookup_new(const String_or_char *op, Node *n, const String_or_char *lname, Wrapper *f);
  463. extern void Swig_typemap_attach_kwargs(Hash *tm, const String_or_char *op, Parm *p);
  464. extern void Swig_typemap_new_scope();
  465. extern Hash *Swig_typemap_pop_scope();
  466. extern void Swig_typemap_attach_parms(const String_or_char *op, ParmList *parms, Wrapper *f);
  467. /* --- Code fragment support --- */
  468. extern void Swig_fragment_register(Node* fragment);
  469. extern void Swig_fragment_emit(String *name);
  470. /* hacks defined in C++ ! */
  471. extern int Swig_director_mode();
  472. extern void Wrapper_director_mode_set(int);
  473. /* -- template init -- */
  474. extern void SwigType_template_init();
  475. #ifdef __cplusplus
  476. }
  477. #endif
  478. #endif