| #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 */ |