/* * a test of set containers. * Languages should define swig::LANGUAGE_OBJ to be * an entity of their native pointer type which can be * included in a STL container. * * For example: * swig::LANGUAGE_OBJ is GC_VALUE in Ruby * swig::LANGUAGE_OBJ is SwigPtr_PyObject in python */ %module li_std_set %include %include %include // Use language macros since Java and C# don't have multiset support (yet) // and uses different naming conventions. #if defined(SWIGRUBY) || defined(SWIGPYTHON) %include %template(set_int) std::multiset; %template(v_int) std::vector; %template(set_string) std::set; #elif defined(SWIGJAVA) || defined(SWIGCSHARP) // This operator is only defined because it's needed to store objects of // type Foo in std::set in C++, we don't need to wrap it. %ignore operator<; %inline %{ struct Foo { explicit Foo(int n) : n(n) {} int n; friend bool operator<(Foo foo1, Foo foo2) { return foo1.n < foo2.n; } }; %} %template(IntSet) std::set; %template(StringSet) std::set; %template(FooSet) std::set; #endif #if defined(SWIGRUBY) %template(LanguageSet) std::set; #endif #if defined(SWIGPYTHON) %template(pyset) std::set; #endif