fix old template + many many typedefs error detected in Udo tremel's template_typedef_rec.i example, and deactive TEMPLATE_QUALIFY cache for problems with OSS
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@7993 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
db94491272
commit
6910efd151
3 changed files with 118 additions and 6 deletions
|
|
@ -277,6 +277,7 @@ CPP_TEST_CASES += \
|
|||
template_typedef_cplx5 \
|
||||
template_typedef_ns \
|
||||
template_typedef_ptr \
|
||||
template_typedef_rec \
|
||||
template_using \
|
||||
template_virtual \
|
||||
template_whitespace \
|
||||
|
|
|
|||
113
Examples/test-suite/template_typedef_rec.i
Normal file
113
Examples/test-suite/template_typedef_rec.i
Normal file
|
|
@ -0,0 +1,113 @@
|
|||
%module Tree
|
||||
|
||||
%inline %{
|
||||
// --- includes required to compile the wrapper code ---
|
||||
typedef size_t MY_sizeT;
|
||||
typedef long MY_intT;
|
||||
typedef double MY_floatT;
|
||||
|
||||
class Array
|
||||
{
|
||||
public:
|
||||
typedef MY_intT intT;
|
||||
typedef MY_sizeT sizeT;
|
||||
};
|
||||
|
||||
|
||||
|
||||
template <typename T>
|
||||
class ArrayIterator
|
||||
{
|
||||
public:
|
||||
typedef Array::intT intT;
|
||||
};
|
||||
|
||||
|
||||
template <typename T>
|
||||
class ArrayReverseIterator
|
||||
{
|
||||
public:
|
||||
typedef Array::intT intT;
|
||||
};
|
||||
|
||||
|
||||
template <typename T>
|
||||
class ArrayPrimitiveT
|
||||
: public Array
|
||||
{
|
||||
public:
|
||||
typedef T ValueT;
|
||||
typedef T valueT;
|
||||
typedef ArrayIterator<T> Iterator;
|
||||
typedef ArrayIterator<const T> ConstIterator;
|
||||
typedef ArrayReverseIterator<T> ReverseIterator;
|
||||
typedef ArrayReverseIterator<const T> ConstReverseIterator;
|
||||
};
|
||||
|
||||
|
||||
template <class T>
|
||||
class TreeNode
|
||||
{
|
||||
public:
|
||||
typedef T ValueT;
|
||||
typedef T valueT;
|
||||
typedef MY_intT intT;
|
||||
typedef MY_sizeT sizeT;
|
||||
};
|
||||
|
||||
template <class T>
|
||||
struct ArrayPointerT
|
||||
{
|
||||
};
|
||||
|
||||
template <class T>
|
||||
class TreeIterator
|
||||
{
|
||||
public:
|
||||
typedef MY_intT intT;
|
||||
typedef MY_sizeT sizeT;
|
||||
typedef ArrayPointerT< T* > NodeArrayT;
|
||||
|
||||
};
|
||||
|
||||
|
||||
template <class T>
|
||||
class Tree
|
||||
{
|
||||
public:
|
||||
typedef T ValueT;
|
||||
typedef T valueT;
|
||||
typedef MY_intT intT;
|
||||
typedef MY_sizeT sizeT;
|
||||
typedef TreeNode<T> NodeT;
|
||||
typedef ArrayPointerT< NodeT* > NodeArrayT;
|
||||
typedef TreeIterator<NodeT> Iterator;
|
||||
typedef TreeIterator<NodeT> ConstIterator;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
class ModelNode
|
||||
{
|
||||
typedef MY_intT intT;
|
||||
typedef MY_floatT floatT;
|
||||
typedef MY_sizeT sizeT;
|
||||
|
||||
|
||||
};
|
||||
|
||||
class Model
|
||||
{
|
||||
typedef MY_intT intT;
|
||||
typedef MY_sizeT sizeT;
|
||||
typedef Tree<ModelNode> TreeT;
|
||||
typedef TreeT::NodeT TreeNodeT;
|
||||
typedef TreeT::Iterator TreeIteratorT;
|
||||
|
||||
};
|
||||
%}
|
||||
|
||||
|
||||
// --- define ANSI C/C++ declarations to be interfaced ---
|
||||
%template(ModelTree) Tree<ModelNode>;
|
||||
Loading…
Add table
Add a link
Reference in a new issue