%module li_std_list %include "std_list.i" %include "std_string.i" %{ #include #include #include %} %template(BoolList) std::list; %template(CharList) std::list; %template(ShortList) std::list; %template(IntList) std::list; %template(LongList) std::list; %template(UCharList) std::list; %template(UIntList) std::list; %template(UShortList) std::list; %template(ULongList) std::list; %template(FloatList) std::list; %template(DoubleList) std::list; %template(StringList) std::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) { for (std::list::iterator it = v.begin(); it != v.end(); ++it) *it /= 2.0; } struct Struct { double num; Struct() : num(0.0) {} Struct(double d) : num(d) {} }; const std::list & CopyContainerStruct(const std::list & container) { return container; } const std::list & CopyContainerStructPtr(const std::list & container) { return container; } const std::list & CopyContainerStructConstPtr(const std::list & container) { return container; } const std::list & listreal(const std::list & list) { return list; } const std::list & listint(const std::list & list) { return list; } const std::list & listintptr(const std::list & list) { return list; } const std::list & listintconstptr(const std::list & list) { return list; } const std::list & liststruct(const std::list & list) { return list; } const std::list & liststructptr(const std::list & list) { return list; } const std::list & liststructconstptr(const std::list & list) { return list; } enum Fruit { APPLE, BANANNA, PEAR, KIWI, }; %} #if !defined(SWIGR) %template(IntPtrList) std::list; %template(IntConstPtrList) std::list; #endif %template(StructList) std::list; %template(StructPtrList) std::list; %template(StructConstPtrList) std::list; %template(FruitList) std::list;