Since I have made several changes to SWIG over the years to accomodate
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
This commit is contained in:
182
wxPython/wxSWIG/swig_lib/carray.i
Normal file
182
wxPython/wxSWIG/swig_lib/carray.i
Normal file
@@ -0,0 +1,182 @@
|
||||
//
|
||||
// $Header$
|
||||
// carray.i
|
||||
// Dave Beazley
|
||||
// March 24, 1996
|
||||
//
|
||||
// This SWIG library file supports C arrays of various datatypes.
|
||||
// These arrays are probably *not* compatible with scripting languages
|
||||
// but they are compatible with C functions.
|
||||
//
|
||||
/* Revision History
|
||||
* -- $Log$
|
||||
* -- Revision 1.1 2002/04/29 19:56:49 RD
|
||||
* -- Since I have made several changes to SWIG over the years to accomodate
|
||||
* -- 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.
|
||||
* --
|
||||
* -- Revision 1.1.1.1 1999/02/28 02:00:53 beazley
|
||||
* -- Swig1.1
|
||||
* --
|
||||
* -- Revision 1.1 1996/05/22 17:23:48 beazley
|
||||
* -- Initial revision
|
||||
* --
|
||||
*/
|
||||
|
||||
%module carray
|
||||
%{
|
||||
|
||||
#include <string.h>
|
||||
|
||||
/* Create an integer array of given size */
|
||||
|
||||
static int *array_int(int size) {
|
||||
return (int *) malloc(size*sizeof(int));
|
||||
}
|
||||
|
||||
static int get_int(int *array_int, int index) {
|
||||
if (array_int)
|
||||
return (array_int[index]);
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int set_int(int *array_int, int index, int val) {
|
||||
if (array_int)
|
||||
return (array_int[index] = val);
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Create double precision arrays */
|
||||
|
||||
static double *array_double(int size) {
|
||||
return (double *) malloc(size*sizeof(double));
|
||||
}
|
||||
|
||||
static double get_double(double *array_double, int index) {
|
||||
if (array_double)
|
||||
return (array_double[index]);
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
static double set_double(double *array_double, int index, double val) {
|
||||
if (array_double)
|
||||
return (array_double[index] = val);
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Create byte arrays */
|
||||
|
||||
typedef unsigned char byte;
|
||||
|
||||
static byte *array_byte(int size) {
|
||||
return (byte *) malloc(size*sizeof(byte));
|
||||
}
|
||||
|
||||
static byte get_byte(byte *array_byte, int index) {
|
||||
if (array_byte)
|
||||
return (array_byte[index]);
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
static byte set_byte(byte *array_byte, int index, byte val) {
|
||||
if (array_byte)
|
||||
return (array_byte[index] = val);
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Create character string arrays */
|
||||
|
||||
static char **array_string(int size) {
|
||||
char **a;
|
||||
int i;
|
||||
|
||||
a = (char **) malloc(size*sizeof(char *));
|
||||
for (i = 0; i < size; i++)
|
||||
a[i] = 0;
|
||||
return a;
|
||||
}
|
||||
|
||||
static char *get_string(char **array_string, int index) {
|
||||
if (array_string)
|
||||
return (array_string[index]);
|
||||
else
|
||||
return "";
|
||||
}
|
||||
|
||||
static char *set_string(char **array_string, int index, char * val) {
|
||||
if (array_string) {
|
||||
if (array_string[index]) free(array_string[index]);
|
||||
if (strlen(val) > 0) {
|
||||
array_string[index] = (char *) malloc(strlen(val)+1);
|
||||
strcpy(array_string[index],val);
|
||||
return array_string[index];
|
||||
} else {
|
||||
array_string[index] = 0;
|
||||
return val;
|
||||
}
|
||||
}
|
||||
else
|
||||
return val;
|
||||
}
|
||||
|
||||
%}
|
||||
|
||||
%section "Array Operations"
|
||||
|
||||
int *array_int(int size);
|
||||
/* Creates an integer array of size elements. Integers are the same
|
||||
size as the C int type. */
|
||||
|
||||
int get_int(int *array_int, int index) ;
|
||||
/* Return the integer in array_int[index] */
|
||||
|
||||
int set_int(int *array_int, int index, int ival);
|
||||
/* Sets array_int[index] = ival. Returns it's value so you
|
||||
can use this function in an expression. */
|
||||
|
||||
/* Create double precision arrays */
|
||||
|
||||
double *array_double(int size);
|
||||
/* Creates an array of double precision floats. */
|
||||
|
||||
double get_double(double *array_double, int index);
|
||||
/* Return the double in array_double[index] */
|
||||
|
||||
double set_double(double *array_double, int index, double dval);
|
||||
/* Sets array_double[index] = dval. Returns it's value */
|
||||
|
||||
typedef unsigned char byte;
|
||||
|
||||
byte *array_byte(int nbytes);
|
||||
/* Creates a byte array. A byte is defined as an unsigned char. */
|
||||
|
||||
byte get_byte(byte *array_byte, int index);
|
||||
/* Returns array_byte[index] */
|
||||
|
||||
byte set_byte(byte *array_byte, int index, byte val);
|
||||
/* Sets array_byte[index] = val. Returns it's new value */
|
||||
|
||||
char **array_string(int size);
|
||||
/* Creates a string array. A string is array is the same as char ** in C */
|
||||
|
||||
char *get_string(char **array_string, int index);
|
||||
/* Returns character string in array_string[index]. If that entry is
|
||||
NULL, returns an empty string */
|
||||
|
||||
char *set_string(char **array_string, int index, char * string);
|
||||
/* Sets array_string[index] = string. string must be a 0-terminated
|
||||
ASCII string. If string is "" then this will create a NULL pointer. */
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user