PageRenderTime 27ms CodeModel.GetById 0ms RepoModel.GetById 1ms app.codeStats 0ms

/trunk/Lib/python/pyprimtypes.swg

#
Unknown | 301 lines | 278 code | 23 blank | 0 comment | 0 complexity | af4ba0fdecaec16a34d4d199ee98890e MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
  1. /* ------------------------------------------------------------
  2. * Primitive Types
  3. * ------------------------------------------------------------ */
  4. /* boolean */
  5. %fragment(SWIG_From_frag(bool),"header") {
  6. SWIGINTERNINLINE PyObject*
  7. SWIG_From_dec(bool)(bool value)
  8. {
  9. return PyBool_FromLong(value ? 1 : 0);
  10. }
  11. }
  12. %fragment(SWIG_AsVal_frag(bool),"header",
  13. fragment=SWIG_AsVal_frag(long)) {
  14. SWIGINTERN int
  15. SWIG_AsVal_dec(bool)(PyObject *obj, bool *val)
  16. {
  17. int r = PyObject_IsTrue(obj);
  18. if (r == -1)
  19. return SWIG_ERROR;
  20. if (val) *val = r ? true : false;
  21. return SWIG_OK;
  22. }
  23. }
  24. /* int */
  25. %fragment(SWIG_From_frag(int),"header") {
  26. SWIGINTERNINLINE PyObject*
  27. SWIG_From_dec(int)(int value)
  28. {
  29. return PyInt_FromLong((long) value);
  30. }
  31. }
  32. /* long */
  33. %fragment(SWIG_From_frag(long),"header") {
  34. %define_as(SWIG_From_dec(long), PyLong_FromLong)
  35. }
  36. %fragment(SWIG_AsVal_frag(long),"header",
  37. fragment="SWIG_CanCastAsInteger") {
  38. SWIGINTERN int
  39. SWIG_AsVal_dec(long)(PyObject *obj, long* val)
  40. {
  41. if (PyInt_Check(obj)) {
  42. if (val) *val = PyInt_AsLong(obj);
  43. return SWIG_OK;
  44. } else if (PyLong_Check(obj)) {
  45. long v = PyLong_AsLong(obj);
  46. if (!PyErr_Occurred()) {
  47. if (val) *val = v;
  48. return SWIG_OK;
  49. } else {
  50. PyErr_Clear();
  51. }
  52. }
  53. %#ifdef SWIG_PYTHON_CAST_MODE
  54. {
  55. int dispatch = 0;
  56. long v = PyInt_AsLong(obj);
  57. if (!PyErr_Occurred()) {
  58. if (val) *val = v;
  59. return SWIG_AddCast(SWIG_OK);
  60. } else {
  61. PyErr_Clear();
  62. }
  63. if (!dispatch) {
  64. double d;
  65. int res = SWIG_AddCast(SWIG_AsVal(double)(obj,&d));
  66. if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, LONG_MIN, LONG_MAX)) {
  67. if (val) *val = (long)(d);
  68. return res;
  69. }
  70. }
  71. }
  72. %#endif
  73. return SWIG_TypeError;
  74. }
  75. }
  76. /* unsigned long */
  77. %fragment(SWIG_From_frag(unsigned long),"header",
  78. fragment=SWIG_From_frag(long)) {
  79. SWIGINTERNINLINE PyObject*
  80. SWIG_From_dec(unsigned long)(unsigned long value)
  81. {
  82. return (value > LONG_MAX) ?
  83. PyLong_FromUnsignedLong(value) : PyLong_FromLong(%numeric_cast(value,long));
  84. }
  85. }
  86. %fragment(SWIG_AsVal_frag(unsigned long),"header",
  87. fragment="SWIG_CanCastAsInteger") {
  88. SWIGINTERN int
  89. SWIG_AsVal_dec(unsigned long)(PyObject *obj, unsigned long *val)
  90. {
  91. if (PyInt_Check(obj)) {
  92. unsigned long v = PyInt_AsUnsignedLongMask(obj);
  93. if (!PyErr_Occurred()) {
  94. if (val) *val = v;
  95. return SWIG_OK;
  96. }
  97. PyErr_Clear();
  98. } else if (PyLong_Check(obj)) {
  99. unsigned long v = PyLong_AsUnsignedLong(obj);
  100. if (!PyErr_Occurred()) {
  101. if (val) *val = v;
  102. return SWIG_OK;
  103. } else {
  104. PyErr_Clear();
  105. }
  106. }
  107. %#ifdef SWIG_PYTHON_CAST_MODE
  108. {
  109. int dispatch = 0;
  110. unsigned long v = PyLong_AsUnsignedLong(obj);
  111. if (!PyErr_Occurred()) {
  112. if (val) *val = v;
  113. return SWIG_AddCast(SWIG_OK);
  114. } else {
  115. PyErr_Clear();
  116. }
  117. if (!dispatch) {
  118. double d;
  119. int res = SWIG_AddCast(SWIG_AsVal(double)(obj,&d));
  120. if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, 0, ULONG_MAX)) {
  121. if (val) *val = (unsigned long)(d);
  122. return res;
  123. }
  124. }
  125. }
  126. %#endif
  127. return SWIG_TypeError;
  128. }
  129. }
  130. /* long long */
  131. %fragment(SWIG_From_frag(long long),"header",
  132. fragment=SWIG_From_frag(long),
  133. fragment="<limits.h>") {
  134. SWIGINTERNINLINE PyObject*
  135. SWIG_From_dec(long long)(long long value)
  136. {
  137. return ((value < LONG_MIN) || (value > LONG_MAX)) ?
  138. PyLong_FromLongLong(value) : PyLong_FromLong(%numeric_cast(value,long));
  139. }
  140. }
  141. %fragment(SWIG_AsVal_frag(long long),"header",
  142. fragment=SWIG_AsVal_frag(long),
  143. fragment="SWIG_CanCastAsInteger",
  144. fragment="<limits.h>") {
  145. SWIGINTERN int
  146. SWIG_AsVal_dec(long long)(PyObject *obj, long long *val)
  147. {
  148. int res = SWIG_TypeError;
  149. if (PyLong_Check(obj)) {
  150. long long v = PyLong_AsLongLong(obj);
  151. if (!PyErr_Occurred()) {
  152. if (val) *val = v;
  153. return SWIG_OK;
  154. } else {
  155. PyErr_Clear();
  156. }
  157. } else {
  158. long v;
  159. res = SWIG_AsVal(long)(obj,&v);
  160. if (SWIG_IsOK(res)) {
  161. if (val) *val = v;
  162. return res;
  163. }
  164. }
  165. %#ifdef SWIG_PYTHON_CAST_MODE
  166. {
  167. const double mant_max = 1LL << DBL_MANT_DIG;
  168. const double mant_min = -mant_max;
  169. double d;
  170. res = SWIG_AsVal(double)(obj,&d);
  171. if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, mant_min, mant_max)) {
  172. if (val) *val = (long long)(d);
  173. return SWIG_AddCast(res);
  174. }
  175. res = SWIG_TypeError;
  176. }
  177. %#endif
  178. return res;
  179. }
  180. }
  181. /* unsigned long long */
  182. %fragment(SWIG_From_frag(unsigned long long),"header",
  183. fragment=SWIG_From_frag(long long),
  184. fragment="<limits.h>") {
  185. SWIGINTERNINLINE PyObject*
  186. SWIG_From_dec(unsigned long long)(unsigned long long value)
  187. {
  188. return (value > LONG_MAX) ?
  189. PyLong_FromUnsignedLongLong(value) : PyLong_FromLong(%numeric_cast(value,long));
  190. }
  191. }
  192. %fragment(SWIG_AsVal_frag(unsigned long long),"header",
  193. fragment=SWIG_AsVal_frag(unsigned long),
  194. fragment="SWIG_CanCastAsInteger",
  195. fragment="<limits.h>") {
  196. SWIGINTERN int
  197. SWIG_AsVal_dec(unsigned long long)(PyObject *obj, unsigned long long *val)
  198. {
  199. int res = SWIG_TypeError;
  200. if (PyLong_Check(obj)) {
  201. unsigned long long v = PyLong_AsUnsignedLongLong(obj);
  202. if (!PyErr_Occurred()) {
  203. if (val) *val = v;
  204. return SWIG_OK;
  205. } else {
  206. PyErr_Clear();
  207. }
  208. } else {
  209. unsigned long v;
  210. res = SWIG_AsVal(unsigned long)(obj,&v);
  211. if (SWIG_IsOK(res)) {
  212. if (val) *val = v;
  213. return res;
  214. }
  215. }
  216. %#ifdef SWIG_PYTHON_CAST_MODE
  217. {
  218. const double mant_max = 1LL << DBL_MANT_DIG;
  219. double d;
  220. res = SWIG_AsVal(double)(obj,&d);
  221. if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, 0, mant_max)) {
  222. if (val) *val = (unsigned long long)(d);
  223. return SWIG_AddCast(res);
  224. }
  225. res = SWIG_TypeError;
  226. }
  227. %#endif
  228. return res;
  229. }
  230. }
  231. /* double */
  232. %fragment(SWIG_From_frag(double),"header") {
  233. %define_as(SWIG_From_dec(double), PyFloat_FromDouble)
  234. }
  235. %fragment(SWIG_AsVal_frag(double),"header") {
  236. SWIGINTERN int
  237. SWIG_AsVal_dec(double)(PyObject *obj, double *val)
  238. {
  239. int res = SWIG_TypeError;
  240. if (PyFloat_Check(obj)) {
  241. if (val) *val = PyFloat_AsDouble(obj);
  242. return SWIG_OK;
  243. } else if (PyInt_Check(obj)) {
  244. if (val) *val = PyInt_AsLong(obj);
  245. return SWIG_OK;
  246. } else if (PyLong_Check(obj)) {
  247. double v = PyLong_AsDouble(obj);
  248. if (!PyErr_Occurred()) {
  249. if (val) *val = v;
  250. return SWIG_OK;
  251. } else {
  252. PyErr_Clear();
  253. }
  254. }
  255. %#ifdef SWIG_PYTHON_CAST_MODE
  256. {
  257. int dispatch = 0;
  258. double d = PyFloat_AsDouble(obj);
  259. if (!PyErr_Occurred()) {
  260. if (val) *val = d;
  261. return SWIG_AddCast(SWIG_OK);
  262. } else {
  263. PyErr_Clear();
  264. }
  265. if (!dispatch) {
  266. long v = PyLong_AsLong(obj);
  267. if (!PyErr_Occurred()) {
  268. if (val) *val = v;
  269. return SWIG_AddCast(SWIG_AddCast(SWIG_OK));
  270. } else {
  271. PyErr_Clear();
  272. }
  273. }
  274. }
  275. %#endif
  276. return res;
  277. }
  278. }