31#ifndef _UCOMMON_PROTOCOLS_H_
32#define _UCOMMON_PROTOCOLS_H_
34#ifndef _UCOMMON_CPR_H_
43class __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);
100class __EXPORT MemoryRedirect :
public __PROTOCOL MemoryProtocol
103 MemoryProtocol *target;
106 MemoryRedirect(MemoryProtocol *protocol);
108 virtual void *_alloc(
size_t size) __OVERRIDE;
118class __EXPORT LockingProtocol
121 virtual void _lock(
void);
122 virtual void _unlock(
void);
125 virtual ~LockingProtocol();
134class __EXPORT PrintProtocol
137 virtual ~PrintProtocol();
142 virtual const char *_print(
void)
const = 0;
153class __EXPORT InputProtocol
156 virtual ~InputProtocol();
163 virtual int _input(
int code) = 0;
173class __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) {
214class __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();
Common namespace for all ucommon objects.
T * dup(const T &object)
Convenience function to duplicate object pointer to heap.
T copy(const T &src)
Convenience function to copy objects.