symbiantypes.h
上传用户:dangjiwu
上传日期:2013-07-19
资源大小:42019k
文件大小:13k
源码类别:

Symbian

开发平台:

Visual C++

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