1//------------------------------------------------------------------------------ 2// MessagePointerItemTest.h 3// 4//------------------------------------------------------------------------------ 5 6#ifndef MESSAGEPOINTERITEMTEST_H 7#define MESSAGEPOINTERITEMTEST_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 22struct TPointerFuncPolicy 23{ 24 static status_t Add(BMessage& msg, const char* name, const void* val) 25 { return msg.AddPointer(name, val); } 26 static status_t AddData(BMessage& msg, const char* name, type_code type, 27 const void* data, ssize_t size, bool) 28 { return msg.AddData(name, type, data, size); } 29 static status_t Find(BMessage& msg, const char* name, int32 index, 30 const void** val) 31 { return msg.FindPointer(name, index, (void**)val); } 32 static status_t ShortFind(BMessage& msg, const char* name, const void** val) 33 { return msg.FindPointer(name, (void**)val); } 34 static const void* QuickFind(BMessage& msg, const char* name, int32 index) 35 { 36 const void* ptr; 37 msg.FindPointer(name, index, (void**)&ptr); 38 return ptr; 39 } 40 static bool Has(BMessage& msg, const char* name, int32 index) 41 { return msg.HasPointer(name, index); } 42 static status_t Replace(BMessage& msg, const char* name, int32 index, 43 const void* val) 44 { return msg.ReplacePointer(name, index, val); } 45 static status_t FindData(BMessage& msg, const char* name, type_code type, 46 int32 index, const void** data, ssize_t* size) 47 { return msg.FindData(name, type, index, data, size); } 48}; 49 50struct TPointerInitPolicy : public ArrayTypeBase<const void*> 51{ 52 inline static const void* Zero() { return NULL; } 53 inline static const void* Test1() { return (const void*)&Test1; } 54 inline static const void* Test2() { return (const void*)&Test2; } 55 inline static size_t SizeOf(const void*) { return sizeof (const void*); } 56 inline static ArrayType Array() 57 { 58 ArrayType array; 59 array.push_back(Zero()); 60 array.push_back(Test1()); 61 array.push_back(Test2()); 62 return array; 63 } 64}; 65 66struct TPointerAssertPolicy 67{ 68 inline static const void* Zero() { return NULL; } 69 inline static const void* Invalid() { return NULL; } 70 inline static bool Size(size_t size, const void* t) 71 { return size == sizeof (t); } 72}; 73 74typedef TMessageItemTest 75< 76 const void*, 77 B_POINTER_TYPE, 78 TPointerFuncPolicy, 79 TPointerInitPolicy, 80 TPointerAssertPolicy 81> 82TMessagePointerItemTest; 83 84#endif // MESSAGEPOINTERITEMTEST_H 85 86/* 87 * $Log $ 88 * 89 * $Id $ 90 * 91 */ 92 93