scisequence.swg 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. /*
  2. *
  3. * Scilab sequence conversions
  4. *
  5. */
  6. #define SWIG_Traits_Sequence_frag(Type) %fragment_name(AsVal_Traits_Sequence, Type)
  7. #define SWIG_AsCheck_Sequence_frag(Type...) %fragment_name(AsCheck_Sequence, Type)
  8. #define SWIG_AsCheck_Sequence_dec(Type...) %symbol_name(AsCheck_Sequence, Type)
  9. #define SWIG_AsGet_Sequence_frag(Type...) %fragment_name(AsGet_Sequence, Type)
  10. #define SWIG_AsGet_Sequence_dec(Type...) %symbol_name(AsGet_Sequence, Type)
  11. #define SWIG_AsSize_Sequence_frag(Type...) %fragment_name(AsSize_Sequence, Type)
  12. #define SWIG_AsSize_Sequence_dec(Type...) %symbol_name(AsSize_Sequence, Type)
  13. #define SWIG_FromCreate_Sequence_frag(Type...) %fragment_name(FromCreate_Sequence, Type)
  14. #define SWIG_FromCreate_Sequence_dec(Type...) %symbol_name(FromCreate_Sequence, Type)
  15. #define SWIG_FromSet_Sequence_frag(Type...) %fragment_name(FromSet_Sequence, Type)
  16. #define SWIG_FromSet_Sequence_dec(Type...) %symbol_name(FromSet_Sequence, Type)
  17. #define SWIG_Traits_SequenceItem_frag(Type) %fragment_name(AsVal_Traits_SequenceItem, Type)
  18. #define SWIG_AsVal_SequenceItem_frag(Type...) %fragment_name(AsVal_SequenceItem, Type)
  19. #define SWIG_AsVal_SequenceItem_dec(Type...) %symbol_name(AsVal_SequenceItem, Type)
  20. #define SWIG_From_SequenceItem_frag(Type...) %fragment_name(From_SequenceItem, Type)
  21. #define SWIG_From_SequenceItem_dec(Type...) %symbol_name(From_SequenceItem, Type)
  22. %include <scisequencepointer.swg>
  23. %include <scisequenceint.swg>
  24. %include <scisequencedouble.swg>
  25. %include <scisequencefloat.swg>
  26. %include <scisequencestring.swg>
  27. %include <scisequencebool.swg>
  28. //
  29. // Sequence conversion
  30. //
  31. %fragment(SWIG_Traits_Sequence_frag(ptr), "header",
  32. fragment=SWIG_AsCheck_Sequence_frag(ptr),
  33. fragment=SWIG_AsGet_Sequence_frag(ptr),
  34. fragment=SWIG_AsSize_Sequence_frag(ptr),
  35. fragment=SWIG_FromCreate_Sequence_frag(ptr),
  36. fragment=SWIG_FromSet_Sequence_frag(ptr),
  37. fragment="StdTraits",
  38. fragment="<stdint.h>") {
  39. namespace swig {
  40. // Error returned for sequence containers of default item type
  41. template <typename T> struct traits_as_sequence {
  42. static int check(SwigSciObject obj) {
  43. SWIG_Error(SWIG_TypeError, type_name<T>());
  44. }
  45. static int get(SwigSciObject obj, void **sequence) {
  46. SWIG_Error(SWIG_TypeError, type_name<T>());
  47. }
  48. static int size(SwigSciObject obj, int *size) {
  49. SWIG_Error(SWIG_TypeError, type_name<T>());
  50. }
  51. };
  52. template <typename T> struct traits_from_sequence {
  53. static int create(int size, void **sequence) {
  54. SWIG_Error(SWIG_TypeError, type_name<T>());
  55. }
  56. static SwigSciObject set(int size, void *sequence) {
  57. SWIG_Error(SWIG_TypeError, type_name<T>());
  58. }
  59. };
  60. // Support sequence containers of pointers
  61. template <typename T> struct traits_as_sequence<T*> {
  62. static int check(SwigSciObject obj) {
  63. return SWIG_AsCheck_Sequence_dec(ptr)(obj);
  64. }
  65. static int get(SwigSciObject obj, void **sequence) {
  66. return SWIG_AsGet_Sequence_dec(ptr)(obj, (int **)sequence);
  67. }
  68. static int size(SwigSciObject obj, int *size) {
  69. return SWIG_AsSize_Sequence_dec(ptr)(obj, size);
  70. }
  71. };
  72. template <typename T> struct traits_from_sequence<T*> {
  73. static int create(int size, void **sequence) {
  74. return SWIG_FromCreate_Sequence_dec(ptr)(size, (uintptr_t **)sequence);
  75. }
  76. static SwigSciObject set(int size, void *sequence) {
  77. return SWIG_FromSet_Sequence_dec(ptr)(size, (uintptr_t *)sequence);
  78. }
  79. };
  80. }
  81. }
  82. %define %traits_sequence(CppType, ScilabType)
  83. %fragment(SWIG_Traits_Sequence_frag(CppType), "header",
  84. fragment=SWIG_Traits_Sequence_frag(ptr),
  85. fragment=SWIG_AsCheck_Sequence_frag(CppType),
  86. fragment=SWIG_AsGet_Sequence_frag(CppType),
  87. fragment=SWIG_AsSize_Sequence_frag(CppType),
  88. fragment=SWIG_FromCreate_Sequence_frag(CppType),
  89. fragment=SWIG_FromSet_Sequence_frag(CppType)) {
  90. namespace swig {
  91. template <> struct traits_as_sequence<CppType > {
  92. static int check(SwigSciObject obj) {
  93. return SWIG_AsCheck_Sequence_dec(CppType)(obj);
  94. }
  95. static int get(SwigSciObject obj, void **sequence) {
  96. return SWIG_AsGet_Sequence_dec(CppType)(obj, (ScilabType **)sequence);
  97. }
  98. static int size(SwigSciObject obj, int *size) {
  99. return SWIG_AsSize_Sequence_dec(CppType)(obj, size);
  100. }
  101. };
  102. template <> struct traits_from_sequence<CppType > {
  103. static int create(int size, void **sequence) {
  104. return SWIG_FromCreate_Sequence_dec(CppType)(size, (ScilabType **)sequence);
  105. }
  106. static SwigSciObject set(int size, void *sequence) {
  107. return SWIG_FromSet_Sequence_dec(CppType)(size, (ScilabType *)sequence);
  108. }
  109. };
  110. }
  111. }
  112. %enddef
  113. //
  114. // Sequence item conversion
  115. //
  116. %fragment(SWIG_Traits_SequenceItem_frag(ptr), "header",
  117. fragment=SWIG_AsVal_SequenceItem_frag(ptr),
  118. fragment=SWIG_From_SequenceItem_frag(ptr),
  119. fragment="StdTraits",
  120. fragment="<stdint.h>") {
  121. namespace swig {
  122. // Error returned for sequence containers of default item type
  123. template <typename T> struct traits_asval_sequenceitem {
  124. static T asval(SwigSciObject obj, void *pSequence, int iItemIndex) {
  125. SWIG_Error(SWIG_TypeError, type_name<T>());
  126. }
  127. };
  128. template <typename T> struct traits_from_sequenceitem {
  129. static int from(void *pSequence, int iItemIndex, T itemValue) {
  130. SWIG_Error(SWIG_TypeError, type_name<T>());
  131. }
  132. };
  133. // Support sequence containers of pointers
  134. template <typename T> struct traits_asval_sequenceitem<T*> {
  135. static T* asval(SwigSciObject obj, void *pSequence, int iItemIndex) {
  136. return static_cast<T*>(SWIG_AsVal_SequenceItem_dec(ptr)(obj, (int *)pSequence, iItemIndex));
  137. }
  138. };
  139. template <typename T> struct traits_from_sequenceitem<T*> {
  140. static int from(void *pSequence, int iItemIndex, T *itemValue) {
  141. return SWIG_From_SequenceItem_dec(ptr)((uintptr_t *)pSequence, iItemIndex, (uintptr_t) itemValue);
  142. }
  143. };
  144. }
  145. }
  146. %define %traits_sequenceitem(CppType, ScilabType)
  147. %fragment(SWIG_Traits_SequenceItem_frag(CppType), "header",
  148. fragment=SWIG_Traits_SequenceItem_frag(ptr),
  149. fragment=SWIG_AsVal_SequenceItem_frag(CppType),
  150. fragment=SWIG_From_SequenceItem_frag(CppType)) {
  151. namespace swig {
  152. template <> struct traits_asval_sequenceitem<CppType > {
  153. static CppType asval(SwigSciObject obj, void *pSequence, int iItemIndex) {
  154. return SWIG_AsVal_SequenceItem_dec(CppType)(obj, (ScilabType *)pSequence, iItemIndex);
  155. }
  156. };
  157. template <> struct traits_from_sequenceitem<CppType > {
  158. static int from(void *pSequence, int iItemIndex, CppType itemValue) {
  159. return SWIG_From_SequenceItem_dec(CppType)((ScilabType *)pSequence, iItemIndex, itemValue);
  160. }
  161. };
  162. }
  163. }
  164. %enddef
  165. %define %add_traits_sequence(CppType, ScilabType)
  166. %traits_sequence(CppType, ScilabType);
  167. %fragment(SWIG_Traits_Sequence_frag(CppType));
  168. %traits_sequenceitem(CppType, ScilabType);
  169. %fragment(SWIG_Traits_SequenceItem_frag(CppType));
  170. %enddef
  171. %add_traits_sequence(int, int);
  172. %add_traits_sequence(double, double);
  173. %add_traits_sequence(float, float);
  174. %add_traits_sequence(std::string, char*);
  175. %add_traits_sequence(bool, int);