c90f71dd8c
special cases and other things in wxPython, and since I plan on making several more, I've decided to put the SWIG sources in wxPython's CVS instead of relying on maintaining patches. This effectivly becomes a fork of an obsolete version of SWIG, :-( but since SWIG 1.3 still doesn't have some things I rely on in 1.1, not to mention that my custom patches would all have to be redone, I felt that this is the easier road to take. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@15307 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
216 lines
7.8 KiB
C++
216 lines
7.8 KiB
C++
/*******************************************************************************
|
|
* Simplified Wrapper and Interface Generator (SWIG)
|
|
*
|
|
* Author : David Beazley
|
|
*
|
|
* Department of Computer Science
|
|
* University of Chicago
|
|
* 1100 E 58th Street
|
|
* Chicago, IL 60637
|
|
* beazley@cs.uchicago.edu
|
|
*
|
|
* Please read the file LICENSE for the copyright and terms by which SWIG
|
|
* can be used and distributed.
|
|
*******************************************************************************/
|
|
|
|
/***********************************************************************
|
|
* $Header$
|
|
*
|
|
* internals.h
|
|
*
|
|
* Contains global variables used in libswig, but which are otherwise
|
|
* inaccessible to the user.
|
|
*
|
|
***********************************************************************/
|
|
|
|
#include "swig.h"
|
|
|
|
// -------------------------------------------------------------------
|
|
// class DocTitle : public DocEntry
|
|
//
|
|
// Top level class for managing documentation. Prints out a title,
|
|
// date, etc...
|
|
// -------------------------------------------------------------------
|
|
|
|
class DocTitle : public DocEntry {
|
|
public:
|
|
DocTitle(char *title, DocEntry *_parent); // Create a new title
|
|
void output(Documentation *d); // Output documentation
|
|
};
|
|
|
|
// --------------------------------------------------------------------
|
|
// class DocSection : public DocEntry
|
|
//
|
|
// Documentation entry for a section
|
|
// --------------------------------------------------------------------
|
|
|
|
class DocSection : public DocEntry {
|
|
public:
|
|
DocSection(char *section, DocEntry *_parent);
|
|
void output(Documentation *d);
|
|
};
|
|
|
|
// --------------------------------------------------------------------
|
|
// class DocFunction : public DocEntry
|
|
//
|
|
// Documentation entry for generic sorts of declarations
|
|
// --------------------------------------------------------------------
|
|
|
|
class DocDecl : public DocEntry {
|
|
public:
|
|
DocDecl(char *fname, DocEntry *_parent);
|
|
DocDecl(DocEntry *de, DocEntry *_parent);
|
|
void output(Documentation *d);
|
|
};
|
|
|
|
// --------------------------------------------------------------------
|
|
// class DocClass : public DocEntry
|
|
//
|
|
// Documentation entry for a C++ class or C struct
|
|
// --------------------------------------------------------------------
|
|
|
|
class DocClass : public DocEntry {
|
|
public:
|
|
DocClass(char *classname, DocEntry *_parent);
|
|
void output(Documentation *d);
|
|
};
|
|
|
|
// --------------------------------------------------------------------
|
|
// class DocText : public DocEntry
|
|
//
|
|
// Documentation entry for some plain ole text. Declared using
|
|
// the %text %{,%} directive.
|
|
// --------------------------------------------------------------------
|
|
|
|
class DocText : public DocEntry {
|
|
public:
|
|
DocText(char *_text, DocEntry *_parent);
|
|
void output(Documentation *d);
|
|
};
|
|
|
|
// --------------------------------------------------------------------
|
|
// class CommentHandler
|
|
//
|
|
// Class for managing comment processing.
|
|
// --------------------------------------------------------------------
|
|
|
|
class CommentHandler {
|
|
public:
|
|
CommentHandler();
|
|
CommentHandler(CommentHandler *c);
|
|
~CommentHandler();
|
|
void add_comment(char *text, int line_num, int col, char *file); // Add a comment
|
|
void set_entry(DocEntry *d); // Set documentation entry
|
|
static void cleanup(); // Clean-up everything before quitting
|
|
void style(char *name, char *value);
|
|
void parse_args(int argc, char **argv); // Parse command line options
|
|
|
|
// Comment handling style parameters
|
|
int skip_lines; // # blank lines before comment is throw away
|
|
int location; // Comment location (BEFORE or AFTER)
|
|
int chop_top; // Lines to chop from the top of a comment
|
|
int chop_bottom; // Lines to chop from the bottom
|
|
int chop_left; // Characters to chop from left
|
|
int chop_right; // Characters to chop from right
|
|
int untabify; // Expand tabs
|
|
int ignore; // Ignore comments
|
|
};
|
|
|
|
#define BEFORE 0
|
|
#define AFTER 1
|
|
|
|
|
|
extern int include_file(char *); // Insert library file
|
|
extern char category[256];
|
|
extern char title[256];
|
|
extern DocEntry *doc_entry;
|
|
extern DocEntry *doctitle; // The very first docentry
|
|
extern DocEntry *doc_stack[256]; // Stack of documentation entries
|
|
extern CommentHandler *handler_stack[256]; // Stack of comment handlers
|
|
extern int doc_stack_top; // Top of stack
|
|
|
|
extern Language *lang;
|
|
extern Documentation *doc;
|
|
extern CommentHandler *comment_handler; // Comment handling system
|
|
extern void swig_append(char *, FILE *);
|
|
extern int Stat_func, Stat_var, Stat_const;
|
|
extern int IgnoreDoc;
|
|
extern int ForceExtern;
|
|
extern int WrapExtern;
|
|
extern String CCode;
|
|
extern int GenerateDefault;
|
|
extern int type_id;
|
|
extern char *ConfigFile;
|
|
extern char *objc_construct;
|
|
extern char *objc_destruct;
|
|
extern int DocOnly;
|
|
|
|
// Structure for holding typemap parameters
|
|
// A typemap parameter consists of a single parameter (type + name)
|
|
// and an optional list of arguments corresponding to local variables.
|
|
// Has an optional link for building linked lists of parameter lists
|
|
|
|
struct TMParm {
|
|
Parm *p;
|
|
ParmList *args;
|
|
TMParm *next;
|
|
TMParm() {
|
|
next = 0;
|
|
}
|
|
};
|
|
|
|
/* Global variables. Needs to be cleaned up */
|
|
|
|
#ifdef WRAP
|
|
|
|
FILE *f_header; // Some commonly used
|
|
FILE *f_wrappers; // FILE pointers
|
|
FILE *f_init;
|
|
FILE *f_input;
|
|
char InitName[256];
|
|
char LibDir[512]; // Library directory
|
|
char **InitNames = 0;
|
|
int Status;
|
|
int TypeStrict; // Type checking strictness
|
|
int Verbose;
|
|
char category[256]; // Variables for documentation
|
|
char title[256];
|
|
DocEntry *doc_entry = 0; // Current documentation entry
|
|
DocEntry *doctitle = 0; // First doc entry
|
|
DocEntry *doc_stack[256]; // Stack of documentation entries
|
|
CommentHandler *handler_stack[256]; // Stack of comment handlers
|
|
int doc_stack_top = 0; // Top of stack
|
|
|
|
Language *lang; // Language method
|
|
Documentation *doc; // Documentation method
|
|
int Stat_func = 0;
|
|
int Stat_var = 0;
|
|
int Stat_const = 0;
|
|
int CPlusPlus = 0;
|
|
int ObjC = 0;
|
|
int ObjCClass = 0;
|
|
int AddMethods = 0; // AddMethods flag
|
|
int NewObject = 0; // NewObject flag
|
|
int Inline = 0; // Inline mode
|
|
int Stats = 0;
|
|
int IgnoreDoc = 0; // Ignore documentation mode
|
|
int ForceExtern = 0; // Force extern mode
|
|
int WrapExtern = 0;
|
|
int GenerateDefault = 0; // Generate default constructors
|
|
char *Config = 0;
|
|
int NoInclude = 0;
|
|
char *typemap_lang = 0; // Typemap name
|
|
int type_id = 0; // Type identifier
|
|
int error_count = 0; // Error count
|
|
char *ConfigFile = 0;
|
|
int DocOnly = 0; // Only produce documentation
|
|
|
|
#endif
|
|
|
|
/* Number of initialization names that can be used */
|
|
|
|
#define NI_NAMES 512
|
|
|
|
extern void type_undefined_check(void);
|
|
|