28 #ifndef D_MockNamedValue_h 29 #define D_MockNamedValue_h 35 class MockNamedValueComparator
38 MockNamedValueComparator() {}
39 virtual ~MockNamedValueComparator() {}
41 virtual bool isEqual(
const void* object1,
const void* object2)=0;
42 virtual SimpleString valueToString(
const void*
object)=0;
50 class MockNamedValueCopier
53 MockNamedValueCopier() {}
54 virtual ~MockNamedValueCopier() {}
56 virtual void copy(
void* out,
const void* in)=0;
60 class MockFunctionComparator :
public MockNamedValueComparator
63 typedef bool (*isEqualFunction)(
const void*,
const void*);
64 typedef SimpleString (*valueToStringFunction)(
const void*);
66 MockFunctionComparator(isEqualFunction equal, valueToStringFunction valToString)
67 : equal_(equal), valueToString_(valToString) {}
69 virtual bool isEqual(
const void* object1,
const void* object2) _override {
return equal_(object1, object2); }
70 virtual SimpleString valueToString(
const void*
object) _override {
return valueToString_(
object); }
72 isEqualFunction equal_;
73 valueToStringFunction valueToString_;
76 class MockFunctionCopier :
public MockNamedValueCopier
79 typedef void (*copyFunction)(
void*,
const void*);
81 MockFunctionCopier(copyFunction copier) : copier_(copier) {}
83 virtual void copy(
void* dst,
const void* src) _override { copier_(dst, src); }
96 class MockNamedValueComparatorsAndCopiersRepository;
100 MockNamedValue(
const SimpleString& name);
101 DEFAULT_COPY_CONSTRUCTOR(MockNamedValue)
102 virtual ~MockNamedValue();
104 virtual void setValue(
bool value);
105 virtual void setValue(
int value);
106 virtual void setValue(
unsigned int value);
107 virtual void setValue(
long int value);
108 virtual void setValue(
unsigned long int value);
109 virtual void setValue(
double value);
110 virtual void setValue(
void* value);
111 virtual void setValue(
const void* value);
112 virtual void setValue(
void (*value)());
113 virtual void setValue(
const char* value);
114 virtual void setMemoryBuffer(
const unsigned char* value,
size_t size);
115 virtual void setObjectPointer(
const SimpleString& type,
const void* objectPtr);
116 virtual void setSize(
size_t size);
118 virtual void setName(
const char* name);
120 virtual bool equals(
const MockNamedValue& p)
const;
121 virtual bool compatibleForCopying(
const MockNamedValue& p)
const;
123 virtual SimpleString toString()
const;
125 virtual SimpleString getName()
const;
126 virtual SimpleString getType()
const;
128 virtual bool getBoolValue()
const;
129 virtual int getIntValue()
const;
130 virtual unsigned int getUnsignedIntValue()
const;
131 virtual long int getLongIntValue()
const;
132 virtual unsigned long int getUnsignedLongIntValue()
const;
133 virtual double getDoubleValue()
const;
134 virtual const char* getStringValue()
const;
135 virtual void* getPointerValue()
const;
136 virtual const void* getConstPointerValue()
const;
137 virtual void (*getFunctionPointerValue()
const)();
138 virtual const unsigned char* getMemoryBuffer()
const;
139 virtual const void* getObjectPointer()
const;
140 virtual size_t getSize()
const;
142 virtual MockNamedValueComparator* getComparator()
const;
143 virtual MockNamedValueCopier* getCopier()
const;
145 static void setDefaultComparatorsAndCopiersRepository(MockNamedValueComparatorsAndCopiersRepository* repository);
152 unsigned int unsignedIntValue_;
153 long int longIntValue_;
154 unsigned long int unsignedLongIntValue_;
156 const char* stringValue_;
158 const void* constPointerValue_;
159 void (*functionPointerValue_)();
160 const unsigned char* memoryBufferValue_;
161 const void* objectPointerValue_;
162 const void* outputPointerValue_;
165 MockNamedValueComparator* comparator_;
166 MockNamedValueCopier* copier_;
167 static MockNamedValueComparatorsAndCopiersRepository* defaultRepository_;
170 class MockNamedValueListNode
173 MockNamedValueListNode(MockNamedValue* newValue);
175 SimpleString getName()
const;
176 SimpleString getType()
const;
178 MockNamedValueListNode* next();
179 MockNamedValue* item();
182 void setNext(MockNamedValueListNode* node);
184 MockNamedValue* data_;
185 MockNamedValueListNode* next_;
188 class MockNamedValueList
191 MockNamedValueList();
193 MockNamedValueListNode* begin();
195 void add(MockNamedValue* newValue);
198 MockNamedValue* getValueByName(
const SimpleString& name);
201 MockNamedValueListNode* head_;
209 struct MockNamedValueComparatorsAndCopiersRepositoryNode;
210 class MockNamedValueComparatorsAndCopiersRepository
212 MockNamedValueComparatorsAndCopiersRepositoryNode* head_;
214 MockNamedValueComparatorsAndCopiersRepository();
215 virtual ~MockNamedValueComparatorsAndCopiersRepository();
217 virtual void installComparator(
const SimpleString& name, MockNamedValueComparator& comparator);
218 virtual void installCopier(
const SimpleString& name, MockNamedValueCopier& copier);
219 virtual void installComparatorsAndCopiers(
const MockNamedValueComparatorsAndCopiersRepository& repository);
220 virtual MockNamedValueComparator* getComparatorForType(
const SimpleString& name);
221 virtual MockNamedValueCopier* getCopierForType(
const SimpleString& name);