Team Fortress 2 Source Code as on 22/4/2020
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

163 lines
3.6 KiB

  1. %include <std_common.i>
  2. %{
  3. #include <utility>
  4. %}
  5. namespace std {
  6. template <class T, class U > struct pair {
  7. typedef T first_type;
  8. typedef U second_type;
  9. %traits_swigtype(T);
  10. %traits_swigtype(U);
  11. %fragment(SWIG_Traits_frag(std::pair<T,U >), "header",
  12. fragment=SWIG_Traits_frag(T),
  13. fragment=SWIG_Traits_frag(U),
  14. fragment="StdPairTraits") {
  15. namespace swig {
  16. template <> struct traits<std::pair<T,U > > {
  17. typedef pointer_category category;
  18. static const char* type_name() {
  19. return "std::pair<" #T "," #U " >";
  20. }
  21. };
  22. }
  23. }
  24. #ifndef SWIG_STD_PAIR_ASVAL
  25. %typemap_traits_ptr(SWIG_TYPECHECK_PAIR, std::pair<T,U >);
  26. #else
  27. %typemap_traits(SWIG_TYPECHECK_PAIR, std::pair<T,U >);
  28. #endif
  29. pair();
  30. pair(T first, U second);
  31. pair(const pair& p);
  32. template <class U1, class U2> pair(const pair<U1, U2> &p);
  33. T first;
  34. U second;
  35. #ifdef %swig_pair_methods
  36. // Add swig/language extra methods
  37. %swig_pair_methods(std::pair<T,U >)
  38. #endif
  39. };
  40. // ***
  41. // The following specializations should dissapear or get
  42. // simplified when a 'const SWIGTYPE*&' can be defined
  43. // ***
  44. template <class T, class U > struct pair<T, U*> {
  45. typedef T first_type;
  46. typedef U* second_type;
  47. %traits_swigtype(T);
  48. %traits_swigtype(U);
  49. %fragment(SWIG_Traits_frag(std::pair<T,U* >), "header",
  50. fragment=SWIG_Traits_frag(T),
  51. fragment=SWIG_Traits_frag(U),
  52. fragment="StdPairTraits") {
  53. namespace swig {
  54. template <> struct traits<std::pair<T,U* > > {
  55. typedef pointer_category category;
  56. static const char* type_name() {
  57. return "std::pair<" #T "," #U " * >";
  58. }
  59. };
  60. }
  61. }
  62. %typemap_traits_ptr(SWIG_TYPECHECK_PAIR, std::pair<T,U* >);
  63. pair();
  64. pair(T __a, U* __b);
  65. pair(const pair& __p);
  66. T first;
  67. U* second;
  68. #ifdef %swig_pair_methods
  69. // Add swig/language extra methods
  70. %swig_pair_methods(std::pair<T,U*>)
  71. #endif
  72. };
  73. template <class T, class U > struct pair<T*, U> {
  74. typedef T* first_type;
  75. typedef U second_type;
  76. %traits_swigtype(T);
  77. %traits_swigtype(U);
  78. %fragment(SWIG_Traits_frag(std::pair<T*,U >), "header",
  79. fragment=SWIG_Traits_frag(T),
  80. fragment=SWIG_Traits_frag(U),
  81. fragment="StdPairTraits") {
  82. namespace swig {
  83. template <> struct traits<std::pair<T*,U > > {
  84. typedef pointer_category category;
  85. static const char* type_name() {
  86. return "std::pair<" #T " *," #U " >";
  87. }
  88. };
  89. }
  90. }
  91. %typemap_traits_ptr(SWIG_TYPECHECK_PAIR, std::pair<T*,U >);
  92. pair();
  93. pair(T* __a, U __b);
  94. pair(const pair& __p);
  95. T* first;
  96. U second;
  97. #ifdef %swig_pair_methods
  98. // Add swig/language extra methods
  99. %swig_pair_methods(std::pair<T*,U >)
  100. #endif
  101. };
  102. template <class T, class U > struct pair<T*, U*> {
  103. typedef T* first_type;
  104. typedef U* second_type;
  105. %traits_swigtype(T);
  106. %traits_swigtype(U);
  107. %fragment(SWIG_Traits_frag(std::pair<T*,U* >), "header",
  108. fragment=SWIG_Traits_frag(T),
  109. fragment=SWIG_Traits_frag(U),
  110. fragment="StdPairTraits") {
  111. namespace swig {
  112. template <> struct traits<std::pair<T*,U* > > {
  113. typedef pointer_category category;
  114. static const char* type_name() {
  115. return "std::pair<" #T " *," #U " * >";
  116. }
  117. };
  118. }
  119. }
  120. %typemap_traits(SWIG_TYPECHECK_PAIR, std::pair<T*,U* >);
  121. pair();
  122. pair(T* __a, U* __b);
  123. pair(const pair& __p);
  124. T* first;
  125. U* second;
  126. #ifdef %swig_pair_methods
  127. // Add swig/language extra methods
  128. %swig_pair_methods(std::pair<T*,U*>)
  129. #endif
  130. };
  131. }