/* File : example.i */
%module my_example

enum color { RED=10, BLUE, GREEN };

class Foo {
 public:
  Foo() { }
  enum speed { IMPULSE, WARP, LUDICROUS };
  void enum_test(speed s);
};

void enum_test(color c, Foo::speed s);



%include cpointer.i

/* Next we'll use some typemaps */

%include typemaps.i

%typemap(out) int * {
    WHATEVER  MAKES YOU HAPPY AS RESULT
}

%typemap(in) int * {
    WHATEVER  MAKES YOU HAPPY AS PARAMETER
}

%pragma(xml) DEBUG="false";

extern  int *  my_gcd(const char * x, int * y[], int * r, int (*op)(int,int)) const;
extern double my_foo;
void my_void();
my_empty();

const double my_dutch = 1.0;

union my_union
{
    int my_iii;
    char my_ccc;
};

struct my_struct
{
public:
    virtual ~my_struct();
  int my_foo();
protected:
  int my_bar;
  double  x, y;   
  virtual double area() = 0;
  static  int nshapes;
};

class my_class : public my_struct, public my_union
{
public:
    my_class( char c );
private:
    ~my_class();
    virtual const int *  my_func( my_class , char * * x, int y[], const int & r) const;
    double my_foo[128];
    const my_int i;
};

typedef int my_int;
