1 //------------------------------------------------------------------------------ 2 // MessageStringItemTest.h 3 // 4 //------------------------------------------------------------------------------ 5 6 #ifndef MESSAGESTRINGITEMTEST_H 7 #define MESSAGESTRINGITEMTEST_H 8 9 // Standard Includes ----------------------------------------------------------- 10 11 // System Includes ------------------------------------------------------------- 12 #include <Debug.h> 13 #include <String.h> 14 15 // Project Includes ------------------------------------------------------------ 16 17 // Local Includes -------------------------------------------------------------- 18 #include "MessageItemTest.h" 19 20 // Local Defines --------------------------------------------------------------- 21 22 // Globals --------------------------------------------------------------------- 23 24 struct TBStringFuncPolicy 25 { 26 static status_t Add(BMessage& msg, const char* name, BString& data); 27 static status_t Find(BMessage& msg, const char* name, int32 index, 28 BString* data); 29 static status_t ShortFind(BMessage& msg, const char* name, BString* data); 30 static BString QuickFind(BMessage& msg, const char* name, int32 index); 31 static bool Has(BMessage& msg, const char* name, int32 index); 32 static status_t Replace(BMessage& msg, const char* name, int32 index, 33 BString& data); 34 static status_t AddData(BMessage& msg, const char* name, type_code type, 35 const BString* data, ssize_t size, bool); 36 static status_t FindData(BMessage& msg, const char* name, type_code type, 37 int32 index, const void** data, ssize_t* size); 38 39 private: 40 static BString sStr; 41 }; 42 BString TBStringFuncPolicy::sStr; 43 //------------------------------------------------------------------------------ 44 status_t TBStringFuncPolicy::Add(BMessage& msg, const char* name, 45 BString& data) 46 { 47 return msg.AddString(name, data); 48 } 49 //------------------------------------------------------------------------------ 50 status_t TBStringFuncPolicy::Find(BMessage& msg, const char* name, 51 int32 index, BString* data) 52 { 53 return msg.FindString(name, index, data); 54 } 55 //------------------------------------------------------------------------------ 56 inline status_t TBStringFuncPolicy::ShortFind(BMessage& msg, const char* name, 57 BString* data) 58 { 59 return msg.FindString(name, data); 60 } 61 //------------------------------------------------------------------------------ 62 BString TBStringFuncPolicy::QuickFind(BMessage& msg, const char* name, 63 int32 index) 64 { 65 BString data; 66 msg.FindString(name, index, &data); 67 return data; 68 } 69 //------------------------------------------------------------------------------ 70 bool TBStringFuncPolicy::Has(BMessage& msg, const char* name, 71 int32 index) 72 { 73 return msg.HasString(name, index); 74 } 75 //------------------------------------------------------------------------------ 76 status_t TBStringFuncPolicy::Replace(BMessage& msg, const char* name, 77 int32 index, BString& data) 78 { 79 return msg.ReplaceString(name, index, data); 80 } 81 //------------------------------------------------------------------------------ 82 status_t TBStringFuncPolicy::AddData(BMessage& msg, const char* name, 83 type_code type, const BString* data, 84 ssize_t size, bool) 85 { 86 return msg.AddData(name, type, (const void*)data->String(), size, 87 false); 88 } 89 //------------------------------------------------------------------------------ 90 status_t TBStringFuncPolicy::FindData(BMessage& msg, const char* name, 91 type_code type, int32 index, 92 const void** data, ssize_t* size) 93 { 94 *data = NULL; 95 char* ptr; 96 status_t err = msg.FindData(name, type, index, (const void**)&ptr, size); 97 if (!err) 98 { 99 sStr = ptr; 100 *(BString**)data = &sStr; 101 } 102 103 return err; 104 } 105 //------------------------------------------------------------------------------ 106 107 108 struct TBStringInitPolicy : public ArrayTypeBase<BString> 109 { 110 inline static BString Zero() { return BString(); } 111 inline static BString Test1() { return "Test1"; } 112 inline static BString Test2() { return "Supercalafragilistricexpialadocious"; } 113 inline static size_t SizeOf(const BString& s) { return s.Length() + 1; } 114 inline static ArrayType Array() 115 { 116 ArrayType array; 117 array.push_back(Zero()); 118 array.push_back(Test1()); 119 array.push_back(Test2()); 120 return array; 121 } 122 }; 123 //------------------------------------------------------------------------------ 124 struct TBStringAssertPolicy 125 { 126 inline static BString Zero() { return BString(); } 127 inline static BString Invalid() { return BString(); } 128 static bool Size(size_t size, BString& msg) 129 ;//{ return size == msg.FlattenedSize(); } 130 }; 131 bool TBStringAssertPolicy::Size(size_t size, BString& data) 132 { 133 return size == (size_t)data.Length() + 1; 134 } 135 //------------------------------------------------------------------------------ 136 typedef TMessageItemTest 137 < 138 BString, 139 B_STRING_TYPE, 140 TBStringFuncPolicy, 141 TBStringInitPolicy, 142 TBStringAssertPolicy 143 > 144 TMessageBStringItemTest; 145 146 #endif // MESSAGESTRINGITEMTEST_H 147 148 /* 149 * $Log $ 150 * 151 * $Id $ 152 * 153 */ 154 155