1//------------------------------------------------------------------------------ 2// MessageBoolItemTest.h 3// 4//------------------------------------------------------------------------------ 5 6#ifndef MESSAGEBOOLITEMTEST_H 7#define MESSAGEBOOLITEMTEST_H 8 9// Standard Includes ----------------------------------------------------------- 10 11// System Includes ------------------------------------------------------------- 12 13// Project Includes ------------------------------------------------------------ 14 15// Local Includes -------------------------------------------------------------- 16#include "MessageItemTest.h" 17 18// Local Defines --------------------------------------------------------------- 19 20// Globals --------------------------------------------------------------------- 21 22typedef TMessageItemFuncPolicy 23< 24 bool, 25 &BMessage::AddBool, 26 &BMessage::FindBool, 27 &BMessage::FindBool, 28 &BMessage::FindBool, 29 &BMessage::HasBool, 30 &BMessage::ReplaceBool 31> 32TBoolFuncPolicy; 33 34template<> 35struct ArrayTypeBase<bool> 36{ 37 class ArrayType 38 { 39 public: 40 ArrayType() : array(NULL), size(0) {;} 41 ArrayType(const ArrayType& rhs) : array(NULL), size(0) 42 { *this = rhs; } 43 ArrayType(bool* data, uint32 len) : array(NULL), size(0) 44 { Assign(data, len); } 45 ~ArrayType() { if (array) delete[] array; } 46 47 ArrayType& operator=(const ArrayType& rhs) 48 { 49 if (this != &rhs) 50 Assign(rhs.array, rhs.size); 51 return *this; 52 }; 53 54 uint32 Size() { return size; } 55 bool& operator[](int index) 56 { 57 // We're just gonna let a segfault happen 58 return array[index]; 59 } 60 61 private: 62 void Assign(bool* data, uint32 len) 63 { 64 size = len; 65 66 if (array) 67 delete[] array; 68 array = new bool[Size()]; 69 memcpy(array, data, Size()); 70 } 71 bool* array; 72 uint32 size; 73 }; 74 75 typedef uint32 SizeType; 76 static SizeType Size(ArrayType& array) { return array.Size(); } 77}; 78 79struct TBoolInitPolicy : public ArrayTypeBase<bool> 80{ 81 inline static bool Zero() { return false; } 82 inline static bool Test1() { return true; } 83 inline static bool Test2() { return false; } 84 inline static size_t SizeOf(const bool&) { return sizeof (bool); } 85 inline static ArrayType Array() 86 { 87 static bool array[] = { true, true, true }; 88 return ArrayType(array, 3); 89 } 90}; 91 92//struct TBoolAssertPolicy 93//{ 94// inline static bool Zero() { return false; } 95// inline static bool Invalid() { return false;} 96//}; 97typedef TMessageItemAssertPolicy 98< 99 bool//, 100// false, 101// false 102> 103TBoolAssertPolicy; 104 105typedef TMessageItemTest 106< 107 bool, 108 B_BOOL_TYPE, 109 TBoolFuncPolicy, 110 TBoolInitPolicy, 111 TBoolAssertPolicy 112> 113TMessageBoolItemTest; 114 115#endif // MESSAGEBOOLITEMTEST_H 116 117/* 118 * $Log $ 119 * 120 * $Id $ 121 * 122 */ 123 124