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 24struct 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}; 42BString TBStringFuncPolicy::sStr; 43//------------------------------------------------------------------------------ 44status_t TBStringFuncPolicy::Add(BMessage& msg, const char* name, 45 BString& data) 46{ 47 return msg.AddString(name, data); 48} 49//------------------------------------------------------------------------------ 50status_t TBStringFuncPolicy::Find(BMessage& msg, const char* name, 51 int32 index, BString* data) 52{ 53 return msg.FindString(name, index, data); 54} 55//------------------------------------------------------------------------------ 56inline status_t TBStringFuncPolicy::ShortFind(BMessage& msg, const char* name, 57 BString* data) 58{ 59 return msg.FindString(name, data); 60} 61//------------------------------------------------------------------------------ 62BString 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//------------------------------------------------------------------------------ 70bool TBStringFuncPolicy::Has(BMessage& msg, const char* name, 71 int32 index) 72{ 73 return msg.HasString(name, index); 74} 75//------------------------------------------------------------------------------ 76status_t TBStringFuncPolicy::Replace(BMessage& msg, const char* name, 77 int32 index, BString& data) 78{ 79 return msg.ReplaceString(name, index, data); 80} 81//------------------------------------------------------------------------------ 82status_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//------------------------------------------------------------------------------ 90status_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 108struct 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//------------------------------------------------------------------------------ 124struct 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}; 131bool TBStringAssertPolicy::Size(size_t size, BString& data) 132{ 133 return size == (size_t)data.Length() + 1; 134} 135//------------------------------------------------------------------------------ 136typedef TMessageItemTest 137< 138 BString, 139 B_STRING_TYPE, 140 TBStringFuncPolicy, 141 TBStringInitPolicy, 142 TBStringAssertPolicy 143> 144TMessageBStringItemTest; 145 146#endif // MESSAGESTRINGITEMTEST_H 147 148/* 149 * $Log $ 150 * 151 * $Id $ 152 * 153 */ 154 155