// automatically generated by wrap #include #include #include using namespace geometry; typedef boost::shared_ptr Shared; static std::set collector; struct Destruct { void operator() (Shared* p) { collector.erase(p); } }; void cleanup(void) { std::for_each( collector.begin(), collector.end(), Destruct() ); } void mexFunction(int nargout, mxArray *out[], int nargin, const mxArray *in[]) { mexAtExit(cleanup); const mxArray* input = in[0]; Shared* self = *(Shared**) mxGetData(input); if(self) { if(nargin > 1) { collector.insert(self); } else if(collector.erase(self)) delete self; } else { int nc = unwrap(in[1]); if(nc == 0) { self = new Shared(new Test()); } if(nc == 1) { double a = unwrap< double >(in[2]); Matrix b = unwrap< Matrix >(in[3]); self = new Shared(new Test(a,b)); } collector.insert(self); out[0] = mxCreateNumericMatrix(1, 1, mxUINT32OR64_CLASS, mxREAL); *reinterpret_cast (mxGetPr(out[0])) = self; } }