ACE_Allocator
to
use the Malloc
class below.
#include <ace/Malloc_T.h> template<class MALLOC> class ACE_Allocator_Adapter : public ACE_Allocator {
public:
typedef MALLOC ALLOCATOR;
ACE_Allocator_Adapter (const char *pool_name = ACE_DEFAULT_MUTEX);
ACE_Allocator_Adapter ( const char *pool_name, const char *lock_name );
virtual void *malloc (size_t nbytes);
virtual void *calloc (size_t nbytes, char initial_value = ' ');
virtual void free (void *ptr);
virtual int remove (void);
int bind (const char *name, void *pointer, int duplicates = 0);
int trybind (const char *name, void *&pointer);
int find (const char *name, void *&pointer);
int find (const char *name);
int unbind (const char *name);
int unbind (const char *name, void *&pointer);
int sync (ssize_t len = -1, int flags = MS_SYNC);
int sync (void *addr, size_t len, int flags = MS_SYNC);
int protect (ssize_t len = -1, int prot = PROT_RDWR);
int protect (void *addr, size_t len, int prot = PROT_RDWR);
ALLOCATOR &allocator (void);
virtual void dump (void) const;
private:
ALLOCATOR allocator_;
};
ACE_Allocator_Adapter (const char *pool_name = ACE_DEFAULT_MUTEX);
ACE_Allocator_Adapter (const char *pool_name, const char *lock_name);
virtual void *malloc (size_t nbytes);
nbytes
, but don't give them any initial value.
virtual void *calloc (size_t nbytes, char initial_value = ' ');
nbytes
, giving them all an initial_value
.
virtual void free (void *ptr);
ptr
(must have been allocated by ACE_Allocator::malloc
).
virtual int remove (void);
int bind (const char *name, void *pointer, int duplicates = 0);
name
with pointer
. If duplicates
== 0 then do
not allow duplicate name
/pointer
associations, else if
duplicates
!= 0 then allow duplicate name
/pointer
assocations. Returns 0 if successfully binds (1) a previously
unbound name
or (2) duplicates
!= 0, returns 1 if trying to
bind a previously bound name
and duplicates
== 0, else
returns -1 if a resource failure occurs.
int trybind (const char *name, void *&pointer);
name
with pointer
. Does not allow duplicate
name
/pointer
associations. Returns 0 if successfully binds
(1) a previously unbound name
, 1 if trying to bind a previously
bound name
, or returns -1 if a resource failure occurs. When
this call returns pointer
's value will always reference the
void * that name
is associated with. Thus, if the caller needs
to use pointer
(e.g., to free it) a copy must be maintained by
the caller.
int find (const char *name, void *&pointer);
name
and pass out parameter via pointer. If found,
return 0, Returns -1 if failure occurs.
int find (const char *name);
int unbind (const char *name);
int unbind (const char *name, void *&pointer);
int sync (ssize_t len = -1, int flags = MS_SYNC);
len
bytes of the memory region to the backing store
starting at this-
base_addr_. If len
== -1 then sync the
whole region.
int sync (void *addr, size_t len, int flags = MS_SYNC);
len
bytes of the memory region to the backing store
starting at addr_
.
int protect (ssize_t len = -1, int prot = PROT_RDWR);
prot
starting at this-
base_addr_ up to len
bytes. If len
== -1
then change protection of all pages in the mapped region.
int protect (void *addr, size_t len, int prot = PROT_RDWR);
prot
starting at addr
up to len
bytes.
ALLOCATOR &allocator (void);
virtual void dump (void) const;