blob: ccc96f49f78211ee5b5e4f5b3dd1a3542ca9d664 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
%module template_typedef_inherit
// Bug 3378145
%include std_string.i
%inline %{
#include <string> // for std::string
typedef std::string String;
namespace Type {
template <class T> class TypedInterfaceObject {
public:
virtual ~TypedInterfaceObject() {}
};
template <class T> class TypedCollectionInterfaceObject : public TypedInterfaceObject<T> {
public:
typedef T ImplementationType;
typedef typename ImplementationType::ElementType ImplementationElementType;
/** Method add() appends an element to the collection */
void add(const ImplementationElementType & elt) {}
};
template <class T> class PersistentCollection {
public:
typedef T ElementType;
/** Method add() appends an element to the collection */
inline virtual void add(const T & elt) {}
virtual ~PersistentCollection() {}
};
}
%}
%template(StringPersistentCollection) Type::PersistentCollection<String>;
%inline %{
namespace Type {
class DescriptionImplementation : public PersistentCollection<String> {
public:
typedef PersistentCollection<String>::ElementType ElementType;
DescriptionImplementation() {}
};
}
%}
%template(DescriptionImplementationTypedInterfaceObject) Type::TypedInterfaceObject<Type::DescriptionImplementation>;
%template(DescriptionImplementationTypedCollectionInterfaceObject) Type::TypedCollectionInterfaceObject<Type::DescriptionImplementation>;
|