00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef __QWORD_H__
00023 #define __QWORD_H__
00024
00025 #include "global.h"
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
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
00144
00145 #endif
00146