From cb62c4ecd1bbd3716f4634cc6c56a7ece4adf69c Mon Sep 17 00:00:00 2001 From: hyung-hwan Date: Wed, 11 Mar 2015 06:12:48 +0000 Subject: [PATCH] added quite a few sample programs --- qse/include/qse/cmn/Array.hpp | 9 +- qse/include/qse/cmn/RedBlackTree.hpp | 14 +- qse/lib/cmn/fma.c | 3 +- qse/samples/cmn/Makefile.am | 34 +++- qse/samples/cmn/Makefile.in | 224 +++++++++++++++++++++------ qse/samples/cmn/arr01.cpp | 147 ++++++++++++++++++ qse/samples/cmn/bh01.cpp | 224 +++++++++++++++++++++++++++ qse/samples/cmn/chr01.c | 7 +- qse/samples/cmn/fio01.c | 4 +- qse/samples/cmn/fio02.c | 4 +- qse/samples/cmn/fma.c | 63 +++++++- qse/samples/cmn/fmt01.c | 19 ++- qse/samples/cmn/fmt02.c | 15 +- qse/samples/cmn/fs01.c | 21 ++- qse/samples/cmn/hl01.cpp | 148 ++++++++++++++++++ qse/samples/cmn/{htb.c => htb01.c} | 6 +- qse/samples/cmn/htb02.cpp | 221 ++++++++++++++++++++++++++ qse/samples/cmn/ipad01.c | 16 +- qse/samples/cmn/lda.c | 4 +- qse/samples/cmn/main01.c | 13 +- qse/samples/cmn/main02.c | 17 +- qse/samples/cmn/mbwc01.c | 8 +- qse/samples/cmn/mbwc02.c | 5 +- qse/samples/cmn/nwad01.c | 14 +- qse/samples/cmn/oht.c | 4 +- qse/samples/cmn/pio.c | 5 +- qse/samples/cmn/pma.c | 4 +- qse/samples/cmn/{rbt.c => rbt01.c} | 4 +- qse/samples/cmn/rbt02.cpp | 64 ++++++++ qse/samples/cmn/rbt03.cpp | 191 +++++++++++++++++++++++ qse/samples/cmn/rex01.c | 18 ++- qse/samples/cmn/sll.c | 4 +- qse/samples/cmn/slmb01.c | 16 +- qse/samples/cmn/sp01.cpp | 54 +++++++ qse/samples/cmn/sp02.cpp | 69 +++++++++ qse/samples/cmn/str01.c | 4 +- qse/samples/cmn/task01.c | 19 ++- qse/samples/cmn/time.c | 4 +- qse/samples/cmn/tre01.c | 14 +- qse/samples/cmn/uri01.c | 16 +- qse/samples/cmn/xma.c | 26 +++- 41 files changed, 1592 insertions(+), 164 deletions(-) create mode 100644 qse/samples/cmn/arr01.cpp create mode 100644 qse/samples/cmn/bh01.cpp create mode 100644 qse/samples/cmn/hl01.cpp rename qse/samples/cmn/{htb.c => htb01.c} (99%) create mode 100644 qse/samples/cmn/htb02.cpp rename qse/samples/cmn/{rbt.c => rbt01.c} (98%) create mode 100644 qse/samples/cmn/rbt02.cpp create mode 100644 qse/samples/cmn/rbt03.cpp create mode 100644 qse/samples/cmn/sp01.cpp create mode 100644 qse/samples/cmn/sp02.cpp diff --git a/qse/include/qse/cmn/Array.hpp b/qse/include/qse/cmn/Array.hpp index 60aaf652..f348b983 100644 --- a/qse/include/qse/cmn/Array.hpp +++ b/qse/include/qse/cmn/Array.hpp @@ -75,7 +75,6 @@ public: INVALID_INDEX = ~(qse_size_t)0 }; -private: void init_array (int capacity) { if (capacity <= 0) @@ -94,19 +93,19 @@ private: } public: - Array (qse_size_t capacity = DEFAULT_CAPACITY): Mmged (QSE_NULL) + Array (qse_size_t capacity = DEFAULT_CAPACITY): Mmged(QSE_NULL) { this->init_array (capacity); } - Array (Mmgr* mmgr, qse_size_t capacity = DEFAULT_CAPACITY): Mmged (mmgr) + Array (Mmgr* mmgr, qse_size_t capacity = DEFAULT_CAPACITY): Mmged(mmgr) { this->init_array (capacity); } Array (const SelfType& array): - Mmged (array.getMmgr()), - count (0), capacity (0), buffer (QSE_NULL) + Mmged(array.getMmgr()), + count(0), capacity(0), buffer(QSE_NULL) { if (array.buffer) { diff --git a/qse/include/qse/cmn/RedBlackTree.hpp b/qse/include/qse/cmn/RedBlackTree.hpp index eb5690f3..7c6046d5 100644 --- a/qse/include/qse/cmn/RedBlackTree.hpp +++ b/qse/include/qse/cmn/RedBlackTree.hpp @@ -320,7 +320,7 @@ public: typedef RedBlackTreeComparator DefaultComparator; private: - void init_tree (qse_size_t mpb_size) + void init_tree () { #if defined(QSE_REDBLACKTREE_ALLOCATE_NIL) // create a nil object. note it doesn't go into the memory pool. @@ -340,19 +340,19 @@ public: RedBlackTree (qse_size_t mpb_size = 0): Mmged(QSE_NULL), mp(QSE_NULL, QSE_SIZEOF(Node), mpb_size), node_count(0) { - this->init_tree (mpb_size); + this->init_tree (); } RedBlackTree (Mmgr* mmgr, qse_size_t mpb_size = 0): - Mmged (mmgr), mp (mmgr, QSE_SIZEOF(Node), mpb_size), node_count (0) + Mmged(mmgr), mp(mmgr, QSE_SIZEOF(Node), mpb_size), node_count(0) { - this->init_tree (mpb_size); + this->init_tree (); } RedBlackTree (const SelfType& rbt): - Mmged (rbt.getMmgr()), - mp (rbt.getMmgr(), rbt.mp.getDatumSize(), rbt.mp.getBlockSize()), - node_count (0) + Mmged(rbt.getMmgr()), + mp(rbt.getMmgr(), rbt.mp.getDatumSize(), rbt.mp.getBlockSize()), + node_count(0) { #if defined(QSE_REDBLACKTREE_ALLOCATE_NIL) // create a nil object. note it doesn't go into the memory pool. diff --git a/qse/lib/cmn/fma.c b/qse/lib/cmn/fma.c index 4a1cd67d..c8ca3f12 100644 --- a/qse/lib/cmn/fma.c +++ b/qse/lib/cmn/fma.c @@ -135,9 +135,10 @@ void* qse_fma_alloc (qse_fma_t* fma, qse_size_t size) if ((blk = fma->freeblk) == QSE_NULL) { - if (add_chunk (fma) == QSE_NULL) return QSE_NULL; + if (add_chunk(fma) == QSE_NULL) return QSE_NULL; blk = fma->freeblk; } + fma->freeblk = fma->freeblk->next; return blk; } diff --git a/qse/samples/cmn/Makefile.am b/qse/samples/cmn/Makefile.am index 1b41d829..bcb8dab8 100644 --- a/qse/samples/cmn/Makefile.am +++ b/qse/samples/cmn/Makefile.am @@ -19,7 +19,7 @@ bin_PROGRAMS = \ fs01 \ fs02 \ fs03 \ - htb \ + htb01 \ glob01 \ ipad01 \ lda \ @@ -35,7 +35,7 @@ bin_PROGRAMS = \ pio \ pma \ rex01 \ - rbt \ + rbt01 \ sio01 \ sio02 \ sio03 \ @@ -67,7 +67,7 @@ fmt01_SOURCES = fmt01.c fmt02_SOURCES = fmt02.c fs01_SOURCES = fs01.c glob01_SOURCES = glob01.c -htb_SOURCES = htb.c +htb01_SOURCES = htb01.c ipad01_SOURCES = ipad01.c lda_SOURCES = lda.c main01_SOURCES = main01.c @@ -80,7 +80,7 @@ path01_SOURCES = path01.c pio_SOURCES = pio.c pma_SOURCES = pma.c rex01_SOURCES = rex01.c -rbt_SOURCES = rbt.c +rbt01_SOURCES = rbt01.c sio01_SOURCES = sio01.c sio02_SOURCES = sio02.c sio03_SOURCES = sio03.c @@ -98,4 +98,30 @@ if ENABLE_CXX #rex02_CXXFLAGS = -I/usr/lib/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread #rex02_LDFLAGS = -pthread -Wl,-Bsymbolic-functions -lwx_gtk2ud_richtext-2.8 -lwx_gtk2ud_aui-2.8 -lwx_gtk2ud_xrc-2.8 -lwx_gtk2ud_qa-2.8 -lwx_gtk2ud_html-2.8 -lwx_gtk2ud_adv-2.8 -lwx_gtk2ud_core-2.8 -lwx_baseud_xml-2.8 -lwx_baseud_net-2.8 -lwx_baseud-2.8 +bin_PROGRAMS += arr01 bh01 hl01 htb02 rbt02 rbt03 sp01 sp02 + +arr01_SOURCES = arr01.cpp +arr01_LDADD = $(LDADD) -lqsecmnxx + +bh01_SOURCES = bh01.cpp +bh01_LDADD = $(LDADD) -lqsecmnxx + +hl01_SOURCES = hl01.cpp +hl01_LDADD = $(LDADD) -lqsecmnxx + +htb02_SOURCES = htb02.cpp +htb02_LDADD = $(LDADD) -lqsecmnxx + +rbt02_SOURCES = rbt02.cpp #RedBlackTree +rbt02_LDADD = $(LDADD) -lqsecmnxx + +rbt03_SOURCES = rbt03.cpp #RedBlackTable +rbt03_LDADD = $(LDADD) -lqsecmnxx + +sp01_SOURCES = sp01.cpp # ScopedPtr +sp01_LDADD = $(LDADD) -lqsecmnxx + +sp02_SOURCES = sp02.cpp # SharedPtr +sp02_LDADD = $(LDADD) -lqsecmnxx + endif diff --git a/qse/samples/cmn/Makefile.in b/qse/samples/cmn/Makefile.in index 7cbb6ab3..b148237c 100644 --- a/qse/samples/cmn/Makefile.in +++ b/qse/samples/cmn/Makefile.in @@ -54,15 +54,21 @@ host_triplet = @host@ bin_PROGRAMS = chr01$(EXEEXT) dir01$(EXEEXT) dll$(EXEEXT) \ env01$(EXEEXT) fio01$(EXEEXT) fio02$(EXEEXT) fma$(EXEEXT) \ fmt01$(EXEEXT) fmt02$(EXEEXT) fs01$(EXEEXT) fs02$(EXEEXT) \ - fs03$(EXEEXT) htb$(EXEEXT) glob01$(EXEEXT) ipad01$(EXEEXT) \ + fs03$(EXEEXT) htb01$(EXEEXT) glob01$(EXEEXT) ipad01$(EXEEXT) \ lda$(EXEEXT) main01$(EXEEXT) main02$(EXEEXT) mbwc01$(EXEEXT) \ mbwc02$(EXEEXT) nwad01$(EXEEXT) nwif01$(EXEEXT) \ nwif02$(EXEEXT) oht$(EXEEXT) path01$(EXEEXT) pio$(EXEEXT) \ - pma$(EXEEXT) rex01$(EXEEXT) rbt$(EXEEXT) sio01$(EXEEXT) \ + pma$(EXEEXT) rex01$(EXEEXT) rbt01$(EXEEXT) sio01$(EXEEXT) \ sio02$(EXEEXT) sio03$(EXEEXT) sll$(EXEEXT) slmb01$(EXEEXT) \ str01$(EXEEXT) task01$(EXEEXT) time$(EXEEXT) tre01$(EXEEXT) \ - uri01$(EXEEXT) xma$(EXEEXT) + uri01$(EXEEXT) xma$(EXEEXT) $(am__EXEEXT_1) @WCHAR_TRUE@@WIN32_TRUE@am__append_1 = $(UNICOWS_LIBS) + +#bin_PROGRAMS += rex02 +#rex02_SOURCES = rex02.cpp +#rex02_CXXFLAGS = -I/usr/lib/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread +#rex02_LDFLAGS = -pthread -Wl,-Bsymbolic-functions -lwx_gtk2ud_richtext-2.8 -lwx_gtk2ud_aui-2.8 -lwx_gtk2ud_xrc-2.8 -lwx_gtk2ud_qa-2.8 -lwx_gtk2ud_html-2.8 -lwx_gtk2ud_adv-2.8 -lwx_gtk2ud_core-2.8 -lwx_baseud_xml-2.8 -lwx_baseud_net-2.8 -lwx_baseud-2.8 +@ENABLE_CXX_TRUE@am__append_2 = arr01 bh01 hl01 htb02 rbt02 rbt03 sp01 sp02 subdir = samples/cmn DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 @@ -80,17 +86,29 @@ mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/qse/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = +@ENABLE_CXX_TRUE@am__EXEEXT_1 = arr01$(EXEEXT) bh01$(EXEEXT) \ +@ENABLE_CXX_TRUE@ hl01$(EXEEXT) htb02$(EXEEXT) rbt02$(EXEEXT) \ +@ENABLE_CXX_TRUE@ rbt03$(EXEEXT) sp01$(EXEEXT) sp02$(EXEEXT) am__installdirs = "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) -am_chr01_OBJECTS = chr01.$(OBJEXT) -chr01_OBJECTS = $(am_chr01_OBJECTS) -chr01_LDADD = $(LDADD) +am__arr01_SOURCES_DIST = arr01.cpp +@ENABLE_CXX_TRUE@am_arr01_OBJECTS = arr01.$(OBJEXT) +arr01_OBJECTS = $(am_arr01_OBJECTS) am__DEPENDENCIES_1 = @WCHAR_TRUE@@WIN32_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) -chr01_DEPENDENCIES = $(am__DEPENDENCIES_2) +am__DEPENDENCIES_3 = $(am__DEPENDENCIES_2) +@ENABLE_CXX_TRUE@arr01_DEPENDENCIES = $(am__DEPENDENCIES_3) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__bh01_SOURCES_DIST = bh01.cpp +@ENABLE_CXX_TRUE@am_bh01_OBJECTS = bh01.$(OBJEXT) +bh01_OBJECTS = $(am_bh01_OBJECTS) +@ENABLE_CXX_TRUE@bh01_DEPENDENCIES = $(am__DEPENDENCIES_3) +am_chr01_OBJECTS = chr01.$(OBJEXT) +chr01_OBJECTS = $(am_chr01_OBJECTS) +chr01_LDADD = $(LDADD) +chr01_DEPENDENCIES = $(am__DEPENDENCIES_2) dir01_SOURCES = dir01.c dir01_OBJECTS = dir01.$(OBJEXT) dir01_LDADD = $(LDADD) @@ -139,10 +157,18 @@ am_glob01_OBJECTS = glob01.$(OBJEXT) glob01_OBJECTS = $(am_glob01_OBJECTS) glob01_LDADD = $(LDADD) glob01_DEPENDENCIES = $(am__DEPENDENCIES_2) -am_htb_OBJECTS = htb.$(OBJEXT) -htb_OBJECTS = $(am_htb_OBJECTS) -htb_LDADD = $(LDADD) -htb_DEPENDENCIES = $(am__DEPENDENCIES_2) +am__hl01_SOURCES_DIST = hl01.cpp +@ENABLE_CXX_TRUE@am_hl01_OBJECTS = hl01.$(OBJEXT) +hl01_OBJECTS = $(am_hl01_OBJECTS) +@ENABLE_CXX_TRUE@hl01_DEPENDENCIES = $(am__DEPENDENCIES_3) +am_htb01_OBJECTS = htb01.$(OBJEXT) +htb01_OBJECTS = $(am_htb01_OBJECTS) +htb01_LDADD = $(LDADD) +htb01_DEPENDENCIES = $(am__DEPENDENCIES_2) +am__htb02_SOURCES_DIST = htb02.cpp +@ENABLE_CXX_TRUE@am_htb02_OBJECTS = htb02.$(OBJEXT) +htb02_OBJECTS = $(am_htb02_OBJECTS) +@ENABLE_CXX_TRUE@htb02_DEPENDENCIES = $(am__DEPENDENCIES_3) am_ipad01_OBJECTS = ipad01.$(OBJEXT) ipad01_OBJECTS = $(am_ipad01_OBJECTS) ipad01_LDADD = $(LDADD) @@ -195,10 +221,18 @@ am_pma_OBJECTS = pma.$(OBJEXT) pma_OBJECTS = $(am_pma_OBJECTS) pma_LDADD = $(LDADD) pma_DEPENDENCIES = $(am__DEPENDENCIES_2) -am_rbt_OBJECTS = rbt.$(OBJEXT) -rbt_OBJECTS = $(am_rbt_OBJECTS) -rbt_LDADD = $(LDADD) -rbt_DEPENDENCIES = $(am__DEPENDENCIES_2) +am_rbt01_OBJECTS = rbt01.$(OBJEXT) +rbt01_OBJECTS = $(am_rbt01_OBJECTS) +rbt01_LDADD = $(LDADD) +rbt01_DEPENDENCIES = $(am__DEPENDENCIES_2) +am__rbt02_SOURCES_DIST = rbt02.cpp +@ENABLE_CXX_TRUE@am_rbt02_OBJECTS = rbt02.$(OBJEXT) +rbt02_OBJECTS = $(am_rbt02_OBJECTS) +@ENABLE_CXX_TRUE@rbt02_DEPENDENCIES = $(am__DEPENDENCIES_3) +am__rbt03_SOURCES_DIST = rbt03.cpp +@ENABLE_CXX_TRUE@am_rbt03_OBJECTS = rbt03.$(OBJEXT) +rbt03_OBJECTS = $(am_rbt03_OBJECTS) +@ENABLE_CXX_TRUE@rbt03_DEPENDENCIES = $(am__DEPENDENCIES_3) am_rex01_OBJECTS = rex01.$(OBJEXT) rex01_OBJECTS = $(am_rex01_OBJECTS) rex01_LDADD = $(LDADD) @@ -223,6 +257,14 @@ am_slmb01_OBJECTS = slmb01.$(OBJEXT) slmb01_OBJECTS = $(am_slmb01_OBJECTS) slmb01_LDADD = $(LDADD) slmb01_DEPENDENCIES = $(am__DEPENDENCIES_2) +am__sp01_SOURCES_DIST = sp01.cpp +@ENABLE_CXX_TRUE@am_sp01_OBJECTS = sp01.$(OBJEXT) +sp01_OBJECTS = $(am_sp01_OBJECTS) +@ENABLE_CXX_TRUE@sp01_DEPENDENCIES = $(am__DEPENDENCIES_3) +am__sp02_SOURCES_DIST = sp02.cpp +@ENABLE_CXX_TRUE@am_sp02_OBJECTS = sp02.$(OBJEXT) +sp02_OBJECTS = $(am_sp02_OBJECTS) +@ENABLE_CXX_TRUE@sp02_DEPENDENCIES = $(am__DEPENDENCIES_3) am_str01_OBJECTS = str01.$(OBJEXT) str01_OBJECTS = $(am_str01_OBJECTS) str01_LDADD = $(LDADD) @@ -270,32 +312,54 @@ LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CXXFLAGS) $(CXXFLAGS) +AM_V_CXX = $(am__v_CXX_@AM_V@) +am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) +am__v_CXX_0 = @echo " CXX " $@; +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) +am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) +am__v_CXXLD_0 = @echo " CXXLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; -SOURCES = $(chr01_SOURCES) dir01.c $(dll_SOURCES) $(env01_SOURCES) \ +SOURCES = $(arr01_SOURCES) $(bh01_SOURCES) $(chr01_SOURCES) dir01.c \ + $(dll_SOURCES) $(env01_SOURCES) $(fio01_SOURCES) \ + $(fio02_SOURCES) $(fma_SOURCES) $(fmt01_SOURCES) \ + $(fmt02_SOURCES) $(fs01_SOURCES) fs02.c fs03.c \ + $(glob01_SOURCES) $(hl01_SOURCES) $(htb01_SOURCES) \ + $(htb02_SOURCES) $(ipad01_SOURCES) $(lda_SOURCES) \ + $(main01_SOURCES) $(main02_SOURCES) $(mbwc01_SOURCES) \ + $(mbwc02_SOURCES) $(nwad01_SOURCES) nwif01.c nwif02.c \ + $(oht_SOURCES) $(path01_SOURCES) $(pio_SOURCES) $(pma_SOURCES) \ + $(rbt01_SOURCES) $(rbt02_SOURCES) $(rbt03_SOURCES) \ + $(rex01_SOURCES) $(sio01_SOURCES) $(sio02_SOURCES) \ + $(sio03_SOURCES) $(sll_SOURCES) $(slmb01_SOURCES) \ + $(sp01_SOURCES) $(sp02_SOURCES) $(str01_SOURCES) task01.c \ + $(time_SOURCES) $(tre01_SOURCES) uri01.c $(xma_SOURCES) +DIST_SOURCES = $(am__arr01_SOURCES_DIST) $(am__bh01_SOURCES_DIST) \ + $(chr01_SOURCES) dir01.c $(dll_SOURCES) $(env01_SOURCES) \ $(fio01_SOURCES) $(fio02_SOURCES) $(fma_SOURCES) \ $(fmt01_SOURCES) $(fmt02_SOURCES) $(fs01_SOURCES) fs02.c \ - fs03.c $(glob01_SOURCES) $(htb_SOURCES) $(ipad01_SOURCES) \ + fs03.c $(glob01_SOURCES) $(am__hl01_SOURCES_DIST) \ + $(htb01_SOURCES) $(am__htb02_SOURCES_DIST) $(ipad01_SOURCES) \ $(lda_SOURCES) $(main01_SOURCES) $(main02_SOURCES) \ $(mbwc01_SOURCES) $(mbwc02_SOURCES) $(nwad01_SOURCES) nwif01.c \ nwif02.c $(oht_SOURCES) $(path01_SOURCES) $(pio_SOURCES) \ - $(pma_SOURCES) $(rbt_SOURCES) $(rex01_SOURCES) \ - $(sio01_SOURCES) $(sio02_SOURCES) $(sio03_SOURCES) \ - $(sll_SOURCES) $(slmb01_SOURCES) $(str01_SOURCES) task01.c \ + $(pma_SOURCES) $(rbt01_SOURCES) $(am__rbt02_SOURCES_DIST) \ + $(am__rbt03_SOURCES_DIST) $(rex01_SOURCES) $(sio01_SOURCES) \ + $(sio02_SOURCES) $(sio03_SOURCES) $(sll_SOURCES) \ + $(slmb01_SOURCES) $(am__sp01_SOURCES_DIST) \ + $(am__sp02_SOURCES_DIST) $(str01_SOURCES) task01.c \ $(time_SOURCES) $(tre01_SOURCES) uri01.c $(xma_SOURCES) -DIST_SOURCES = $(chr01_SOURCES) dir01.c $(dll_SOURCES) \ - $(env01_SOURCES) $(fio01_SOURCES) $(fio02_SOURCES) \ - $(fma_SOURCES) $(fmt01_SOURCES) $(fmt02_SOURCES) \ - $(fs01_SOURCES) fs02.c fs03.c $(glob01_SOURCES) $(htb_SOURCES) \ - $(ipad01_SOURCES) $(lda_SOURCES) $(main01_SOURCES) \ - $(main02_SOURCES) $(mbwc01_SOURCES) $(mbwc02_SOURCES) \ - $(nwad01_SOURCES) nwif01.c nwif02.c $(oht_SOURCES) \ - $(path01_SOURCES) $(pio_SOURCES) $(pma_SOURCES) $(rbt_SOURCES) \ - $(rex01_SOURCES) $(sio01_SOURCES) $(sio02_SOURCES) \ - $(sio03_SOURCES) $(sll_SOURCES) $(slmb01_SOURCES) \ - $(str01_SOURCES) task01.c $(time_SOURCES) $(tre01_SOURCES) \ - uri01.c $(xma_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ @@ -496,7 +560,7 @@ fmt01_SOURCES = fmt01.c fmt02_SOURCES = fmt02.c fs01_SOURCES = fs01.c glob01_SOURCES = glob01.c -htb_SOURCES = htb.c +htb01_SOURCES = htb01.c ipad01_SOURCES = ipad01.c lda_SOURCES = lda.c main01_SOURCES = main01.c @@ -509,7 +573,7 @@ path01_SOURCES = path01.c pio_SOURCES = pio.c pma_SOURCES = pma.c rex01_SOURCES = rex01.c -rbt_SOURCES = rbt.c +rbt01_SOURCES = rbt01.c sio01_SOURCES = sio01.c sio02_SOURCES = sio02.c sio03_SOURCES = sio03.c @@ -519,10 +583,26 @@ str01_SOURCES = str01.c time_SOURCES = time.c tre01_SOURCES = tre01.c xma_SOURCES = xma.c +@ENABLE_CXX_TRUE@arr01_SOURCES = arr01.cpp +@ENABLE_CXX_TRUE@arr01_LDADD = $(LDADD) -lqsecmnxx +@ENABLE_CXX_TRUE@bh01_SOURCES = bh01.cpp +@ENABLE_CXX_TRUE@bh01_LDADD = $(LDADD) -lqsecmnxx +@ENABLE_CXX_TRUE@hl01_SOURCES = hl01.cpp +@ENABLE_CXX_TRUE@hl01_LDADD = $(LDADD) -lqsecmnxx +@ENABLE_CXX_TRUE@htb02_SOURCES = htb02.cpp +@ENABLE_CXX_TRUE@htb02_LDADD = $(LDADD) -lqsecmnxx +@ENABLE_CXX_TRUE@rbt02_SOURCES = rbt02.cpp #RedBlackTree +@ENABLE_CXX_TRUE@rbt02_LDADD = $(LDADD) -lqsecmnxx +@ENABLE_CXX_TRUE@rbt03_SOURCES = rbt03.cpp #RedBlackTable +@ENABLE_CXX_TRUE@rbt03_LDADD = $(LDADD) -lqsecmnxx +@ENABLE_CXX_TRUE@sp01_SOURCES = sp01.cpp # ScopedPtr +@ENABLE_CXX_TRUE@sp01_LDADD = $(LDADD) -lqsecmnxx +@ENABLE_CXX_TRUE@sp02_SOURCES = sp02.cpp # SharedPtr +@ENABLE_CXX_TRUE@sp02_LDADD = $(LDADD) -lqsecmnxx all: all-am .SUFFIXES: -.SUFFIXES: .c .lo .o .obj +.SUFFIXES: .c .cpp .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ @@ -599,6 +679,12 @@ clean-binPROGRAMS: list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list +arr01$(EXEEXT): $(arr01_OBJECTS) $(arr01_DEPENDENCIES) $(EXTRA_arr01_DEPENDENCIES) + @rm -f arr01$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(arr01_OBJECTS) $(arr01_LDADD) $(LIBS) +bh01$(EXEEXT): $(bh01_OBJECTS) $(bh01_DEPENDENCIES) $(EXTRA_bh01_DEPENDENCIES) + @rm -f bh01$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(bh01_OBJECTS) $(bh01_LDADD) $(LIBS) chr01$(EXEEXT): $(chr01_OBJECTS) $(chr01_DEPENDENCIES) $(EXTRA_chr01_DEPENDENCIES) @rm -f chr01$(EXEEXT) $(AM_V_CCLD)$(LINK) $(chr01_OBJECTS) $(chr01_LDADD) $(LIBS) @@ -638,9 +724,15 @@ fs03$(EXEEXT): $(fs03_OBJECTS) $(fs03_DEPENDENCIES) $(EXTRA_fs03_DEPENDENCIES) glob01$(EXEEXT): $(glob01_OBJECTS) $(glob01_DEPENDENCIES) $(EXTRA_glob01_DEPENDENCIES) @rm -f glob01$(EXEEXT) $(AM_V_CCLD)$(LINK) $(glob01_OBJECTS) $(glob01_LDADD) $(LIBS) -htb$(EXEEXT): $(htb_OBJECTS) $(htb_DEPENDENCIES) $(EXTRA_htb_DEPENDENCIES) - @rm -f htb$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(htb_OBJECTS) $(htb_LDADD) $(LIBS) +hl01$(EXEEXT): $(hl01_OBJECTS) $(hl01_DEPENDENCIES) $(EXTRA_hl01_DEPENDENCIES) + @rm -f hl01$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(hl01_OBJECTS) $(hl01_LDADD) $(LIBS) +htb01$(EXEEXT): $(htb01_OBJECTS) $(htb01_DEPENDENCIES) $(EXTRA_htb01_DEPENDENCIES) + @rm -f htb01$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(htb01_OBJECTS) $(htb01_LDADD) $(LIBS) +htb02$(EXEEXT): $(htb02_OBJECTS) $(htb02_DEPENDENCIES) $(EXTRA_htb02_DEPENDENCIES) + @rm -f htb02$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(htb02_OBJECTS) $(htb02_LDADD) $(LIBS) ipad01$(EXEEXT): $(ipad01_OBJECTS) $(ipad01_DEPENDENCIES) $(EXTRA_ipad01_DEPENDENCIES) @rm -f ipad01$(EXEEXT) $(AM_V_CCLD)$(LINK) $(ipad01_OBJECTS) $(ipad01_LDADD) $(LIBS) @@ -680,9 +772,15 @@ pio$(EXEEXT): $(pio_OBJECTS) $(pio_DEPENDENCIES) $(EXTRA_pio_DEPENDENCIES) pma$(EXEEXT): $(pma_OBJECTS) $(pma_DEPENDENCIES) $(EXTRA_pma_DEPENDENCIES) @rm -f pma$(EXEEXT) $(AM_V_CCLD)$(LINK) $(pma_OBJECTS) $(pma_LDADD) $(LIBS) -rbt$(EXEEXT): $(rbt_OBJECTS) $(rbt_DEPENDENCIES) $(EXTRA_rbt_DEPENDENCIES) - @rm -f rbt$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(rbt_OBJECTS) $(rbt_LDADD) $(LIBS) +rbt01$(EXEEXT): $(rbt01_OBJECTS) $(rbt01_DEPENDENCIES) $(EXTRA_rbt01_DEPENDENCIES) + @rm -f rbt01$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(rbt01_OBJECTS) $(rbt01_LDADD) $(LIBS) +rbt02$(EXEEXT): $(rbt02_OBJECTS) $(rbt02_DEPENDENCIES) $(EXTRA_rbt02_DEPENDENCIES) + @rm -f rbt02$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(rbt02_OBJECTS) $(rbt02_LDADD) $(LIBS) +rbt03$(EXEEXT): $(rbt03_OBJECTS) $(rbt03_DEPENDENCIES) $(EXTRA_rbt03_DEPENDENCIES) + @rm -f rbt03$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(rbt03_OBJECTS) $(rbt03_LDADD) $(LIBS) rex01$(EXEEXT): $(rex01_OBJECTS) $(rex01_DEPENDENCIES) $(EXTRA_rex01_DEPENDENCIES) @rm -f rex01$(EXEEXT) $(AM_V_CCLD)$(LINK) $(rex01_OBJECTS) $(rex01_LDADD) $(LIBS) @@ -701,6 +799,12 @@ sll$(EXEEXT): $(sll_OBJECTS) $(sll_DEPENDENCIES) $(EXTRA_sll_DEPENDENCIES) slmb01$(EXEEXT): $(slmb01_OBJECTS) $(slmb01_DEPENDENCIES) $(EXTRA_slmb01_DEPENDENCIES) @rm -f slmb01$(EXEEXT) $(AM_V_CCLD)$(LINK) $(slmb01_OBJECTS) $(slmb01_LDADD) $(LIBS) +sp01$(EXEEXT): $(sp01_OBJECTS) $(sp01_DEPENDENCIES) $(EXTRA_sp01_DEPENDENCIES) + @rm -f sp01$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(sp01_OBJECTS) $(sp01_LDADD) $(LIBS) +sp02$(EXEEXT): $(sp02_OBJECTS) $(sp02_DEPENDENCIES) $(EXTRA_sp02_DEPENDENCIES) + @rm -f sp02$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(sp02_OBJECTS) $(sp02_LDADD) $(LIBS) str01$(EXEEXT): $(str01_OBJECTS) $(str01_DEPENDENCIES) $(EXTRA_str01_DEPENDENCIES) @rm -f str01$(EXEEXT) $(AM_V_CCLD)$(LINK) $(str01_OBJECTS) $(str01_LDADD) $(LIBS) @@ -726,6 +830,8 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arr01.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bh01.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chr01.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dir01.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dll.Po@am__quote@ @@ -739,7 +845,9 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fs02.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fs03.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/glob01.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htb.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hl01.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htb01.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htb02.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ipad01.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lda.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main01.Po@am__quote@ @@ -753,13 +861,17 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/path01.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pio.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pma.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rbt.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rbt01.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rbt02.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rbt03.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rex01.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sio01.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sio02.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sio03.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sll.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/slmb01.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sp01.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sp02.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/str01.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/task01.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/time.Po@am__quote@ @@ -788,6 +900,27 @@ distclean-compile: @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< +.cpp.o: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< + +.cpp.obj: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.cpp.lo: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< + mostlyclean-libtool: -rm -f *.lo @@ -1000,11 +1133,6 @@ uninstall-am: uninstall-binPROGRAMS uninstall-binPROGRAMS -#bin_PROGRAMS += rex02 -#rex02_SOURCES = rex02.cpp -#rex02_CXXFLAGS = -I/usr/lib/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread -#rex02_LDFLAGS = -pthread -Wl,-Bsymbolic-functions -lwx_gtk2ud_richtext-2.8 -lwx_gtk2ud_aui-2.8 -lwx_gtk2ud_xrc-2.8 -lwx_gtk2ud_qa-2.8 -lwx_gtk2ud_html-2.8 -lwx_gtk2ud_adv-2.8 -lwx_gtk2ud_core-2.8 -lwx_baseud_xml-2.8 -lwx_baseud_net-2.8 -lwx_baseud-2.8 - # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: diff --git a/qse/samples/cmn/arr01.cpp b/qse/samples/cmn/arr01.cpp new file mode 100644 index 00000000..2759c1b6 --- /dev/null +++ b/qse/samples/cmn/arr01.cpp @@ -0,0 +1,147 @@ +#include +#include +#include +#include + +/* +typedef QSE::Array IntArray; + +struct IntClass +{ + IntClass (int x = 0): x (x) {} + int x; +}; + +struct IntClassComparator +{ + int operator() (const IntClass& v, int y) const + { + IntTable::DefaultComparator comp; + return comp (v.x, y); + } +}; + +*/ + +#if 1 +class PosStr: public std::string +{ +public: + PosStr (const char* str = ""): std::string(str), pos((qse_size_t)-1) {}; + + PosStr (const PosStr& ps): std::string (ps), pos(ps.pos) + { + } + + ~PosStr() + { + } + + + qse_size_t pos; +}; +#else + +class PosStr +{ +public: + PosStr (const char* str = "") + { + strcpy (buf, str); + } + + const char* c_str() const { return this->buf; } + const char* data() const { return this->buf; } + + char buf[512]; +}; +#endif + + +struct cstr_comparator +{ + int operator() (const char* v1, const std::string& v2) const + { + return strcmp (v1, v2.c_str()); + } +}; + + +typedef QSE::Array StrArray; + + +int main () +{ + //StrArray h (QSE_NULL, 100); + StrArray h (QSE_NULL, 15); + char buf[20]; + + for (int i = 0; i < 20; i++) + { + sprintf (buf, "hello %d", i); + PosStr x (buf); + h.insert (0, x); + } + +#if 0 + printf ("%s\n", h.get(3).c_str()); + h.remove (3, 5); + printf ("%s\n", h.get(3).c_str()); + h.remove (3, 5); + printf ("%s\n", h.get(3).c_str()); +#endif + printf ("--------------------\n"); + for (qse_size_t i = 0; i < h.getSize(); i++) + { + printf ("[%s] at [%lu]\n", h[i].c_str(), (unsigned long int)h.getIndex(h[i])); + } + printf ("--------------------\n"); + + StrArray h2 (h); + StrArray h3; + + h3 = h2; + h.clear (true); + printf ("--------------------\n"); + printf ("%d\n", (int)h.getSize()); + printf ("--------------------\n"); + for (qse_size_t i = 0; i < h2.getSize(); i++) + { + printf ("[%s] at [%lu]\n", h2[i].c_str(), (unsigned long int)h2.getIndex(h2[i])); + } + printf ("--------------------\n"); + + h3.insert (21, "this is a large string"); + printf ("%d %d\n", (int)h2.getSize(), (int)h3.getSize()); + printf ("--------------------\n"); + h3.insert (21, "mystery!"); + for (qse_size_t i = 0; i < h3.getSize(); i++) + { + printf ("[%s] at [%lu]\n", h3[i].c_str(), (unsigned long int)h3.getIndex(h3[i])); + } + + printf ("--------------------\n"); + h3.setCapacity (6); + h3.insert (6, "good?"); + h3.rotate (1, h3.getSize() / 2); + printf ("[%s] [%s]\n", h3.getValueAt(5).c_str(), h3.getValueAt(6).c_str()); + printf ("%d\n", (int)h3.getSize()); + + printf ("--------------------\n"); + h3.insert (1, "bad?"); + for (qse_size_t i = 0; i < h3.getSize(); i++) + { + printf ("[%s] at [%lu]\n", h3[i].c_str(), (unsigned long int)h3.getIndex(h3[i])); + } + + printf ("--------------------\n"); + QSE::Array a; + a.insert (0, 10); + a.insert (0, 20); + a.insert (0, 30); + const int& t = a[2]; + printf ("%lu\n", (unsigned long int)a.getIndex(t)); + + + return 0; +} diff --git a/qse/samples/cmn/bh01.cpp b/qse/samples/cmn/bh01.cpp new file mode 100644 index 00000000..c7611b59 --- /dev/null +++ b/qse/samples/cmn/bh01.cpp @@ -0,0 +1,224 @@ +#include +#include +#include +#include +#include + +class PosStr: public std::string +{ +public: + PosStr (const char* str = ""): std::string(str), heap_pos((qse_size_t)-1) {}; + + PosStr (const PosStr& ps): std::string (ps), heap_pos(ps.heap_pos) + { + } + + ~PosStr() + { + } + + + qse_size_t heap_pos; +}; + +struct cstr_comparator +{ + bool operator() (const char* v1, const PosStr& v2) const + { + //return strcmp (v1, v2.c_str()) > 0; + return strcmp (v1, v2.c_str()) < 0; + } +}; + +struct str_comparator +{ + bool operator() (const PosStr& v1, const PosStr& v2) const + { + //return strcmp (v1.c_str(), v2.c_str()) > 0; + return strcmp (v1.c_str(), v2.c_str()) < 0; + } +}; + + +typedef QSE::BinaryHeap StrHeap; +typedef QSE::LinkedList StrList; + + +class Container +{ +public: + struct str_ptr_greater_than + { + bool operator() (const StrList::Node* v1, const StrList::Node* v2) const + { + //return strcmp (v1.c_str(), v2.c_str()) > 0; + return strcmp (v1->value.c_str(), v2->value.c_str()) > 0; + } + }; + + struct str_ptr_positioner + { + void operator() (StrList::Node* v, qse_size_t index) const + { + v->value.heap_pos = index; + } + }; + + + typedef QSE::BinaryHeap StrPtrHeap; + + StrList::Node* insert (const char* str) + { + StrList::Node* node = this->str_list.append (PosStr(str)); + qse_size_t heap_pos = this->str_heap.insert (node); + + return node; + } + + bool isEmpty () const + { + QSE_ASSERT (this->str_list.isEmpty() == this->str_heap.isEmpty()); + return this->str_list.isEmpty(); + } + + qse_size_t getSize() const + { + QSE_ASSERT (this->str_list.getSize() == this->str_heap.getSize()); + return this->str_list.getSize(); + } + + const PosStr& getLargest () const + { + StrList::Node* node = this->str_heap.getValueAt(0); + return node->value; + } + + void removeLargest () + { + StrList::Node* node = this->str_heap.getValueAt(0); + this->str_heap.remove (0); + this->str_list.remove (node); + } + + void remove (StrList::Node* node) + { + this->str_heap.remove (node->value.heap_pos); + this->str_list.remove (node); + } + + StrList::Node* getHeapValueAt (qse_size_t index) + { + return this->str_heap.getValueAt(index); + } + + + StrList str_list; + StrPtrHeap str_heap; +}; + + + + struct IntComparator + { + bool operator() (int v1, int v2) const + { + //return !(v1 > v2); + //return v1 > v2; + return v1 < v2; + } + }; + + +int main () +{ + char buf[20]; + StrHeap h; + + for (int i = 0; i < 20; i++) + { + sprintf (buf, "hello %d", i); + h.insert (buf); + h.insert (buf); + } + + for (int i = 0; i < h.getSize(); i++) + { + printf ("%05d %s\n", (int)h.getIndex(h[i]), h[i].c_str()); + } + printf ("----------------\n"); + + + while (!h.isEmpty()) + { + printf ("%s\n", h[0].c_str()); + h.remove (0); + } + printf ("----------------\n"); + { + + QSE::BinaryHeap h2; + + h2.insert (70); + h2.insert (90); + h2.insert (10); + h2.insert (5); + h2.insert (88); + h2.insert (87); + h2.insert (300); + h2.insert (91); + h2.insert (100); + h2.insert (200); + + while (h2.getSize() > 0) + { + printf ("%d\n", h2.getValueAt(0)); + h2.remove (0); + } + } + + printf ("----------------\n"); + + { + Container c; + StrList::Node* node2, * node14; + for (int i = 0; i < 20; i++) + { + sprintf (buf, "hello %d", i); + + //c.insert (buf); + + if (i == 2) + { + node2 = c.insert (buf); + printf ("2nd => %s\n", node2->value.c_str()); + } + else if (i == 14) + { + node14 = c.insert (buf); + printf ("14th => %s\n", node14->value.c_str()); + } + else c.insert (buf); + } + + /* + for (int i = 0; i < c.getSize(); i++) + { + StrList::Node* node = c.getHeapValueAt(i); + + printf ("%s %d\n", node->value.c_str(), (int)node->value.heap_pos); + } + */ + + for (int i = 0; c.getSize() > 0; i++) + { + if (i == 3) c.remove (node2); + if (i == 5) c.remove (node14); + + const char* largest = c.getLargest().c_str(); + printf ("%s\n", largest); + c.removeLargest (); + } + } + + return 0; +} diff --git a/qse/samples/cmn/chr01.c b/qse/samples/cmn/chr01.c index d560a915..c4676093 100644 --- a/qse/samples/cmn/chr01.c +++ b/qse/samples/cmn/chr01.c @@ -1,6 +1,6 @@ #include #include -#include +#include #include @@ -47,7 +47,12 @@ int main () qse_setdflcmgrbyid (QSE_CMGR_SLMB); #endif + + qse_openstdsios (); + R (test1); + qse_closestdsios (); + return 0; } diff --git a/qse/samples/cmn/fio01.c b/qse/samples/cmn/fio01.c index ed79946e..7d7b29f5 100644 --- a/qse/samples/cmn/fio01.c +++ b/qse/samples/cmn/fio01.c @@ -1,7 +1,7 @@ #include #include #include -#include +#include #include @@ -300,6 +300,7 @@ static int test3 (void) int main () { + qse_openstdsios (); setlocale (LC_ALL, ""); qse_printf (QSE_T("--------------------------------------------------------------------------------\n")); @@ -314,5 +315,6 @@ int main () qse_printf (QSE_T("Run \"rm -f fio01-?.txt\" to delete garbages\n")); qse_printf (QSE_T("--------------------------------------------------------------------------------\n")); + qse_closestdsios (); return 0; } diff --git a/qse/samples/cmn/fio02.c b/qse/samples/cmn/fio02.c index 33162d55..840328ee 100644 --- a/qse/samples/cmn/fio02.c +++ b/qse/samples/cmn/fio02.c @@ -1,7 +1,7 @@ #include #include #include -#include +#include #define R(f) \ do { \ @@ -79,6 +79,8 @@ static int test1 (void) int main () { + qse_openstdsios(); R (test1); + qse_closestdsios(); return 0; } diff --git a/qse/samples/cmn/fma.c b/qse/samples/cmn/fma.c index 0bcdd34e..a46bfc5f 100644 --- a/qse/samples/cmn/fma.c +++ b/qse/samples/cmn/fma.c @@ -1,7 +1,7 @@ #include #include #include -#include +#include #define R(f) \ do { \ @@ -28,16 +28,21 @@ static int test1 () int i; int* ptr[100]; - qse_fma_t* fma = qse_fma_open (QSE_MMGR_GETDFL(), 0, sizeof(int), 10, 5); + qse_fma_t* fma = qse_fma_open (QSE_MMGR_GETDFL(), 0, sizeof(int), 10 /* max block size */, 5 /* max chunks */); if (fma == QSE_NULL) { qse_printf (QSE_T("cannot open fma\n")); return -1; } + /* max 50 (10 * 5) allocations should be possible */ for (i = 0; i < 100; i++) { ptr[i] = qse_fma_alloc (fma, sizeof(int)); + + if (i < 50) QSE_ASSERT (ptr[i] != QSE_NULL); + else QSE_ASSERT (ptr[i] == QSE_NULL); + if (ptr[i]) { qse_printf (QSE_T("%d %p\n"), i, ptr[i]); @@ -67,6 +72,9 @@ static int test1 () for (i = 0; i < 100; i++) { ptr[i] = qse_fma_alloc (fma, sizeof(int)); + if (i < 50) QSE_ASSERT (ptr[i] != QSE_NULL); + else QSE_ASSERT (ptr[i] == QSE_NULL); + if (ptr[i]) { qse_printf (QSE_T("%d %p\n"), i, ptr[i]); @@ -79,6 +87,21 @@ static int test1 () return 0; } +static void* fma_alloc (qse_mmgr_t* mmgr, qse_size_t size) +{ + return qse_fma_alloc (mmgr->ctx, size); +} + +static void* fma_realloc (qse_mmgr_t* mmgr, void* ptr, qse_size_t size) +{ + return qse_fma_realloc (mmgr->ctx, ptr, size); +} + +static void fma_free (qse_mmgr_t* mmgr, void* ptr) +{ + qse_fma_free (mmgr->ctx, ptr); +} + static qse_rbt_walk_t walk (qse_rbt_t* rbt, qse_rbt_pair_t* pair, void* ctx) { qse_printf (QSE_T("key = %lld, value = %lld\n"), @@ -90,9 +113,9 @@ static int test2 () { qse_mmgr_t mmgr = { - (qse_mmgr_alloc_t) qse_fma_alloc, - (qse_mmgr_realloc_t) qse_fma_realloc, - (qse_mmgr_free_t) qse_fma_free, + fma_alloc, + fma_realloc, + fma_free, QSE_NULL }; qse_fma_t* fma; @@ -111,22 +134,46 @@ static int test2 () } mmgr.ctx = fma; - if (qse_rbt_init (&rbt, &mmgr, QSE_SIZEOF(long), QSE_SIZEOF(long)) == QSE_NULL) + if (qse_rbt_init (&rbt, &mmgr, QSE_SIZEOF(long int), QSE_SIZEOF(long int)) <= -1) { qse_printf (QSE_T("cannot initialize a tree\n")); qse_fma_close (fma); return -1; } + qse_rbt_setstyle (&rbt, &style); + for (x = 10; x < 100; x++) { - long y = x * x; + long int y = x * x; + if (qse_rbt_insert (&rbt, &x, 1, &y, 1) == QSE_NULL) { qse_printf (QSE_T("failed to insert. out of memory\n")); break; } + + + } + + for (x = 10; x < 105; x++) + { + long int y = x * x, yy; + qse_rbt_pair_t* pair; + + pair = qse_rbt_search (&rbt, &x, 1); + if (x < 100) + { + QSE_ASSERT (pair != QSE_NULL); + yy = *(long int*)QSE_RBT_VPTR(pair); + QSE_ASSERT (yy = y); + qse_printf (QSE_T("%ld => %ld\n"), (long int)x, (long int)yy); + } + else + { + QSE_ASSERT (pair == QSE_NULL); + } } qse_rbt_walk (&rbt, walk, QSE_NULL); @@ -139,7 +186,9 @@ static int test2 () int main () { + qse_openstdsios (); R (test1); R (test2); + qse_closestdsios (); return 0; } diff --git a/qse/samples/cmn/fmt01.c b/qse/samples/cmn/fmt01.c index 1911235a..1491ec98 100644 --- a/qse/samples/cmn/fmt01.c +++ b/qse/samples/cmn/fmt01.c @@ -1,7 +1,7 @@ #include #include #include -#include +#include #include #if defined(_WIN32) @@ -56,9 +56,11 @@ static int test_main (int argc, qse_char_t* argv[]) int qse_main (int argc, qse_achar_t* argv[]) { + int x; + #if defined(_WIN32) - char locale[100]; - UINT codepage = GetConsoleOutputCP(); + char locale[100]; + UINT codepage = GetConsoleOutputCP(); if (codepage == CP_UTF8) { /*SetConsoleOUtputCP (CP_UTF8);*/ @@ -66,14 +68,17 @@ int qse_main (int argc, qse_achar_t* argv[]) } else { - sprintf (locale, ".%u", (unsigned int)codepage); - setlocale (LC_ALL, locale); + sprintf (locale, ".%u", (unsigned int)codepage); + setlocale (LC_ALL, locale); qse_setdflcmgrbyid (QSE_CMGR_SLMB); } #else - setlocale (LC_ALL, ""); + setlocale (LC_ALL, ""); qse_setdflcmgrbyid (QSE_CMGR_SLMB); #endif - return qse_runmain (argc, argv, test_main); + qse_openstdsios (); + x = qse_runmain (argc, argv, test_main); + qse_closestdsios (); + return x; } diff --git a/qse/samples/cmn/fmt02.c b/qse/samples/cmn/fmt02.c index d4f81f0f..b22a6d6d 100644 --- a/qse/samples/cmn/fmt02.c +++ b/qse/samples/cmn/fmt02.c @@ -1,7 +1,7 @@ #include #include #include -#include +#include #include #if defined(_WIN32) @@ -76,9 +76,11 @@ static int test_main (int argc, qse_char_t* argv[]) int qse_main (int argc, qse_achar_t* argv[]) { + int x; + #if defined(_WIN32) - char locale[100]; - UINT codepage = GetConsoleOutputCP(); + char locale[100]; + UINT codepage = GetConsoleOutputCP(); if (codepage == CP_UTF8) { /*SetConsoleOUtputCP (CP_UTF8);*/ @@ -91,9 +93,12 @@ int qse_main (int argc, qse_achar_t* argv[]) qse_setdflcmgrbyid (QSE_CMGR_SLMB); } #else - setlocale (LC_ALL, ""); + setlocale (LC_ALL, ""); qse_setdflcmgrbyid (QSE_CMGR_SLMB); #endif - return qse_runmain (argc, argv, test_main); + qse_openstdsios (); + x = qse_runmain (argc, argv, test_main); + qse_closestdsios (); + return x; } diff --git a/qse/samples/cmn/fs01.c b/qse/samples/cmn/fs01.c index 41e56adc..76ad367f 100644 --- a/qse/samples/cmn/fs01.c +++ b/qse/samples/cmn/fs01.c @@ -2,7 +2,7 @@ #include #include #include -#include +#include #include #if defined(_WIN32) @@ -75,9 +75,11 @@ int fs_main (int argc, qse_char_t* argv[]) int qse_main (int argc, qse_achar_t* argv[]) { + int x; + #if defined(_WIN32) - char locale[100]; - UINT codepage = GetConsoleOutputCP(); + char locale[100]; + UINT codepage = GetConsoleOutputCP(); if (codepage == CP_UTF8) { /*SetConsoleOUtputCP (CP_UTF8);*/ @@ -85,14 +87,21 @@ int qse_main (int argc, qse_achar_t* argv[]) } else { - sprintf (locale, ".%u", (unsigned int)codepage); - setlocale (LC_ALL, locale); + sprintf (locale, ".%u", (unsigned int)codepage); + setlocale (LC_ALL, locale); qse_setdflcmgrbyid (QSE_CMGR_SLMB); } #else setlocale (LC_ALL, ""); qse_setdflcmgrbyid (QSE_CMGR_SLMB); #endif - return qse_runmain (argc, argv, fs_main); + + qse_openstdsios (); + + x = qse_runmain (argc, argv, fs_main); + + qse_closestdsios (); + + return x; } diff --git a/qse/samples/cmn/hl01.cpp b/qse/samples/cmn/hl01.cpp new file mode 100644 index 00000000..07ec20b9 --- /dev/null +++ b/qse/samples/cmn/hl01.cpp @@ -0,0 +1,148 @@ +#include +#include +#include +#include +#include +#include + + +class T +{ +public: + T(int x = 0): x(x) { +// printf ("constructor\n"); + y = x + 99; + } + ~T() { +// printf ("destructor\n"); + } + bool operator== (const T& x) const { return this->x == x.x; } + qse_size_t hashCode() const { return x; } + + int getValue() const { return this->x; } + int getY() const { return this->y; } +protected: + int x; + int y; +}; + +void* operator new (size_t x, int q) +{ + return ::operator new (x); +} + + +struct IntHasher +{ + qse_size_t operator() (int v) const { return v; } +}; + +struct IntIsEqual +{ + qse_size_t operator() (int v1, const T& v2) const { return v1 == v2.getValue(); } +}; + +typedef QSE::HashList IntList; + +int main () +{ + qse_openstdsios (); + + T* x; + //QSE::StdMmgr* mmgr = QSE::StdMmgr::getDFL(); + //QSE::HeapMmgr heap_mmgr (QSE::Mmgr::getDFL(), 1000000); + //QSE::Mmgr* mmgr = &heap_mmgr; + QSE::Mmgr* mmgr = QSE_NULL; + +/* + x = new(mmgr) T; //[10]; + +printf ("x====> %p\n", x); + x->~T(); + //for (int i = 0; i < 10; i++) x[i].~T(); + //::operator delete[] (x, mmgr); + ::operator delete (x, mmgr); + //delete[] x; + +printf ("----------------------\n"); + T* y = new(10) T; + y->~T(); + ::operator delete(y); +printf ("----------------------\n"); +*/ +try +{ + + T t1,t2,t3; + +#if 0 +printf ("----------------------\n"); + { + QSE::LinkedList l (mmgr, 100); +printf ("----------------------\n"); + l.append (t1); +printf ("----------------------\n"); + l.append (t2); + l.append (t3); +printf ("================\n"); + + QSE::LinkedList l2 (mmgr, 100); + + l2 = l; + } +printf ("----------------------\n"); +#endif + + //QSE::HashList h (mmgr, 1000, 75, 1000); + QSE::HashList h (mmgr, 1000, 75, 500); +for (int i = 0; i < 1000; i++) +{ + T x(i); + h.insert (x); +} +printf ("h.getSize() => %d\n", (int)h.getSize()); + + QSE::HashList h2 (mmgr, 1000, 75, 700); + h2 = h; + + for (QSE::HashList::Iterator it = h2.getIterator(); it.isLegit(); it++) + { + printf ("%d\n", (*it).getValue()); + } +printf ("----------------------\n"); + + + printf ("%p\n", h2.getHeadNode()); +printf ("----------------------\n"); + + IntList hl; + IntList::Iterator it; + hl.insert (10); + hl.insert (150); + hl.insert (200); + for (it = hl.getIterator(); it.isLegit(); it++) + { + printf ("%d\n", *it); + } + + +printf ("----------------------\n"); + + { + const QSE::HashList& h3 = h2; + const T* tt = h3.heterofindValue (100); + if (tt) printf ("%d:%d\n", tt->getValue(), tt->getY()); + else printf ("not found...\n"); + } +printf ("----------------------\n"); +} +catch (QSE::Exception& e) +{ + qse_printf (QSE_T("Exception: %s\n"), QSE_EXCEPTION_NAME(e)); +} + + + qse_closestdsios (); + return 0; +} + diff --git a/qse/samples/cmn/htb.c b/qse/samples/cmn/htb01.c similarity index 99% rename from qse/samples/cmn/htb.c rename to qse/samples/cmn/htb01.c index 623851c4..7fcbed35 100644 --- a/qse/samples/cmn/htb.c +++ b/qse/samples/cmn/htb01.c @@ -2,7 +2,7 @@ #include #include #include -#include +#include #define R(f) \ do { \ @@ -402,7 +402,7 @@ static int test5 () qse_printf (QSE_T("[FAILED]\n")); } else - { + { qse_printf (QSE_T("[OK]\n")); } } @@ -415,6 +415,7 @@ static int test5 () int main () { + qse_openstdsios (); R (test1); R (test2); #if 0 @@ -422,5 +423,6 @@ int main () R (test4); #endif R (test5); + qse_closestdsios (); return 0; } diff --git a/qse/samples/cmn/htb02.cpp b/qse/samples/cmn/htb02.cpp new file mode 100644 index 00000000..b4f99ef0 --- /dev/null +++ b/qse/samples/cmn/htb02.cpp @@ -0,0 +1,221 @@ +#include +#include +#include +#include +#include +#include +#include + +struct IntHasher +{ + qse_size_t operator() (int v) const + { + return v; + } +}; + +typedef QSE::HashTable IntTable; + +struct IntClass +{ + IntClass (int x = 0): x (x) {} + int x; +}; + +struct IntClassHasher +{ + qse_size_t operator() (const IntClass& v) const + { + return v.x; + } +}; + +struct IntClassComparator +{ + bool operator() (const IntClass& v, int y) const + { + return v.x == y; + } +}; + + + +struct StrHasher +{ + qse_size_t operator() (const std::string& v) const + { + return QSE::Hashable::getHashCode (v.c_str(), v.length()); + } +}; + +typedef QSE::HashTable Str1Table; + +struct cstr_hasher +{ + qse_size_t operator() (const char* v) const + { + return QSE::Hashable::getHashCode (v, strlen(v)); + } +}; + +struct cstr_is_equal +{ + int operator() (const char* v1, const std::string& v2) const + { + return strcmp (v1, v2.c_str()) == 0; + } +}; + + +int main () +{ +// qse_openstdsios (); + + QSE::HeapMmgr heap_mmgr (QSE::Mmgr::getDFL(), 3000000); + //QSE::HashTable int_table (&heap_mmgr, 1000); + IntTable int_table (NULL, IntTable::DEFAULT_CAPACITY, IntTable::DEFAULT_LOAD_FACTOR, 1000); + //IntTable int_table (NULL, IntTable::DEFAULT_CAPACITY, IntTable::DEFAULT_LOAD_FACTOR, 0); +printf ("----------\n"); + for (int i = 0; i < 100; i++) + { + int_table.insert (i, i * 20); + } + for (int i = 50; i < 150; i++) + { + int_table.upsert (i, i * 20); + } +printf ("----------\n"); + +/* + qse_size_t bucket_size = int_table.getBucketSize(); + for (qse_size_t i = 0; i < bucket_size; i++) + { + IntTable::Bucket* b = int_table.getBucket (i); + } +*/ +printf ("----------\n"); + +/* + IntTable::Pair* pair = int_table.findPairWithCustomKey (IntClass(50)); + if (pair) + { + printf ("pair found.... [%d]\n", pair->value); + } +*/ + + printf ("%p %p\n", int_table.search (60), int_table.search (90)); + printf ("%d %d\n", int_table.remove (60), int_table.remove (60)); + printf ("%d %d\n", int_table.remove (70), int_table.remove (70)); + +/* + printf ("%d\n", int_table[90]); + printf ("%d\n", int_table[9990]); +*/ + + //Str1Table s1 (NULL, IntTable::DEFAULT_CAPACITY, IntTable::DEFAULT_LOAD_FACTOR, 1000); + Str1Table s1 (NULL, IntTable::DEFAULT_CAPACITY, IntTable::DEFAULT_LOAD_FACTOR, 0); + //Str1Table s1; + s1.insert ("hello", 20); + s1.insert ("hello", 20); + s1.insert ("hello kara", 20); + + s1.insert ("this is good", 3896); + printf ("remove = %d\n", s1.remove ("hello")); + printf ("remove = %d\n", s1.remove ("hello")); + + for (int i = 0; i < 100; i++) + { + char buf[128]; + sprintf (buf, "surukaaaa %d", i); + s1.insert (buf, i * 2); + } + + printf ("%d\n", (int)s1.getSize()); + for (Str1Table::Iterator it = s1.getIterator(); it.isLegit(); it++) + { + Str1Table::Pair& pair = *it; + printf ("[%s] [%d]\n", pair.key.c_str(), pair.value); + } + + + printf ("------------------\n"); + { + Str1Table s11 (s1); + for (Str1Table::Iterator it = s11.getIterator(); it.isLegit(); it++) + { + Str1Table::Pair& pair = *it; + printf ("[%s] [%d]\n", pair.key.c_str(), pair.value); + } + } + + printf ("------------------\n"); + { + Str1Table s11 (&heap_mmgr, IntTable::DEFAULT_CAPACITY, IntTable::DEFAULT_LOAD_FACTOR, 0); + //Str1Table s11 (NULL, IntTable::DEFAULT_CAPACITY, IntTable::DEFAULT_LOAD_FACTOR, 200); + //Str1Table s11; + + for (int i = 0; i < 100; i++) + { + char buf[128]; + sprintf (buf, "abiyo %d", i); + s11.insert (buf, i * 2); + } + printf ("%d\n", s11.heteroremove ("abiyo 12")); + printf ("%d\n", s11.heteroremove ("abiyo 12")); + printf ("SIZE => %d\n", (int)s11.getSize()); + for (Str1Table::Iterator it = s11.getIterator(); it.isLegit(); it++) + { + Str1Table::Pair& pair = *it; + printf ("[%s] [%d]\n", pair.key.c_str(), pair.value); + } + printf ("------------------\n"); + + //s11.clear (true); + + s11 = s1; + printf ("SIZE => %d\n", (int)s11.getSize()); + for (Str1Table::Iterator it = s11.getIterator(); it.isLegit(); it++) + { + Str1Table::Pair& pair = *it; + printf ("[%s] [%d]\n", pair.key.c_str(), pair.value); + } + + + printf ("-------------------\n"); + Str1Table::Pair* pair = s11.heterosearch ("surukaaaa 13"); + if (pair) printf ("%d\n", pair->value); + else printf ("not found\n"); + + s11.update ("surukaaaa 13", 999); + s11.update ("surukaaaa 16", 99999); + s11.inject ("surukaaaa 18", 999999, 1); + + pair = s11.heterosearch ("surukaaaa 13"); + if (pair) printf ("%d\n", pair->value); + else printf ("not found\n"); + + + s1 = s11; + } + + printf ("-------------------\n"); + printf ("%d %d\n", (int)s1.getSize(), (int)s1.getCapacity()); + for (Str1Table::ConstIterator it = s1.getConstIterator(); it.isLegit(); it++) + { + const Str1Table::Pair& pair = *it; + printf ("[%s] [%d]\n", pair.key.c_str(), pair.value); + } + + printf ("-------------------\n"); + + for (Str1Table::PairNode* np = s1.getTailNode(); np; np = np->getPrevNode()) + { + Str1Table::Pair& pair = np->value; + printf ("[%s] [%d]\n", pair.key.c_str(), pair.value); + } + + +// qse_closestdsios (); + return 0; +} + diff --git a/qse/samples/cmn/ipad01.c b/qse/samples/cmn/ipad01.c index 937033e7..07f34fb4 100644 --- a/qse/samples/cmn/ipad01.c +++ b/qse/samples/cmn/ipad01.c @@ -1,7 +1,7 @@ #include #include #include -#include +#include #include #if defined(_WIN32) @@ -188,9 +188,10 @@ static int test_main (int argc, qse_char_t* argv[]) int qse_main (int argc, qse_achar_t* argv[]) { + int x; #if defined(_WIN32) - char locale[100]; - UINT codepage = GetConsoleOutputCP(); + char locale[100]; + UINT codepage = GetConsoleOutputCP(); if (codepage == CP_UTF8) { /*SetConsoleOUtputCP (CP_UTF8);*/ @@ -198,14 +199,17 @@ int qse_main (int argc, qse_achar_t* argv[]) } else { - sprintf (locale, ".%u", (unsigned int)codepage); - setlocale (LC_ALL, locale); + sprintf (locale, ".%u", (unsigned int)codepage); + setlocale (LC_ALL, locale); qse_setdflcmgrbyid (QSE_CMGR_SLMB); } #else setlocale (LC_ALL, ""); qse_setdflcmgrbyid (QSE_CMGR_SLMB); #endif - return qse_runmain (argc, argv, test_main); + qse_openstdsios (); + x = qse_runmain (argc, argv, test_main); + qse_closestdsios (); + return x; } diff --git a/qse/samples/cmn/lda.c b/qse/samples/cmn/lda.c index 74ff621c..49cb5ef0 100644 --- a/qse/samples/cmn/lda.c +++ b/qse/samples/cmn/lda.c @@ -1,7 +1,7 @@ #include #include #include -#include +#include #include @@ -451,10 +451,12 @@ static int test5 () int main () { + qse_openstdsios (); R (test1); R (test2); R (test3); R (test4); R (test5); + qse_closestdsios (); return 0; } diff --git a/qse/samples/cmn/main01.c b/qse/samples/cmn/main01.c index a5c67163..76d8f75c 100644 --- a/qse/samples/cmn/main01.c +++ b/qse/samples/cmn/main01.c @@ -1,6 +1,6 @@ #include #include -#include +#include #include @@ -22,9 +22,11 @@ static int test_main (int argc, qse_char_t* argv[]) int qse_main (int argc, qse_achar_t* argv[]) { + int x; + #if defined(_WIN32) char locale[100]; - UINT codepage = GetConsoleOutputCP(); + UINT codepage = GetConsoleOutputCP(); if (codepage == CP_UTF8) { /*SetConsoleOUtputCP (CP_UTF8);*/ @@ -37,10 +39,13 @@ int qse_main (int argc, qse_achar_t* argv[]) qse_setdflcmgrbyid (QSE_CMGR_SLMB); } #else - setlocale (LC_ALL, ""); + setlocale (LC_ALL, ""); qse_setdflcmgrbyid (QSE_CMGR_SLMB); #endif - return qse_runmain (argc, argv, test_main); + qse_openstdsios (); + x = qse_runmain (argc, argv, test_main); + qse_closestdsios (); + return x; } diff --git a/qse/samples/cmn/main02.c b/qse/samples/cmn/main02.c index 90b5c34d..94e009d3 100644 --- a/qse/samples/cmn/main02.c +++ b/qse/samples/cmn/main02.c @@ -1,6 +1,6 @@ #include #include -#include +#include #include @@ -27,9 +27,11 @@ static int test_main (int argc, qse_char_t* argv[], qse_char_t* envp[]) int qse_main (int argc, qse_achar_t* argv[], qse_achar_t* envp[]) { + int x; + #if defined(_WIN32) char locale[100]; - UINT codepage = GetConsoleOutputCP(); + UINT codepage = GetConsoleOutputCP(); if (codepage == CP_UTF8) { /*SetConsoleOUtputCP (CP_UTF8);*/ @@ -37,15 +39,18 @@ int qse_main (int argc, qse_achar_t* argv[], qse_achar_t* envp[]) } else { - sprintf (locale, ".%u", (unsigned int)codepage); - setlocale (LC_ALL, locale); + sprintf (locale, ".%u", (unsigned int)codepage); + setlocale (LC_ALL, locale); qse_setdflcmgrbyid (QSE_CMGR_SLMB); } #else - setlocale (LC_ALL, ""); + setlocale (LC_ALL, ""); qse_setdflcmgrbyid (QSE_CMGR_SLMB); #endif - return qse_runmainwithenv (argc, argv, envp, test_main); + qse_openstdsios (); + x = qse_runmainwithenv (argc, argv, envp, test_main); + qse_closestdsios (); + return x; } diff --git a/qse/samples/cmn/mbwc01.c b/qse/samples/cmn/mbwc01.c index 54abfc34..78407ee4 100644 --- a/qse/samples/cmn/mbwc01.c +++ b/qse/samples/cmn/mbwc01.c @@ -2,7 +2,6 @@ #include #include #include -#include #include @@ -215,7 +214,7 @@ int main () { #if defined(_WIN32) char locale[100]; - UINT codepage = GetConsoleOutputCP(); + UINT codepage = GetConsoleOutputCP(); if (codepage == CP_UTF8) { /*SetConsoleOUtputCP (CP_UTF8);*/ @@ -224,7 +223,7 @@ int main () else { sprintf (locale, ".%u", (unsigned int)codepage); - setlocale (LC_ALL, locale); + setlocale (LC_ALL, locale); qse_setdflcmgrbyid (QSE_CMGR_SLMB); } #else @@ -232,6 +231,8 @@ int main () qse_setdflcmgrbyid (QSE_CMGR_SLMB); #endif + qse_openstdsios (); + qse_printf (QSE_T("--------------------------------------------------------------------------------\n")); qse_printf (QSE_T("Set the environment LANG to a Unicode locale such as UTF-8 if you see the illegal XXXXX errors. If you see such errors in Unicode locales, this program might be buggy. It is normal to see such messages in non-Unicode locales as it uses Unicode data\n")); qse_printf (QSE_T("--------------------------------------------------------------------------------\n")); @@ -241,5 +242,6 @@ int main () R (test3); R (test4); + qse_closestdsios (); return 0; } diff --git a/qse/samples/cmn/mbwc02.c b/qse/samples/cmn/mbwc02.c index bdb361f2..3e97c7ca 100644 --- a/qse/samples/cmn/mbwc02.c +++ b/qse/samples/cmn/mbwc02.c @@ -2,7 +2,6 @@ #include #include #include -#include #include @@ -295,7 +294,7 @@ int main () { #if defined(_WIN32) char locale[100]; - UINT codepage = GetConsoleOutputCP(); + UINT codepage = GetConsoleOutputCP(); if (codepage == CP_UTF8) { /*SetConsoleOUtputCP (CP_UTF8);*/ @@ -312,6 +311,7 @@ int main () qse_setdflcmgrbyid (QSE_CMGR_SLMB); #endif + qse_openstdsios (); qse_printf (QSE_T("--------------------------------------------------------------------------------\n")); qse_printf (QSE_T("Set the environment LANG to a Unicode locale such as UTF-8 if you see the illegal XXXXX errors. If you see such errors in Unicode locales, this program might be buggy. It is normal to see such messages in non-Unicode locales as it uses Unicode data\n")); qse_printf (QSE_T("--------------------------------------------------------------------------------\n")); @@ -321,5 +321,6 @@ int main () R (test3); R (test4); + qse_closestdsios (); return 0; } diff --git a/qse/samples/cmn/nwad01.c b/qse/samples/cmn/nwad01.c index 239a5684..0f9eebfc 100644 --- a/qse/samples/cmn/nwad01.c +++ b/qse/samples/cmn/nwad01.c @@ -1,7 +1,7 @@ #include #include #include -#include +#include #include #if defined(_WIN32) @@ -154,9 +154,10 @@ static int test_main (int argc, qse_char_t* argv[]) int qse_main (int argc, qse_achar_t* argv[]) { + int x; #if defined(_WIN32) char locale[100]; - UINT codepage = GetConsoleOutputCP(); + UINT codepage = GetConsoleOutputCP(); if (codepage == CP_UTF8) { /*SetConsoleOUtputCP (CP_UTF8);*/ @@ -164,14 +165,17 @@ int qse_main (int argc, qse_achar_t* argv[]) } else { - sprintf (locale, ".%u", (unsigned int)codepage); - setlocale (LC_ALL, locale); + sprintf (locale, ".%u", (unsigned int)codepage); + setlocale (LC_ALL, locale); qse_setdflcmgrbyid (QSE_CMGR_SLMB); } #else setlocale (LC_ALL, ""); qse_setdflcmgrbyid (QSE_CMGR_SLMB); #endif - return qse_runmain (argc, argv, test_main); + qse_openstdsios (); + x = qse_runmain (argc, argv, test_main); + qse_closestdsios (); + return x; } diff --git a/qse/samples/cmn/oht.c b/qse/samples/cmn/oht.c index 6989eac8..2e1fbae3 100644 --- a/qse/samples/cmn/oht.c +++ b/qse/samples/cmn/oht.c @@ -1,7 +1,7 @@ #include #include #include -#include +#include #define R(f) \ @@ -123,7 +123,9 @@ static int test2 () int main () { + qse_openstdsios (); R (test1); R (test2); + qse_closestdsios (); return 0; } diff --git a/qse/samples/cmn/pio.c b/qse/samples/cmn/pio.c index 071702f7..56a371a0 100644 --- a/qse/samples/cmn/pio.c +++ b/qse/samples/cmn/pio.c @@ -1,7 +1,7 @@ #include #include #include -#include +#include #include @@ -395,6 +395,7 @@ static int test13 (void) int main () { + qse_openstdsios (); setlocale (LC_ALL, ""); qse_printf (QSE_T("--------------------------------------------------------------------------------\n")); @@ -414,6 +415,6 @@ int main () R (test11); R (test12); R (test13); - + qse_closestdsios (); return 0; } diff --git a/qse/samples/cmn/pma.c b/qse/samples/cmn/pma.c index c850aec6..09de2dd6 100644 --- a/qse/samples/cmn/pma.c +++ b/qse/samples/cmn/pma.c @@ -1,6 +1,6 @@ #include #include -#include +#include #define R(f) \ do { \ @@ -88,7 +88,9 @@ static int test2 () int main () { + qse_openstdsios (); R (test1); R (test2); + qse_closestdsios (); return 0; } diff --git a/qse/samples/cmn/rbt.c b/qse/samples/cmn/rbt01.c similarity index 98% rename from qse/samples/cmn/rbt.c rename to qse/samples/cmn/rbt01.c index 6a0488f6..753cbde1 100644 --- a/qse/samples/cmn/rbt.c +++ b/qse/samples/cmn/rbt01.c @@ -1,7 +1,7 @@ #include #include #include -#include +#include #include @@ -223,8 +223,10 @@ static int test5 () int main () { + qse_openstdsios (); R (test1); R (test2); R (test5); + qse_closestdsios (); return 0; } diff --git a/qse/samples/cmn/rbt02.cpp b/qse/samples/cmn/rbt02.cpp new file mode 100644 index 00000000..387e90d5 --- /dev/null +++ b/qse/samples/cmn/rbt02.cpp @@ -0,0 +1,64 @@ +#include +#include + +class IntPair +{ +public: + IntPair (int x = 0, int y = 0): x (x), y (y) {} + + int getX () const { return this->x; } + int getY () const { return this->y; } + + bool operator== (const IntPair& ip) const { return this->x == ip.x; } + bool operator< (const IntPair& ip) const { return this->x < ip.x; } + bool operator> (const IntPair& ip) const { return this->x > ip.x; } + +protected: + int x, y; +}; + +typedef QSE::RedBlackTree IntTree; + +int main () +{ + + IntTree t (0, 10000); + //IntTree t (0); + + for (int i = 0; i < 20 ; i++) + { + t.insert (IntPair (i , i * 2)); + } + t.clear (true); + for (int i = 0; i < 20 ; i++) + { + t.insert (IntPair (i , i * 2)); + } + + IntTree::ConstIterator it; + for (it = t.getConstIterator(); it.isLegit(); ++it) + { + printf ("%d %d\n", it.getValue().getX(), (*it).getY()); + } + + + printf ("------------------\n"); + IntTree x(t); + for (it = t.getConstIterator(); it.isLegit(); ++it) + { + printf ("%d %d\n", it.getValue().getX(), (*it).getY()); + } + + + + printf ("------------------\n"); + t.insert (IntPair(99, 999)); + t.insert (IntPair(88, 888)); + //IntTree y (QSE_NULL, 5); + x = t; + for (it = x.getConstIterator(); it.isLegit(); ++it) + { + printf ("%d %d\n", it.getValue().getX(), (*it).getY()); + } + return 0; +} diff --git a/qse/samples/cmn/rbt03.cpp b/qse/samples/cmn/rbt03.cpp new file mode 100644 index 00000000..3395f04f --- /dev/null +++ b/qse/samples/cmn/rbt03.cpp @@ -0,0 +1,191 @@ +#include +#include +#include +#include +#include +#include +#include + +typedef QSE::RedBlackTable IntTable; + +struct IntClass +{ + IntClass (int x = 0): x (x) {} + int x; +}; + +struct IntClassComparator +{ + int operator() (const IntClass& v, int y) const + { + IntTable::DefaultComparator comp; + return comp (v.x, y); + } +}; + + +typedef QSE::RedBlackTable Str1Table; + +struct cstr_comparator +{ + int operator() (const char* v1, const std::string& v2) const + { + return strcmp (v1, v2.c_str()); + } +}; + + +int main () +{ +// qse_openstdsios (); + + QSE::HeapMmgr heap_mmgr (QSE::Mmgr::getDFL(), 3000000); + //QSE::RedBlackTable int_table (&heap_mmgr, 1000); + IntTable int_table (NULL, 1000); + //IntTable int_table (NULL, 0); +printf ("----------\n"); + for (int i = 0; i < 100; i++) + { + int_table.insert (i, i * 20); + } + for (int i = 50; i < 150; i++) + { + int_table.upsert (i, i * 20); + } +printf ("----------\n"); + +/* + qse_size_t bucket_size = int_table.getBucketSize(); + for (qse_size_t i = 0; i < bucket_size; i++) + { + IntTable::Bucket* b = int_table.getBucket (i); + } +*/ +printf ("----------\n"); + +/* + IntTable::Pair* pair = int_table.findPairWithCustomKey (IntClass(50)); + if (pair) + { + printf ("pair found.... [%d]\n", pair->value); + } +*/ + + printf ("%p %p\n", int_table.search (60), int_table.search (90)); + printf ("%d %d\n", int_table.remove (60), int_table.remove (60)); + printf ("%d %d\n", int_table.remove (70), int_table.remove (70)); + +/* + printf ("%d\n", int_table[90]); + printf ("%d\n", int_table[9990]); +*/ + + //Str1Table s1 (NULL, 1000); + Str1Table s1 (NULL, 0); + //Str1Table s1; + s1.insert ("hello", 20); + s1.insert ("hello", 20); + s1.insert ("hello kara", 20); + + s1.insert ("this is good", 3896); + printf ("remove = %d\n", s1.remove ("hello")); + printf ("remove = %d\n", s1.remove ("hello")); + + for (int i = 0; i < 100; i++) + { + char buf[128]; + sprintf (buf, "surukaaaa %d", i); + s1.insert (buf, i * 2); + } + + printf ("%d\n", (int)s1.getSize()); + for (Str1Table::Iterator it = s1.getIterator(); it.isLegit(); it++) + { + Str1Table::Pair& pair = *it; + printf ("[%s] [%d]\n", pair.key.c_str(), pair.value); + } + + + printf ("------------------\n"); + { + Str1Table s11 (s1); + for (Str1Table::Iterator it = s11.getIterator(); it.isLegit(); it++) + { + Str1Table::Pair& pair = *it; + printf ("[%s] [%d]\n", pair.key.c_str(), pair.value); + } + } + + printf ("------------------\n"); + { + Str1Table s11 (&heap_mmgr, 0); + //Str1Table s11 (NULL, 200); + //Str1Table s11; + + for (int i = 0; i < 100; i++) + { + char buf[128]; + sprintf (buf, "abiyo %d", i); + s11.insert (buf, i * 2); + } + printf ("%d\n", s11.heteroremove ("abiyo 12")); + printf ("%d\n", s11.heteroremove ("abiyo 12")); + printf ("SIZE => %d\n", (int)s11.getSize()); + for (Str1Table::Iterator it = s11.getIterator(); it.isLegit(); it++) + { + Str1Table::Pair& pair = *it; + printf ("[%s] [%d]\n", pair.key.c_str(), pair.value); + } + printf ("------------------\n"); + + //s11.clear (true); + + s11 = s1; + printf ("SIZE => %d\n", (int)s11.getSize()); + for (Str1Table::Iterator it = s11.getIterator(); it.isLegit(); it++) + { + Str1Table::Pair& pair = *it; + printf ("[%s] [%d]\n", pair.key.c_str(), pair.value); + } + + + printf ("-------------------\n"); + Str1Table::Pair* pair = s11.heterosearch ("surukaaaa 13"); + if (pair) printf ("%d\n", pair->value); + else printf ("not found\n"); + + s11.update ("surukaaaa 13", 999); + s11.update ("surukaaaa 16", 99999); + s11.inject ("surukaaaa 18", 999999, 1); + + pair = s11.heterosearch ("surukaaaa 13"); + if (pair) printf ("%d\n", pair->value); + else printf ("not found\n"); + + + s1 = s11; + } + + printf ("-------------------\n"); + printf ("%d\n", (int)s1.getSize()); + for (Str1Table::ConstIterator it = s1.getConstIterator(); it.isLegit(); it++) + { + const Str1Table::Pair& pair = *it; + printf ("[%s] [%d]\n", pair.key.c_str(), pair.value); + } + + printf ("-------------------\n"); + +#if 0 + for (Str1Table::PairNode* np = s1.getTailNode(); np; np = np->getPrevNode()) + { + Str1Table::Pair& pair = np->value; + printf ("[%s] [%d]\n", pair.key.c_str(), pair.value); + } +#endif + + +// qse_closestdsios (); + return 0; +} + diff --git a/qse/samples/cmn/rex01.c b/qse/samples/cmn/rex01.c index 42c5d400..b2feddb1 100644 --- a/qse/samples/cmn/rex01.c +++ b/qse/samples/cmn/rex01.c @@ -4,7 +4,7 @@ #include #include #include -#include +#include #include #if defined(_WIN32) @@ -33,7 +33,7 @@ static int rex_main (int argc, qse_char_t* argv[]) return -1; } - qse_rex_setoption (rex, QSE_REX_STRICT); + qse_rex_setopt (rex, QSE_REX_STRICT); start = qse_rex_comp (rex, argv[1], qse_strlen(argv[1])); if (start == QSE_NULL) @@ -70,9 +70,10 @@ static int rex_main (int argc, qse_char_t* argv[]) int qse_main (int argc, qse_achar_t* argv[]) { + int x; #if defined(_WIN32) char locale[100]; - UINT codepage = GetConsoleOutputCP(); + UINT codepage = GetConsoleOutputCP(); if (codepage == CP_UTF8) { /*SetConsoleOUtputCP (CP_UTF8);*/ @@ -80,15 +81,18 @@ int qse_main (int argc, qse_achar_t* argv[]) } else { - sprintf (locale, ".%u", (unsigned int)codepage); - setlocale (LC_ALL, locale); + sprintf (locale, ".%u", (unsigned int)codepage); + setlocale (LC_ALL, locale); qse_setdflcmgrbyid (QSE_CMGR_SLMB); } #else - setlocale (LC_ALL, ""); + setlocale (LC_ALL, ""); qse_setdflcmgrbyid (QSE_CMGR_SLMB); #endif - return qse_runmain (argc, argv, rex_main); + qse_openstdsios (); + x = qse_runmain (argc, argv, rex_main); + qse_closestdsios (); + return x; } diff --git a/qse/samples/cmn/sll.c b/qse/samples/cmn/sll.c index 674ad402..ee37cee0 100644 --- a/qse/samples/cmn/sll.c +++ b/qse/samples/cmn/sll.c @@ -1,7 +1,7 @@ #include #include #include -#include +#include #define R(f) \ @@ -60,6 +60,8 @@ static int test1 () int main () { + qse_openstdsios (); R (test1); + qse_closestdsios (); return 0; } diff --git a/qse/samples/cmn/slmb01.c b/qse/samples/cmn/slmb01.c index 830f8d00..39754f3b 100644 --- a/qse/samples/cmn/slmb01.c +++ b/qse/samples/cmn/slmb01.c @@ -2,7 +2,7 @@ #include #include #include -#include +#include #include #include @@ -194,9 +194,11 @@ static int test3 (void) int main () { + int x; + #if defined(_WIN32) - char locale[100]; - UINT codepage = GetConsoleOutputCP(); + char locale[100]; + UINT codepage = GetConsoleOutputCP(); if (codepage == CP_UTF8) { /*SetConsoleOUtputCP (CP_UTF8);*/ @@ -204,8 +206,8 @@ int main () } else { - sprintf (locale, ".%u", (unsigned int)codepage); - setlocale (LC_ALL, locale); + sprintf (locale, ".%u", (unsigned int)codepage); + setlocale (LC_ALL, locale); qse_setdflcmgrbyid (QSE_CMGR_SLMB); } @@ -218,13 +220,15 @@ int main () #endif #else - setlocale (LC_ALL, ""); + setlocale (LC_ALL, ""); qse_setdflcmgrbyid (QSE_CMGR_SLMB); #endif + qse_openstdsios (); R (test1); R (test2); R (test3); + qse_closestdsios (); return 0; } diff --git a/qse/samples/cmn/sp01.cpp b/qse/samples/cmn/sp01.cpp new file mode 100644 index 00000000..c7e5db44 --- /dev/null +++ b/qse/samples/cmn/sp01.cpp @@ -0,0 +1,54 @@ +#include +#include +#include + + +class X +{ +public: + X() + { + printf ("X constructured\n"); + } + + ~X() + { + printf ("X destructed\n"); + } +}; + +struct destroy_x_in_mmgr +{ + void operator() (X* x, void* arg) + { + x->~X(); + ::operator delete (x, (QSE::Mmgr*)arg); + } +}; + +int main () +{ + QSE::HeapMmgr heap_mmgr (QSE::Mmgr::getDFL(), 30000); + + { + QSE::ScopedPtr x1 (new X); + } + printf ("----------------------------\n"); + + { + QSE::ScopedPtr > x3 (new X[10]); + } + printf ("----------------------------\n"); + + { + //QSE::ScopedPtr x2 (new(&heap_mmgr) X, destroy_x); + QSE::ScopedPtr x2 (new(&heap_mmgr) X, &heap_mmgr); + } + printf ("----------------------------\n"); + { + QSE::ScopedPtr > x4 (new(&heap_mmgr) X, &heap_mmgr); + } + printf ("----------------------------\n"); + + return 0; +} diff --git a/qse/samples/cmn/sp02.cpp b/qse/samples/cmn/sp02.cpp new file mode 100644 index 00000000..93e36c8d --- /dev/null +++ b/qse/samples/cmn/sp02.cpp @@ -0,0 +1,69 @@ +#include +#include +#include + +class X +{ +public: + X(int y = 0): y(y) + { + printf ("X(%d) constructured\n", this->y); + } + + ~X() + { + printf ("X(%d) destructed\n", this->y); + } + + int y; +}; + +struct destroy_x_in_mmgr +{ + void operator() (X* x, void* arg) + { + x->~X(); + ::operator delete (x, (QSE::Mmgr*)arg); + } +}; + +void f2 () +{ + QSE::HeapMmgr heap_mmgr (QSE::Mmgr::getDFL(), 30000); + QSE::HeapMmgr heap_mmgr_2 (QSE::Mmgr::getDFL(), 30000); + QSE::SharedPtr y (new X(1)); + QSE::SharedPtr > k (&heap_mmgr); + + { + QSE::SharedPtr x1 (y); + } + printf ("----------------------------\n"); + + { + QSE::SharedPtr > x3 (new X[10]); + } + printf ("----------------------------\n"); + + { + //QSE::SharedPtr x2 (new(&heap_mmgr) X, destroy_x); + QSE::SharedPtr x2 (&heap_mmgr, new(&heap_mmgr) X(2), &heap_mmgr); + } + printf ("----------------------------\n"); + + { + QSE::SharedPtr > x4 (new(&heap_mmgr_2) X(3), &heap_mmgr_2); + + k = x4; + QSE::SharedPtr > x5 (k); + } + printf ("----------------------------\n"); + + QSE_ASSERT (k->y == 3); +} + + +int main () +{ + f2 (); + return 0; +} diff --git a/qse/samples/cmn/str01.c b/qse/samples/cmn/str01.c index 11f8e965..c2b326d8 100644 --- a/qse/samples/cmn/str01.c +++ b/qse/samples/cmn/str01.c @@ -1,6 +1,5 @@ #include #include -#include #include #include @@ -384,6 +383,7 @@ int main () setlocale (LC_ALL, ""); #endif + qse_openstdsios (); qse_printf (QSE_T("--------------------------------------------------------------------------------\n")); qse_printf (QSE_T("Set the environment LANG to a Unicode locale such as UTF-8 if you see the illegal XXXXX errors. If you see such errors in Unicode locales, this program might be buggy. It is normal to see such messages in non-Unicode locales as it uses Unicode data\n")); qse_printf (QSE_T("--------------------------------------------------------------------------------\n")); @@ -401,6 +401,8 @@ int main () R (test16); R (test17); + qse_closestdsios (); + #if defined(_WIN32) SetConsoleOutputCP (old_cp); #endif diff --git a/qse/samples/cmn/task01.c b/qse/samples/cmn/task01.c index aef02094..7e4c68c4 100644 --- a/qse/samples/cmn/task01.c +++ b/qse/samples/cmn/task01.c @@ -2,7 +2,7 @@ #include #include #include -#include +#include #include #if defined(_WIN32) @@ -81,9 +81,11 @@ static int test_main (int argc, qse_char_t* argv[]) int qse_main (int argc, qse_achar_t* argv[]) { + int x; + #if defined(_WIN32) char locale[100]; - UINT codepage = GetConsoleOutputCP(); + UINT codepage = GetConsoleOutputCP(); if (codepage == CP_UTF8) { /*SetConsoleOUtputCP (CP_UTF8);*/ @@ -91,14 +93,19 @@ int qse_main (int argc, qse_achar_t* argv[]) } else { - sprintf (locale, ".%u", (unsigned int)codepage); - setlocale (LC_ALL, locale); + sprintf (locale, ".%u", (unsigned int)codepage); + setlocale (LC_ALL, locale); qse_setdflcmgrbyid (QSE_CMGR_SLMB); } #else - setlocale (LC_ALL, ""); + setlocale (LC_ALL, ""); qse_setdflcmgrbyid (QSE_CMGR_SLMB); #endif - return qse_runmain (argc, argv, test_main); + + qse_openstdsios (); + x = qse_runmain (argc, argv, test_main); + qse_closestdsios (); + + return x; } diff --git a/qse/samples/cmn/time.c b/qse/samples/cmn/time.c index cca2bff6..28ba25af 100644 --- a/qse/samples/cmn/time.c +++ b/qse/samples/cmn/time.c @@ -4,7 +4,7 @@ */ #include -#include +#include #include #include @@ -175,11 +175,13 @@ int main () { setlocale (LC_ALL, ""); + qse_openstdsios (); qse_printf (QSE_T("--------------------------------------------------------------------------------\n")); qse_printf (QSE_T("Set the environment LANG to a Unicode locale such as UTF-8 if you see the illegal XXXXX errors. If you see such errors in Unicode locales, this program might be buggy. It is normal to see such messages in non-Unicode locales as it uses Unicode data\n")); qse_printf (QSE_T("--------------------------------------------------------------------------------\n")); R (test1); + qse_closestdsios (); return 0; } diff --git a/qse/samples/cmn/tre01.c b/qse/samples/cmn/tre01.c index c1f69926..0d687b6e 100644 --- a/qse/samples/cmn/tre01.c +++ b/qse/samples/cmn/tre01.c @@ -4,7 +4,7 @@ #include #include #include -#include +#include #include #if defined(_WIN32) @@ -77,9 +77,10 @@ oops: int qse_main (int argc, qse_achar_t* argv[]) { + int x; #if defined(_WIN32) char locale[100]; - UINT codepage = GetConsoleOutputCP(); + UINT codepage = GetConsoleOutputCP(); if (codepage == CP_UTF8) { /*SetConsoleOUtputCP (CP_UTF8);*/ @@ -87,14 +88,17 @@ int qse_main (int argc, qse_achar_t* argv[]) } else { - sprintf (locale, ".%u", (unsigned int)codepage); - setlocale (LC_ALL, locale); + sprintf (locale, ".%u", (unsigned int)codepage); + setlocale (LC_ALL, locale); qse_setdflcmgrbyid (QSE_CMGR_SLMB); } #else setlocale (LC_ALL, ""); qse_setdflcmgrbyid (QSE_CMGR_SLMB); #endif - return qse_runmain (argc, argv, test_main); + qse_openstdsios (); + x = qse_runmain (argc, argv, test_main); + qse_closestdsios (); + return x; } diff --git a/qse/samples/cmn/uri01.c b/qse/samples/cmn/uri01.c index e21ebd40..c811e22a 100644 --- a/qse/samples/cmn/uri01.c +++ b/qse/samples/cmn/uri01.c @@ -1,7 +1,7 @@ #include #include #include -#include +#include #include #if defined(_WIN32) @@ -116,9 +116,10 @@ static int test_main (int argc, qse_char_t* argv[]) int qse_main (int argc, qse_achar_t* argv[]) { + int x; #if defined(_WIN32) - char locale[100]; - UINT codepage = GetConsoleOutputCP(); + char locale[100]; + UINT codepage = GetConsoleOutputCP(); if (codepage == CP_UTF8) { /*SetConsoleOUtputCP (CP_UTF8);*/ @@ -126,14 +127,17 @@ int qse_main (int argc, qse_achar_t* argv[]) } else { - sprintf (locale, ".%u", (unsigned int)codepage); - setlocale (LC_ALL, locale); + sprintf (locale, ".%u", (unsigned int)codepage); + setlocale (LC_ALL, locale); qse_setdflcmgrbyid (QSE_CMGR_SLMB); } #else setlocale (LC_ALL, ""); qse_setdflcmgrbyid (QSE_CMGR_SLMB); #endif - return qse_runmain (argc, argv, test_main); + qse_openstdsios (); + x = qse_runmain (argc, argv, test_main); + qse_closestdsios (); + return x; } diff --git a/qse/samples/cmn/xma.c b/qse/samples/cmn/xma.c index d95d1501..1a572c41 100644 --- a/qse/samples/cmn/xma.c +++ b/qse/samples/cmn/xma.c @@ -1,6 +1,6 @@ #include #include -#include +#include #define R(f) \ do { \ @@ -146,14 +146,30 @@ static int test4 () qse_xma_close (xma); return 0; } + +static void* xma_alloc (qse_mmgr_t* mmgr, qse_size_t size) +{ + return qse_xma_alloc (mmgr->ctx, size); +} + +static void* xma_realloc (qse_mmgr_t* mmgr, void* ptr, qse_size_t size) +{ + return qse_xma_realloc (mmgr->ctx, ptr, size); +} + +static void xma_free (qse_mmgr_t* mmgr, void* ptr) +{ + qse_xma_free (mmgr->ctx, ptr); +} + static int test5 () { void* ptr[100]; qse_mmgr_t xmammgr = { - (qse_mmgr_alloc_t)qse_xma_alloc, - (qse_mmgr_realloc_t)qse_xma_realloc, - (qse_mmgr_free_t)qse_xma_free, + xma_alloc, + xma_realloc, + xma_free, QSE_NULL }; @@ -202,10 +218,12 @@ static int test5 () int main () { + qse_openstdsios (); R (test1); R (test2); R (test3); R (test4); R (test5); + qse_closestdsios (); return 0; }