Abstraction (which will save us merge hell with 1.2).
[awesomized/libmemcached] / libmemcached / allocators.cc
index 98c87591a53615e496babd67c4b605dd4e4449e6..f1caf71ec373eab433bd3832d5d010a3218f2b45 100644 (file)
@@ -41,26 +41,26 @@ void _libmemcached_free(const memcached_st*, void *mem, void*)
 {
   if (mem)
   {
-    free(mem);
+    std::free(mem);
   }
 }
 
 void *_libmemcached_malloc(const memcached_st *, size_t size, void *)
 {
-  return malloc(size);
+  return std::malloc(size);
 }
 
 void *_libmemcached_realloc(const memcached_st*, void *mem, size_t size, void *)
 {
-  return realloc(mem, size);
+  return std::realloc(mem, size);
 }
 
 void *_libmemcached_calloc(const memcached_st *self, size_t nelem, size_t size, void *context)
 {
   if (self->allocators.malloc != _libmemcached_malloc)
   {
-     void *ret = _libmemcached_malloc(self, nelem * size, context);
-     if (ret == NULL)
+     void *ret= _libmemcached_malloc(self, nelem * size, context);
+     if (ret)
      {
        memset(ret, 0, nelem * size);
      }
@@ -68,7 +68,7 @@ void *_libmemcached_calloc(const memcached_st *self, size_t nelem, size_t size,
      return ret;
   }
 
-  return calloc(nelem, size);
+  return std::calloc(nelem, size);
 }
 
 struct memcached_allocator_t memcached_allocators_return_default(void)
@@ -77,13 +77,14 @@ struct memcached_allocator_t memcached_allocators_return_default(void)
   return global_default_allocator;
 }
 
-memcached_return_t memcached_set_memory_allocators(memcached_st *self,
+memcached_return_t memcached_set_memory_allocators(memcached_st *shell,
                                                    memcached_malloc_fn mem_malloc,
                                                    memcached_free_fn mem_free,
                                                    memcached_realloc_fn mem_realloc,
                                                    memcached_calloc_fn mem_calloc,
                                                    void *context)
 {
+  Memcached* self= memcached2Memcached(shell);
   if (self == NULL)
   {
     return MEMCACHED_INVALID_ARGUMENTS;
@@ -110,24 +111,44 @@ memcached_return_t memcached_set_memory_allocators(memcached_st *self,
   return MEMCACHED_SUCCESS;
 }
 
-void *memcached_get_memory_allocators_context(const memcached_st *self)
+void *memcached_get_memory_allocators_context(const memcached_st *shell)
 {
-  return self->allocators.context;
+  const Memcached* self= memcached2Memcached(shell);
+  if (self)
+  {
+    return self->allocators.context;
+  }
+
+  return NULL;
 }
 
-void memcached_get_memory_allocators(const memcached_st *self,
+void memcached_get_memory_allocators(const memcached_st *shell,
                                      memcached_malloc_fn *mem_malloc,
                                      memcached_free_fn *mem_free,
                                      memcached_realloc_fn *mem_realloc,
                                      memcached_calloc_fn *mem_calloc)
 {
-  if (self == NULL)
+  const Memcached* self= memcached2Memcached(shell);
+  if (self)
   {
-    return;
-  }
+    if (mem_malloc)
+    {
+      *mem_malloc= self->allocators.malloc;
+    }
+
+    if (mem_free)
+    {
+      *mem_free= self->allocators.free;
+    }
 
-  *mem_malloc= self->allocators.malloc;
-  *mem_free= self->allocators.free;
-  *mem_realloc= self->allocators.realloc;
-  *mem_calloc= self->allocators.calloc;
+    if (mem_realloc)
+    {
+      *mem_realloc= self->allocators.realloc;
+    }
+
+    if (mem_calloc)
+    {
+      *mem_calloc= self->allocators.calloc;
+    }
+  }
 }