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
		
			
				
	
	
		
			183 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			OpenEdge ABL
		
	
	
	
	
	
			
		
		
	
	
			183 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			OpenEdge ABL
		
	
	
	
	
	
| //
 | |
| // $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. */
 | |
| 
 | |
| 
 | |
| 
 |