%module cross %{ #include "libvtcross.h" #include "containers.h" %} %typemap(in) uint32_t = int; %include "std_string.i" %include "containers.h" %include "libvtcross.h" %apply const std::string & { std::string * }; %extend Parameter { Parameter(int nparameters) { Parameter * p = new Parameter[nparameters]; return p; }; ~Parameter() { delete [] $self; }; Parameter *__getitem__(int i) { return self+i; }; }; %extend Observable { Observable(int nobservables) { Observable * o = new Observable[nobservables]; return o; }; ~Observable() { delete [] $self; }; Observable *__getitem__(int i) { return self+i; }; }; %extend Utility { Utility(int nutilities) { Utility * u = new Utility[nutilities]; return u; }; ~Utility() { delete [] $self; }; Utility *__getitem__(int i) { return self+i; }; };