31 #ifndef _UCOMMON_PROTOCOLS_H_ 32 #define _UCOMMON_PROTOCOLS_H_ 34 #ifndef _UCOMMON_CPR_H_ 43 class __EXPORT MemoryProtocol
46 friend class MemoryRedirect;
55 virtual void *_alloc(
size_t size) = 0;
58 virtual ~MemoryProtocol();
65 inline void *alloc(
size_t size) {
76 void *zalloc(
size_t size);
84 char *
dup(
const char *
string);
92 void *
dup(
void *memory,
size_t size);
100 class __EXPORT MemoryRedirect :
public __PROTOCOL MemoryProtocol
103 MemoryProtocol *target;
106 MemoryRedirect(MemoryProtocol *protocol);
108 virtual void *_alloc(
size_t size) __OVERRIDE;
118 class __EXPORT LockingProtocol
121 virtual void _lock(
void);
122 virtual void _unlock(
void);
125 virtual ~LockingProtocol();
134 class __EXPORT PrintProtocol
137 virtual ~PrintProtocol();
142 virtual const char *_print(
void)
const = 0;
153 class __EXPORT InputProtocol
156 virtual ~InputProtocol();
163 virtual int _input(
int code) = 0;
173 class __EXPORT ObjectProtocol
179 virtual void retain(
void) = 0;
184 virtual void release(
void) = 0;
189 virtual ~ObjectProtocol();
194 ObjectProtocol *
copy(
void);
199 inline void operator++(
void) {
206 inline void operator--(
void) {
214 class __EXPORT KeyProtocol
217 virtual int keytype(
void)
const = 0;
222 virtual size_t keysize(
void)
const = 0;
227 virtual const void *keydata(
void)
const = 0;
229 virtual bool equal(
const KeyProtocol& compare)
const;
231 inline bool operator!=(
const KeyProtocol& compare)
const {
232 return !equal(compare);
235 virtual ~KeyProtocol();
T * dup(const T &object)
Convenience function to duplicate object pointer to heap.
T copy(const T &src)
Convenience function to copy objects.
Common namespace for all ucommon objects.