OSDN Git Service

(none)
authorryuz <ryuz>
Mon, 24 Aug 2009 19:44:18 +0000 (19:44 +0000)
committerryuz <ryuz>
Mon, 24 Aug 2009 19:44:18 +0000 (19:44 +0000)
26 files changed:
aplfw/build/common/gmake/aplfwdep.inc
aplfw/build/common/gmake/aplfwsrc.inc
aplfw/build/common/nmake/aplfwdep.inc
aplfw/build/common/nmake/aplfwsrc.inc
aplfw/build/common/tmp_mkinc/mk_inc.pl
aplfw/build/win/win32/vc2008/hosaplfw.vcproj
aplfw/library/container/automemheap/automemheap.h [new file with mode: 0755]
aplfw/library/container/automemheap/automemheap_alignsize.c [new file with mode: 0755]
aplfw/library/container/automemheap/automemheap_alloc.c [new file with mode: 0755]
aplfw/library/container/automemheap/automemheap_constructor.c [new file with mode: 0755]
aplfw/library/container/automemheap/automemheap_create.c [new file with mode: 0755]
aplfw/library/container/automemheap/automemheap_delete.c [new file with mode: 0755]
aplfw/library/container/automemheap/automemheap_destructor.c [new file with mode: 0755]
aplfw/library/container/automemheap/automemheap_free.c [new file with mode: 0755]
aplfw/library/container/automemheap/automemheap_getalign.c [new file with mode: 0755]
aplfw/library/container/automemheap/automemheap_getsize.c [new file with mode: 0755]
aplfw/library/container/automemheap/automemheap_local.h [new file with mode: 0755]
aplfw/library/container/automemheap/automemheap_realloc.c [new file with mode: 0755]
aplfw/library/container/automemheap/automemheap_searchheap.c [new file with mode: 0755]
aplfw/library/container/fixmemheap/fixmemheap_constructor.c
aplfw/library/container/fixmemheap/fixmemheap_ismember.c [new file with mode: 0755]
aplfw/library/container/fixmemheap/fixmemheap_local.h
aplfw/library/container/memheap/memheap.h
aplfw/library/container/valmemheap/valmemheap_constructor.c
aplfw/library/container/valmemheap/valmemheap_ismember.c [new file with mode: 0755]
aplfw/library/container/valmemheap/valmemheap_local.h

