%module li_std_list %include "std_list.i" %{ #include #include #include %} namespace std { %template(IntList) list; } %template(DoubleList) std::list; %inline %{ typedef float Real; %} namespace std { %template(RealList) list; } %inline %{ double average(std::list v) { return std::accumulate(v.begin(),v.end(),0.0)/v.size(); } void halve_in_place(std::list& v) { std::transform(v.begin(),v.end(),v.begin(), std::bind2nd(std::divides(),2.0)); } struct Struct { double num; Struct() : num(0.0) {} Struct(double d) : num(d) {} // bool operator==(const Struct &other) { return (num == other.num); } }; %}