PageRenderTime 48ms CodeModel.GetById 25ms RepoModel.GetById 0ms app.codeStats 0ms

/src/Boo.Lang/Runtime/DynamicDispatching/NumericPromotions.cs

http://github.com/bamboo/boo
C# | 587 lines | 449 code | 113 blank | 25 comment | 0 complexity | 650c6a661c765b66ab34488a944f29fd MD5 | raw file
Possible License(s): GPL-2.0
  1. #region license
  2. // Copyright (c) 2009 Rodrigo B. de Oliveira (rbo@acm.org)
  3. // All rights reserved.
  4. //
  5. // Redistribution and use in source and binary forms, with or without modification,
  6. // are permitted provided that the following conditions are met:
  7. //
  8. // * Redistributions of source code must retain the above copyright notice,
  9. // this list of conditions and the following disclaimer.
  10. // * Redistributions in binary form must reproduce the above copyright notice,
  11. // this list of conditions and the following disclaimer in the documentation
  12. // and/or other materials provided with the distribution.
  13. // * Neither the name of Rodrigo B. de Oliveira nor the names of its
  14. // contributors may be used to endorse or promote products derived from this
  15. // software without specific prior written permission.
  16. //
  17. // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
  18. // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
  19. // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  20. // DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
  21. // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  22. // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
  23. // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  24. // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  25. // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  26. // THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  27. #endregion
  28. using System;
  29. namespace Boo.Lang.Runtime.DynamicDispatching
  30. {
  31. public class NumericPromotions
  32. {
  33. public static object FromSByteToByte(object value, object[] args)
  34. {
  35. return (Byte) ((SByte)value);
  36. }
  37. public static object FromSByteToInt16(object value, object[] args)
  38. {
  39. return (Int16) ((SByte)value);
  40. }
  41. public static object FromSByteToUInt16(object value, object[] args)
  42. {
  43. return (UInt16) ((SByte)value);
  44. }
  45. public static object FromSByteToInt32(object value, object[] args)
  46. {
  47. return (Int32) ((SByte)value);
  48. }
  49. public static object FromSByteToUInt32(object value, object[] args)
  50. {
  51. return (UInt32) ((SByte)value);
  52. }
  53. public static object FromSByteToInt64(object value, object[] args)
  54. {
  55. return (Int64) ((SByte)value);
  56. }
  57. public static object FromSByteToUInt64(object value, object[] args)
  58. {
  59. return (UInt64) ((SByte)value);
  60. }
  61. public static object FromSByteToSingle(object value, object[] args)
  62. {
  63. return (Single) ((SByte)value);
  64. }
  65. public static object FromSByteToDouble(object value, object[] args)
  66. {
  67. return (Double) ((SByte)value);
  68. }
  69. public static object FromSByteToChar(object value, object[] args)
  70. {
  71. return (Char) ((SByte)value);
  72. }
  73. public static object FromByteToSByte(object value, object[] args)
  74. {
  75. return (SByte) ((Byte)value);
  76. }
  77. public static object FromByteToInt16(object value, object[] args)
  78. {
  79. return (Int16) ((Byte)value);
  80. }
  81. public static object FromByteToUInt16(object value, object[] args)
  82. {
  83. return (UInt16) ((Byte)value);
  84. }
  85. public static object FromByteToInt32(object value, object[] args)
  86. {
  87. return (Int32) ((Byte)value);
  88. }
  89. public static object FromByteToUInt32(object value, object[] args)
  90. {
  91. return (UInt32) ((Byte)value);
  92. }
  93. public static object FromByteToInt64(object value, object[] args)
  94. {
  95. return (Int64) ((Byte)value);
  96. }
  97. public static object FromByteToUInt64(object value, object[] args)
  98. {
  99. return (UInt64) ((Byte)value);
  100. }
  101. public static object FromByteToSingle(object value, object[] args)
  102. {
  103. return (Single) ((Byte)value);
  104. }
  105. public static object FromByteToDouble(object value, object[] args)
  106. {
  107. return (Double) ((Byte)value);
  108. }
  109. public static object FromByteToChar(object value, object[] args)
  110. {
  111. return (Char) ((Byte)value);
  112. }
  113. public static object FromInt16ToSByte(object value, object[] args)
  114. {
  115. return (SByte) ((Int16)value);
  116. }
  117. public static object FromInt16ToByte(object value, object[] args)
  118. {
  119. return (Byte) ((Int16)value);
  120. }
  121. public static object FromInt16ToUInt16(object value, object[] args)
  122. {
  123. return (UInt16) ((Int16)value);
  124. }
  125. public static object FromInt16ToInt32(object value, object[] args)
  126. {
  127. return (Int32) ((Int16)value);
  128. }
  129. public static object FromInt16ToUInt32(object value, object[] args)
  130. {
  131. return (UInt32) ((Int16)value);
  132. }
  133. public static object FromInt16ToInt64(object value, object[] args)
  134. {
  135. return (Int64) ((Int16)value);
  136. }
  137. public static object FromInt16ToUInt64(object value, object[] args)
  138. {
  139. return (UInt64) ((Int16)value);
  140. }
  141. public static object FromInt16ToSingle(object value, object[] args)
  142. {
  143. return (Single) ((Int16)value);
  144. }
  145. public static object FromInt16ToDouble(object value, object[] args)
  146. {
  147. return (Double) ((Int16)value);
  148. }
  149. public static object FromInt16ToChar(object value, object[] args)
  150. {
  151. return (Char) ((Int16)value);
  152. }
  153. public static object FromUInt16ToSByte(object value, object[] args)
  154. {
  155. return (SByte) ((UInt16)value);
  156. }
  157. public static object FromUInt16ToByte(object value, object[] args)
  158. {
  159. return (Byte) ((UInt16)value);
  160. }
  161. public static object FromUInt16ToInt16(object value, object[] args)
  162. {
  163. return (Int16) ((UInt16)value);
  164. }
  165. public static object FromUInt16ToInt32(object value, object[] args)
  166. {
  167. return (Int32) ((UInt16)value);
  168. }
  169. public static object FromUInt16ToUInt32(object value, object[] args)
  170. {
  171. return (UInt32) ((UInt16)value);
  172. }
  173. public static object FromUInt16ToInt64(object value, object[] args)
  174. {
  175. return (Int64) ((UInt16)value);
  176. }
  177. public static object FromUInt16ToUInt64(object value, object[] args)
  178. {
  179. return (UInt64) ((UInt16)value);
  180. }
  181. public static object FromUInt16ToSingle(object value, object[] args)
  182. {
  183. return (Single) ((UInt16)value);
  184. }
  185. public static object FromUInt16ToDouble(object value, object[] args)
  186. {
  187. return (Double) ((UInt16)value);
  188. }
  189. public static object FromUInt16ToChar(object value, object[] args)
  190. {
  191. return (Char) ((UInt16)value);
  192. }
  193. public static object FromInt32ToSByte(object value, object[] args)
  194. {
  195. return (SByte) ((Int32)value);
  196. }
  197. public static object FromInt32ToByte(object value, object[] args)
  198. {
  199. return (Byte) ((Int32)value);
  200. }
  201. public static object FromInt32ToInt16(object value, object[] args)
  202. {
  203. return (Int16) ((Int32)value);
  204. }
  205. public static object FromInt32ToUInt16(object value, object[] args)
  206. {
  207. return (UInt16) ((Int32)value);
  208. }
  209. public static object FromInt32ToUInt32(object value, object[] args)
  210. {
  211. return (UInt32) ((Int32)value);
  212. }
  213. public static object FromInt32ToInt64(object value, object[] args)
  214. {
  215. return (Int64) ((Int32)value);
  216. }
  217. public static object FromInt32ToUInt64(object value, object[] args)
  218. {
  219. return (UInt64) ((Int32)value);
  220. }
  221. public static object FromInt32ToSingle(object value, object[] args)
  222. {
  223. return (Single) ((Int32)value);
  224. }
  225. public static object FromInt32ToDouble(object value, object[] args)
  226. {
  227. return (Double) ((Int32)value);
  228. }
  229. public static object FromInt32ToChar(object value, object[] args)
  230. {
  231. return (Char) ((Int32)value);
  232. }
  233. public static object FromUInt32ToSByte(object value, object[] args)
  234. {
  235. return (SByte) ((UInt32)value);
  236. }
  237. public static object FromUInt32ToByte(object value, object[] args)
  238. {
  239. return (Byte) ((UInt32)value);
  240. }
  241. public static object FromUInt32ToInt16(object value, object[] args)
  242. {
  243. return (Int16) ((UInt32)value);
  244. }
  245. public static object FromUInt32ToUInt16(object value, object[] args)
  246. {
  247. return (UInt16) ((UInt32)value);
  248. }
  249. public static object FromUInt32ToInt32(object value, object[] args)
  250. {
  251. return (Int32) ((UInt32)value);
  252. }
  253. public static object FromUInt32ToInt64(object value, object[] args)
  254. {
  255. return (Int64) ((UInt32)value);
  256. }
  257. public static object FromUInt32ToUInt64(object value, object[] args)
  258. {
  259. return (UInt64) ((UInt32)value);
  260. }
  261. public static object FromUInt32ToSingle(object value, object[] args)
  262. {
  263. return (Single) ((UInt32)value);
  264. }
  265. public static object FromUInt32ToDouble(object value, object[] args)
  266. {
  267. return (Double) ((UInt32)value);
  268. }
  269. public static object FromUInt32ToChar(object value, object[] args)
  270. {
  271. return (Char) ((UInt32)value);
  272. }
  273. public static object FromInt64ToSByte(object value, object[] args)
  274. {
  275. return (SByte) ((Int64)value);
  276. }
  277. public static object FromInt64ToByte(object value, object[] args)
  278. {
  279. return (Byte) ((Int64)value);
  280. }
  281. public static object FromInt64ToInt16(object value, object[] args)
  282. {
  283. return (Int16) ((Int64)value);
  284. }
  285. public static object FromInt64ToUInt16(object value, object[] args)
  286. {
  287. return (UInt16) ((Int64)value);
  288. }
  289. public static object FromInt64ToInt32(object value, object[] args)
  290. {
  291. return (Int32) ((Int64)value);
  292. }
  293. public static object FromInt64ToUInt32(object value, object[] args)
  294. {
  295. return (UInt32) ((Int64)value);
  296. }
  297. public static object FromInt64ToUInt64(object value, object[] args)
  298. {
  299. return (UInt64) ((Int64)value);
  300. }
  301. public static object FromInt64ToSingle(object value, object[] args)
  302. {
  303. return (Single) ((Int64)value);
  304. }
  305. public static object FromInt64ToDouble(object value, object[] args)
  306. {
  307. return (Double) ((Int64)value);
  308. }
  309. public static object FromInt64ToChar(object value, object[] args)
  310. {
  311. return (Char) ((Int64)value);
  312. }
  313. public static object FromUInt64ToSByte(object value, object[] args)
  314. {
  315. return (SByte) ((UInt64)value);
  316. }
  317. public static object FromUInt64ToByte(object value, object[] args)
  318. {
  319. return (Byte) ((UInt64)value);
  320. }
  321. public static object FromUInt64ToInt16(object value, object[] args)
  322. {
  323. return (Int16) ((UInt64)value);
  324. }
  325. public static object FromUInt64ToUInt16(object value, object[] args)
  326. {
  327. return (UInt16) ((UInt64)value);
  328. }
  329. public static object FromUInt64ToInt32(object value, object[] args)
  330. {
  331. return (Int32) ((UInt64)value);
  332. }
  333. public static object FromUInt64ToUInt32(object value, object[] args)
  334. {
  335. return (UInt32) ((UInt64)value);
  336. }
  337. public static object FromUInt64ToInt64(object value, object[] args)
  338. {
  339. return (Int64) ((UInt64)value);
  340. }
  341. public static object FromUInt64ToSingle(object value, object[] args)
  342. {
  343. return (Single) ((UInt64)value);
  344. }
  345. public static object FromUInt64ToDouble(object value, object[] args)
  346. {
  347. return (Double) ((UInt64)value);
  348. }
  349. public static object FromUInt64ToChar(object value, object[] args)
  350. {
  351. return (Char) ((UInt64)value);
  352. }
  353. public static object FromSingleToSByte(object value, object[] args)
  354. {
  355. return (SByte) ((Single)value);
  356. }
  357. public static object FromSingleToByte(object value, object[] args)
  358. {
  359. return (Byte) ((Single)value);
  360. }
  361. public static object FromSingleToInt16(object value, object[] args)
  362. {
  363. return (Int16) ((Single)value);
  364. }
  365. public static object FromSingleToUInt16(object value, object[] args)
  366. {
  367. return (UInt16) ((Single)value);
  368. }
  369. public static object FromSingleToInt32(object value, object[] args)
  370. {
  371. return (Int32) ((Single)value);
  372. }
  373. public static object FromSingleToUInt32(object value, object[] args)
  374. {
  375. return (UInt32) ((Single)value);
  376. }
  377. public static object FromSingleToInt64(object value, object[] args)
  378. {
  379. return (Int64) ((Single)value);
  380. }
  381. public static object FromSingleToUInt64(object value, object[] args)
  382. {
  383. return (UInt64) ((Single)value);
  384. }
  385. public static object FromSingleToDouble(object value, object[] args)
  386. {
  387. return (Double) ((Single)value);
  388. }
  389. public static object FromSingleToChar(object value, object[] args)
  390. {
  391. return (Char) ((Single)value);
  392. }
  393. public static object FromDoubleToSByte(object value, object[] args)
  394. {
  395. return (SByte) ((Double)value);
  396. }
  397. public static object FromDoubleToByte(object value, object[] args)
  398. {
  399. return (Byte) ((Double)value);
  400. }
  401. public static object FromDoubleToInt16(object value, object[] args)
  402. {
  403. return (Int16) ((Double)value);
  404. }
  405. public static object FromDoubleToUInt16(object value, object[] args)
  406. {
  407. return (UInt16) ((Double)value);
  408. }
  409. public static object FromDoubleToInt32(object value, object[] args)
  410. {
  411. return (Int32) ((Double)value);
  412. }
  413. public static object FromDoubleToUInt32(object value, object[] args)
  414. {
  415. return (UInt32) ((Double)value);
  416. }
  417. public static object FromDoubleToInt64(object value, object[] args)
  418. {
  419. return (Int64) ((Double)value);
  420. }
  421. public static object FromDoubleToUInt64(object value, object[] args)
  422. {
  423. return (UInt64) ((Double)value);
  424. }
  425. public static object FromDoubleToSingle(object value, object[] args)
  426. {
  427. return (Single) ((Double)value);
  428. }
  429. public static object FromDoubleToChar(object value, object[] args)
  430. {
  431. return (Char) ((Double)value);
  432. }
  433. public static object FromCharToSByte(object value, object[] args)
  434. {
  435. return (SByte) ((Char)value);
  436. }
  437. public static object FromCharToByte(object value, object[] args)
  438. {
  439. return (Byte) ((Char)value);
  440. }
  441. public static object FromCharToInt16(object value, object[] args)
  442. {
  443. return (Int16) ((Char)value);
  444. }
  445. public static object FromCharToUInt16(object value, object[] args)
  446. {
  447. return (UInt16) ((Char)value);
  448. }
  449. public static object FromCharToInt32(object value, object[] args)
  450. {
  451. return (Int32) ((Char)value);
  452. }
  453. public static object FromCharToUInt32(object value, object[] args)
  454. {
  455. return (UInt32) ((Char)value);
  456. }
  457. public static object FromCharToInt64(object value, object[] args)
  458. {
  459. return (Int64) ((Char)value);
  460. }
  461. public static object FromCharToUInt64(object value, object[] args)
  462. {
  463. return (UInt64) ((Char)value);
  464. }
  465. public static object FromCharToSingle(object value, object[] args)
  466. {
  467. return (Single) ((Char)value);
  468. }
  469. public static object FromCharToDouble(object value, object[] args)
  470. {
  471. return (Double) ((Char)value);
  472. }
  473. }
  474. }