symbiantypes.h
上传用户:zhongxx05
上传日期:2007-06-06
资源大小:33641k
文件大小:12k
源码类别:

Symbian

开发平台:

C/C++

  1. /* ***** BEGIN LICENSE BLOCK ***** 
  2.  * Version: RCSL 1.0/RPSL 1.0 
  3.  *  
  4.  * Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved. 
  5.  *      
  6.  * The contents of this file, and the files included with this file, are 
  7.  * subject to the current version of the RealNetworks Public Source License 
  8.  * Version 1.0 (the "RPSL") available at 
  9.  * http://www.helixcommunity.org/content/rpsl unless you have licensed 
  10.  * the file under the RealNetworks Community Source License Version 1.0 
  11.  * (the "RCSL") available at http://www.helixcommunity.org/content/rcsl, 
  12.  * in which case the RCSL will apply. You may also obtain the license terms 
  13.  * directly from RealNetworks.  You may not use this file except in 
  14.  * compliance with the RPSL or, if you have a valid RCSL with RealNetworks 
  15.  * applicable to this file, the RCSL.  Please see the applicable RPSL or 
  16.  * RCSL for the rights, obligations and limitations governing use of the 
  17.  * contents of the file.  
  18.  *  
  19.  * This file is part of the Helix DNA Technology. RealNetworks is the 
  20.  * developer of the Original Code and owns the copyrights in the portions 
  21.  * it created. 
  22.  *  
  23.  * This file, and the files included with this file, is distributed and made 
  24.  * available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 
  25.  * EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, 
  26.  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS 
  27.  * FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
  28.  * 
  29.  * Technology Compatibility Kit Test Suite(s) Location: 
  30.  *    http://www.helixcommunity.org/content/tck 
  31.  * 
  32.  * Contributor(s): 
  33.  *  
  34.  * ***** END LICENSE BLOCK ***** */ 
  35. #ifndef _SYMBIANTYPES_H_
  36. #define _SYMBIANTYPES_H_
  37. #ifndef _SYMBIAN
  38. #error This is the symbian types include. Only use on a Symbian platform.
  39. #endif
  40. #include <e32std.h>
  41. #include <e32def.h>
  42. inline
  43. double SymbianUINT32toDouble(TInt32 a)
  44. {
  45.     double ret;
  46.     if (a >= 0x80000000)
  47.     {
  48. ret = (double)(a & 0x7fffffff);
  49. ret += 2147483648.0;
  50.     }
  51.     else
  52.     {
  53. ret = (double)a;
  54.     }
  55.     return ret;
  56. }
  57. class SymInt64 : private TInt64
  58. {
  59.   public:
  60.     //Ctors
  61.     inline SymInt64(const SymInt64& it);
  62.     inline SymInt64();
  63.     inline SymInt64(const TInt64& it);    
  64.     inline SymInt64(const TInt32& it);
  65.     inline SymInt64(const TUint32& it);
  66.     inline SymInt64(const TInt& aVal);
  67.     inline SymInt64(const TUint& aVal);
  68.     inline SymInt64(const TUint& aHigh, const TUint& aLow);
  69.     inline SymInt64(const TReal& aVal);
  70.     //Assignment opers
  71.     inline SymInt64& operator=(const TInt&     aVal);
  72.     inline SymInt64& operator=(const TUint&    aVal);
  73.     inline SymInt64& operator=(const TInt32&   aVal);
  74.     inline SymInt64& operator=(const TUint32&  aVal);
  75.     inline SymInt64& operator=(const TReal&    aVal);
  76.     inline SymInt64& operator=(const TInt64&   aVal);
  77.     inline SymInt64& operator=(const SymInt64& aVal);
  78.     
  79.     //operators
  80.     inline SymInt64& operator>>=(TInt aShift);
  81.     inline SymInt64& operator<<=(TInt aShift);
  82.     inline SymInt64  operator+() const;
  83.     inline SymInt64  operator-() const;
  84.     inline SymInt64& operator++();
  85.     inline SymInt64  operator++(TInt);
  86.     inline SymInt64& operator--();
  87.     inline SymInt64  operator--(TInt);
  88.     inline SymInt64  operator>>(TInt aShift) const;
  89.     inline SymInt64  operator<<(TInt aShift) const;
  90.     inline SymInt64& operator+=(const SymInt64 &aVal);
  91.     inline SymInt64& operator-=(const SymInt64 &aVal);
  92.     inline SymInt64& operator*=(const SymInt64 &aVal);
  93.     inline SymInt64& operator/=(const SymInt64 &aVal);
  94.     inline SymInt64& operator%=(const SymInt64 &aVal);
  95.     inline SymInt64& operator|=(const SymInt64 &aVal);
  96.     inline SymInt64& operator+=(const int &aVal);
  97.     inline SymInt64& operator-=(const int &aVal);
  98.     inline SymInt64& operator*=(const int &aVal);
  99.     inline SymInt64& operator/=(const int &aVal);
  100.     inline SymInt64& operator%=(const int &aVal);
  101.     inline SymInt64& operator|=(const int &aVal);
  102.  
  103.     //SymInt64 math ops....
  104.     inline SymInt64  operator+(const SymInt64 &aVal) const;
  105.     inline SymInt64  operator-(const SymInt64 &aVal) const;
  106.     inline SymInt64  operator*(const SymInt64 &aVal) const;
  107.     inline SymInt64  operator/(const SymInt64 &aVal) const;
  108.     inline SymInt64  operator%(const SymInt64 &aVal) const;
  109.     inline SymInt64  operator|(const SymInt64 &aVal) const;
  110.     inline SymInt64  operator&(const SymInt64 &aVal) const;
  111.     inline SymInt64  operator+(const int &aVal) const;
  112.     inline SymInt64  operator-(const int &aVal) const;
  113.     inline SymInt64  operator*(const int &aVal) const;
  114.     inline SymInt64  operator/(const int &aVal) const;
  115.     inline SymInt64  operator%(const int &aVal) const;
  116.     inline SymInt64  operator|(const int &aVal) const;
  117.     inline SymInt64  operator&(const int &aVal) const;
  118.     //Compares....
  119.     inline TInt operator==(const SymInt64& aVal) const;
  120.     inline TInt operator!=(const SymInt64& aVal) const;
  121.     inline TInt operator>=(const SymInt64& aVal) const;
  122.     inline TInt operator<=(const SymInt64& aVal) const;
  123.     inline TInt operator>(const SymInt64& aVal) const;
  124.     inline TInt operator<(const SymInt64& aVal) const;
  125.     inline TInt operator!() const { return *this == 0; }
  126.  
  127.     //Assorted....
  128.     inline TUint   Low() const;
  129.     inline TUint   High() const;
  130.     inline TReal   GetTReal() const;
  131.     
  132.   private:
  133. };
  134. inline SymInt64::SymInt64(const SymInt64& it)
  135. {
  136.     iLow  = it.iLow;
  137.     iHigh = it.iHigh;
  138. }
  139. inline SymInt64::SymInt64()
  140. {
  141.     iLow = 0;
  142.     iHigh = 0;
  143. }
  144. inline SymInt64::SymInt64(const TInt64& it )
  145. {
  146.     iLow  = it.Low();
  147.     iHigh = it.High();
  148. }
  149. inline SymInt64::SymInt64(const TInt32& it)
  150.     : TInt64((TInt)it)
  151. {
  152. }
  153. inline SymInt64::SymInt64(const TUint32& it)
  154. {
  155.     iHigh = 0;
  156.     iLow  = it;
  157. }
  158. inline SymInt64::SymInt64(const TInt& it)
  159.     : TInt64(it)
  160. {
  161. }
  162. inline SymInt64::SymInt64(const TUint& it)
  163.     : TInt64(it)
  164. {
  165. }
  166. inline SymInt64::SymInt64(const TUint& aHigh, const TUint& aLow)
  167.     : TInt64(aHigh, aLow)
  168. {
  169. }
  170. inline SymInt64::SymInt64(const TReal& it)
  171.     : TInt64(it)
  172. {
  173. }
  174. inline SymInt64& SymInt64::operator=(const TInt& aVal)
  175. {
  176.     TInt64::operator=(aVal);
  177.     return *this;
  178. }
  179. inline SymInt64& SymInt64::operator=(const TUint& aVal)
  180. {
  181.     TInt64::operator=(aVal);
  182.     return *this;
  183. }
  184. inline SymInt64& SymInt64::operator=(const TInt32& aVal)
  185. {
  186.     iHigh = 0;
  187.     iLow  = aVal;    
  188.     return *this;
  189. }
  190. inline SymInt64& SymInt64::operator=(const TUint32& aVal)
  191. {
  192.     iHigh = 0;
  193.     iLow  = aVal;
  194.     return *this;
  195. }
  196. inline SymInt64& SymInt64::operator=(const TReal& aVal)
  197. {
  198.     TInt64::operator=(aVal);
  199.     return *this;
  200. }
  201. inline SymInt64& SymInt64::operator=(const TInt64& aVal)
  202. {
  203.     iLow  = aVal.Low();
  204.     iHigh = aVal.High();
  205.     
  206.     return *this;
  207. }
  208. inline SymInt64& SymInt64::operator=(const SymInt64& aVal)
  209. {
  210.     TInt64::operator=(aVal);
  211.     return *this;
  212. }
  213. inline SymInt64& SymInt64::operator+=(const SymInt64 &aVal)
  214. {
  215.     TInt64::operator+=(aVal);
  216.     return *this;
  217. }
  218. inline SymInt64& SymInt64::operator-=(const SymInt64 &aVal)
  219. {
  220.     TInt64::operator-=(aVal);
  221.     return *this;
  222. }
  223. inline SymInt64& SymInt64::operator*=(const SymInt64 &aVal)
  224. {
  225.     TInt64::operator*=(aVal);
  226.     return *this;
  227. }
  228. inline SymInt64& SymInt64::operator/=(const SymInt64 &aVal)
  229. {
  230.     TInt64::operator/=(aVal);
  231.     return *this;
  232. }
  233. inline SymInt64& SymInt64::operator%=(const SymInt64 &aVal)
  234. {
  235.     TInt64::operator%=(aVal);
  236.     return *this;
  237. }
  238. inline SymInt64& SymInt64::operator|=(const SymInt64 &aVal)
  239. {
  240.     iHigh |= aVal.iHigh;
  241.     iLow |= aVal.iLow;
  242.     return *this;
  243. }
  244. inline SymInt64& SymInt64::operator+=(const int &aVal)
  245. {
  246.     TInt64::operator+=(aVal);
  247.     return *this;
  248. }
  249. inline SymInt64& SymInt64::operator-=(const int &aVal)
  250. {
  251.     TInt64::operator-=(aVal);
  252.     return *this;
  253. }
  254. inline SymInt64& SymInt64::operator*=(const int &aVal)
  255. {
  256.     TInt64::operator*=(aVal);
  257.     return *this;
  258. }
  259. inline SymInt64& SymInt64::operator/=(const int &aVal)
  260. {
  261.     TInt64::operator/=(aVal);
  262.     return *this;
  263. }
  264. inline SymInt64& SymInt64::operator%=(const int &aVal)
  265. {
  266.     TInt64::operator%=(aVal);
  267.     return *this;
  268. }
  269. inline SymInt64& SymInt64::operator|=(const int &aVal)
  270. {
  271.     iLow |= aVal;
  272.     return *this;
  273. }
  274. inline SymInt64& SymInt64::operator>>=(TInt aShift)
  275. {
  276.     TInt64::operator>>=(aShift);
  277.     return *this;
  278. }
  279. inline SymInt64& SymInt64::operator<<=(TInt aShift)
  280. {
  281.     TInt64::operator<<=(aShift);
  282.     return *this;
  283. }
  284. inline SymInt64 SymInt64::operator+() const
  285. {
  286.     return TInt64::operator+();
  287. }
  288. inline SymInt64 SymInt64::operator-() const
  289. {
  290.     return TInt64::operator-();
  291. }
  292. inline SymInt64& SymInt64::operator++()
  293. {
  294.     TInt64::operator++();
  295.     return *this;
  296. }
  297. inline SymInt64 SymInt64::operator++(TInt a)
  298. {
  299.     return TInt64::operator++(a);
  300. }
  301. inline SymInt64& SymInt64::operator--()
  302. {
  303.     TInt64::operator--();
  304.     return *this;
  305. }
  306. inline SymInt64 SymInt64::operator--(TInt a)
  307. {
  308.     return TInt64::operator--(a);
  309. }
  310. inline SymInt64 SymInt64::operator+(const SymInt64 &aVal) const
  311. {
  312.     return TInt64::operator+(aVal);
  313. }
  314. inline SymInt64 SymInt64::operator-(const SymInt64 &aVal) const
  315. {
  316.     return TInt64::operator-(aVal);
  317. }
  318. inline SymInt64 SymInt64::operator*(const SymInt64 &aVal) const
  319. {
  320.     return TInt64::operator*(aVal);
  321. }
  322. inline SymInt64 SymInt64::operator/(const SymInt64 &aVal) const
  323. {
  324.     return TInt64::operator/(aVal);
  325. }
  326. inline SymInt64 SymInt64::operator%(const SymInt64 &aVal) const
  327. {
  328.     return TInt64::operator%(aVal);
  329. }
  330. inline SymInt64 SymInt64::operator|(const SymInt64 &it) const
  331. {
  332.     return SymInt64( iHigh|it.iHigh, iLow|it.iLow );
  333. }
  334. inline SymInt64 SymInt64::operator&(const SymInt64 &it) const
  335. {
  336.     return SymInt64( iHigh&it.iHigh, iLow&it.iLow );
  337. }
  338. inline SymInt64 SymInt64::operator+(const int &aVal) const
  339. {
  340.     return TInt64::operator+(aVal);
  341. }
  342. inline SymInt64 SymInt64::operator-(const int &aVal) const
  343. {
  344.     return TInt64::operator-(aVal);
  345. }
  346. inline SymInt64 SymInt64::operator*(const int &aVal) const
  347. {
  348.     return TInt64::operator*(aVal);
  349. }
  350. inline SymInt64 SymInt64::operator/(const int &aVal) const
  351. {
  352.     return TInt64::operator/(aVal);
  353. }
  354. inline SymInt64 SymInt64::operator%(const int &aVal) const
  355. {
  356.     return TInt64::operator%(aVal);
  357. }
  358. inline SymInt64 SymInt64::operator|(const int &it) const
  359. {
  360.     return SymInt64( iHigh, iLow|it );
  361. }
  362. inline SymInt64 SymInt64::operator&(const int &it) const
  363. {
  364.     return SymInt64( 0, iLow&it );
  365. }
  366. inline SymInt64 SymInt64::operator>>(TInt aShift) const
  367. {
  368.     return TInt64::operator>>(aShift);
  369. }
  370. inline SymInt64 SymInt64::operator<<(TInt aShift) const
  371. {
  372.     return TInt64::operator<<(aShift);
  373. }
  374. inline TInt SymInt64::operator==(const SymInt64 &aVal) const
  375. {
  376.     return TInt64::operator==(aVal);
  377. }
  378. inline TInt SymInt64::operator!=(const SymInt64 &aVal) const
  379. {
  380.     return TInt64::operator!=(aVal);
  381. }
  382. inline TInt SymInt64::operator>=(const SymInt64 &aVal) const
  383. {
  384.     return TInt64::operator>=(aVal);
  385. }
  386. inline TInt SymInt64::operator<=(const SymInt64 &aVal) const
  387. {
  388.     return TInt64::operator<=(aVal);
  389. }
  390. inline TInt SymInt64::operator>(const SymInt64 &aVal) const
  391. {
  392.     return TInt64::operator>(aVal);
  393. }
  394. inline TInt SymInt64::operator<(const SymInt64 &aVal) const
  395. {
  396.     return TInt64::operator<(aVal);
  397. }
  398. inline TUint SymInt64::Low() const
  399. {
  400.     return iLow;
  401. }
  402. inline TUint SymInt64::High() const
  403. {
  404.     return iHigh;
  405. }
  406. inline TReal SymInt64::GetTReal() const
  407. {
  408.     return TInt64::GetTReal();
  409. }
  410. // operators for SymInt64 and smaller precision types
  411. inline TInt operator==(const int& aVal, const SymInt64& bVal)
  412. {
  413.     return bVal == aVal;
  414. }
  415. inline TInt operator!=(const int& aVal, const SymInt64& bVal)
  416. {
  417.     return bVal != aVal;
  418. }
  419. inline TInt operator>=(const int& aVal, const SymInt64& bVal)
  420. {
  421.     return bVal <= aVal;
  422. }
  423. inline TInt operator<=(const int& aVal, const SymInt64& bVal)
  424. {
  425.     return bVal >= aVal;
  426. }
  427. inline TInt operator>(const  int& aVal, const SymInt64& bVal)
  428. {
  429.     return bVal < aVal;
  430. }
  431. inline TInt operator<(const  int& aVal, const SymInt64& bVal)
  432. {
  433.     return bVal > aVal;
  434. }
  435. #endif /* _SYMBIANTYPES_H_ */  /* Nothing past here */