$(OBJS_DIR)/valmemheap_getalign.$(EXT_OBJ): $(VALMEMHEAP_DIR)/valmemheap_getalign.c $(COMMON_HEADERS)
$(OBJS_DIR)/valmemheap_getsize.$(EXT_OBJ): $(VALMEMHEAP_DIR)/valmemheap_getsize.c $(COMMON_HEADERS)
$(OBJS_DIR)/valmemheap_alignsize.$(EXT_OBJ): $(VALMEMHEAP_DIR)/valmemheap_alignsize.c $(COMMON_HEADERS)
+$(OBJS_DIR)/valmemheap_ismember.$(EXT_OBJ): $(VALMEMHEAP_DIR)/valmemheap_ismember.c $(COMMON_HEADERS)
$(OBJS_DIR)/fixmemheap_create.$(EXT_OBJ): $(FIXMEMHEAP_DIR)/fixmemheap_create.c $(COMMON_HEADERS)
$(OBJS_DIR)/fixmemheap_delete.$(EXT_OBJ): $(FIXMEMHEAP_DIR)/fixmemheap_delete.c $(COMMON_HEADERS)
$(OBJS_DIR)/fixmemheap_constructor.$(EXT_OBJ): $(FIXMEMHEAP_DIR)/fixmemheap_constructor.c $(COMMON_HEADERS)
$(OBJS_DIR)/fixmemheap_getalign.$(EXT_OBJ): $(FIXMEMHEAP_DIR)/fixmemheap_getalign.c $(COMMON_HEADERS)
$(OBJS_DIR)/fixmemheap_getsize.$(EXT_OBJ): $(FIXMEMHEAP_DIR)/fixmemheap_getsize.c $(COMMON_HEADERS)
$(OBJS_DIR)/fixmemheap_alignsize.$(EXT_OBJ): $(FIXMEMHEAP_DIR)/fixmemheap_alignsize.c $(COMMON_HEADERS)
+$(OBJS_DIR)/fixmemheap_ismember.$(EXT_OBJ): $(FIXMEMHEAP_DIR)/fixmemheap_ismember.c $(COMMON_HEADERS)
+$(OBJS_DIR)/automemheap_alignsize.$(EXT_OBJ): $(AUTOMEMHEAP_DIR)/automemheap_alignsize.c $(COMMON_HEADERS)
+$(OBJS_DIR)/automemheap_alloc.$(EXT_OBJ): $(AUTOMEMHEAP_DIR)/automemheap_alloc.c $(COMMON_HEADERS)
+$(OBJS_DIR)/automemheap_constructor.$(EXT_OBJ): $(AUTOMEMHEAP_DIR)/automemheap_constructor.c $(COMMON_HEADERS)
+$(OBJS_DIR)/automemheap_create.$(EXT_OBJ): $(AUTOMEMHEAP_DIR)/automemheap_create.c $(COMMON_HEADERS)
+$(OBJS_DIR)/automemheap_delete.$(EXT_OBJ): $(AUTOMEMHEAP_DIR)/automemheap_delete.c $(COMMON_HEADERS)
+$(OBJS_DIR)/automemheap_destructor.$(EXT_OBJ): $(AUTOMEMHEAP_DIR)/automemheap_destructor.c $(COMMON_HEADERS)
+$(OBJS_DIR)/automemheap_free.$(EXT_OBJ): $(AUTOMEMHEAP_DIR)/automemheap_free.c $(COMMON_HEADERS)
+$(OBJS_DIR)/automemheap_getalign.$(EXT_OBJ): $(AUTOMEMHEAP_DIR)/automemheap_getalign.c $(COMMON_HEADERS)
+$(OBJS_DIR)/automemheap_getsize.$(EXT_OBJ): $(AUTOMEMHEAP_DIR)/automemheap_getsize.c $(COMMON_HEADERS)
+$(OBJS_DIR)/automemheap_realloc.$(EXT_OBJ): $(AUTOMEMHEAP_DIR)/automemheap_realloc.c $(COMMON_HEADERS)
+$(OBJS_DIR)/automemheap_searchheap.$(EXT_OBJ): $(AUTOMEMHEAP_DIR)/automemheap_searchheap.c $(COMMON_HEADERS)
$(OBJS_DIR)/assoc_create.$(EXT_OBJ): $(ASSOC_DIR)/assoc_create.c $(COMMON_HEADERS)
$(OBJS_DIR)/assoc_createex.$(EXT_OBJ): $(ASSOC_DIR)/assoc_createex.c $(COMMON_HEADERS)
$(OBJS_DIR)/assoc_delete.$(EXT_OBJ): $(ASSOC_DIR)/assoc_delete.c $(COMMON_HEADERS)
# Librarys
LINK_VALMEMHEAP ?= Yes
LINK_FIXMEMHEAP ?= Yes
+LINK_AUTOMEMHEAP ?= Yes
LINK_ASSOC ?= Yes
LINK_LIST ?= Yes
LINK_STREAMBUF ?= Yes
CSRCS += $(VALMEMHEAP_DIR)/valmemheap_getalign.c
CSRCS += $(VALMEMHEAP_DIR)/valmemheap_getsize.c
CSRCS += $(VALMEMHEAP_DIR)/valmemheap_alignsize.c
+CSRCS += $(VALMEMHEAP_DIR)/valmemheap_ismember.c
endif
CSRCS += $(FIXMEMHEAP_DIR)/fixmemheap_getalign.c
CSRCS += $(FIXMEMHEAP_DIR)/fixmemheap_getsize.c
CSRCS += $(FIXMEMHEAP_DIR)/fixmemheap_alignsize.c
+CSRCS += $(FIXMEMHEAP_DIR)/fixmemheap_ismember.c
+endif
+
+
+# Auto size memory heap
+ifeq ($(LINK_AUTOMEMHEAP),Yes)
+AUTOMEMHEAP_DIR = $(HOSAPLFW_DIR)/library/container/automemheap
+SRC_DIRS += $(AUTOMEMHEAP_DIR)
+CSRCS += $(AUTOMEMHEAP_DIR)/automemheap_alignsize.c
+CSRCS += $(AUTOMEMHEAP_DIR)/automemheap_alloc.c
+CSRCS += $(AUTOMEMHEAP_DIR)/automemheap_constructor.c
+CSRCS += $(AUTOMEMHEAP_DIR)/automemheap_create.c
+CSRCS += $(AUTOMEMHEAP_DIR)/automemheap_delete.c
+CSRCS += $(AUTOMEMHEAP_DIR)/automemheap_destructor.c
+CSRCS += $(AUTOMEMHEAP_DIR)/automemheap_free.c
+CSRCS += $(AUTOMEMHEAP_DIR)/automemheap_getalign.c
+CSRCS += $(AUTOMEMHEAP_DIR)/automemheap_getsize.c
+CSRCS += $(AUTOMEMHEAP_DIR)/automemheap_realloc.c
+CSRCS += $(AUTOMEMHEAP_DIR)/automemheap_searchheap.c
endif
$(OBJS_DIR)\valmemheap_alignsize.c : $(VALMEMHEAP_DIR)\valmemheap_alignsize.c
$(CMD_CP) $(VALMEMHEAP_DIR)\valmemheap_alignsize.c $(OBJS_DIR)\
+$(OBJS_DIR)\valmemheap_ismember.c : $(VALMEMHEAP_DIR)\valmemheap_ismember.c
+ $(CMD_CP) $(VALMEMHEAP_DIR)\valmemheap_ismember.c $(OBJS_DIR)\
+
$(OBJS_DIR)\fixmemheap.h : $(FIXMEMHEAP_DIR)\fixmemheap.h
$(CMD_CP) $(FIXMEMHEAP_DIR)\fixmemheap.h $(OBJS_DIR)\
$(OBJS_DIR)\fixmemheap_alignsize.c : $(FIXMEMHEAP_DIR)\fixmemheap_alignsize.c
$(CMD_CP) $(FIXMEMHEAP_DIR)\fixmemheap_alignsize.c $(OBJS_DIR)\
+$(OBJS_DIR)\fixmemheap_ismember.c : $(FIXMEMHEAP_DIR)\fixmemheap_ismember.c
+ $(CMD_CP) $(FIXMEMHEAP_DIR)\fixmemheap_ismember.c $(OBJS_DIR)\
+
+
+$(OBJS_DIR)\automemheap.h : $(AUTOMEMHEAP_DIR)\automemheap.h
+ $(CMD_CP) $(AUTOMEMHEAP_DIR)\automemheap.h $(OBJS_DIR)\
+
+$(OBJS_DIR)\automemheap_local.h : $(AUTOMEMHEAP_DIR)\automemheap_local.h
+ $(CMD_CP) $(AUTOMEMHEAP_DIR)\automemheap_local.h $(OBJS_DIR)\
+
+$(OBJS_DIR)\automemheap_alignsize.c : $(AUTOMEMHEAP_DIR)\automemheap_alignsize.c
+ $(CMD_CP) $(AUTOMEMHEAP_DIR)\automemheap_alignsize.c $(OBJS_DIR)\
+
+$(OBJS_DIR)\automemheap_alloc.c : $(AUTOMEMHEAP_DIR)\automemheap_alloc.c
+ $(CMD_CP) $(AUTOMEMHEAP_DIR)\automemheap_alloc.c $(OBJS_DIR)\
+
+$(OBJS_DIR)\automemheap_constructor.c : $(AUTOMEMHEAP_DIR)\automemheap_constructor.c
+ $(CMD_CP) $(AUTOMEMHEAP_DIR)\automemheap_constructor.c $(OBJS_DIR)\
+
+$(OBJS_DIR)\automemheap_create.c : $(AUTOMEMHEAP_DIR)\automemheap_create.c
+ $(CMD_CP) $(AUTOMEMHEAP_DIR)\automemheap_create.c $(OBJS_DIR)\
+
+$(OBJS_DIR)\automemheap_delete.c : $(AUTOMEMHEAP_DIR)\automemheap_delete.c
+ $(CMD_CP) $(AUTOMEMHEAP_DIR)\automemheap_delete.c $(OBJS_DIR)\
+
+$(OBJS_DIR)\automemheap_destructor.c : $(AUTOMEMHEAP_DIR)\automemheap_destructor.c
+ $(CMD_CP) $(AUTOMEMHEAP_DIR)\automemheap_destructor.c $(OBJS_DIR)\
+
+$(OBJS_DIR)\automemheap_free.c : $(AUTOMEMHEAP_DIR)\automemheap_free.c
+ $(CMD_CP) $(AUTOMEMHEAP_DIR)\automemheap_free.c $(OBJS_DIR)\
+
+$(OBJS_DIR)\automemheap_getalign.c : $(AUTOMEMHEAP_DIR)\automemheap_getalign.c
+ $(CMD_CP) $(AUTOMEMHEAP_DIR)\automemheap_getalign.c $(OBJS_DIR)\
+
+$(OBJS_DIR)\automemheap_getsize.c : $(AUTOMEMHEAP_DIR)\automemheap_getsize.c
+ $(CMD_CP) $(AUTOMEMHEAP_DIR)\automemheap_getsize.c $(OBJS_DIR)\
+
+$(OBJS_DIR)\automemheap_realloc.c : $(AUTOMEMHEAP_DIR)\automemheap_realloc.c
+ $(CMD_CP) $(AUTOMEMHEAP_DIR)\automemheap_realloc.c $(OBJS_DIR)\
+
+$(OBJS_DIR)\automemheap_searchheap.c : $(AUTOMEMHEAP_DIR)\automemheap_searchheap.c
+ $(CMD_CP) $(AUTOMEMHEAP_DIR)\automemheap_searchheap.c $(OBJS_DIR)\
+
$(OBJS_DIR)\assoc.h : $(ASSOC_DIR)\assoc.h
$(CMD_CP) $(ASSOC_DIR)\assoc.h $(OBJS_DIR)\
$(OBJS_DIR)\valmemheap_getalign.$(EXT_OBJ): $(OBJS_DIR)\valmemheap_getalign.c $(COMMON_HEADERS)
$(OBJS_DIR)\valmemheap_getsize.$(EXT_OBJ): $(OBJS_DIR)\valmemheap_getsize.c $(COMMON_HEADERS)
$(OBJS_DIR)\valmemheap_alignsize.$(EXT_OBJ): $(OBJS_DIR)\valmemheap_alignsize.c $(COMMON_HEADERS)
+$(OBJS_DIR)\valmemheap_ismember.$(EXT_OBJ): $(OBJS_DIR)\valmemheap_ismember.c $(COMMON_HEADERS)
$(OBJS_DIR)\fixmemheap_create.$(EXT_OBJ): $(OBJS_DIR)\fixmemheap_create.c $(COMMON_HEADERS)
$(OBJS_DIR)\fixmemheap_delete.$(EXT_OBJ): $(OBJS_DIR)\fixmemheap_delete.c $(COMMON_HEADERS)
$(OBJS_DIR)\fixmemheap_getalign.$(EXT_OBJ): $(OBJS_DIR)\fixmemheap_getalign.c $(COMMON_HEADERS)
$(OBJS_DIR)\fixmemheap_getsize.$(EXT_OBJ): $(OBJS_DIR)\fixmemheap_getsize.c $(COMMON_HEADERS)
$(OBJS_DIR)\fixmemheap_alignsize.$(EXT_OBJ): $(OBJS_DIR)\fixmemheap_alignsize.c $(COMMON_HEADERS)
+$(OBJS_DIR)\fixmemheap_ismember.$(EXT_OBJ): $(OBJS_DIR)\fixmemheap_ismember.c $(COMMON_HEADERS)
+
+$(OBJS_DIR)\automemheap_alignsize.$(EXT_OBJ): $(OBJS_DIR)\automemheap_alignsize.c $(COMMON_HEADERS)
+$(OBJS_DIR)\automemheap_alloc.$(EXT_OBJ): $(OBJS_DIR)\automemheap_alloc.c $(COMMON_HEADERS)
+$(OBJS_DIR)\automemheap_constructor.$(EXT_OBJ): $(OBJS_DIR)\automemheap_constructor.c $(COMMON_HEADERS)
+$(OBJS_DIR)\automemheap_create.$(EXT_OBJ): $(OBJS_DIR)\automemheap_create.c $(COMMON_HEADERS)
+$(OBJS_DIR)\automemheap_delete.$(EXT_OBJ): $(OBJS_DIR)\automemheap_delete.c $(COMMON_HEADERS)
+$(OBJS_DIR)\automemheap_destructor.$(EXT_OBJ): $(OBJS_DIR)\automemheap_destructor.c $(COMMON_HEADERS)
+$(OBJS_DIR)\automemheap_free.$(EXT_OBJ): $(OBJS_DIR)\automemheap_free.c $(COMMON_HEADERS)
+$(OBJS_DIR)\automemheap_getalign.$(EXT_OBJ): $(OBJS_DIR)\automemheap_getalign.c $(COMMON_HEADERS)
+$(OBJS_DIR)\automemheap_getsize.$(EXT_OBJ): $(OBJS_DIR)\automemheap_getsize.c $(COMMON_HEADERS)
+$(OBJS_DIR)\automemheap_realloc.$(EXT_OBJ): $(OBJS_DIR)\automemheap_realloc.c $(COMMON_HEADERS)
+$(OBJS_DIR)\automemheap_searchheap.$(EXT_OBJ): $(OBJS_DIR)\automemheap_searchheap.c $(COMMON_HEADERS)
$(OBJS_DIR)\assoc_create.$(EXT_OBJ): $(OBJS_DIR)\assoc_create.c $(COMMON_HEADERS)
$(OBJS_DIR)\assoc_createex.$(EXT_OBJ): $(OBJS_DIR)\assoc_createex.c $(COMMON_HEADERS)
!ifndef LINK_FIXMEMHEAP
LINK_FIXMEMHEAP = Yes
!endif
+!ifndef LINK_AUTOMEMHEAP
+LINK_AUTOMEMHEAP = Yes
+!endif
!ifndef LINK_ASSOC
LINK_ASSOC = Yes
!endif
OBJS = $(OBJS) $(OBJS_DIR)\valmemheap_getsize.$(EXT_OBJ)
CSRCS = $(CSRCS) $(VALMEMHEAP_DIR)\valmemheap_alignsize.c
OBJS = $(OBJS) $(OBJS_DIR)\valmemheap_alignsize.$(EXT_OBJ)
+CSRCS = $(CSRCS) $(VALMEMHEAP_DIR)\valmemheap_ismember.c
+OBJS = $(OBJS) $(OBJS_DIR)\valmemheap_ismember.$(EXT_OBJ)
!endif
OBJS = $(OBJS) $(OBJS_DIR)\fixmemheap_getsize.$(EXT_OBJ)
CSRCS = $(CSRCS) $(FIXMEMHEAP_DIR)\fixmemheap_alignsize.c
OBJS = $(OBJS) $(OBJS_DIR)\fixmemheap_alignsize.$(EXT_OBJ)
+CSRCS = $(CSRCS) $(FIXMEMHEAP_DIR)\fixmemheap_ismember.c
+OBJS = $(OBJS) $(OBJS_DIR)\fixmemheap_ismember.$(EXT_OBJ)
+!endif
+
+
+# Auto size memory heap
+!if "$(LINK_AUTOMEMHEAP)" == "Yes"
+AUTOMEMHEAP_DIR = $(HOSAPLFW_DIR)\library\container\automemheap
+HEADERS = $(HEADERS) $(OBJS_DIR)\automemheap.h
+HEADERS = $(HEADERS) $(OBJS_DIR)\automemheap_local.h
+CSRCS = $(CSRCS) $(AUTOMEMHEAP_DIR)\automemheap_alignsize.c
+OBJS = $(OBJS) $(OBJS_DIR)\automemheap_alignsize.$(EXT_OBJ)
+CSRCS = $(CSRCS) $(AUTOMEMHEAP_DIR)\automemheap_alloc.c
+OBJS = $(OBJS) $(OBJS_DIR)\automemheap_alloc.$(EXT_OBJ)
+CSRCS = $(CSRCS) $(AUTOMEMHEAP_DIR)\automemheap_constructor.c
+OBJS = $(OBJS) $(OBJS_DIR)\automemheap_constructor.$(EXT_OBJ)
+CSRCS = $(CSRCS) $(AUTOMEMHEAP_DIR)\automemheap_create.c
+OBJS = $(OBJS) $(OBJS_DIR)\automemheap_create.$(EXT_OBJ)
+CSRCS = $(CSRCS) $(AUTOMEMHEAP_DIR)\automemheap_delete.c
+OBJS = $(OBJS) $(OBJS_DIR)\automemheap_delete.$(EXT_OBJ)
+CSRCS = $(CSRCS) $(AUTOMEMHEAP_DIR)\automemheap_destructor.c
+OBJS = $(OBJS) $(OBJS_DIR)\automemheap_destructor.$(EXT_OBJ)
+CSRCS = $(CSRCS) $(AUTOMEMHEAP_DIR)\automemheap_free.c
+OBJS = $(OBJS) $(OBJS_DIR)\automemheap_free.$(EXT_OBJ)
+CSRCS = $(CSRCS) $(AUTOMEMHEAP_DIR)\automemheap_getalign.c
+OBJS = $(OBJS) $(OBJS_DIR)\automemheap_getalign.$(EXT_OBJ)
+CSRCS = $(CSRCS) $(AUTOMEMHEAP_DIR)\automemheap_getsize.c
+OBJS = $(OBJS) $(OBJS_DIR)\automemheap_getsize.$(EXT_OBJ)
+CSRCS = $(CSRCS) $(AUTOMEMHEAP_DIR)\automemheap_realloc.c
+OBJS = $(OBJS) $(OBJS_DIR)\automemheap_realloc.$(EXT_OBJ)
+CSRCS = $(CSRCS) $(AUTOMEMHEAP_DIR)\automemheap_searchheap.c
+OBJS = $(OBJS) $(OBJS_DIR)\automemheap_searchheap.$(EXT_OBJ)
!endif
"valmemheap_getalign.c",
"valmemheap_getsize.c",
"valmemheap_alignsize.c",
+ "valmemheap_ismember.c",
]
],
[
"fixmemheap_getalign.c",
"fixmemheap_getsize.c",
"fixmemheap_alignsize.c",
+ "fixmemheap_ismember.c",
+ ]
+ ],
+ [
+ "Auto size memory heap",
+ "\$(COMMON_HEADERS)",
+ "\$(HOSAPLFW_DIR)/library/container/automemheap",
+ "AUTOMEMHEAP",
+ "Yes",
+ [
+ "automemheap.h",
+ "automemheap_local.h",
+ ],
+ [
+ "automemheap_alignsize.c",
+ "automemheap_alloc.c",
+ "automemheap_constructor.c",
+ "automemheap_create.c",
+ "automemheap_delete.c",
+ "automemheap_destructor.c",
+ "automemheap_free.c",
+ "automemheap_getalign.c",
+ "automemheap_getsize.c",
+ "automemheap_realloc.c",
+ "automemheap_searchheap.c",
]
],
[
>
</File>
</Filter>
+ <Filter
+ Name="automemheap"
+ >
+ <File
+ RelativePath="..\..\..\..\library\container\automemheap\automemheap.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\library\container\automemheap\automemheap_alignsize.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\library\container\automemheap\automemheap_alloc.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\library\container\automemheap\automemheap_constructor.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\library\container\automemheap\automemheap_create.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\library\container\automemheap\automemheap_delete.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\library\container\automemheap\automemheap_destructor.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\library\container\automemheap\automemheap_free.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\library\container\automemheap\automemheap_getalign.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\library\container\automemheap\automemheap_getsize.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\library\container\automemheap\automemheap_local.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\library\container\automemheap\automemheap_realloc.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\library\container\automemheap\automemheap_searchheap.c"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="fixmemheap"
+ >
+ <File
+ RelativePath="..\..\..\..\library\container\fixmemheap\fixmemheap.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\library\container\fixmemheap\fixmemheap_alignsize.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\library\container\fixmemheap\fixmemheap_alloc.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\library\container\fixmemheap\fixmemheap_constructor.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\library\container\fixmemheap\fixmemheap_create.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\library\container\fixmemheap\fixmemheap_delete.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\library\container\fixmemheap\fixmemheap_free.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\library\container\fixmemheap\fixmemheap_getalign.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\library\container\fixmemheap\fixmemheap_getsize.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\library\container\fixmemheap\fixmemheap_ismember.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\library\container\fixmemheap\fixmemheap_local.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\library\container\fixmemheap\fixmemheap_realloc.c"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="valmemheap"
+ >
+ <File
+ RelativePath="..\..\..\..\library\container\valmemheap\valmemheap.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\library\container\valmemheap\valmemheap_alignsize.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\library\container\valmemheap\valmemheap_alloc.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\library\container\valmemheap\valmemheap_constructor.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\library\container\valmemheap\valmemheap_free.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\library\container\valmemheap\valmemheap_getalign.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\library\container\valmemheap\valmemheap_getsize.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\library\container\valmemheap\valmemheap_ismember.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\library\container\valmemheap\valmemheap_local.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\library\container\valmemheap\valmemheap_realloc.c"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="memheap"
+ >
+ <File
+ RelativePath="..\..\..\..\library\container\memheap\memheap.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\library\container\memheap\memheap_local.h"
+ >
+ </File>
+ </Filter>
</Filter>
</Filter>
<File
--- /dev/null
+/**
+ * Hyper Operating System Application Framework
+ *
+ * @file automemheap.h
+ * @brief %jp{メモリヒープクラス}%en{auto size memory heap class}
+ *
+ * Copyright (C) 2009 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+
+
+#ifndef __HOS__automemheap_h__
+#define __HOS__automemheap_h__
+
+
+#include "library/container/memheap/memheap_local.h"
+
+
+typedef struct c_automemheap C_AUTOMEMHEAP;
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+C_AUTOMEMHEAP *AutoMemHeap_Create(C_MEMHEAP *pMemHeap);
+void AutoMemHeap_Delete(C_AUTOMEMHEAP *self);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+
+#endif /* __HOS__memheap_h__ */
+
+
+/* end of file */
--- /dev/null
+/**
+ * Hyper Operating System Application Framework
+ *
+ * @file automemheap_free.c
+ * @brief %jp{メモリヒープクラス}%en{auto size memory heap class}
+ *
+ * Copyright (C) 2006-2008 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+
+#include <stdio.h>
+#include "automemheap_local.h"
+
+
+
+/** サイズをアライメント単位に拡張 */
+MEMSIZE AutoMemHeap_AlignSize(void *pMemHeap, MEMSIZE Size)
+{
+ C_AUTOMEMHEAP *self;
+
+ /* upper cast */
+ self = (C_AUTOMEMHEAP *)pMemHeap;
+
+ return MemHeap_AlignSize(self->pMemHeap, Size);
+}
+
+
+/* end of file */
--- /dev/null
+/**
+ * Hyper Operating System Application Framework
+ *
+ * @file automemheap_alloc.c
+ * @brief %jp{メモリヒープクラス}%en{auto size memory heap class}
+ *
+ * Copyright (C) 2006-2008 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+
+#include <stdio.h>
+#include "automemheap_local.h"
+
+
+
+/** %jp{メモリの割り当て} */
+void *AutoMemHeap_Alloc(void *pMemHeap, MEMSIZE Size)
+{
+ C_AUTOMEMHEAP *self;
+ void *pMem;
+ int i;
+
+ /* upper cast */
+ self = (C_AUTOMEMHEAP *)pMemHeap;
+
+ if ( Size <= self->FixSize )
+ {
+ T_AUTOMEMHEAP_FIX *pFixHeap;
+
+ /* 固定サイズプールから取る */
+ for ( i = 0, pFixHeap = self->pFixList; pFixHeap != NULL; pFixHeap = pFixHeap->pNext, i++ )
+ {
+ if ( (pMem = FixMemHeap_Alloc(&pFixHeap->FixMemHeap, Size)) != NULL )
+ {
+ return pMem;
+ }
+ i++;
+ }
+
+ /* 新規確保 */
+ if ( i < self->iFixMax )
+ {
+ if ( (pFixHeap = MemHeap_Alloc(self->pMemHeap, sizeof(T_AUTOMEMHEAP_FIX) + (self->FixSize * self->FixNum))) != NULL )
+ {
+ pMem = (void *)((char *)pFixHeap + sizeof(T_AUTOMEMHEAP_FIX));
+ FixMemHeap_Constructor(&pFixHeap->FixMemHeap, pMem, self->FixSize, self->FixNum);
+
+ /* リストに追加 */
+ pFixHeap->pNext = self->pFixList;
+ self->pFixList = pFixHeap;
+
+ if ( (pMem = FixMemHeap_Alloc(&pFixHeap->FixMemHeap, Size)) != NULL )
+ {
+ return pMem;
+ }
+ }
+ }
+ }
+ else if ( Size < self->ValSize )
+ {
+ T_AUTOMEMHEAP_VAL *pValHeap;
+
+ /* 可変サイズプールから取る */
+ for ( i = 0, pValHeap = self->pValList; pValHeap != NULL; pValHeap = pValHeap->pNext, i++ )
+ {
+ if ( (pMem = ValMemHeap_Alloc(&pValHeap->ValMemHeap, Size)) != NULL )
+ {
+ return pMem;
+ }
+ i++;
+ }
+
+ /* 新規確保 */
+ if ( i < self->iValMax )
+ {
+ if ( (pValHeap = MemHeap_Alloc(self->pMemHeap, sizeof(T_AUTOMEMHEAP_VAL) + self->ValSize)) != NULL )
+ {
+ pMem = (void *)((char *)pValHeap + sizeof(T_AUTOMEMHEAP_VAL));
+ ValMemHeap_Constructor(&pValHeap->ValMemHeap, pMem, self->ValSize, MemHeap_AlignSize(self->pMemHeap, 1));
+
+ /* リストに追加 */
+ pValHeap->pNext = self->pValList;
+ self->pValList = pValHeap;
+
+ if ( (pMem = ValMemHeap_Alloc(&pValHeap->ValMemHeap, Size)) != NULL )
+ {
+ return pMem;
+ }
+ }
+ }
+ }
+
+ /* 直接取る */
+ {
+ T_AUTOMEMHEAP_MEM *pMemHeap;
+
+ if ( (pMemHeap = MemHeap_Alloc(self->pMemHeap, MemHeap_AlignSize(self->pMemHeap, sizeof(T_AUTOMEMHEAP_MEM)) + Size)) != NULL )
+ {
+ pMem = (void *)((char *)pMemHeap + MemHeap_AlignSize(self->pMemHeap, sizeof(T_AUTOMEMHEAP_MEM)));
+
+ /* リストに追加 */
+ pMemHeap->pNext = self->pMemList;
+ self->pMemList = pMemHeap;
+
+ return pMem;
+ }
+ }
+
+ return NULL;
+}
+
+
+/* end of file */
--- /dev/null
+/**
+ * Hyper Operating System Application Framework
+ *
+ * @file automemheap_alloc.c
+ * @brief %jp{メモリヒープクラス}%en{auto size memory heap class}
+ *
+ * Copyright (C) 2006-2008 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+
+#include <stdio.h>
+#include "automemheap_local.h"
+
+
+
+/** %jp{MemHeapクラス 仮想関数テーブル}%en{MemHeap class virtual function table} */
+const static T_MEMHEAP_METHODS AutoMemHeap_Methods =
+ {
+ AutoMemHeap_Alloc, /**< メモリの割り当て */
+ AutoMemHeap_ReAlloc, /**< メモリの再割り当て */
+ AutoMemHeap_Free, /**< メモリの開放 */
+ AutoMemHeap_GetSize, /**< メモリのサイズ取得 */
+ AutoMemHeap_GetAlign, /**< メモリアライメントの取得 */
+ AutoMemHeap_AlignSize, /**< サイズをアライメント単位に拡張 */
+ };
+
+
+
+/** %jp{コンストラクタ} */
+void AutoMemHeap_Constructor(C_AUTOMEMHEAP *self, C_MEMHEAP *pMemHeap)
+{
+ /* %jp{親クラスコンストラクタ} */
+ MemHeap_Constructor(&self->MemHeap, &AutoMemHeap_Methods);
+
+ /* メンバ変数設定 */
+ self->pValList = NULL;
+ self->pFixList = NULL;
+ self->pMemList = NULL;
+
+ self->ValSize = 4096;
+ self->FixSize = MemHeap_AlignSize(&self->MemHeap, 16);
+ self->FixNum = 4096 / self->FixSize;
+ self->iValMax = 16;
+ self->iFixMax = 16;
+}
+
+
+/* end of file */
--- /dev/null
+/**
+ * Hyper Operating System Application Framework
+ *
+ * @file automemheap_alloc.c
+ * @brief %jp{メモリヒープクラス}%en{auto size memory heap class}
+ *
+ * Copyright (C) 2006-2008 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+
+#include <stdio.h>
+#include "hosaplfw.h"
+#include "automemheap_local.h"
+
+
+
+/** 生成 */
+C_AUTOMEMHEAP *AutoMemHeap_Create(C_MEMHEAP *pMemHeap)
+{
+ C_AUTOMEMHEAP *self;
+
+ /* メモリ確保 */
+ if ( (self = (C_AUTOMEMHEAP *)MemHeap_Alloc(pMemHeap, sizeof(C_AUTOMEMHEAP))) == NULL )
+ {
+ return NULL;
+ }
+
+ /* コンストラクタ呼び出し */
+ AutoMemHeap_Constructor(self, pMemHeap);
+
+ return (HANDLE)self;
+}
+
+
+/* end of file */
--- /dev/null
+/**
+ * Hyper Operating System Application Framework
+ *
+ * @file automemheap_delete.c
+ * @brief %jp{メモリヒープクラス}%en{auto size memory heap class}
+ *
+ * Copyright (C) 2006-2009 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+
+#include <stdio.h>
+#include "hosaplfw.h"
+#include "automemheap_local.h"
+
+
+
+/** 削除 */
+void AutoMemHeap_Delete(C_AUTOMEMHEAP *self)
+{
+ /* デストラクタ呼び出し */
+ AutoMemHeap_Destructor(self);
+
+ /* メモリ削除 */
+ Memory_Free(self);
+}
+
+
+/* end of file */
--- /dev/null
+/**
+ * Hyper Operating System Application Framework
+ *
+ * @file automemheap_free.c
+ * @brief %jp{固定サイズメモリヒープクラス}%en{fixed size memory heap class}
+ *
+ * Copyright (C) 2006-2008 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+
+#include <stdio.h>
+#include "automemheap_local.h"
+
+
+/** デストラクタ */
+void AutoMemHeap_Destructor(C_AUTOMEMHEAP *self)
+{
+ T_AUTOMEMHEAP_FIX *pFixHeap;
+ T_AUTOMEMHEAP_FIX *pFixHeapNext;
+ T_AUTOMEMHEAP_VAL *pValHeap;
+ T_AUTOMEMHEAP_VAL *pValHeapNext;
+ T_AUTOMEMHEAP_MEM *pMemHeap;
+ T_AUTOMEMHEAP_MEM *pMemHeapNext;
+
+
+ /* 固定長メモリヒープ開放 */
+ for ( pFixHeap = self->pFixList; pFixHeap != NULL; pFixHeap = pFixHeapNext )
+ {
+ pFixHeapNext = pFixHeap->pNext;
+ MemHeap_Free(self->pMemHeap, pFixHeap);
+ }
+
+ /* 可変長メモリヒープに無いか探索 */
+ for ( pValHeap = self->pValList; pValHeap != NULL; pValHeap = pValHeapNext )
+ {
+ pValHeapNext = pValHeap->pNext;
+ MemHeap_Free(self->pMemHeap, pValHeap);
+ }
+
+ /* 基底ヒープに開放 */
+ for ( pMemHeap = self->pMemList; pMemHeap != NULL; pMemHeap = pMemHeapNext )
+ {
+ pMemHeapNext = pMemHeap->pNext;
+ MemHeap_Free(self->pMemHeap, pMemHeap);
+ }
+}
+
+
+/* end of file */
--- /dev/null
+/**
+ * Hyper Operating System Application Framework
+ *
+ * @file automemheap_free.c
+ * @brief %jp{メモリヒープクラス}%en{auto size memory heap class}
+ *
+ * Copyright (C) 2006-2008 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+
+#include <stdio.h>
+#include "automemheap_local.h"
+
+
+
+/** %jp{メモリの解放} */
+void AutoMemHeap_Free(void *pMemHeap, void *pMem)
+{
+ C_AUTOMEMHEAP *self;
+ C_MEMHEAP *pHeap;
+
+ /* upper cast */
+ self = (C_AUTOMEMHEAP *)pMemHeap;
+
+ if ( (pHeap = AutoMemHeap_SearchHeap(self, pMem)) != NULL )
+ {
+ MemHeap_Free(pHeap, pMem);
+ }
+ else
+ {
+ MemHeap_Free(self->pMemHeap, (void *)((char *)pMem - MemHeap_AlignSize(self->pMemHeap, sizeof(T_AUTOMEMHEAP_MEM))));
+ }
+}
+
+
+/* end of file */
--- /dev/null
+/**
+ * Hyper Operating System Application Framework
+ *
+ * @file automemheap_free.c
+ * @brief %jp{メモリヒープクラス}%en{auto size memory heap class}
+ *
+ * Copyright (C) 2006-2009 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+
+#include <stdio.h>
+#include "automemheap_local.h"
+
+
+/** メモリアライメントの取得 */
+MEMSIZE AutoMemHeap_GetAlign(void *pMemHeap)
+{
+ C_AUTOMEMHEAP *self;
+
+ /* upper cast */
+ self = (C_AUTOMEMHEAP *)pMemHeap;
+
+ return MemHeap_GetAlign(self->pMemHeap);
+}
+
+
+/* end of file */
--- /dev/null
+/**
+ * Hyper Operating System Application Framework
+ *
+ * @file automemheap_free.c
+ * @brief %jp{メモリヒープクラス}%en{auto size memory heap class}
+ *
+ * Copyright (C) 2006-2008 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+
+#include <stdio.h>
+#include "automemheap_local.h"
+
+
+
+/** メモリのサイズ取得 */
+MEMSIZE AutoMemHeap_GetSize(void *pMemHeap, void *pMem)
+{
+ C_AUTOMEMHEAP *self;
+ C_MEMHEAP *pHeap;
+
+ /* upper cast */
+ self = (C_AUTOMEMHEAP *)pMemHeap;
+
+ if ( (pHeap = AutoMemHeap_SearchHeap(self, pMem)) != NULL )
+ {
+ MemHeap_GetSize(pHeap, pMem);
+ }
+ else
+ {
+ MemHeap_GetSize(self->pMemHeap, (void *)((char *)pMem - MemHeap_AlignSize(self->pMemHeap, sizeof(T_AUTOMEMHEAP_MEM))));
+ }
+
+ return 0;
+}
+
+
+/* end of file */
--- /dev/null
+/**
+ * Hyper Operating System Application Framework
+ *
+ * @file automemheap_local.h
+ * @brief %jp{メモリヒープクラス}%en{auto size memory heap class}
+ *
+ * Copyright (C) 2006-2008 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+
+
+#ifndef __HOS__automemheap_local_h__
+#define __HOS__automemheap_local_h__
+
+
+#include "library/container/memheap/memheap_local.h"
+#include "library/container/valmemheap/valmemheap_local.h"
+#include "library/container/fixmemheap/fixmemheap_local.h"
+
+
+typedef struct t_automemheap_fix
+{
+ struct t_automemheap_fix *pNext;
+ C_FIXMEMHEAP FixMemHeap;
+} T_AUTOMEMHEAP_FIX;
+
+typedef struct t_automemheap_val
+{
+ struct t_automemheap_val *pNext;
+ C_VALMEMHEAP ValMemHeap;
+} T_AUTOMEMHEAP_VAL;
+
+typedef struct t_automemheap_mem
+{
+ struct t_automemheap_mem *pNext;
+} T_AUTOMEMHEAP_MEM;
+
+
+/** %jp{AutoMemHeapクラス}%en{AutoMemHeap class} */
+typedef struct c_automemheap
+{
+ C_MEMHEAP MemHeap; /**< 継承 */
+
+ C_MEMHEAP *pMemHeap; /**< 基底ヒープ */
+
+ T_AUTOMEMHEAP_FIX *pFixList; /**< 小ブロック用固定サイズヒープリスト */
+ T_AUTOMEMHEAP_VAL *pValList; /**< 中ブロック用可変サイズヒープリスト */
+ T_AUTOMEMHEAP_MEM *pMemList; /**< 大ブロック用リスト */
+
+ MEMSIZE FixSize; /**< 小ブロック閾値 */
+ MEMSIZE FixNum; /**< 小ブロック個数 */
+ MEMSIZE ValSize; /**< 中ブロック閾値 */
+
+ int iFixMax;
+ int iValMax;
+} C_AUTOMEMHEAP;
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void AutoMemHeap_Constructor(C_AUTOMEMHEAP *self, C_MEMHEAP *pMemHeap); /**< コンストラクタ */
+void AutoMemHeap_Destructor(C_AUTOMEMHEAP *self); /**< デストラクタ */
+
+void *AutoMemHeap_Alloc(void *pMemHeap, MEMSIZE Size); /**< メモリの割り当て */
+void *AutoMemHeap_ReAlloc(void *pMemHeap, void *pMem, MEMSIZE Size); /**< メモリの再割り当て */
+void AutoMemHeap_Free(void *pMemHeap, void *pMem); /**< メモリの開放 */
+MEMSIZE AutoMemHeap_GetSize(void *pMemHeap, void *pMem); /**< メモリのサイズ取得 */
+MEMSIZE AutoMemHeap_GetAlign(void *pMemHeap); /**< メモリアライメントの取得 */
+MEMSIZE AutoMemHeap_AlignSize(void *pMemHeap, MEMSIZE Size); /**< サイズをアライメント単位に拡張 */
+int AutoMemHeap_IsMember(void *pMemHeap, void *pMem); /**< サイズをアライメント単位に拡張 */
+
+C_MEMHEAP *AutoMemHeap_SearchHeap(C_AUTOMEMHEAP *self, void *pMem); /**< 所属するヒープを検索 */
+
+#ifdef __cplusplus
+}
+#endif
+
+
+
+#endif /* __HOS__automemheap_local_h__ */
+
+
+/* end of file */
--- /dev/null
+/**
+ * Hyper Operating System Application Framework
+ *
+ * @file automemheap_alloc.c
+ * @brief %jp{メモリヒープクラス}%en{auto size memory heap class}
+ *
+ * Copyright (C) 2006-2008 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+
+#include <stdio.h>
+#include <string.h>
+#include "automemheap_local.h"
+
+
+
+/** %jp{メモリの再割り当て} */
+void *AutoMemHeap_ReAlloc(void *pMemHeap, void *pMem, MEMSIZE Size)
+{
+ return NULL;
+}
+
+
+/* end of file */
--- /dev/null
+/**
+ * Hyper Operating System Application Framework
+ *
+ * @file automemheap_free.c
+ * @brief %jp{メモリヒープクラス}%en{auto size memory heap class}
+ *
+ * Copyright (C) 2006-2009 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+
+#include <stdio.h>
+#include "automemheap_local.h"
+
+
+/** 所属するヒープを検索 */
+C_MEMHEAP *AutoMemHeap_SearchHeap(C_AUTOMEMHEAP *self, void *pMem)
+{
+ T_AUTOMEMHEAP_FIX *pFixHeap;
+ T_AUTOMEMHEAP_VAL *pValHeap;
+
+ /* 固定長メモリヒープに無いか探索 */
+ for ( pFixHeap = self->pFixList; pFixHeap != NULL; pFixHeap = pFixHeap->pNext )
+ {
+ if ( FixMemHeap_IsMember(&pFixHeap->FixMemHeap, pMem) )
+ {
+ return &pFixHeap->FixMemHeap.MemHeap;
+ }
+ }
+
+ /* 可変長メモリヒープに無いか探索 */
+ for ( pValHeap = self->pValList; pValHeap != NULL; pValHeap = pValHeap->pNext )
+ {
+ if ( ValMemHeap_IsMember(&pValHeap->ValMemHeap, pMem) )
+ {
+ return &pValHeap->ValMemHeap.MemHeap;
+ }
+ }
+
+ return NULL;
+}
+
+
+/* end of file */
FixMemHeap_GetSize, /**< メモリのサイズ取得 */
FixMemHeap_GetAlign, /**< メモリアライメントの取得 */
FixMemHeap_AlignSize, /**< サイズをアライメント単位に拡張 */
+ FixMemHeap_IsMember, /**< メモリがヒープに属しているかチェック */
};
--- /dev/null
+/**
+ * Hyper Operating System Application Framework
+ *
+ * @file fixmemheap_ismember.c
+ * @brief %jp{固定サイズメモリヒープクラス}%en{fixed size memory heap class}
+ *
+ * Copyright (C) 2006-2008 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+
+#include <stdio.h>
+#include "fixmemheap_local.h"
+
+
+/** メモリがヒープに属しているかチェック */
+int FixMemHeap_IsMember(void *pMemHeap, void *pMem)
+{
+ C_FIXMEMHEAP *self;
+
+ /* upper cast */
+ self = (C_FIXMEMHEAP *)pMemHeap;
+
+ /* %jp{ポインタ範囲チェック} */
+ if ( pMem < (void *)self->pMemBase || pMem >= (void *)((char *)self->pMemBase + (self->BlkSize * self->BlkNum)) )
+ {
+ return 0;
+ }
+
+ return 1;
+}
+
+
+/* end of file */
MEMSIZE FixMemHeap_GetSize(void *pMemHeap, void *pMem); /**< メモリのサイズ取得 */
MEMSIZE FixMemHeap_GetAlign(void *pMemHeap); /**< メモリアライメントの取得 */
MEMSIZE FixMemHeap_AlignSize(void *pMemHeap, MEMSIZE Size); /**< サイズをアライメント単位に拡張 */
+int FixMemHeap_IsMember(void *pMemHeap, void *pMem); /**< メモリがヒープに属しているかチェック */
#ifdef __cplusplus
}
MEMSIZE (*pfncGetSize)(void *pMemHeap, void *pMem); /**< メモリのサイズ取得 */
MEMSIZE (*pfncGetAlign)(void *pMemHeap); /**< メモリアライメントの取得 */
MEMSIZE (*pfncAlignSize)(void *pMemHeap, MEMSIZE Size); /**< サイズをアライメント単位に拡張 */
-
+ int (*pfncIsMember)(void *pMemHeap, void *pMem); /**< メモリがヒープに属しているかチェック */
} T_MEMHEAP_METHODS;
#define MemHeap_GetSize(self, pMem) ((self)->pMethods->pfncGetSize((self), (pMem)))
#define MemHeap_GetAlign(self) ((self)->pMethods->pfncGetAlign((self)))
#define MemHeap_AlignSize(self, Size) ((self)->pMethods->pfncAlignSize((self), (Size)))
+#define MemHeap_IsMember(self, pMem) ((self)->pMethods->pfncIsMember((self), (pMem)))
#ifdef __cplusplus
}
ValMemHeap_GetSize, /**< メモリのサイズ取得 */
ValMemHeap_GetAlign, /**< メモリアライメントの取得 */
ValMemHeap_AlignSize, /**< サイズをアライメント単位に拡張 */
+ ValMemHeap_IsMember, /**< メモリがヒープに属しているかチェック */
};
--- /dev/null
+/**
+ * Hyper Operating System Application Framework
+ *
+ * @file valmemheap_free.c
+ * @brief %jp{可変サイズメモリヒープクラス}%en{variable size memory heap class}
+ *
+ * Copyright (C) 2006-2008 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+
+#include <stdio.h>
+#include "valmemheap_local.h"
+
+
+/** メモリがヒープに属しているかチェック */
+int ValMemHeap_IsMember(void *pMemHeap, void *pMem)
+{
+ C_VALMEMHEAP *self;
+
+ /* upper cast */
+ self = (C_VALMEMHEAP *)pMemHeap;
+
+ /* %jp{ポインタ範囲チェック} */
+ if ( pMem < (void *)self->pMemBase || pMem >= (void *)((char *)self->pMemBase + self->MemSize) )
+ {
+ return 0;
+ }
+
+ return 1;
+}
+
+
+/* end of file */
MEMSIZE ValMemHeap_GetSize(void *pMemHeap, void *pMem); /**< メモリのサイズ取得 */
MEMSIZE ValMemHeap_GetAlign(void *pMemHeap); /**< メモリアライメントの取得 */
MEMSIZE ValMemHeap_AlignSize(void *pMemHeap, MEMSIZE Size); /**< サイズをアライメント単位に拡張 */
+int ValMemHeap_IsMember(void *pMemHeap, void *pMem); /**< メモリがヒープに属しているかチェック */
#define ValMemHeap_GetMemBlockSize(self) (ValMemHeap_AlignSize((self), sizeof(T_VALMEMHEAP_MEMBLK)))