Advertisement
PrzMas

Unsigned integer (by Slice)

Apr 29th, 2016
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 4.92 KB | None | 0 0
  1. #if defined _uint_included
  2.   #endinput
  3. #endif
  4. #define _uint_included
  5.  
  6. #define uint unsigned
  7.  
  8. // Assignment: a = b
  9. stock unsigned: operator = (oper) return unsigned: oper;
  10.  
  11. // Addition: a + b
  12. stock unsigned: operator + (unsigned: oper1, unsigned: oper2) return unsigned: (_: oper1 + _: oper2);
  13. stock unsigned: operator + (unsigned: oper1, oper2) return unsigned: (_: oper1 + oper2);
  14. stock unsigned: operator + (oper1, unsigned: oper2) return unsigned: (oper1 + _: oper2);
  15.  
  16. // Subtraction: a - b
  17. stock unsigned: operator - (unsigned: oper1, unsigned: oper2) return unsigned: (_: oper1 - _: oper2);
  18. stock unsigned: operator - (unsigned: oper1, oper2) return unsigned: (_: oper1 - oper2);
  19. stock unsigned: operator - (oper1, unsigned: oper2) return unsigned: (oper1 - _: oper2);
  20.  
  21. // Multiplication: a * b
  22. stock unsigned: operator * (unsigned: oper1, unsigned: oper2)
  23. {
  24.   #emit LOAD.S.pri oper1
  25.   #emit LOAD.S.alt oper2
  26.   #emit UMUL
  27.   #emit RETN
  28.  
  29.   return unsigned: 0;
  30. }
  31.  
  32. stock unsigned: operator * (unsigned: oper1, oper2)
  33. {
  34.   #emit LOAD.S.pri oper1
  35.   #emit LOAD.S.alt oper2
  36.   #emit UMUL
  37.   #emit RETN
  38.  
  39.   return unsigned: 0;
  40. }
  41.  
  42. stock unsigned: operator * (oper1, unsigned:oper2)
  43. {
  44.   #emit LOAD.S.pri oper1
  45.   #emit LOAD.S.alt oper2
  46.   #emit UMUL
  47.   #emit RETN
  48.  
  49.   return unsigned: 0;
  50. }
  51.  
  52. // Division: a / b
  53. stock unsigned: operator / (unsigned: oper1, unsigned: oper2)
  54. {
  55.   #emit LOAD.S.pri oper1
  56.   #emit LOAD.S.alt oper2
  57.   #emit UDIV
  58.   #emit RETN
  59.  
  60.   return unsigned: 0;
  61. }
  62.  
  63. stock unsigned: operator / (unsigned: oper1, oper2)
  64. {
  65.   #emit LOAD.S.pri oper1
  66.   #emit LOAD.S.alt oper2
  67.   #emit UDIV
  68.   #emit RETN
  69.  
  70.   return unsigned: 0;
  71. }
  72.  
  73. stock unsigned: operator / (oper1, unsigned: oper2)
  74. {
  75.   #emit LOAD.S.pri oper1
  76.   #emit LOAD.S.alt oper2
  77.   #emit UDIV
  78.   #emit RETN
  79.  
  80.   return unsigned: 0;
  81. }
  82.  
  83. // Modulo: a % b
  84. stock unsigned: operator % (unsigned: oper1, unsigned: oper2)
  85. {
  86.   #emit LOAD.S.pri oper1
  87.   #emit LOAD.S.alt oper2
  88.   #emit UDIV
  89.   #emit MOVE.pri
  90.   #emit RETN
  91.  
  92.   return unsigned: 0;
  93. }
  94.  
  95. stock unsigned: operator % (oper1, unsigned: oper2)
  96. {
  97.   #emit LOAD.S.pri oper1
  98.   #emit LOAD.S.alt oper2
  99.   #emit UDIV
  100.   #emit MOVE.pri
  101.   #emit RETN
  102.  
  103.   return unsigned: 0;
  104. }
  105.  
  106. stock unsigned: operator % (unsigned: oper1, oper2)
  107. {
  108.   #emit LOAD.S.pri oper1
  109.   #emit LOAD.S.alt oper2
  110.   #emit UDIV
  111.   #emit MOVE.pri
  112.   #emit RETN
  113.  
  114.   return unsigned: 0;
  115. }
  116.  
  117. // Equal to: a == b
  118. stock bool: operator == (unsigned: oper1, unsigned: oper2) return bool: (_: oper1 == _: oper2);
  119. stock bool: operator == (unsigned: oper1, oper2) return bool: (_: oper1 == oper2);
  120. stock bool: operator == (oper1, unsigned: oper2) return bool: (oper1 == _: oper2);
  121.  
  122. // Not equal to: a != b
  123. stock bool: operator != (unsigned: oper1, unsigned: oper2) return bool: (_: oper1 != _: oper2);
  124. stock bool: operator != (unsigned: oper1, oper2) return bool: (_: oper1 != oper2);
  125. stock bool: operator != (oper1, unsigned: oper2) return bool: (oper1 != _: oper2);
  126.  
  127. // Larger than: a > b
  128. stock bool: operator > (unsigned: oper1, unsigned: oper2)
  129. {
  130.   #emit LOAD.S.pri oper1
  131.   #emit LOAD.S.alt oper2
  132.   #emit GRTR
  133.   #emit RETN
  134.  
  135.   return false;
  136. }
  137.  
  138. stock bool: operator > (unsigned: oper1, oper2)
  139. {
  140.   #emit LOAD.S.pri oper1
  141.   #emit LOAD.S.alt oper2
  142.   #emit GRTR
  143.   #emit RETN
  144.  
  145.   return false;
  146. }
  147.  
  148. stock bool: operator > (oper1, unsigned: oper2)
  149. {
  150.   #emit LOAD.S.pri oper1
  151.   #emit LOAD.S.alt oper2
  152.   #emit GRTR
  153.   #emit RETN
  154.  
  155.   return false;
  156. }
  157.  
  158. // Larger than or equal to: a >= b
  159. stock bool: operator >= (unsigned: oper1, unsigned: oper2)
  160. {
  161.   #emit LOAD.S.pri oper1
  162.   #emit LOAD.S.alt oper2
  163.   #emit GEQ
  164.   #emit RETN
  165.  
  166.   return false;
  167. }
  168.  
  169. stock bool: operator >= (unsigned: oper1, oper2)
  170. {
  171.   #emit LOAD.S.pri oper1
  172.   #emit LOAD.S.alt oper2
  173.   #emit GEQ
  174.   #emit RETN
  175.  
  176.   return false;
  177. }
  178.  
  179. stock bool: operator >= (oper1, unsigned: oper2)
  180. {
  181.   #emit LOAD.S.pri oper1
  182.   #emit LOAD.S.alt oper2
  183.   #emit GEQ
  184.   #emit RETN
  185.  
  186.   return false;
  187. }
  188.  
  189. // Less than: a < b
  190. stock bool: operator < (unsigned: oper1, unsigned: oper2)
  191. {
  192.   #emit LOAD.S.pri oper1
  193.   #emit LOAD.S.alt oper2
  194.   #emit LESS
  195.   #emit RETN
  196.  
  197.   return false;
  198. }
  199.  
  200. stock bool: operator < (unsigned: oper1, oper2)
  201. {
  202.   #emit LOAD.S.pri oper1
  203.   #emit LOAD.S.alt oper2
  204.   #emit LESS
  205.   #emit RETN
  206.  
  207.   return false;
  208. }
  209.  
  210. stock bool: operator < (oper1, unsigned: oper2)
  211. {
  212.   #emit LOAD.S.pri oper1
  213.   #emit LOAD.S.alt oper2
  214.   #emit LESS
  215.   #emit RETN
  216.  
  217.   return false;
  218. }
  219.  
  220. // Less than or equal to: a <= b
  221. stock bool: operator <= (unsigned: oper1, unsigned: oper2)
  222. {
  223.   #emit LOAD.S.pri oper1
  224.   #emit LOAD.S.alt oper2
  225.   #emit LEQ
  226.   #emit RETN
  227.  
  228.   return false;
  229. }
  230.  
  231. stock bool: operator <= (unsigned: oper1, oper2)
  232. {
  233.   #emit LOAD.S.pri oper1
  234.   #emit LOAD.S.alt oper2
  235.   #emit LEQ
  236.   #emit RETN
  237.  
  238.   return false;
  239. }
  240.  
  241. stock bool: operator <= (oper1, unsigned: oper2)
  242. {
  243.   #emit LOAD.S.pri oper1
  244.   #emit LOAD.S.alt oper2
  245.   #emit LEQ
  246.   #emit RETN
  247.  
  248.   return false;
  249. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement