#ifndef _DEMEMORY_H #define _DEMEMORY_H /*------------------------------------------------------------------------- * drawElements Base Portability Library * ------------------------------------- * * Copyright 2014 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * *//*! * \file * \brief Memory management. *//*--------------------------------------------------------------------*/ #include "deDefs.h" #include <string.h> DE_BEGIN_EXTERN_C #define DE_NEW(TYPE) ((TYPE*)deMalloc(sizeof(TYPE))) #define DE_DELETE(TYPE, PTR) deFree(PTR) void* deMalloc (size_t numBytes); void* deCalloc (size_t numBytes); void* deRealloc (void* ptr, size_t numBytes); void deFree (void* ptr); void* deAlignedMalloc (size_t numBytes, size_t alignBytes); void* deAlignedRealloc(void* ptr, size_t numBytes, size_t alignBytes); void deAlignedFree (void* ptr); char* deStrdup (const char* str); /*--------------------------------------------------------------------*//*! * \brief Fill a block of memory with an 8-bit value. * \param ptr Pointer to memory to free. * \param value Value to fill with. * \param numBytes Number of bytes to write. *//*--------------------------------------------------------------------*/ DE_INLINE void deMemset (void* ptr, int value, size_t numBytes) { DE_ASSERT((value & 0xFF) == value); memset(ptr, value, numBytes); } DE_INLINE int deMemCmp (const void* a, const void* b, size_t numBytes) { return memcmp(a, b, numBytes); } /*--------------------------------------------------------------------*//*! * \brief Copy bytes between buffers * \param dst Destination buffer * \param src Source buffer * \param numBytes Number of bytes to copy * \return Destination buffer. *//*--------------------------------------------------------------------*/ DE_INLINE void* deMemcpy (void* dst, const void* src, size_t numBytes) { return memcpy(dst, src, numBytes); } DE_INLINE void* deMemmove (void* dst, const void* src, size_t numBytes) { return memmove(dst, src, numBytes); } void deMemory_selfTest (void); DE_END_EXTERN_C #endif /* _DEMEMORY_H */