blitz_types.c 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. #include "blitz.h"
  2. const char *bbVoidTypeTag="?";
  3. const char *bbByteTypeTag="b";
  4. const char *bbShortTypeTag="s";
  5. const char *bbIntTypeTag="i";
  6. const char *bbUIntTypeTag="u";
  7. const char *bbLongTypeTag="l";
  8. const char *bbULongTypeTag="y";
  9. const char *bbSizetTypeTag="z";
  10. const char *bbLongIntTypeTag="v";
  11. const char *bbULongIntTypeTag="e";
  12. const char *bbFloatTypeTag="f";
  13. const char *bbDoubleTypeTag="d";
  14. const char *bbStringTypeTag="$";
  15. const char *bbObjectTypeTag=":Object";
  16. const char *bbBytePtrTypeTag="*b";
  17. BBINT bbConvertToInt( struct bbDataDef * data ){
  18. switch( data->type[0] ){
  19. case 'b':return data->b;
  20. case 's':return data->s;
  21. case 'i':return data->i;
  22. case 'u':return data->u;
  23. case 'l':return data->l;
  24. case 'y':return data->y;
  25. case 'z':return data->z;
  26. case 'v':return data->v;
  27. case 'e':return data->e;
  28. case 'f':return data->f;
  29. case 'd':return data->d;
  30. case '$':return bbStringToInt( data->t );
  31. }
  32. return 0;
  33. }
  34. BBUINT bbConvertToUInt( struct bbDataDef * data ){
  35. switch( data->type[0] ){
  36. case 'b':return data->b;
  37. case 's':return data->s;
  38. case 'i':return data->i;
  39. case 'u':return data->u;
  40. case 'l':return data->l;
  41. case 'y':return data->y;
  42. case 'z':return data->z;
  43. case 'v':return data->v;
  44. case 'e':return data->e;
  45. case 'f':return data->f;
  46. case 'd':return data->d;
  47. case '$':return bbStringToUInt( data->t );
  48. }
  49. return 0;
  50. }
  51. BBLONG bbConvertToLong( struct bbDataDef * data ){
  52. switch( data->type[0] ){
  53. case 'b':return data->b;
  54. case 's':return data->s;
  55. case 'i':return data->i;
  56. case 'u':return data->u;
  57. case 'l':return data->l;
  58. case 'y':return data->y;
  59. case 'z':return data->z;
  60. case 'v':return data->v;
  61. case 'e':return data->e;
  62. case 'f':return data->f;
  63. case 'd':return data->d;
  64. case '$':return bbStringToLong( data->t );
  65. }
  66. return 0;
  67. }
  68. BBULONG bbConvertToULong( struct bbDataDef * data ){
  69. switch( data->type[0] ){
  70. case 'b':return data->b;
  71. case 's':return data->s;
  72. case 'i':return data->i;
  73. case 'u':return data->u;
  74. case 'l':return data->l;
  75. case 'y':return data->y;
  76. case 'z':return data->z;
  77. case 'v':return data->v;
  78. case 'e':return data->e;
  79. case 'f':return data->f;
  80. case 'd':return data->d;
  81. case '$':return bbStringToULong( data->t );
  82. }
  83. return 0;
  84. }
  85. BBFLOAT bbConvertToFloat( struct bbDataDef * data ){
  86. switch( data->type[0] ){
  87. case 'b':return data->b;
  88. case 's':return data->s;
  89. case 'i':return data->i;
  90. case 'u':return data->u;
  91. case 'l':return data->l;
  92. case 'y':return data->y;
  93. case 'z':return data->z;
  94. case 'v':return data->v;
  95. case 'e':return data->e;
  96. case 'f':return data->f;
  97. case 'd':return data->d;
  98. case '$':return bbStringToFloat( data->t );
  99. }
  100. return 0;
  101. }
  102. BBDOUBLE bbConvertToDouble( struct bbDataDef * data ){
  103. switch( data->type[0] ){
  104. case 'b':return data->b;
  105. case 's':return data->s;
  106. case 'i':return data->i;
  107. case 'u':return data->u;
  108. case 'l':return data->l;
  109. case 'y':return data->y;
  110. case 'z':return data->z;
  111. case 'v':return data->v;
  112. case 'e':return data->e;
  113. case 'f':return data->f;
  114. case 'd':return data->d;
  115. case '$':return bbStringToFloat( data->t );
  116. }
  117. return 0;
  118. }
  119. BBSTRING bbConvertToString( struct bbDataDef * data ){
  120. switch( data->type[0] ){
  121. case 'b':return bbStringFromInt( data->b );
  122. case 's':return bbStringFromInt( data->s );
  123. case 'i':return bbStringFromInt( data->i );
  124. case 'u':return bbStringFromUInt( data->u );
  125. case 'l':return bbStringFromLong( data->l );
  126. case 'y':return bbStringFromULong( data->y );
  127. case 'z':return bbStringFromSizet( data->z );
  128. case 'v':return bbStringFromLongInt( data->v );
  129. case 'e':return bbStringFromULongInt( data->e );
  130. case 'f':return bbStringFromFloat( data->f );
  131. case 'd':return bbStringFromFloat( data->d );
  132. case '$':return data->t;
  133. }
  134. return &bbEmptyString;
  135. }
  136. BBSIZET bbConvertToSizet( struct bbDataDef * data ){
  137. switch( data->type[0] ){
  138. case 'b':return data->b;
  139. case 's':return data->s;
  140. case 'i':return data->i;
  141. case 'u':return data->u;
  142. case 'l':return data->l;
  143. case 'y':return data->y;
  144. case 'z':return data->z;
  145. case 'v':return data->v;
  146. case 'e':return data->e;
  147. case 'f':return data->f;
  148. case 'd':return data->d;
  149. case '$':return bbStringToSizet( data->t );
  150. }
  151. return 0;
  152. }
  153. BBLONGINT bbConvertToLongInt( struct bbDataDef * data ){
  154. switch( data->type[0] ){
  155. case 'b':return data->b;
  156. case 's':return data->s;
  157. case 'i':return data->i;
  158. case 'u':return data->u;
  159. case 'l':return data->l;
  160. case 'y':return data->y;
  161. case 'z':return data->z;
  162. case 'v':return data->v;
  163. case 'e':return data->e;
  164. case 'f':return data->f;
  165. case 'd':return data->d;
  166. case '$':return bbStringToLongInt( data->t );
  167. }
  168. return 0;
  169. }
  170. BBULONGINT bbConvertToULongInt( struct bbDataDef * data ){
  171. switch( data->type[0] ){
  172. case 'b':return data->b;
  173. case 's':return data->s;
  174. case 'i':return data->i;
  175. case 'u':return data->u;
  176. case 'l':return data->l;
  177. case 'y':return data->y;
  178. case 'z':return data->z;
  179. case 'v':return data->v;
  180. case 'e':return data->e;
  181. case 'f':return data->f;
  182. case 'd':return data->d;
  183. case '$':return bbStringToULongInt( data->t );
  184. }
  185. return 0;
  186. }