Hauptseite | Liste aller Namensbereiche | Klassenhierarchie | Auflistung der Klassen | Auflistung der Dateien | Elemente eines Namensbereiches | Klassen-Elemente | Datei-Elemente

memory.h

gehe zur Dokumentation dieser Datei
00001 00002 00003 00004 00005 00006 00007 00008 00009 00010 00011 #ifndef _ZFXMATH_INCLUDE_MEMORY_H_ 00012 #define _ZFXMATH_INCLUDE_MEMORY_H_ 00013 00014 #include "types.h" 00015 00016 #undef ZeroMemory 00017 #undef FillMemory 00018 #undef CopyMemory 00019 #undef MoveMemory 00020 00021 namespace ZFXMath 00022 { 00036 inline void FillMemory(void *dest, unsigned __int32 count, unsigned __int8 character) 00037 { 00038 unsigned __int32 size32 = count >> 2; 00039 unsigned __int32 fill = (character << 24 | character << 16 | character << 8 | character); 00040 unsigned __int32 *dest32 = (unsigned __int32*)dest; 00041 00042 switch ((count - (size32 << 2))) 00043 { 00044 case 3: ((unsigned __int8*)dest)[count - 3] = character; 00045 case 2: ((unsigned __int8*)dest)[count - 2] = character; 00046 case 1: ((unsigned __int8*)dest)[count - 1] = character; 00047 } 00048 00049 while (size32-- > 0) 00050 *(dest32++) = fill; 00051 } 00052 00064 inline void ZeroMemory(void *dest, unsigned __int32 count) 00065 { 00066 FillMemory(dest,count,0); 00067 } 00068 00082 inline void CopyMemory(void *dest, const void *src, unsigned __int32 count) 00083 { 00084 unsigned __int32 size32 = count >> 2; 00085 unsigned __int32 *dest32 = (unsigned __int32*)dest; 00086 unsigned __int32 *src32 = (unsigned __int32*)src; 00087 00088 switch ((count - (size32 << 2))) 00089 { 00090 case 3: ((unsigned __int8*)dest)[count - 3] = ((unsigned __int8*)src)[count - 3]; 00091 case 2: ((unsigned __int8*)dest)[count - 2] = ((unsigned __int8*)src)[count - 2]; 00092 case 1: ((unsigned __int8*)dest)[count - 1] = ((unsigned __int8*)src)[count - 1]; 00093 } 00094 00095 while (size32-- > 0) 00096 *(dest32++) = *(src32++); 00097 } 00098 00112 inline void MoveMemory(void *dest, const void *src, unsigned __int32 count) 00113 { 00114 unsigned __int32 size32 = count >> 2; 00115 unsigned __int32 *dest32 = (unsigned __int32*)dest; 00116 unsigned __int32 *src32 = (unsigned __int32*)src; 00117 00118 if (dest > src) 00119 { 00120 switch ((count - (size32 << 2))) 00121 { 00122 case 3: 00123 ((unsigned __int8*)dest)[count - 1] = ((unsigned __int8*)src)[count - 1]; 00124 ((unsigned __int8*)dest)[count - 2] = ((unsigned __int8*)src)[count - 2]; 00125 ((unsigned __int8*)dest)[count - 3] = ((unsigned __int8*)src)[count - 3]; 00126 break; 00127 00128 case 2: 00129 ((unsigned __int8*)dest)[count - 1] = ((unsigned __int8*)src)[count - 1]; 00130 ((unsigned __int8*)dest)[count - 2] = ((unsigned __int8*)src)[count - 2]; 00131 break; 00132 00133 case 1: 00134 ((unsigned __int8*)dest)[count - 1] = ((unsigned __int8*)src)[count - 1]; 00135 break; 00136 } 00137 00138 while (size32-- > 0) 00139 dest32[size32] = src32[size32]; 00140 } 00141 else 00142 { 00143 for(int i=0; i<size32; ++i) 00144 *(dest32++) = *(src32++); 00145 00146 switch ((count - (size32 << 2))) 00147 { 00148 case 3: *(dest32++) = *(src32++); 00149 case 2: *(dest32++) = *(src32++); 00150 case 1: *(dest32++) = *(src32++); 00151 } 00152 } 00153 } 00154 } // Namespace 00155 00156 #endif //_ZFXMATH_INCLUDE_MEMORY_H_ 00157 00158

Erzeugt am Thu Nov 25 04:02:55 2004 für ZFX-Math Library von doxygen 1.3.8