Advertisement
Guest User

conversions.inc

a guest
Nov 29th, 2016
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 13.01 KB | None | 0 0
  1. /*tags*/
  2. #define TAG_milliseconds Milliseconds
  3. #define TAG_seconds Seconds
  4. #define TAG_minutes Minutes
  5. #define TAG_hours Hours
  6. #define TAG_days Days
  7. #define TAG_weeks Weeks
  8. #define TAG_kelvin Kelvin
  9. #define TAG_celcius Celcius
  10. #define TAG_millimetres Millimetres
  11. #define TAG_centimetres Centimetres
  12. #define TAG_metres Metres
  13. #define TAG_kilometres Kilometres
  14. #define TAG_units Units
  15. #define TAG_precision_units Precision_Units
  16. #define TAG_square_millimetres Square_Millimetres
  17. #define TAG_square_centimetres Square_Centimetres
  18. #define TAG_square_metres Square_Metres
  19. #define TAG_square_kilometres Square_Kilometres
  20. #define TAG_hectares Hectares
  21. #define TAG_grammes Grammes
  22. #define TAG_kilogrammes Kilogrammes
  23. #define TAG_tonnes Tonnes
  24. #define TAG_millilitres Millilitres
  25. #define TAG_litres Litres
  26. #define TAG_cubic_centimetres Cubic_Centimetres
  27. #define TAG_cubic_metres Cubic_Metres
  28. /*defines*/
  29. #define DEFINE_MEASUREMENT_1(%1) \
  30.     native TAG_%1:operator*(TAG_%1:l,Float:r)=floatmul;\
  31.     native TAG_%1:operator*(Float:l,TAG_%1:r)=floatmul;\
  32.     native TAG_%1:operator/(TAG_%1:l,Float:r)=floatdiv;\
  33.     native TAG_%1:operator/(Float:l,TAG_%1:r)=floatdiv;\
  34.     forward TAG_%1:operator%(TAG_%1:l,Float:r);\
  35.     forward TAG_%1:operator%(Float:l,TAG_%1:r);\
  36.     stock TAG_%1:operator+(TAG_%1:l,Float:r)return TAG_%1:(Float:l+Float:r);\
  37.     stock TAG_%1:operator+(Float:l,TAG_%1:r)return TAG_%1:(Float:l+Float:r);\
  38.     stock TAG_%1:operator-(TAG_%1:l,Float:r)return TAG_%1:(Float:l-Float:r);\
  39.     stock TAG_%1:operator-(Float:l,TAG_%1:r)return TAG_%1:(Float:l-Float:r);\
  40.     stock bool:operator>(TAG_%1:l,Float:r)return (Float:l>Float:r);\
  41.     stock bool:operator>(Float:l,TAG_%1:r)return (Float:l>Float:r);\
  42.     stock bool:operator>=(TAG_%1:l,Float:r)return (Float:l>=Float:r);\
  43.     stock bool:operator>=(Float:l,TAG_%1:r)return (Float:l>=Float:r);\
  44.     stock bool:operator<(TAG_%1:l,Float:r)return (Float:l<Float:r);\
  45.     stock bool:operator<(Float:l,TAG_%1:r)return (Float:l<Float:r);\
  46.     stock bool:operator<=(TAG_%1:l,Float:r)return (Float:l<=Float:r);\
  47.     stock bool:operator<=(Float:l,TAG_%1:r)return (Float:l<=Float:r);\
  48.     stock bool:operator==(TAG_%1:l,Float:r)return (Float:l==Float:r);\
  49.     stock bool:operator==(Float:l,TAG_%1:r)return (Float:l==Float:r);\
  50.     stock bool:operator!=(TAG_%1:l,Float:r)return (Float:l!=Float:r);\
  51.     stock bool:operator!=(Float:l,TAG_%1:r)return (Float:l!=Float:r);
  52. #define DEFINE_MEASUREMENT_2(%1) \
  53.     stock TAG_%1:operator*(TAG_%1:l,_:r)return l*float(r);\
  54.     stock TAG_%1:operator*(_:l,TAG_%1:r)return l*float(r);\
  55.     stock TAG_%1:operator/(TAG_%1:l,_:r)return l*float(r);\
  56.     stock TAG_%1:operator/(_:l,TAG_%1:r)return l*float(r);\
  57.     forward TAG_%1:operator%(TAG_%1:l,_:r);\
  58.     forward TAG_%1:operator%(_:l,TAG_%1:r);\
  59.     stock TAG_%1:operator+(TAG_%1:l,_:r)return TAG_%1:(Float:l+float(r));\
  60.     stock TAG_%1:operator+(_:l,TAG_%1:r)return TAG_%1:(float(l)+Float:r);\
  61.     stock TAG_%1:operator-(TAG_%1:l,_:r)return TAG_%1:(Float:l-float(r));\
  62.     stock TAG_%1:operator-(_:l,TAG_%1:r)return TAG_%1:(float(l)-Float:r);\
  63.     stock bool:operator>(TAG_%1:l,_:r)return (Float:l>float(r));\
  64.     stock bool:operator>(_:l,TAG_%1:r)return (float(l)>Float:r);\
  65.     stock bool:operator>=(TAG_%1:l,_:r)return (Float:l>=float(r));\
  66.     stock bool:operator>=(_:l,TAG_%1:r)return (float(l)>=Float:r);\
  67.     stock bool:operator<(TAG_%1:l,_:r)return (Float:l<float(r));\
  68.     stock bool:operator<(_:l,TAG_%1:r)return (float(l)<Float:r);\
  69.     stock bool:operator<=(TAG_%1:l,_:r)return (Float:l<=float(r));\
  70.     stock bool:operator<=(_:l,TAG_%1:r)return (float(l)<=Float:r);\
  71.     stock bool:operator==(TAG_%1:l,_:r)return (Float:l==float(r));\
  72.     stock bool:operator==(_:l,TAG_%1:r)return (float(l)==Float:r);\
  73.     stock bool:operator!=(TAG_%1:l,_:r)return (Float:l!=float(r));\
  74.     stock bool:operator!=(_:l,TAG_%1:r)return (float(l)!=Float:r);
  75. #define DEFINE_MEASUREMENT_3(%1) \
  76.     stock bool:operator!(TAG_%1:oper)return (_:oper&cellmax)==0;\
  77.     native TAG_%1:operator=(oper) = float;\
  78.     stock TAG_%1:operator=(Float:oper)return TAG_%1:oper;\
  79.     stock TAG_%1:operator++(TAG_%1:oper)return TAG_%1(Float:oper+1.0);\
  80.     stock TAG_%1:operator--(TAG_%1:oper)return TAG_%1(Float:oper-1.0);\
  81.     stock TAG_%1:operator-(TAG_%1:oper)return oper^TAG_%1:cellmin;\
  82.     forward TAG_%1:operator*(TAG_%1:l,TAG_%1:r);\
  83.     forward TAG_%1:operator/(TAG_%1:l,TAG_%1:r);\
  84.     forward TAG_%1:operator%(TAG_%1:l,TAG_%1:r);\
  85.     stock TAG_%1:operator+(TAG_%1:l,TAG_%1:r)return TAG_%1:(Float:l+Float:r);\
  86.     stock TAG_%1:operator-(TAG_%1:l,TAG_%1:r)return TAG_%1:(Float:l-Float:r);\
  87.     stock bool:operator>(TAG_%1:l,TAG_%1:r)return (Float:l>Float:r);\
  88.     stock bool:operator>=(TAG_%1:l,TAG_%1:r)return (Float:l>=Float:r);\
  89.     stock bool:operator<(TAG_%1:l,TAG_%1:r)return (Float:l<Float:r);\
  90.     stock bool:operator<=(TAG_%1:l,TAG_%1:r)return (Float:l<=Float:r);\
  91.     stock bool:operator==(TAG_%1:l,TAG_%1:r)return (Float:l==Float:r);\
  92.     stock bool:operator!=(TAG_%1:l,TAG_%1:r)return (Float:l!=Float:r);
  93. #define DEFINE_CONVERSION(%1,%2,%3) \
  94.     forward TAG_%1:operator*(TAG_%1:l,TAG_%2:r);\
  95.     forward TAG_%1:operator*(TAG_%2:l,TAG_%1:r);\
  96.     forward TAG_%1:operator/(TAG_%1:l,TAG_%2:r);\
  97.     forward TAG_%1:operator/(TAG_%2:l,TAG_%1:r);\
  98.     forward TAG_%1:operator%(TAG_%1:l,TAG_%2:r);\
  99.     forward TAG_%1:operator%(TAG_%2:l,TAG_%1:r);\
  100.     stock TAG_%1:operator+(TAG_%1:l,TAG_%2:r)return TAG_%1:(Float:l+Float:r*%3);\
  101.     stock TAG_%1:operator+(TAG_%2:l,TAG_%1:r)return TAG_%1:(Float:l*%3+Float:r);\
  102.     stock TAG_%1:operator-(TAG_%1:l,TAG_%2:r)return TAG_%1:(Float:l-Float:r*%3);\
  103.     stock TAG_%1:operator-(TAG_%2:l,TAG_%1:r)return TAG_%1:(Float:l*%3-Float:r);\
  104.     stock bool:operator>(TAG_%1:l,TAG_%2:r)return (Float:l>Float:r*%3);\
  105.     stock bool:operator>(TAG_%2:l,TAG_%1:r)return (Float:l*%3>Float:r);\
  106.     stock bool:operator>=(TAG_%1:l,TAG_%2:r)return (Float:l>=Float:r*%3);\
  107.     stock bool:operator>=(TAG_%2:l,TAG_%1:r)return (Float:l*%3>=Float:r);\
  108.     stock bool:operator<(TAG_%1:l,TAG_%2:r)return (Float:l<Float:r*%3);\
  109.     stock bool:operator<(TAG_%2:l,TAG_%1:r)return (Float:l*%3<Float:r);\
  110.     stock bool:operator<=(TAG_%1:l,TAG_%2:r)return (Float:l<=Float:r*%3);\
  111.     stock bool:operator<=(TAG_%2:l,TAG_%1:r)return (Float:l*%3<=Float:r);\
  112.     stock bool:operator==(TAG_%1:l,TAG_%2:r)return (Float:l==Float:r*%3);\
  113.     stock bool:operator==(TAG_%2:l,TAG_%1:r)return (Float:l*%3==Float:r);\
  114.     stock bool:operator!=(TAG_%1:l,TAG_%2:r)return (Float:l!=Float:r*%3);\
  115.     stock bool:operator!=(TAG_%2:l,TAG_%1:r)return (Float:l*%3!=Float:r);
  116. #define DEFINE_TEMPERATURE(%1,%2,%3,%4) \
  117.     forward TAG_%1:operator*(TAG_%1:l,TAG_%2:r);\
  118.     forward TAG_%1:operator*(TAG_%2:l,TAG_%1:r);\
  119.     forward TAG_%1:operator/(TAG_%1:l,TAG_%2:r);\
  120.     forward TAG_%1:operator/(TAG_%2:l,TAG_%1:r);\
  121.     forward TAG_%1:operator%(TAG_%1:l,TAG_%2:r);\
  122.     forward TAG_%1:operator%(TAG_%2:l,TAG_%1:r);\
  123.     stock TAG_%1:operator+(TAG_%1:l,TAG_%2:r)return TAG_%1:(Float:l+Float:r*%3-%4);\
  124.     stock TAG_%1:operator+(TAG_%2:l,TAG_%1:r)return TAG_%1:(Float:l*%3-%4+Float:r);\
  125.     stock TAG_%1:operator-(TAG_%1:l,TAG_%2:r)return TAG_%1:(Float:l-Float:r*%3-%4);\
  126.     stock TAG_%1:operator-(TAG_%2:l,TAG_%1:r)return TAG_%1:(Float:l*%3-%4-Float:r);\
  127.     stock bool:operator>(TAG_%1:l,TAG_%2:r)return (Float:l>Float:r*%3-%4);\
  128.     stock bool:operator>(TAG_%2:l,TAG_%1:r)return (Float:l*%3-%4>Float:r);\
  129.     stock bool:operator>=(TAG_%1:l,TAG_%2:r)return (Float:l>=Float:r*%3-%4);\
  130.     stock bool:operator>=(TAG_%2:l,TAG_%1:r)return (Float:l*%3-%4>=Float:r);\
  131.     stock bool:operator<(TAG_%1:l,TAG_%2:r)return (Float:l<Float:r*%3-%4);\
  132.     stock bool:operator<(TAG_%2:l,TAG_%1:r)return (Float:l*%3-%4<Float:r);\
  133.     stock bool:operator<=(TAG_%1:l,TAG_%2:r)return (Float:l<=Float:r*%3-%4);\
  134.     stock bool:operator<=(TAG_%2:l,TAG_%1:r)return (Float:l*%3-%4<=Float:r);\
  135.     stock bool:operator==(TAG_%1:l,TAG_%2:r)return (Float:l==Float:r*%3-%4);\
  136.     stock bool:operator==(TAG_%2:l,TAG_%1:r)return (Float:l*%3-%4==Float:r);\
  137.     stock bool:operator!=(TAG_%1:l,TAG_%2:r)return (Float:l!=Float:r*%3-%4);\
  138.     stock bool:operator!=(TAG_%2:l,TAG_%1:r)return (Float:l*%3-%4!=Float:r);
  139. /*operators*/
  140. DEFINE_MEASUREMENT_1(milliseconds)
  141. DEFINE_MEASUREMENT_1(seconds)
  142. DEFINE_MEASUREMENT_1(minutes)
  143. DEFINE_MEASUREMENT_1(hours)
  144. DEFINE_MEASUREMENT_1(days)
  145. DEFINE_MEASUREMENT_1(weeks)
  146. DEFINE_MEASUREMENT_2(milliseconds)
  147. DEFINE_MEASUREMENT_2(seconds)
  148. DEFINE_MEASUREMENT_2(minutes)
  149. DEFINE_MEASUREMENT_2(hours)
  150. DEFINE_MEASUREMENT_2(days)
  151. DEFINE_MEASUREMENT_2(weeks)
  152. DEFINE_MEASUREMENT_3(milliseconds)
  153. DEFINE_MEASUREMENT_3(seconds)
  154. DEFINE_MEASUREMENT_3(minutes)
  155. DEFINE_MEASUREMENT_3(hours)
  156. DEFINE_MEASUREMENT_3(days)
  157. DEFINE_MEASUREMENT_3(weeks)
  158. DEFINE_MEASUREMENT_1(millimetres)
  159. DEFINE_MEASUREMENT_1(centimetres)
  160. DEFINE_MEASUREMENT_1(metres)
  161. DEFINE_MEASUREMENT_1(kilometres)
  162. DEFINE_MEASUREMENT_1(units)
  163. DEFINE_MEASUREMENT_1(precision_units)
  164. DEFINE_MEASUREMENT_1(square_metres)
  165. DEFINE_MEASUREMENT_1(square_kilometres)
  166. DEFINE_MEASUREMENT_1(hectares)
  167. DEFINE_MEASUREMENT_1(milligrammes)
  168. DEFINE_MEASUREMENT_1(grammes)
  169. DEFINE_MEASUREMENT_1(kilogrammes)
  170. DEFINE_MEASUREMENT_1(tonnes)
  171. DEFINE_MEASUREMENT_1(millilitres)
  172. DEFINE_MEASUREMENT_1(litres)
  173. DEFINE_MEASUREMENT_2(millimetres)
  174. DEFINE_MEASUREMENT_2(centimetres)
  175. DEFINE_MEASUREMENT_2(metres)
  176. DEFINE_MEASUREMENT_2(kilometres)
  177. DEFINE_MEASUREMENT_2(units)
  178. DEFINE_MEASUREMENT_2(precision_units)
  179. DEFINE_MEASUREMENT_2(square_metres)
  180. DEFINE_MEASUREMENT_2(square_kilometres)
  181. DEFINE_MEASUREMENT_2(square_miles)
  182. DEFINE_MEASUREMENT_2(hectares)
  183. DEFINE_MEASUREMENT_2(milligrammes)
  184. DEFINE_MEASUREMENT_2(grammes)
  185. DEFINE_MEASUREMENT_2(kilogrammes)
  186. DEFINE_MEASUREMENT_2(tonnes)
  187. DEFINE_MEASUREMENT_2(millilitres)
  188. DEFINE_MEASUREMENT_2(litres)
  189. DEFINE_MEASUREMENT_3(millimetres)
  190. DEFINE_MEASUREMENT_3(centimetres)
  191. DEFINE_MEASUREMENT_3(metres)
  192. DEFINE_MEASUREMENT_3(kilometres)
  193. DEFINE_MEASUREMENT_3(units)
  194. DEFINE_MEASUREMENT_3(precision_units)
  195. DEFINE_MEASUREMENT_3(square_metres)
  196. DEFINE_MEASUREMENT_3(square_kilometres)
  197. DEFINE_MEASUREMENT_3(square_miles)
  198. DEFINE_MEASUREMENT_3(hectares)
  199. DEFINE_MEASUREMENT_3(milligrammes)
  200. DEFINE_MEASUREMENT_3(grammes)
  201. DEFINE_MEASUREMENT_3(kilogrammes)
  202. DEFINE_MEASUREMENT_3(tonnes)
  203. DEFINE_MEASUREMENT_3(millilitres)
  204. DEFINE_MEASUREMENT_1(celcius)
  205. DEFINE_MEASUREMENT_2(celcius)
  206. DEFINE_MEASUREMENT_3(celcius)
  207. DEFINE_MEASUREMENT_1(kelvin)
  208. DEFINE_MEASUREMENT_2(kelvin)
  209. DEFINE_MEASUREMENT_3(kelvin)
  210. DEFINE_MEASUREMENT_1(square_centimetres)
  211. DEFINE_MEASUREMENT_2(square_centimetres)
  212. DEFINE_MEASUREMENT_3(square_centimetres)
  213. DEFINE_MEASUREMENT_1(cubic_centimetres)
  214. DEFINE_MEASUREMENT_2(cubic_centimetres)
  215. DEFINE_MEASUREMENT_3(cubic_centimetres)
  216. DEFINE_MEASUREMENT_1(cubic_metres)
  217. DEFINE_MEASUREMENT_2(cubic_metres)
  218. DEFINE_MEASUREMENT_3(cubic_metres)
  219. /*time*/
  220. DEFINE_CONVERSION(milliseconds,seconds,1000.0)
  221. DEFINE_CONVERSION(milliseconds,minutes,60000.0)
  222. DEFINE_CONVERSION(milliseconds,hours,3600000.0)
  223. DEFINE_CONVERSION(milliseconds,days,86400000.0)
  224. DEFINE_CONVERSION(milliseconds,weeks,604800000.0)
  225. DEFINE_CONVERSION(seconds,minutes,60.0)
  226. DEFINE_CONVERSION(seconds,hours,3600.0)
  227. DEFINE_CONVERSION(seconds,days,86400.0)
  228. DEFINE_CONVERSION(seconds,weeks,604800.0)
  229. DEFINE_CONVERSION(minutes,hours,60.0)
  230. DEFINE_CONVERSION(minutes,days,1440.0)
  231. DEFINE_CONVERSION(minutes,weeks,10080.0)
  232. DEFINE_CONVERSION(hours,days,24.0)
  233. DEFINE_CONVERSION(hours,weeks,168.0)
  234. DEFINE_CONVERSION(days,weeks,7.0)
  235. /*temperature*/
  236. DEFINE_TEMPERATURE(celcius,kelvin,1.0,273.15)
  237. /*distance*/
  238. DEFINE_CONVERSION(millimetres,centimetres,10.0)
  239. DEFINE_CONVERSION(millimetres,metres,1000.0)
  240. DEFINE_CONVERSION(millimetres,kilometres,1000000.0)
  241. DEFINE_CONVERSION(millimetres,units,1000.0)
  242. DEFINE_CONVERSION(millimetres,precision_units,62.5)
  243. DEFINE_CONVERSION(centimetres,metres,100.0)
  244. DEFINE_CONVERSION(centimetres,kilometres,100000.0)
  245. DEFINE_CONVERSION(centimetres,units,100.0)
  246. DEFINE_CONVERSION(centimetres,precision_units,6.25)
  247. DEFINE_CONVERSION(metres,kilometres,1000.0)
  248. DEFINE_CONVERSION(units,kilometres,1000.0)
  249. DEFINE_CONVERSION(precision_units,metres,16.0)
  250. DEFINE_CONVERSION(precision_units,kilometres,16000.0)
  251. DEFINE_CONVERSION(precision_units,units,16.0)
  252. /*area*/
  253. DEFINE_CONVERSION(square_metres,square_kilometres,1000000.0)
  254. DEFINE_CONVERSION(square_metres,hectares,10000.0)
  255. DEFINE_CONVERSION(square_centimetres,square_metres,10000.0)
  256. DEFINE_CONVERSION(square_centimetres,square_kilometres,10000000000.0)
  257. DEFINE_CONVERSION(square_centimetres,hectares,100000000.0)
  258. DEFINE_CONVERSION(square_millimetres,square_metres,1000000.0)
  259. DEFINE_CONVERSION(square_millimetres,square_centimetres,100.0)
  260. DEFINE_CONVERSION(square_millimetres,square_kilometres,1000000000000.0)
  261. DEFINE_CONVERSION(square_millimetres,hectares,10000000000.0)
  262. DEFINE_CONVERSION(hectares,square_kilometres,100.0)
  263. /*weight*/
  264. DEFINE_CONVERSION(grammes,kilogrammes,1000.0)
  265. DEFINE_CONVERSION(grammes,tonnes,1000000.0)
  266. DEFINE_CONVERSION(milligrammes,grammes,1000.0)
  267. DEFINE_CONVERSION(milligrammes,kilogrammes,1000000.0)
  268. DEFINE_CONVERSION(milligrammes,tonnes,1000000000.0)
  269. DEFINE_CONVERSION(kilogrammes,tonnes,1000.0)
  270. /*volume*/
  271. DEFINE_CONVERSION(millilitres,litres,1000.0)
  272. DEFINE_CONVERSION(millilitres,cubic_metres,1000000.0)
  273. DEFINE_CONVERSION(litres,cubic_metres,1000.0)
  274. DEFINE_CONVERSION(cubic_centimetres,litres,1000.0)
  275. DEFINE_CONVERSION(cubic_centimetres,cubic_metres,1000000.0)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement