1//------------------------------------------------------------------------------ 2// MessageCStringItemTest.h 3// 4//------------------------------------------------------------------------------ 5 6#ifndef MESSAGECSTRINGITEMTEST_H 7#define MESSAGECSTRINGITEMTEST_H 8 9// Standard Includes ----------------------------------------------------------- 10 11// System Includes ------------------------------------------------------------- 12#include <Debug.h> 13 14// Project Includes ------------------------------------------------------------ 15 16// Local Includes -------------------------------------------------------------- 17#include "MessageItemTest.h" 18 19// Local Defines --------------------------------------------------------------- 20 21// Globals --------------------------------------------------------------------- 22 23typedef TMessageItemFuncPolicy 24< 25 const char*, 26 &BMessage::AddString, 27 &BMessage::FindString, 28 &BMessage::FindString, 29 &BMessage::FindString, 30 &BMessage::HasString, 31 &BMessage::ReplaceString 32> 33TCStringFuncPolicy; 34 35struct TCStringInitPolicy : public ArrayTypeBase<const char*> 36{ 37 typedef const char* TypePtr; 38 39 inline static const char* Zero() { return sStr1; } 40 inline static const char* Test1() { return sStr2; } 41 inline static const char* Test2() { return sStr3; } 42 inline static size_t SizeOf(const char*& data) { return strlen(data) + 1; } 43 inline static ArrayType Array() 44 { 45 ArrayType array; 46 array.push_back(Zero()); 47 array.push_back(Test1()); 48 array.push_back(Test2()); 49 return array; 50 } 51 52 private: 53 static const char* sStr1; 54 static const char* sStr2; 55 static const char* sStr3; 56}; 57const char* TCStringInitPolicy::sStr1 = ""; 58const char* TCStringInitPolicy::sStr2 = "cstring one"; 59const char* TCStringInitPolicy::sStr3 = "Bibbity-bobbity-boo!"; 60//------------------------------------------------------------------------------ 61struct TCStringAssertPolicy 62{ 63 inline static const char* Zero() { return ""; } 64 inline static const char* Invalid() { return ""; } 65 static bool Size(size_t size, const char* data) 66 ;//{ return size == msg.FlattenedSize(); } 67}; 68bool TCStringAssertPolicy::Size(size_t size, const char* data) 69{ 70 return size == strlen(data) + 1; 71} 72//------------------------------------------------------------------------------ 73struct TCStringComparePolicy 74{ 75 static bool Compare(const char* lhs, const char* rhs); 76}; 77bool TCStringCtypedef const char* TypePtr; 78 omparePolicy::Compare(const char* lhs, const char* rhs) 79{ 80 if (!lhs) 81 return rhs; 82 if (!rhs) 83 return lhs; 84 return strcmp(lhs, rhs) == 0; 85} 86//------------------------------------------------------------------------------ 87template<> 88struct TypePolicy<const char*> 89{ 90 typedef const char* TypePtr; 91 enum { FixedSize = false }; 92 inline const char* Dereference(TypePtr p) { return p; } 93 inline const char* AddressOf(const char*& t) { return t; } 94}; 95//------------------------------------------------------------------------------ 96typedef TMessageItemTest 97< 98 const char*, 99 B_STRING_TYPE, 100 TCStringFuncPolicy, 101 TCStringInitPolicy, 102 TCStringAssertPolicy, 103 TCStringComparePolicy 104> 105TMessageCStringItemTest; 106 107 108#endif // MESSAGECSTRINGITEMTEST_H 109 110/* 111 * $Log $ 112 * 113 * $Id $ 114 * 115 */ 116 117