add hgl_align_realloc
This commit is contained in:
@@ -59,11 +59,17 @@ using os_char =wchar_t;
|
||||
#define hgl_free _aligned_free
|
||||
|
||||
template<typename T>
|
||||
inline T *hgl_aligned_malloc(size_t n)
|
||||
inline T *hgl_align_malloc(size_t n)
|
||||
{
|
||||
return (T *)_aligned_malloc(n*sizeof(T),alignof(T));
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
inline T *hgl_align_realloc(T *ptr,size_t n)
|
||||
{
|
||||
return (T *)_aligned_realloc(ptr,n*sizeof(T),alignof(T));
|
||||
}
|
||||
|
||||
#define OS_EXTERNAL_H <winbase.h>
|
||||
using ExternalModulePointer =HMODULE;
|
||||
#define pi_get GetProcAddress
|
||||
|
@@ -80,7 +80,7 @@ namespace hgl
|
||||
{
|
||||
count=1;
|
||||
max_count=1;
|
||||
items=hgl_aligned_malloc<T>(1);
|
||||
items=hgl_align_malloc<T>(1);
|
||||
|
||||
return items;
|
||||
}
|
||||
@@ -88,7 +88,7 @@ namespace hgl
|
||||
{
|
||||
max_count=power_to_2(count+1);
|
||||
|
||||
items=(T *)hgl_realloc(items,max_count*sizeof(T));
|
||||
items=(T *)hgl_align_realloc<T>(items,max_count);
|
||||
|
||||
++count;
|
||||
return(items+(count-1));
|
||||
@@ -107,13 +107,13 @@ namespace hgl
|
||||
{
|
||||
count=0;
|
||||
max_count=1;
|
||||
items=hgl_aligned_malloc<T>(1);
|
||||
items=hgl_align_malloc<T>(1);
|
||||
}
|
||||
else
|
||||
{
|
||||
max_count=power_to_2(count+1);
|
||||
|
||||
items=(T *)hgl_realloc(items,max_count*sizeof(T));
|
||||
items=(T *)hgl_align_realloc<T>(items,max_count);
|
||||
}
|
||||
|
||||
memcpy(items+count,&data,sizeof(T));//items[count]=data;
|
||||
@@ -136,13 +136,13 @@ namespace hgl
|
||||
{
|
||||
count=0;
|
||||
max_count=power_to_2(n);
|
||||
items=hgl_aligned_malloc<T>(max_count);
|
||||
items=hgl_align_malloc<T>(max_count);
|
||||
}
|
||||
else
|
||||
{
|
||||
max_count=power_to_2(count+n);
|
||||
|
||||
items=(T *)hgl_realloc(items,max_count*sizeof(T));
|
||||
items=(T *)hgl_align_realloc<T>(items,max_count);
|
||||
}
|
||||
|
||||
T *p=items;
|
||||
@@ -172,13 +172,13 @@ namespace hgl
|
||||
count=0;
|
||||
max_count=power_to_2(n);
|
||||
|
||||
items=hgl_aligned_malloc<T>(max_count);
|
||||
items=hgl_align_malloc<T>(max_count);
|
||||
}
|
||||
else
|
||||
{
|
||||
max_count=power_to_2(count+n);
|
||||
|
||||
items=(T *)hgl_realloc(items,max_count*sizeof(T));
|
||||
items=(T *)hgl_align_realloc<T>(items,max_count);
|
||||
}
|
||||
|
||||
memcpy(items+count,data,n*sizeof(T));
|
||||
@@ -396,13 +396,13 @@ namespace hgl
|
||||
{
|
||||
max_count=1;
|
||||
|
||||
items=hgl_aligned_malloc<T>(max_count);
|
||||
items=hgl_align_malloc<T>(max_count);
|
||||
}
|
||||
else
|
||||
{
|
||||
max_count=power_to_2(count+1);
|
||||
|
||||
items=(T *)hgl_realloc(items,max_count*sizeof(T));
|
||||
items=(T *)hgl_align_realloc<T>(items,max_count);
|
||||
}
|
||||
|
||||
memmove(items+index+1,items+index,(count-index)*sizeof(T));
|
||||
@@ -447,9 +447,9 @@ namespace hgl
|
||||
max_count=power_to_2(new_count);
|
||||
|
||||
if(!items)
|
||||
items=hgl_aligned_malloc<T>(max_count);
|
||||
items=hgl_align_malloc<T>(max_count);
|
||||
else
|
||||
items=(T *)hgl_realloc(items,max_count*sizeof(T));
|
||||
items=(T *)hgl_align_realloc<T>(items,max_count);
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
|
@@ -16,7 +16,7 @@ namespace hgl
|
||||
{
|
||||
max_count=m;
|
||||
|
||||
items=hgl_aligned_malloc<T>(max_count);
|
||||
items=hgl_align_malloc<T>(max_count);
|
||||
}
|
||||
else max_count=0;
|
||||
|
||||
@@ -41,14 +41,14 @@ namespace hgl
|
||||
{
|
||||
alloc_count=power_to_2(count);
|
||||
|
||||
items=(T *)hgl_realloc(items,alloc_count*sizeof(T));
|
||||
items=(T *)hgl_align_realloc<T>(items,alloc_count);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
alloc_count=power_to_2(count);
|
||||
|
||||
items=hgl_aligned_malloc<T>(alloc_count);
|
||||
items=hgl_align_malloc<T>(alloc_count);
|
||||
}
|
||||
|
||||
return(true);
|
||||
@@ -243,7 +243,7 @@ namespace hgl
|
||||
else
|
||||
alloc_count=max_count;
|
||||
|
||||
items=hgl_aligned_malloc<T>(alloc_count);
|
||||
items=hgl_align_malloc<T>(alloc_count);
|
||||
|
||||
memcpy(items,ori.items,alloc_count*sizeof(T));
|
||||
}
|
||||
|
Reference in New Issue
Block a user