1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
|
%module r_legacy
%inline %{
typedef char *String;
typedef struct {
int i;
double d;
char *str;
String s;
} Obj;
Obj *getObject(int i, double d);
#include <string.h>
Obj *
getObject(int i, double d)
{
const char *test_string = "a test string";
Obj *obj;
obj = (Obj *) calloc(1, sizeof(Obj));
obj->i = i;
obj->d = d;
/* allocate one extra byte for the null */
obj->str = (char *)malloc(strlen(test_string) + 1);
strcpy(obj->str, test_string);
return(obj);
}
%}
char *getString();
int getInt();
double getDouble();
float getFloat();
long getLong();
unsigned long getUnsignedLong();
char getChar();
extern unsigned long MyULong;
extern const double PiSquared;
#if 0
extern float *MyFloatRef;
#endif
%inline %{
#define PI 3.14159265358979
unsigned long MyULong = 20;
static float MyFloat = 1.05f;
float *MyFloatRef = &MyFloat;
const double PiSquared = PI * PI;
char *getString()
{
return "This is a literal string";
}
int
getInt()
{
return 42;
}
double
getDouble()
{
return PI;
}
float
getFloat()
{
return (float)PI/2;
}
long getLong()
{
return -321313L;
}
unsigned long
getUnsignedLong()
{
return 23123L;
}
char
getChar()
{
return('A');
}
%}
|