/trunk/Examples/test-suite/smart_pointer_templatemethods.i
Swig | 51 lines | 42 code | 9 blank | 0 comment | 0 complexity | ce53a8a23ed94a97b77c31322d693801 MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
- %module smart_pointer_templatemethods
- %inline %{
- namespace ns {
-
- template <typename T>
- class Ptr
- {
- public:
- Ptr () {}
- T *operator -> () { return 0; }
- };
-
- typedef unsigned short uint16_t;
- class InterfaceId
- {
- public:
- InterfaceId (uint16_t iid) {}
- InterfaceId() {}
- };
-
- template <typename K> class Objekt
- {
- public:
- Objekt () {}
- virtual ~Objekt () {}
- Ptr<K> QueryInterface (InterfaceId iid) const { return Ptr<K>(); }
- void DisposeObjekt (void) {}
- };
- class Objct
- {
- public:
- Objct () {}
- virtual ~Objct () {}
- template <typename T> Ptr<T> QueryInterface (InterfaceId iid) const { return Ptr<T>(); }
- void DisposeObjct (void) {}
- };
-
- #ifdef SWIG
- %template(PtrObjct) Ptr<Objct>;
- %template(PtrInt) Ptr<int>;
- %template(ObjektInt) Objekt<int>;
- %template(PtrObjektInt) Ptr<Objekt<int> >;
- %template(QueryInterfaceObjct) Objct::QueryInterface<Objct>;
- #endif
- }; // namespace
-
- %}