index 30a4659..ad83e80 100755 (executable)
@@ -193,6 +193,7 @@ $(OBJS_DIR)/valmemheap_free.$(EXT_OBJ):     $(VALMEMHEAP_DIR)/valmemheap_free.c     $(CO
 $(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)
@@ -202,6 +203,18 @@ $(OBJS_DIR)/fixmemheap_free.$(EXT_OBJ):    $(FIXMEMHEAP_DIR)/fixmemheap_free.c     $(CO
 $(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)
index f3000f4..4a23af1 100755 (executable)
@@ -27,6 +27,7 @@ LINK_COMMAND          ?= Yes
 # Librarys
 LINK_VALMEMHEAP       ?= Yes
 LINK_FIXMEMHEAP       ?= Yes
+LINK_AUTOMEMHEAP      ?= Yes
 LINK_ASSOC            ?= Yes
 LINK_LIST             ?= Yes
 LINK_STREAMBUF        ?= Yes
@@ -358,6 +359,7 @@ CSRCS += $(VALMEMHEAP_DIR)/valmemheap_free.c
 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
 
 
@@ -374,6 +376,25 @@ CSRCS += $(FIXMEMHEAP_DIR)/fixmemheap_free.c
 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
 
 
index 703249a..34b5d18 100755 (executable)
@@ -690,6 +690,9 @@ $(OBJS_DIR)\valmemheap_getsize.c : $(VALMEMHEAP_DIR)\valmemheap_getsize.c
 $(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)\
@@ -724,6 +727,49 @@ $(OBJS_DIR)\fixmemheap_getsize.c : $(FIXMEMHEAP_DIR)\fixmemheap_getsize.c
 $(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)\
@@ -2275,6 +2321,7 @@ $(OBJS_DIR)\valmemheap_free.$(EXT_OBJ):   $(OBJS_DIR)\valmemheap_free.c   $(COMMON_H
 $(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)
@@ -2285,6 +2332,19 @@ $(OBJS_DIR)\fixmemheap_free.$(EXT_OBJ):  $(OBJS_DIR)\fixmemheap_free.c   $(COMMON_H
 $(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)
index bf37b44..1ee3f2c 100755 (executable)
@@ -51,6 +51,9 @@ LINK_VALMEMHEAP       = Yes
 !ifndef LINK_FIXMEMHEAP
 LINK_FIXMEMHEAP       = Yes
 !endif
+!ifndef LINK_AUTOMEMHEAP
+LINK_AUTOMEMHEAP      = Yes
+!endif
 !ifndef LINK_ASSOC
 LINK_ASSOC            = Yes
 !endif
@@ -687,6 +690,8 @@ CSRCS = $(CSRCS) $(VALMEMHEAP_DIR)\valmemheap_getsize.c
 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
 
 
@@ -713,6 +718,38 @@ CSRCS = $(CSRCS) $(FIXMEMHEAP_DIR)\fixmemheap_getsize.c
 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
 
 
index e0fa3da..fb10803 100755 (executable)
                                "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",
                        ]
                ],
                [
index aa13701..e88d709 100755 (executable)
                                                >
                                        </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
diff --git a/aplfw/library/container/automemheap/automemheap.h b/aplfw/library/container/automemheap/automemheap.h
new file mode 100755 (executable)
index 0000000..8c72aaf
--- /dev/null
@@ -0,0 +1,39 @@
+/** 
+ *  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 */
diff --git a/aplfw/library/container/automemheap/automemheap_alignsize.c b/aplfw/library/container/automemheap/automemheap_alignsize.c
new file mode 100755 (executable)
index 0000000..b3f0587
--- /dev/null
@@ -0,0 +1,29 @@
+/** 
+ *  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 */
diff --git a/aplfw/library/container/automemheap/automemheap_alloc.c b/aplfw/library/container/automemheap/automemheap_alloc.c
new file mode 100755 (executable)
index 0000000..b4e4fd0
--- /dev/null
@@ -0,0 +1,114 @@
+/** 
+ *  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 */
diff --git a/aplfw/library/container/automemheap/automemheap_constructor.c b/aplfw/library/container/automemheap/automemheap_constructor.c
new file mode 100755 (executable)
index 0000000..19bb5dc
--- /dev/null
@@ -0,0 +1,49 @@
+/** 
+ *  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 */
diff --git a/aplfw/library/container/automemheap/automemheap_create.c b/aplfw/library/container/automemheap/automemheap_create.c
new file mode 100755 (executable)
index 0000000..7115c38
--- /dev/null
@@ -0,0 +1,36 @@
+/** 
+ *  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 */
diff --git a/aplfw/library/container/automemheap/automemheap_delete.c b/aplfw/library/container/automemheap/automemheap_delete.c
new file mode 100755 (executable)
index 0000000..c38a138
--- /dev/null
@@ -0,0 +1,29 @@
+/** 
+ *  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 */
diff --git a/aplfw/library/container/automemheap/automemheap_destructor.c b/aplfw/library/container/automemheap/automemheap_destructor.c
new file mode 100755 (executable)
index 0000000..7ae9d94
--- /dev/null
@@ -0,0 +1,50 @@
+/** 
+ *  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 */
diff --git a/aplfw/library/container/automemheap/automemheap_free.c b/aplfw/library/container/automemheap/automemheap_free.c
new file mode 100755 (executable)
index 0000000..c8e36bd
--- /dev/null
@@ -0,0 +1,37 @@
+/** 
+ *  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 */
diff --git a/aplfw/library/container/automemheap/automemheap_getalign.c b/aplfw/library/container/automemheap/automemheap_getalign.c
new file mode 100755 (executable)
index 0000000..7d38a8a
--- /dev/null
@@ -0,0 +1,28 @@
+/** 
+ *  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 */
diff --git a/aplfw/library/container/automemheap/automemheap_getsize.c b/aplfw/library/container/automemheap/automemheap_getsize.c
new file mode 100755 (executable)
index 0000000..d021265
--- /dev/null
@@ -0,0 +1,39 @@
+/** 
+ *  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 */
diff --git a/aplfw/library/container/automemheap/automemheap_local.h b/aplfw/library/container/automemheap/automemheap_local.h
new file mode 100755 (executable)
index 0000000..136a94b
--- /dev/null
@@ -0,0 +1,86 @@
+/** 
+ *  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 */
diff --git a/aplfw/library/container/automemheap/automemheap_realloc.c b/aplfw/library/container/automemheap/automemheap_realloc.c
new file mode 100755 (executable)
index 0000000..55af466
--- /dev/null
@@ -0,0 +1,25 @@
+/** 
+ *  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 */
diff --git a/aplfw/library/container/automemheap/automemheap_searchheap.c b/aplfw/library/container/automemheap/automemheap_searchheap.c
new file mode 100755 (executable)
index 0000000..2ced1b1
--- /dev/null
@@ -0,0 +1,44 @@
+/** 
+ *  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 */
index dc23f6e..8e9b20a 100755 (executable)
@@ -23,6 +23,7 @@ const static T_MEMHEAP_METHODS FixMemHeap_Methods =
                FixMemHeap_GetSize,                     /**< メモリのサイズ取得 */
                FixMemHeap_GetAlign,            /**< メモリアライメントの取得 */
                FixMemHeap_AlignSize,           /**< サイズをアライメント単位に拡張 */
+               FixMemHeap_IsMember,            /**< メモリがヒープに属しているかチェック */
        };
 
 
diff --git a/aplfw/library/container/fixmemheap/fixmemheap_ismember.c b/aplfw/library/container/fixmemheap/fixmemheap_ismember.c
new file mode 100755 (executable)
index 0000000..796605e
--- /dev/null
@@ -0,0 +1,34 @@
+/** 
+ *  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 */
index 46ed806..0ff7957 100755 (executable)
@@ -44,6 +44,7 @@ void  FixMemHeap_Free(void *pMemHeap, void *pMem);                                            /**< メモリの開放 *
 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
 }
index b6abf8d..9320856 100755 (executable)
@@ -27,7 +27,7 @@ typedef struct t_memheap_methods
        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;
 
 
@@ -49,6 +49,7 @@ extern "C" {
 #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
 }
index 0e1809b..f5c43a1 100755 (executable)
@@ -23,6 +23,7 @@ const static T_MEMHEAP_METHODS ValMemHeap_Methods =
                ValMemHeap_GetSize,                     /**< メモリのサイズ取得 */
                ValMemHeap_GetAlign,            /**< メモリアライメントの取得 */
                ValMemHeap_AlignSize,           /**< サイズをアライメント単位に拡張 */
+               ValMemHeap_IsMember,            /**< メモリがヒープに属しているかチェック */
        };
 
 
diff --git a/aplfw/library/container/valmemheap/valmemheap_ismember.c b/aplfw/library/container/valmemheap/valmemheap_ismember.c
new file mode 100755 (executable)
index 0000000..c9851b7
--- /dev/null
@@ -0,0 +1,34 @@
+/** 
+ *  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 */
index 744715a..5942cd9 100755 (executable)
@@ -54,6 +54,7 @@ void  ValMemHeap_Free(void *pMemHeap, void *pMem);                                            /**< メモリの開放 *
 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)))