ccmem.cc
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00041 #include "fastlib/base/ccmem.h"
00042
00043 const int32 mem__private::BIG_BAD_BUF[] = {
00044 BIG_BAD_NUMBER,
00045 BIG_BAD_NUMBER,
00046 BIG_BAD_NUMBER,
00047 BIG_BAD_NUMBER,
00048 BIG_BAD_NUMBER,
00049 BIG_BAD_NUMBER,
00050 BIG_BAD_NUMBER,
00051 BIG_BAD_NUMBER,
00052 BIG_BAD_NUMBER,
00053 BIG_BAD_NUMBER,
00054 BIG_BAD_NUMBER,
00055 BIG_BAD_NUMBER,
00056 BIG_BAD_NUMBER,
00057 BIG_BAD_NUMBER,
00058 BIG_BAD_NUMBER,
00059 BIG_BAD_NUMBER
00060 };
00061
00062 void mem__private::PoisonBytes(char *array_cp, size_t bytes) {
00063 while (bytes >= BIG_BAD_BUF_SIZE) {
00064 ::memcpy(array_cp, BIG_BAD_BUF, BIG_BAD_BUF_SIZE);
00065
00066 bytes -= BIG_BAD_BUF_SIZE;
00067 array_cp += BIG_BAD_BUF_SIZE;
00068 }
00069 if (bytes > 0) {
00070 ::memcpy(array_cp, BIG_BAD_BUF, bytes);
00071 }
00072 }
00073
00074 void mem__private::SwapBytes(char *a_cp, char *b_cp, size_t bytes) {
00075 char buf[SWAP_BUF_SIZE];
00076
00077 while (bytes >= SWAP_BUF_SIZE) {
00078 ::memcpy(buf, a_cp, SWAP_BUF_SIZE);
00079 ::memcpy(a_cp, b_cp, SWAP_BUF_SIZE);
00080 ::memcpy(b_cp, buf, SWAP_BUF_SIZE);
00081
00082 bytes -= SWAP_BUF_SIZE;
00083 a_cp += SWAP_BUF_SIZE;
00084 b_cp += SWAP_BUF_SIZE;
00085 }
00086 if (bytes > 0) {
00087 ::memcpy(buf, a_cp, bytes);
00088 ::memcpy(a_cp, b_cp, bytes);
00089 ::memcpy(b_cp, buf, bytes);
00090 }
00091 }