PageRenderTime 47ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 0ms

/trunk/Examples/test-suite/template_typedef_rec.i

#
Swig | 113 lines | 87 code | 26 blank | 0 comment | 0 complexity | 3e467d759a6c3e96f7e0e8ed02257bd6 MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
  1. %module template_typedef_rec
  2. %inline %{
  3. // --- includes required to compile the wrapper code ---
  4. typedef size_t MY_sizeT;
  5. typedef long MY_intT;
  6. typedef double MY_floatT;
  7. class test_Array
  8. {
  9. public:
  10. typedef MY_intT intT;
  11. typedef MY_sizeT sizeT;
  12. };
  13. template <typename T>
  14. class ArrayIterator_
  15. {
  16. public:
  17. typedef test_Array::intT intT;
  18. };
  19. template <typename T>
  20. class ArrayReverseIterator
  21. {
  22. public:
  23. typedef test_Array::intT intT;
  24. };
  25. template <typename T>
  26. class ArrayPrimitiveT
  27. : public test_Array
  28. {
  29. public:
  30. typedef T ValueT;
  31. typedef T valueT;
  32. typedef ArrayIterator_<T> Iterator;
  33. typedef ArrayIterator_<const T> ConstIterator;
  34. typedef ArrayReverseIterator<T> ReverseIterator;
  35. typedef ArrayReverseIterator<const T> ConstReverseIterator;
  36. };
  37. template <class T>
  38. class TreeNode
  39. {
  40. public:
  41. typedef T ValueT;
  42. typedef T valueT;
  43. typedef MY_intT intT;
  44. typedef MY_sizeT sizeT;
  45. };
  46. template <class T>
  47. struct ArrayPointerT
  48. {
  49. };
  50. template <class T>
  51. class TreeIterator
  52. {
  53. public:
  54. typedef MY_intT intT;
  55. typedef MY_sizeT sizeT;
  56. typedef ArrayPointerT< T* > NodeArrayT;
  57. };
  58. template <class T>
  59. class Tree
  60. {
  61. public:
  62. typedef T ValueT;
  63. typedef T valueT;
  64. typedef MY_intT intT;
  65. typedef MY_sizeT sizeT;
  66. typedef TreeNode<T> NodeT;
  67. typedef ArrayPointerT< NodeT* > NodeArrayT;
  68. typedef TreeIterator<NodeT> Iterator;
  69. typedef TreeIterator<NodeT> ConstIterator;
  70. };
  71. class ModelNode
  72. {
  73. typedef MY_intT intT;
  74. typedef MY_floatT floatT;
  75. typedef MY_sizeT sizeT;
  76. };
  77. class Model
  78. {
  79. typedef MY_intT intT;
  80. typedef MY_sizeT sizeT;
  81. typedef Tree<ModelNode> TreeT;
  82. typedef TreeT::NodeT TreeNodeT;
  83. typedef TreeT::Iterator TreeIteratorT;
  84. };
  85. %}
  86. // --- define ANSI C/C++ declarations to be interfaced ---
  87. %template(ModelTree) Tree<ModelNode>;