// SF Bug 2359417 %module li_std_vector_ptr %include "std_vector.i" %template(IntPtrVector) std::vector<int *>; #ifdef SWIGOCAML %warnfilter(SWIGWARN_PARSE_KEYWORD) val; #endif %inline %{ #include <iostream> using namespace std; int* makeIntPtr(int v) { return new int(v); } std::vector<int *>::value_type makeIntPtr2(int v) { return new int(v); } int getIntValue(int *p) { return *p; } int getIntValue2(std::vector<int *>::const_reference p) { return *p; } int getIntValue3(std::vector<int *>::reference p) { return *p; } double* makeDoublePtr(double v) { return new double(v); } // pointer to pointer in the wrappers was preventing a vector of pointers from working int** makeIntPtrPtr(int* v) { return new int*(v); } void displayVector(std::vector<int *> vpi) { cout << "displayVector..." << endl; for (size_t i=0; i<vpi.size(); ++i) cout << *vpi[i] << endl; } int getValueFromVector(std::vector<int *> vpi, size_t index) { return *vpi[index]; } %} // A not exposed to wrappers %{ struct A { int val; A(int val) : val(val) {} }; %} %template(APtrVector) std::vector<A *>; %inline %{ A *makeA(int val) { return new A(val); } int getVal(A* a) { return a->val; } int getVectorValueA(std::vector<A *> vpi, size_t index) { return vpi[index]->val; } %} // B is fully exposed to wrappers %inline %{ struct B { int val; B(int val = 0) : val(val) {} }; %} %template(BPtrVector) std::vector<B *>; %inline %{ B *makeB(int val) { return new B(val); } int getVal(B* b) { return b->val; } int getVectorValueB(std::vector<B *> vpi, size_t index) { return vpi[index]->val; } %} // C is fully exposed to wrappers (includes code using B **) %inline %{ struct C { int val; C(int val = 0) : val(val) {} }; %} %template(CPtrVector) std::vector<C *>; %inline %{ // pointer to pointer in the wrappers was preventing a vector of pointers from working C** makeCIntPtrPtr(C* v) { return new C*(v); } C *makeC(int val) { return new C(val); } int getVal(C* b) { return b->val; } int getVectorValueC(std::vector<C *> vpi, size_t index) { return vpi[index]->val; } %}
Generated by dwww version 1.15 on Tue Jul 2 00:12:57 CEST 2024.