blob: cfc2228612fc6503770b3125843d8571fda768d4 [file] [log] [blame]
/* -----------------------------------------------------------------------------
* swig11.h
*
* Main header file for the SWIG1.1 core.
*
* Author(s) : David Beazley (beazley@cs.uchicago.edu)
*
* Copyright (C) 1998-2000. The University of Chicago
* Copyright (C) 1995-1998. The University of Utah and The Regents of the
* University of California.
*
* See the file LICENSE for information on usage and redistribution.
*
* $Header$
* ----------------------------------------------------------------------------- */
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "swigver.h"
extern "C" {
#include "swig.h"
}
/* Global variables. */
extern FILE *f_runtime; // Runtime code
extern DOH *f_header; // Headers
extern DOH *f_wrappers; // Wrappers
extern DOH *f_init; // Initialization code
extern FILE *f_input;
extern int CPlusPlus; // C++ mode
extern int AddMethods; // AddMethods mode
extern int NewObject; // NewObject mode
extern int NoInclude; // NoInclude flag
extern char output_dir[512]; // Output directory
extern int Verbose;
extern int ReadOnly; // Read only mode
extern int Native; // Native mode
/* Miscellaneous stuff */
#define tab4 " "
#define tab8 " "
// Modes for different types of inheritance
#define INHERIT_FUNC 0x1
#define INHERIT_VAR 0x2
#define INHERIT_CONST 0x4
#define INHERIT_ALL (INHERIT_FUNC | INHERIT_VAR | INHERIT_CONST)
/* Language Class */
class Language {
public:
virtual void parse_args(int argc, char *argv[]) = 0;
virtual void initialize(String *modname) = 0;
virtual void close(void) = 0;
virtual void import(String *modname);
/* Basic function, variable, constant API (required) */
virtual void function(DOH *node) = 0;
virtual void variable(DOH *node) = 0;
virtual void constant(DOH *node) = 0;
virtual void nativefunction(DOH *node);
virtual void create_command(String *cname, String *iname);
/* Optional C++ handling */
virtual void cpp_open_class(DOH *node);
virtual void cpp_memberfunction(DOH *node);
virtual void cpp_constructor(DOH *node);
virtual void cpp_destructor(DOH *node);
virtual void cpp_variable(DOH *node);
virtual void cpp_staticfunction(DOH *node);
virtual void cpp_constant(DOH *node);
virtual void cpp_staticvariable(DOH *node);
virtual void cpp_close_class();
virtual void cpp_class_decl(DOH *node);
virtual void cpp_inherit(List *bases);
/* Miscellaneous features */
virtual void add_typedef(SwigType *t, String *name);
virtual void pragma(DOH *node);
};
/* Emit functions */
extern void new_create_function(char *, char *, SwigType *, ParmList *);
extern void emit_set_get(DOH *node);
extern void emit_set_action(DOHString_or_char *decl);
/* These are in the new core */
extern "C" void *Preprocessor_define(void *, int);
// Misc
extern int emit_args(DOH *node, Wrapper *f);
extern void emit_func_call(DOH *node, Wrapper *f);
extern int check_numopt(ParmList *);
extern void SWIG_config_file(const String_or_char *);
/* C++ utility functions */
extern int cplus_check_abstract(DOH *node);
extern void cplus_walk_inherit(DOH *cls, void (*action)(DOH *base, void *clientdata), void *clientdata);
extern Language *lang;
/* swig11.h ends here */