Added lots to the interface file
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@143 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
6576fa6fac
commit
fd4b3e7457
4 changed files with 242 additions and 27 deletions
|
|
@ -1,28 +1,108 @@
|
||||||
CC = @CC@
|
# ---------------------------------------------------------------
|
||||||
AR = @AR@
|
# $Header$
|
||||||
RANLIB = @RANLIB@
|
# SWIG Makefile
|
||||||
prefix = @prefix@
|
#
|
||||||
exec_prefix = @exec_prefix@
|
# This file can be used to build various Python extensions with SWIG.
|
||||||
RPATH = @RPATH@
|
# By default this file is set up for dynamic loading, but it can
|
||||||
SO = @SO@
|
# be easily customized for static extensions by modifying various
|
||||||
CCSHARED = @CCSHARED@
|
# portions of the file.
|
||||||
LDSHARED = @LDSHARED@
|
#
|
||||||
INCLUDE = -I. -I../DOH/Include
|
# SRCS = C source files
|
||||||
|
# CXXSRCS = C++ source files
|
||||||
|
# OBJCSRCS = Objective-C source files
|
||||||
|
# OBJS = Additional .o files (compiled previously)
|
||||||
|
# INTERFACE = SWIG interface file
|
||||||
|
# TARGET = Name of target module or executable
|
||||||
|
#
|
||||||
|
#----------------------------------------------------------------
|
||||||
|
|
||||||
SRCS = types.c scanner.c include.c getopt.c misc.c super.c
|
SRCS = types.c scanner.c include.c getopt.c misc.c super.c
|
||||||
OBJS = types.o scanner.o include.o getopt.o misc.o super.o
|
INTERFACE = swig.i
|
||||||
|
WRAPFILE = $(INTERFACE:.i=_wrap.c)
|
||||||
|
WRAPOBJ = $(INTERFACE:.i=_wrap.o)
|
||||||
|
TARGET = swigmodule@SO@ # Use this kind of target for dynamic loading
|
||||||
|
|
||||||
|
prefix = @prefix@
|
||||||
|
exec_prefix = @exec_prefix@
|
||||||
|
|
||||||
|
CC = @CC@
|
||||||
|
AR = @AR@
|
||||||
|
RANLIB = @RANLIB@
|
||||||
|
RPATH = @RPATH@
|
||||||
|
CC = @CC@
|
||||||
|
CFLAGS =
|
||||||
|
INCLUDE = -I. -I../DOH/Include
|
||||||
|
LIBS = -L. -L../DOH/ -ldoh
|
||||||
|
|
||||||
|
# SWIG Options
|
||||||
|
# SWIG = location of the SWIG executable
|
||||||
|
# SWIGOPT = SWIG compiler options
|
||||||
|
# SWIGCC = Compiler used to compile the wrapper file
|
||||||
|
|
||||||
|
SWIG = $(exec_prefix)/bin/swig
|
||||||
|
SWIGOPT = -python -shadow
|
||||||
|
SWIGCC = $(CC)
|
||||||
|
|
||||||
|
# SWIG Library files. Uncomment if rebuilding the Python interpreter
|
||||||
|
#SWIGLIB = -lembed.i
|
||||||
|
|
||||||
|
# Rules for creating .o files from source.
|
||||||
|
|
||||||
|
OBJS = $(SRCS:.c=.o)
|
||||||
|
ALLOBJS = $(OBJS)
|
||||||
|
|
||||||
|
# Command that will be used to build the final extension.
|
||||||
|
BUILD = $(SWIGCC)
|
||||||
|
|
||||||
|
# Uncomment the following if you are using dynamic loading
|
||||||
|
CCSHARED = @CCSHARED@
|
||||||
|
BUILD = @LDSHARED@
|
||||||
|
|
||||||
|
# Python installation
|
||||||
|
|
||||||
|
PY_INCLUDE = -DHAVE_CONFIG_H @PYINCLUDE@
|
||||||
|
PY_LIB = @PYLIB@
|
||||||
|
|
||||||
|
# Build libraries (needed for static builds)
|
||||||
|
|
||||||
|
LIBM = @LIBM@
|
||||||
|
LIBC = @LIBC@
|
||||||
|
SYSLIBS = $(LIBM) $(LIBC) @LIBS@
|
||||||
|
|
||||||
|
# Build options
|
||||||
|
|
||||||
|
BUILD_LIBS = $(LIBS) # Dynamic loading
|
||||||
|
|
||||||
|
# Compilation rules for non-SWIG components
|
||||||
|
|
||||||
.c.o:
|
.c.o:
|
||||||
$(CC) $(CCSHARED) $(INCLUDE) $(CFLAGS) -c -o $*.o $<
|
$(CC) $(CCSHARED) $(INCLUDE) $(CFLAGS) -c -o $*.o $<
|
||||||
|
|
||||||
all: $(OBJS)
|
# ----------------------------------------------------------------------
|
||||||
|
# Toplevel Targets
|
||||||
|
# ----------------------------------------------------------------------
|
||||||
|
|
||||||
supertest: super.c
|
all: $(OBJS) # the object files
|
||||||
|
|
||||||
|
python: $(TARGET) # the python module
|
||||||
|
|
||||||
|
supertest: super.c # test the super module
|
||||||
$(CC) $(CCSHARED) $(INCLUDE) $(CFLAGS) -g -DSUPER_TEST -c \
|
$(CC) $(CCSHARED) $(INCLUDE) $(CFLAGS) -g -DSUPER_TEST -c \
|
||||||
-o supertest.o super.c
|
-o supertest.o super.c
|
||||||
$(CC) supertest.o -ldoh -o supertest
|
$(CC) supertest.o -ldoh -o supertest
|
||||||
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o *~ core *.so *.a
|
rm -f *.o *~ core *.so *.a *_wrap.*
|
||||||
|
|
||||||
|
# ----------------------------------------------------------------------
|
||||||
|
# Rules for building the extension
|
||||||
|
# ----------------------------------------------------------------------
|
||||||
|
|
||||||
|
$(WRAPOBJ) : $(WRAPFILE)
|
||||||
|
$(SWIGCC) -c $(CCSHARED) $(CFLAGS) $(WRAPFILE) $(INCLUDE) $(PY_INCLUDE)
|
||||||
|
$(WRAPFILE) : $(INTERFACE)
|
||||||
|
$(SWIG) $(SWIGOPT) -o $(WRAPFILE) $(SWIGLIB) $(INTERFACE)
|
||||||
|
|
||||||
|
$(TARGET): $(WRAPOBJ) $(ALLOBJS)
|
||||||
|
$(BUILD) $(WRAPOBJ) $(ALLOBJS) $(BUILD_LIBS) -o $(TARGET)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -166,7 +166,7 @@ static DohObjInfo SuperType =
|
||||||
* NewSuperString(const char *c) - Create a new SuperString
|
* NewSuperString(const char *c) - Create a new SuperString
|
||||||
* ------------------------------------------------------------------------- */
|
* ------------------------------------------------------------------------- */
|
||||||
DOH *
|
DOH *
|
||||||
NewSuper(char *s, DOH *filename, int firstline)
|
NewSuperString(char *s, DOH *filename, int firstline)
|
||||||
{
|
{
|
||||||
int l = 0, max;
|
int l = 0, max;
|
||||||
Super *str;
|
Super *str;
|
||||||
|
|
@ -1434,7 +1434,7 @@ Super_raw_replace(Super *str, char *token, int flags,
|
||||||
return repcount;
|
return repcount;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef SUPER_TEST
|
#if defined(SUPER_TEST)
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
static void dump_tags(DOH *so)
|
static void dump_tags(DOH *so)
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ extern DOH *Swig_include(DOH *name);
|
||||||
|
|
||||||
/* --- Super Strings --- */
|
/* --- Super Strings --- */
|
||||||
|
|
||||||
extern DOH *NewSuper(char *s, DOH *filename, int firstline);
|
extern DOH *NewSuperString(char *s, DOH *filename, int firstline);
|
||||||
extern int SuperString_check(DOH *s);
|
extern int SuperString_check(DOH *s);
|
||||||
|
|
||||||
/* --- Command line parsing --- */
|
/* --- Command line parsing --- */
|
||||||
|
|
|
||||||
|
|
@ -27,16 +27,156 @@
|
||||||
$target = PyFile_FromFile($source, "unknown", "?", fclose);
|
$target = PyFile_FromFile($source, "unknown", "?", fclose);
|
||||||
}
|
}
|
||||||
|
|
||||||
%typemap(python,in) DOH * {
|
%{
|
||||||
$target = PyString_AsString($source);
|
/* -------------------------------------------------------------------------
|
||||||
|
* An extension type for DOH objects -- we could use shadow classes,
|
||||||
|
* but this will be lots faster.
|
||||||
|
* ------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
typedef struct PyDOH {
|
||||||
|
PyObject_HEAD
|
||||||
|
DOH *doh;
|
||||||
|
} PyDOH;
|
||||||
|
|
||||||
|
staticforward PyTypeObject PyDOHType;
|
||||||
|
|
||||||
|
/* methods */
|
||||||
|
static PyObject * Swig_PyDOH_new(DOH *in) {
|
||||||
|
PyDOH *self = PyObject_NEW(PyDOH, &PyDOHType);
|
||||||
|
if (!self) return (PyObject *)self;
|
||||||
|
self->doh = in;
|
||||||
|
Incref(in); /* increase the DOH refcount */
|
||||||
|
return (PyObject *)self;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void Swig_PyDOH_delete(PyDOH *self) {
|
||||||
|
Delete(self->doh); /* decrease the DOH refcount */
|
||||||
|
PyMem_DEL(self);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int Swig_PyDOH_check(void *self) {
|
||||||
|
return (((PyObject *)self)->ob_type == &PyDOHType);
|
||||||
|
}
|
||||||
|
|
||||||
|
static PyObject *Swig_PyDOH_repr(PyDOH *self) {
|
||||||
|
return PyString_FromString(Char(self->doh));
|
||||||
|
}
|
||||||
|
|
||||||
|
static char PyDOH_docstring[] =
|
||||||
|
" Interface to DOH objects from Python. DOH objects behave largely\n\
|
||||||
|
like Python objects, although some functionality may be different.";
|
||||||
|
|
||||||
|
/* Type object */
|
||||||
|
static PyTypeObject PyDOHType = {
|
||||||
|
PyObject_HEAD_INIT(&PyType_Type)
|
||||||
|
0,
|
||||||
|
"DOH",
|
||||||
|
sizeof(PyDOH),
|
||||||
|
0,
|
||||||
|
(destructor)Swig_PyDOH_delete,
|
||||||
|
(printfunc)0,
|
||||||
|
(getattrfunc)0,
|
||||||
|
(setattrfunc)0,
|
||||||
|
(cmpfunc)0,
|
||||||
|
(reprfunc)Swig_PyDOH_repr,
|
||||||
|
|
||||||
|
0, /* tp_as_number */
|
||||||
|
0, /* tp_as_sequence */
|
||||||
|
0, /* tp_as_mapping */
|
||||||
|
(hashfunc)0, /* tp_hash */
|
||||||
|
(ternaryfunc)0, /* tp_call */
|
||||||
|
(reprfunc)0, /* tp_str */
|
||||||
|
(getattrofunc)0, /* tp_getattro */
|
||||||
|
(setattrofunc)0, /* tp_setattro */
|
||||||
|
0, /* tp_as_buffer */
|
||||||
|
0, /* tp_xxx4 */
|
||||||
|
PyDOH_docstring
|
||||||
|
};
|
||||||
|
%}
|
||||||
|
|
||||||
|
%typemap(python,in) DOH * {
|
||||||
|
if (Swig_PyDOH_check($source))
|
||||||
|
$target = ((PyDOH *)$source)->doh, printf("PyDOH\n");
|
||||||
|
else if (PyString_Check($source))
|
||||||
|
$target = (DOH *)PyString_AsString($source), printf("String\n");
|
||||||
|
else if (PySequence_Check($source))
|
||||||
|
$target = 0, printf("Sequence\n");
|
||||||
|
else if (PyMapping_Check($source))
|
||||||
|
$target = 0, printf("Mapping\n");
|
||||||
|
else if (PyNumber_Check($source))
|
||||||
|
$target = (DOH *)$source, printf("Number\n");
|
||||||
|
else if (PyFile_Check($source))
|
||||||
|
$target = (DOH *)PyFile_AsFile($source), printf("File\n");
|
||||||
|
else
|
||||||
|
$target = (DOH *)NULL; /* do better later? */
|
||||||
}
|
}
|
||||||
|
|
||||||
%typemap(python,out) DOH * {
|
%typemap(python,out) DOH * {
|
||||||
$target = PyString_FromString(Char($source));
|
$target = Swig_PyDOH_new($source);
|
||||||
}
|
}
|
||||||
|
|
||||||
%title "SWIG", after
|
%title "SWIG", after
|
||||||
|
|
||||||
|
%section "DOH Objects", before
|
||||||
|
|
||||||
|
%subsection "Constants"
|
||||||
|
|
||||||
|
/* The beginning of a sequence */
|
||||||
|
#define DOH_BEGIN -1
|
||||||
|
/* The end of a sequence */
|
||||||
|
#define DOH_END -2
|
||||||
|
/* The current point in a sequence */
|
||||||
|
#define DOH_CUR -3
|
||||||
|
/* Synonymous with DOH_CUR */
|
||||||
|
#define DOH_CURRENT -3
|
||||||
|
|
||||||
|
/* Replace any matches of the given text */
|
||||||
|
#define DOH_REPLACE_ANY 0x00
|
||||||
|
/* Replace, but not inside of quotes */
|
||||||
|
#define DOH_REPLACE_NOQUOTE 0x01
|
||||||
|
/* Replace only full identifiers */
|
||||||
|
#define DOH_REPLACE_ID 0x02
|
||||||
|
/* Replace only the first match */
|
||||||
|
#define DOH_REPLACE_FIRST 0x04
|
||||||
|
|
||||||
|
%subsection "SuperStrings"
|
||||||
|
/* SuperString constructor */
|
||||||
|
extern DOH *NewSuperString(char *string, DOH *filename, int firstline);
|
||||||
|
/* Is this a SuperString? */
|
||||||
|
extern int SuperString_check(DOH *);
|
||||||
|
|
||||||
|
%subsection "Strings"
|
||||||
|
/* String constructor */
|
||||||
|
extern DOH *NewString(char *c);
|
||||||
|
/* Is this a string? */
|
||||||
|
extern int String_check(DOH *);
|
||||||
|
|
||||||
|
%subsection "Files"
|
||||||
|
/* File constructor */
|
||||||
|
extern DOH *NewFile(DOH *file, char *mode);
|
||||||
|
/* File constructor from Python file */
|
||||||
|
extern DOH *NewFileFromFile(FILE *file);
|
||||||
|
/* File constructor from a file descriptor */
|
||||||
|
extern DOH *NewFileFromFd(int fd);
|
||||||
|
/* Copy from file to file */
|
||||||
|
%name(CopyTo) extern int DohCopyto(DOH *input, DOH *output);
|
||||||
|
|
||||||
|
%subsection "Lists"
|
||||||
|
/* List constructor */
|
||||||
|
extern DOH *NewList();
|
||||||
|
/* Is this a list? */
|
||||||
|
extern int List_check(DOH *);
|
||||||
|
/* Sort a list */
|
||||||
|
extern void List_sort(DOH *);
|
||||||
|
|
||||||
|
%subsection "Hash tables"
|
||||||
|
/* Hash table constructor */
|
||||||
|
extern DOH *NewHash();
|
||||||
|
/* Is this a hash table? */
|
||||||
|
extern int Hash_check(DOH *);
|
||||||
|
/* Get a List of the keys in a hash table */
|
||||||
|
extern DOH *Hash_keys(DOH *);
|
||||||
|
|
||||||
%section "Files"
|
%section "Files"
|
||||||
|
|
||||||
extern void Swig_add_directory(DOH *dirname);
|
extern void Swig_add_directory(DOH *dirname);
|
||||||
|
|
@ -48,11 +188,6 @@ extern DOH *Swig_include(DOH *name);
|
||||||
|
|
||||||
#define SWIG_FILE_DELIMETER "/"
|
#define SWIG_FILE_DELIMETER "/"
|
||||||
|
|
||||||
%section "Super Strings"
|
|
||||||
|
|
||||||
extern DOH *NewSuper(char *string, DOH *filename, int firstline);
|
|
||||||
extern int SuperString_check(DOH *string);
|
|
||||||
|
|
||||||
%section "Command Line Parsing"
|
%section "Command Line Parsing"
|
||||||
|
|
||||||
extern void Swig_init_args(int argc, char **argv);
|
extern void Swig_init_args(int argc, char **argv);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue