Main Page | Class Hierarchy | Class List | File List | Class Members | File Members

qword.h

Go to the documentation of this file.
00001 /*
00002  *      HT Editor
00003  *      qword.h
00004  *
00005  *      Copyright (C) 1999-2002 Stefan Weyergraf (stefan@weyergraf.de)
00006  *      Copyright (C) 1999-2002 Sebastian Biallas (sb@web-productions.de)
00007  *
00008  *      This program is free software; you can redistribute it and/or modify
00009  *      it under the terms of the GNU General Public License version 2 as
00010  *      published by the Free Software Foundation.
00011  *
00012  *      This program is distributed in the hope that it will be useful,
00013  *      but WITHOUT ANY WARRANTY; without even the implied warranty of
00014  *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00015  *      GNU General Public License for more details.
00016  *
00017  *      You should have received a copy of the GNU General Public License
00018  *      along with this program; if not, write to the Free Software
00019  *      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
00020  */
00021 
00022 #ifndef __QWORD_H__
00023 #define __QWORD_H__
00024 
00025 #include "global.h"             // for types dword and UINT
00026 
00027 typedef struct {
00028         dword lo;
00029         dword hi;
00030 } uint64;
00031 
00032 #define qword uint64
00033 
00034 typedef struct {
00035         dword lo;
00036         dword hi;
00037 } sint64;
00038 
00039 // FIXME: dont work for >32 bit systems
00040 #define QWORD_SET_HI(q, v) (((q).hi) = (v))
00041 #define QWORD_SET_LO(q, v) (((q).lo) = (v))
00042 #define QWORD_GET_HI(q) ((q).hi)
00043 #define QWORD_GET_LO(q) ((q).lo)
00044 
00045 #define QWORD_GET_INT(q) ((q).lo)
00046 #define QWORD_GET_FLOAT(q) ( (((float)QWORD_GET_HI(q))*4294967296.0) + ((float)QWORD_GET_LO(q)))
00047 
00048 #ifdef __cplusplus
00049 extern "C" {
00050 #endif
00051 int qword_cmp(uint64 a, uint64 b);
00052 uint64 int_to_qword(int i);
00053 uint64 sint64_to_uint64(sint64 s);
00054 uint64 qword_add(uint64 a, uint64 b);
00055 uint64 qword_sub(uint64 a, uint64 b);
00056 uint64 qword_mul(uint64 a, uint64 b);
00057 
00058 int sint64_cmp(sint64 a, sint64 b);
00059 sint64 int_to_sint64(int i);
00060 sint64 uint64_to_sint64(uint64 u);
00061 sint64 sint64_add(sint64 a, sint64 b);
00062 sint64 sint64_sub(sint64 a, sint64 b);
00063 sint64 sint64_mul(sint64 a, sint64 b);
00064 #ifdef __cplusplus
00065 }
00066 #endif
00067 
00068 #ifdef __cplusplus
00069 sint64 to_sint64(int i);
00070 uint64 to_uint64(UINT i);
00071 sint64 to_sint64(const uint64 &u);
00072 uint64 to_uint64(const sint64 &s);
00073 #define to_qword to_uint64
00074 
00075 uint64 operator +(const uint64 &a, const uint64 &b);
00076 uint64& operator ++(uint64 &a);
00077 uint64 operator ++(const uint64 &a, int b);
00078 uint64& operator += (uint64 &a, const uint64 &b);
00079 uint64 operator - (const uint64 &a, const uint64 &b);
00080 uint64& operator --(uint64 &a);
00081 uint64 operator --(const uint64 &a, int b);
00082 uint64& operator -= (uint64 &a, const uint64 &b);
00083 uint64 operator *(const uint64 &a, const uint64 &b);
00084 uint64& operator *= (uint64 &a, const uint64 &b);
00085 uint64 operator /(const uint64 &a, const uint64 &b);
00086 uint64& operator /= (uint64 &a, const uint64 &b);
00087 uint64 operator %(const uint64 &a, const uint64 &b);
00088 uint64& operator %= (uint64 &a, const uint64 &b);
00089 uint64 operator &(const uint64 &a, const uint64 &b);
00090 uint64& operator &= (uint64 &a, const uint64 &b);
00091 uint64 operator |(const uint64 &a, const uint64 &b);
00092 uint64& operator |= (uint64 &a, const uint64 &b);
00093 uint64 operator ^(const uint64 &a, const uint64 &b);
00094 uint64& operator ^= (uint64 &a, const uint64 &b);
00095 uint64 operator >>(const uint64 &a, byte b);
00096 uint64& operator >>=(uint64 &a, byte b);
00097 uint64 operator <<(const uint64 &a, byte b);
00098 uint64& operator <<=(uint64 &a, byte b);
00099 uint64 operator ~(const uint64 &a);
00100 uint64 operator -(const uint64 &a);
00101 bool operator !(const uint64 &a);
00102 bool operator < (const uint64 &a, const uint64 &b);
00103 bool operator <= (const uint64 &a, const uint64 &b);
00104 bool operator > (const uint64 &a, const uint64 &b);
00105 bool operator >= (const uint64 &a, const uint64 &b);
00106 bool operator == (const uint64 &a, const uint64 &b);
00107 bool operator != (const uint64 &a, const uint64 &b);
00108 
00109 sint64 operator +(const sint64 &a, const sint64 &b);
00110 sint64& operator ++(sint64 &a);
00111 sint64 operator ++(const sint64 &a, int b);
00112 sint64& operator += (sint64 &a, const sint64 &b);
00113 sint64 operator - (const sint64 &a, const sint64 &b);
00114 sint64& operator --(sint64 &a);
00115 sint64 operator --(const sint64 &a, int b);
00116 sint64& operator -= (sint64 &a, const sint64 &b);
00117 sint64 operator *(const sint64 &a, const sint64 &b);
00118 sint64& operator *= (sint64 &a, const sint64 &b);
00119 sint64 operator /(const sint64 &a, const sint64 &b);
00120 sint64& operator /= (sint64 &a, const sint64 &b);
00121 sint64 operator %(const sint64 &a, const sint64 &b);
00122 sint64& operator %= (sint64 &a, const sint64 &b);
00123 sint64 operator &(const sint64 &a, const sint64 &b);
00124 sint64& operator &= (sint64 &a, const sint64 &b);
00125 sint64 operator |(const sint64 &a, const sint64 &b);
00126 sint64& operator |= (sint64 &a, const sint64 &b);
00127 sint64 operator ^(const sint64 &a, const sint64 &b);
00128 sint64& operator ^= (sint64 &a, const sint64 &b);
00129 sint64 operator >>(const sint64 &a, byte b);
00130 sint64& operator >>=(sint64 &a, byte b);
00131 sint64 operator <<(const sint64 &a, byte b);
00132 sint64& operator <<=(sint64 &a, byte b);
00133 sint64 operator ~(const sint64 &a);
00134 sint64 operator -(const sint64 &a);
00135 bool operator !(const sint64 &a);
00136 bool operator < (const sint64 &a, const sint64 &b);
00137 bool operator <= (const sint64 &a, const sint64 &b);
00138 bool operator > (const sint64 &a, const sint64 &b);
00139 bool operator >= (const sint64 &a, const sint64 &b);
00140 bool operator == (const sint64 &a, const sint64 &b);
00141 bool operator != (const sint64 &a, const sint64 &b);
00142 
00143 #endif /* __cplusplus */
00144 
00145 #endif /* __QWORD_H__ */
00146 

Generated on Fri May 7 21:15:43 2004 by doxygen 1.3.5