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);
 | |
| 
 |