changed the behavior of member functions of RefCounted.
Changed SharedPtr to make use of RefCounted. Added StrBase and String.
This commit is contained in:
parent
36e75b3bb2
commit
b4fd70b1e4
@ -33,6 +33,9 @@
|
|||||||
QSE_BEGIN_NAMESPACE(QSE)
|
QSE_BEGIN_NAMESPACE(QSE)
|
||||||
/////////////////////////////////
|
/////////////////////////////////
|
||||||
|
|
||||||
|
/// The RefCounted class provides common functions required to
|
||||||
|
/// implement a reference counted class.
|
||||||
|
|
||||||
class QSE_EXPORT RefCounted: public Uncopyable
|
class QSE_EXPORT RefCounted: public Uncopyable
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
@ -41,29 +44,29 @@ protected:
|
|||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual ~RefCounted ()
|
/// The ref() function increments the reference count and returns
|
||||||
|
/// the incremented count.
|
||||||
|
qse_size_t ref () const
|
||||||
{
|
{
|
||||||
QSE_ASSERT (this->_ref_count == 0);
|
return ++this->_ref_count;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ref () const
|
/// The deref() function decrements the reference count and returns
|
||||||
|
/// the decremented count. The caller should kill the callee if it
|
||||||
|
/// returns 0.
|
||||||
|
qse_size_t deref () const
|
||||||
{
|
{
|
||||||
this->_ref_count++;
|
return --this->_ref_count;
|
||||||
}
|
|
||||||
|
|
||||||
void deref (bool kill = true) const
|
|
||||||
{
|
|
||||||
if (--this->_ref_count == 0 && kill)
|
|
||||||
{
|
|
||||||
delete this;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// The getRefCount() function returns the current reference count.
|
||||||
qse_size_t getRefCount () const
|
qse_size_t getRefCount () const
|
||||||
{
|
{
|
||||||
return this->_ref_count;
|
return this->_ref_count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// The isShared() function returns true if the object is referenced
|
||||||
|
/// more than twice and false otherwise.
|
||||||
bool isShared () const
|
bool isShared () const
|
||||||
{
|
{
|
||||||
return this->_ref_count > 1;
|
return this->_ref_count > 1;
|
||||||
|
@ -53,6 +53,7 @@ if ENABLE_CXX
|
|||||||
pkginclude_HEADERS += \
|
pkginclude_HEADERS += \
|
||||||
Mmgr.hpp StdMmgr.hpp HeapMmgr.hpp Mmged.hpp \
|
Mmgr.hpp StdMmgr.hpp HeapMmgr.hpp Mmged.hpp \
|
||||||
ScopedPtr.hpp SharedPtr.hpp \
|
ScopedPtr.hpp SharedPtr.hpp \
|
||||||
|
StrBase.hpp String.hpp \
|
||||||
Mpool.hpp Association.hpp LinkedList.hpp HashList.hpp HashTable.hpp \
|
Mpool.hpp Association.hpp LinkedList.hpp HashList.hpp HashTable.hpp \
|
||||||
RedBlackTree.hpp RedBlackTable.hpp \
|
RedBlackTree.hpp RedBlackTable.hpp \
|
||||||
Array.hpp BinaryHeap.hpp
|
Array.hpp BinaryHeap.hpp
|
||||||
|
@ -53,6 +53,7 @@ host_triplet = @host@
|
|||||||
@ENABLE_CXX_TRUE@am__append_1 = \
|
@ENABLE_CXX_TRUE@am__append_1 = \
|
||||||
@ENABLE_CXX_TRUE@ Mmgr.hpp StdMmgr.hpp HeapMmgr.hpp Mmged.hpp \
|
@ENABLE_CXX_TRUE@ Mmgr.hpp StdMmgr.hpp HeapMmgr.hpp Mmged.hpp \
|
||||||
@ENABLE_CXX_TRUE@ ScopedPtr.hpp SharedPtr.hpp \
|
@ENABLE_CXX_TRUE@ ScopedPtr.hpp SharedPtr.hpp \
|
||||||
|
@ENABLE_CXX_TRUE@ StrBase.hpp String.hpp \
|
||||||
@ENABLE_CXX_TRUE@ Mpool.hpp Association.hpp LinkedList.hpp HashList.hpp HashTable.hpp \
|
@ENABLE_CXX_TRUE@ Mpool.hpp Association.hpp LinkedList.hpp HashList.hpp HashTable.hpp \
|
||||||
@ENABLE_CXX_TRUE@ RedBlackTree.hpp RedBlackTable.hpp \
|
@ENABLE_CXX_TRUE@ RedBlackTree.hpp RedBlackTable.hpp \
|
||||||
@ENABLE_CXX_TRUE@ Array.hpp BinaryHeap.hpp
|
@ENABLE_CXX_TRUE@ Array.hpp BinaryHeap.hpp
|
||||||
@ -94,9 +95,9 @@ am__pkginclude_HEADERS_DIST = alg.h chr.h cp949.h cp950.h dir.h dll.h \
|
|||||||
nwio.h oht.h opt.h path.h pio.h pma.h rbt.h rex.h sck.h sio.h \
|
nwio.h oht.h opt.h path.h pio.h pma.h rbt.h rex.h sck.h sio.h \
|
||||||
sll.h slmb.h str.h task.h time.h tio.h tmr.h tre.h uni.h uri.h \
|
sll.h slmb.h str.h task.h time.h tio.h tmr.h tre.h uni.h uri.h \
|
||||||
utf8.h xma.h Mmgr.hpp StdMmgr.hpp HeapMmgr.hpp Mmged.hpp \
|
utf8.h xma.h Mmgr.hpp StdMmgr.hpp HeapMmgr.hpp Mmged.hpp \
|
||||||
ScopedPtr.hpp SharedPtr.hpp Mpool.hpp Association.hpp \
|
ScopedPtr.hpp SharedPtr.hpp StrBase.hpp String.hpp Mpool.hpp \
|
||||||
LinkedList.hpp HashList.hpp HashTable.hpp RedBlackTree.hpp \
|
Association.hpp LinkedList.hpp HashList.hpp HashTable.hpp \
|
||||||
RedBlackTable.hpp Array.hpp BinaryHeap.hpp
|
RedBlackTree.hpp RedBlackTable.hpp Array.hpp BinaryHeap.hpp
|
||||||
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
||||||
am__vpath_adj = case $$p in \
|
am__vpath_adj = case $$p in \
|
||||||
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
||||||
|
@ -77,28 +77,29 @@ public:
|
|||||||
SharedPtr (T* ptr = (T*)QSE_NULL, void* darg = (void*)QSE_NULL): Mmged(QSE_NULL)
|
SharedPtr (T* ptr = (T*)QSE_NULL, void* darg = (void*)QSE_NULL): Mmged(QSE_NULL)
|
||||||
{
|
{
|
||||||
this->_item = new (this->getMmgr()) item_t;
|
this->_item = new (this->getMmgr()) item_t;
|
||||||
this->_item->ref = 1;
|
|
||||||
this->_item->ptr = ptr;
|
this->_item->ptr = ptr;
|
||||||
this->_item->darg = darg;
|
this->_item->darg = darg;
|
||||||
|
|
||||||
|
this->_item->ref ();
|
||||||
}
|
}
|
||||||
|
|
||||||
SharedPtr (Mmgr* mmgr, T* ptr = (T*)QSE_NULL, void* darg = (void*)QSE_NULL): Mmged(mmgr)
|
SharedPtr (Mmgr* mmgr, T* ptr = (T*)QSE_NULL, void* darg = (void*)QSE_NULL): Mmged(mmgr)
|
||||||
{
|
{
|
||||||
this->_item = new (this->getMmgr()) item_t;
|
this->_item = new (this->getMmgr()) item_t;
|
||||||
this->_item->ref = 1;
|
|
||||||
this->_item->ptr = ptr;
|
this->_item->ptr = ptr;
|
||||||
this->_item->darg = darg;
|
this->_item->darg = darg;
|
||||||
|
|
||||||
|
this->_item->ref ();
|
||||||
}
|
}
|
||||||
|
|
||||||
SharedPtr (const SelfType& sp): Mmged(sp), _item(sp._item)
|
SharedPtr (const SelfType& sp): Mmged(sp), _item(sp._item)
|
||||||
{
|
{
|
||||||
this->_item->ref++;
|
this->_item->ref ();
|
||||||
}
|
}
|
||||||
|
|
||||||
~SharedPtr ()
|
~SharedPtr ()
|
||||||
{
|
{
|
||||||
this->_item->ref--;
|
if (this->_item->deref() <= 0)
|
||||||
if (this->_item->ref <= 0)
|
|
||||||
{
|
{
|
||||||
if (this->_item->ptr) this->_item->deleter (this->_item->ptr, this->_item->darg);
|
if (this->_item->ptr) this->_item->deleter (this->_item->ptr, this->_item->darg);
|
||||||
// no destructor as *this->_ref is a plain type.
|
// no destructor as *this->_ref is a plain type.
|
||||||
@ -110,8 +111,7 @@ public:
|
|||||||
{
|
{
|
||||||
if (this != &sp)
|
if (this != &sp)
|
||||||
{
|
{
|
||||||
this->_item->ref--;
|
if (this->_item->deref() <= 0)
|
||||||
if (this->_item->ref <= 0)
|
|
||||||
{
|
{
|
||||||
if (this->_item->ptr) this->_item->deleter (this->_item->ptr, this->_item->darg);
|
if (this->_item->ptr) this->_item->deleter (this->_item->ptr, this->_item->darg);
|
||||||
// no destructor as *this->_ref is a plain type.
|
// no destructor as *this->_ref is a plain type.
|
||||||
@ -123,7 +123,7 @@ public:
|
|||||||
this->setMmgr (sp.getMmgr());
|
this->setMmgr (sp.getMmgr());
|
||||||
|
|
||||||
this->_item = sp._item;
|
this->_item = sp._item;
|
||||||
this->_item->ref++;
|
this->_item->ref ();
|
||||||
}
|
}
|
||||||
|
|
||||||
return *this;
|
return *this;
|
||||||
@ -175,9 +175,8 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
struct item_t
|
struct item_t: public RefCounted
|
||||||
{
|
{
|
||||||
qse_size_t ref;
|
|
||||||
T* ptr;
|
T* ptr;
|
||||||
void* darg;
|
void* darg;
|
||||||
DELETER deleter;
|
DELETER deleter;
|
||||||
|
1012
qse/include/qse/cmn/StrBase.hpp
Normal file
1012
qse/include/qse/cmn/StrBase.hpp
Normal file
File diff suppressed because it is too large
Load Diff
80
qse/include/qse/cmn/String.hpp
Normal file
80
qse/include/qse/cmn/String.hpp
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
/*
|
||||||
|
* $Id$
|
||||||
|
*
|
||||||
|
Copyright (c) 2006-2014 Chung, Hyung-Hwan. All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions
|
||||||
|
are met:
|
||||||
|
1. Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer in the
|
||||||
|
documentation and/or other materials provided with the distribution.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR
|
||||||
|
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||||
|
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||||
|
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||||
|
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||||
|
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||||
|
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _QSE_CMN_STRING_HPP_
|
||||||
|
#define _QSE_CMN_STRING_HPP_
|
||||||
|
|
||||||
|
#include <qse/cmn/StrBase.hpp>
|
||||||
|
#include <qse/cmn/str.h>
|
||||||
|
|
||||||
|
/////////////////////////////////
|
||||||
|
QSE_BEGIN_NAMESPACE(QSE)
|
||||||
|
/////////////////////////////////
|
||||||
|
|
||||||
|
struct WcStringOpset
|
||||||
|
{
|
||||||
|
qse_size_t copy (qse_wchar_t* dst, const qse_wchar_t* src, qse_size_t ssz)
|
||||||
|
{
|
||||||
|
return qse_wcsncpy(dst, src, ssz);
|
||||||
|
}
|
||||||
|
|
||||||
|
// compare two strings of the same length
|
||||||
|
int compare (const qse_wchar_t* str1, const qse_wchar_t* str2, qse_size_t len)
|
||||||
|
{
|
||||||
|
return qse_wcsxncmp(str1, len, str2, len);
|
||||||
|
}
|
||||||
|
|
||||||
|
// compare a length-bound string with a null-terminated string.
|
||||||
|
int compare (const qse_wchar_t* str1, qse_size_t len, const qse_wchar_t* str2)
|
||||||
|
{
|
||||||
|
return qse_wcsxcmp(str1, len, str2);
|
||||||
|
}
|
||||||
|
|
||||||
|
int length (const qse_wchar_t* str)
|
||||||
|
{
|
||||||
|
return qse_strlen(str);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
//struct MbStringOpset
|
||||||
|
//{
|
||||||
|
//};
|
||||||
|
|
||||||
|
typedef StrBase<qse_wchar_t, QSE_WT('\0'), WcStringOpset > WcString;
|
||||||
|
//typedef StrBase<qse_mchar_t, QSE_MT('\0'), MbStringOpset > MbString;
|
||||||
|
|
||||||
|
#if defined(QSE_CHAR_IS_MCHAR)
|
||||||
|
//typedef MbString String;
|
||||||
|
#else
|
||||||
|
typedef WcString String;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////////
|
||||||
|
QSE_END_NAMESPACE(QSE)
|
||||||
|
/////////////////////////////////
|
||||||
|
|
||||||
|
#endif
|
@ -98,7 +98,7 @@ 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_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
|
#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
|
bin_PROGRAMS += arr01 bh01 hl01 htb02 rbt02 rbt03 sp01 sp02 str02
|
||||||
|
|
||||||
arr01_SOURCES = arr01.cpp
|
arr01_SOURCES = arr01.cpp
|
||||||
arr01_LDADD = $(LDADD) -lqsecmnxx
|
arr01_LDADD = $(LDADD) -lqsecmnxx
|
||||||
@ -124,4 +124,7 @@ sp01_LDADD = $(LDADD) -lqsecmnxx
|
|||||||
sp02_SOURCES = sp02.cpp # SharedPtr
|
sp02_SOURCES = sp02.cpp # SharedPtr
|
||||||
sp02_LDADD = $(LDADD) -lqsecmnxx
|
sp02_LDADD = $(LDADD) -lqsecmnxx
|
||||||
|
|
||||||
|
str02_SOURCES = str02.cpp # SharedPtr
|
||||||
|
str02_LDADD = $(LDADD) -lqsecmnxx
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
@ -68,7 +68,7 @@ bin_PROGRAMS = chr01$(EXEEXT) dir01$(EXEEXT) dll$(EXEEXT) \
|
|||||||
#rex02_SOURCES = rex02.cpp
|
#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_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
|
#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
|
@ENABLE_CXX_TRUE@am__append_2 = arr01 bh01 hl01 htb02 rbt02 rbt03 sp01 sp02 str02
|
||||||
subdir = samples/cmn
|
subdir = samples/cmn
|
||||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
||||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
@ -88,7 +88,8 @@ CONFIG_CLEAN_FILES =
|
|||||||
CONFIG_CLEAN_VPATH_FILES =
|
CONFIG_CLEAN_VPATH_FILES =
|
||||||
@ENABLE_CXX_TRUE@am__EXEEXT_1 = arr01$(EXEEXT) bh01$(EXEEXT) \
|
@ENABLE_CXX_TRUE@am__EXEEXT_1 = arr01$(EXEEXT) bh01$(EXEEXT) \
|
||||||
@ENABLE_CXX_TRUE@ hl01$(EXEEXT) htb02$(EXEEXT) rbt02$(EXEEXT) \
|
@ENABLE_CXX_TRUE@ hl01$(EXEEXT) htb02$(EXEEXT) rbt02$(EXEEXT) \
|
||||||
@ENABLE_CXX_TRUE@ rbt03$(EXEEXT) sp01$(EXEEXT) sp02$(EXEEXT)
|
@ENABLE_CXX_TRUE@ rbt03$(EXEEXT) sp01$(EXEEXT) sp02$(EXEEXT) \
|
||||||
|
@ENABLE_CXX_TRUE@ str02$(EXEEXT)
|
||||||
am__installdirs = "$(DESTDIR)$(bindir)"
|
am__installdirs = "$(DESTDIR)$(bindir)"
|
||||||
PROGRAMS = $(bin_PROGRAMS)
|
PROGRAMS = $(bin_PROGRAMS)
|
||||||
am__arr01_SOURCES_DIST = arr01.cpp
|
am__arr01_SOURCES_DIST = arr01.cpp
|
||||||
@ -269,6 +270,10 @@ am_str01_OBJECTS = str01.$(OBJEXT)
|
|||||||
str01_OBJECTS = $(am_str01_OBJECTS)
|
str01_OBJECTS = $(am_str01_OBJECTS)
|
||||||
str01_LDADD = $(LDADD)
|
str01_LDADD = $(LDADD)
|
||||||
str01_DEPENDENCIES = $(am__DEPENDENCIES_2)
|
str01_DEPENDENCIES = $(am__DEPENDENCIES_2)
|
||||||
|
am__str02_SOURCES_DIST = str02.cpp
|
||||||
|
@ENABLE_CXX_TRUE@am_str02_OBJECTS = str02.$(OBJEXT)
|
||||||
|
str02_OBJECTS = $(am_str02_OBJECTS)
|
||||||
|
@ENABLE_CXX_TRUE@str02_DEPENDENCIES = $(am__DEPENDENCIES_3)
|
||||||
task01_SOURCES = task01.c
|
task01_SOURCES = task01.c
|
||||||
task01_OBJECTS = task01.$(OBJEXT)
|
task01_OBJECTS = task01.$(OBJEXT)
|
||||||
task01_LDADD = $(LDADD)
|
task01_LDADD = $(LDADD)
|
||||||
@ -343,8 +348,9 @@ SOURCES = $(arr01_SOURCES) $(bh01_SOURCES) $(chr01_SOURCES) dir01.c \
|
|||||||
$(rbt01_SOURCES) $(rbt02_SOURCES) $(rbt03_SOURCES) \
|
$(rbt01_SOURCES) $(rbt02_SOURCES) $(rbt03_SOURCES) \
|
||||||
$(rex01_SOURCES) $(sio01_SOURCES) $(sio02_SOURCES) \
|
$(rex01_SOURCES) $(sio01_SOURCES) $(sio02_SOURCES) \
|
||||||
$(sio03_SOURCES) $(sll_SOURCES) $(slmb01_SOURCES) \
|
$(sio03_SOURCES) $(sll_SOURCES) $(slmb01_SOURCES) \
|
||||||
$(sp01_SOURCES) $(sp02_SOURCES) $(str01_SOURCES) task01.c \
|
$(sp01_SOURCES) $(sp02_SOURCES) $(str01_SOURCES) \
|
||||||
$(time_SOURCES) $(tre01_SOURCES) uri01.c $(xma_SOURCES)
|
$(str02_SOURCES) task01.c $(time_SOURCES) $(tre01_SOURCES) \
|
||||||
|
uri01.c $(xma_SOURCES)
|
||||||
DIST_SOURCES = $(am__arr01_SOURCES_DIST) $(am__bh01_SOURCES_DIST) \
|
DIST_SOURCES = $(am__arr01_SOURCES_DIST) $(am__bh01_SOURCES_DIST) \
|
||||||
$(chr01_SOURCES) dir01.c $(dll_SOURCES) $(env01_SOURCES) \
|
$(chr01_SOURCES) dir01.c $(dll_SOURCES) $(env01_SOURCES) \
|
||||||
$(fio01_SOURCES) $(fio02_SOURCES) $(fma_SOURCES) \
|
$(fio01_SOURCES) $(fio02_SOURCES) $(fma_SOURCES) \
|
||||||
@ -358,8 +364,9 @@ DIST_SOURCES = $(am__arr01_SOURCES_DIST) $(am__bh01_SOURCES_DIST) \
|
|||||||
$(am__rbt03_SOURCES_DIST) $(rex01_SOURCES) $(sio01_SOURCES) \
|
$(am__rbt03_SOURCES_DIST) $(rex01_SOURCES) $(sio01_SOURCES) \
|
||||||
$(sio02_SOURCES) $(sio03_SOURCES) $(sll_SOURCES) \
|
$(sio02_SOURCES) $(sio03_SOURCES) $(sll_SOURCES) \
|
||||||
$(slmb01_SOURCES) $(am__sp01_SOURCES_DIST) \
|
$(slmb01_SOURCES) $(am__sp01_SOURCES_DIST) \
|
||||||
$(am__sp02_SOURCES_DIST) $(str01_SOURCES) task01.c \
|
$(am__sp02_SOURCES_DIST) $(str01_SOURCES) \
|
||||||
$(time_SOURCES) $(tre01_SOURCES) uri01.c $(xma_SOURCES)
|
$(am__str02_SOURCES_DIST) task01.c $(time_SOURCES) \
|
||||||
|
$(tre01_SOURCES) uri01.c $(xma_SOURCES)
|
||||||
am__can_run_installinfo = \
|
am__can_run_installinfo = \
|
||||||
case $$AM_UPDATE_INFO_DIR in \
|
case $$AM_UPDATE_INFO_DIR in \
|
||||||
n|no|NO) false;; \
|
n|no|NO) false;; \
|
||||||
@ -599,6 +606,8 @@ xma_SOURCES = xma.c
|
|||||||
@ENABLE_CXX_TRUE@sp01_LDADD = $(LDADD) -lqsecmnxx
|
@ENABLE_CXX_TRUE@sp01_LDADD = $(LDADD) -lqsecmnxx
|
||||||
@ENABLE_CXX_TRUE@sp02_SOURCES = sp02.cpp # SharedPtr
|
@ENABLE_CXX_TRUE@sp02_SOURCES = sp02.cpp # SharedPtr
|
||||||
@ENABLE_CXX_TRUE@sp02_LDADD = $(LDADD) -lqsecmnxx
|
@ENABLE_CXX_TRUE@sp02_LDADD = $(LDADD) -lqsecmnxx
|
||||||
|
@ENABLE_CXX_TRUE@str02_SOURCES = str02.cpp # SharedPtr
|
||||||
|
@ENABLE_CXX_TRUE@str02_LDADD = $(LDADD) -lqsecmnxx
|
||||||
all: all-am
|
all: all-am
|
||||||
|
|
||||||
.SUFFIXES:
|
.SUFFIXES:
|
||||||
@ -808,6 +817,9 @@ sp02$(EXEEXT): $(sp02_OBJECTS) $(sp02_DEPENDENCIES) $(EXTRA_sp02_DEPENDENCIES)
|
|||||||
str01$(EXEEXT): $(str01_OBJECTS) $(str01_DEPENDENCIES) $(EXTRA_str01_DEPENDENCIES)
|
str01$(EXEEXT): $(str01_OBJECTS) $(str01_DEPENDENCIES) $(EXTRA_str01_DEPENDENCIES)
|
||||||
@rm -f str01$(EXEEXT)
|
@rm -f str01$(EXEEXT)
|
||||||
$(AM_V_CCLD)$(LINK) $(str01_OBJECTS) $(str01_LDADD) $(LIBS)
|
$(AM_V_CCLD)$(LINK) $(str01_OBJECTS) $(str01_LDADD) $(LIBS)
|
||||||
|
str02$(EXEEXT): $(str02_OBJECTS) $(str02_DEPENDENCIES) $(EXTRA_str02_DEPENDENCIES)
|
||||||
|
@rm -f str02$(EXEEXT)
|
||||||
|
$(AM_V_CXXLD)$(CXXLINK) $(str02_OBJECTS) $(str02_LDADD) $(LIBS)
|
||||||
task01$(EXEEXT): $(task01_OBJECTS) $(task01_DEPENDENCIES) $(EXTRA_task01_DEPENDENCIES)
|
task01$(EXEEXT): $(task01_OBJECTS) $(task01_DEPENDENCIES) $(EXTRA_task01_DEPENDENCIES)
|
||||||
@rm -f task01$(EXEEXT)
|
@rm -f task01$(EXEEXT)
|
||||||
$(AM_V_CCLD)$(LINK) $(task01_OBJECTS) $(task01_LDADD) $(LIBS)
|
$(AM_V_CCLD)$(LINK) $(task01_OBJECTS) $(task01_LDADD) $(LIBS)
|
||||||
@ -873,6 +885,7 @@ distclean-compile:
|
|||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sp01.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)/sp02.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/str01.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/str01.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/str02.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/task01.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@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/time.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tre01.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tre01.Po@am__quote@
|
||||||
|
35
qse/samples/cmn/str02.cpp
Normal file
35
qse/samples/cmn/str02.cpp
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
#include <qse/cmn/sio.h>
|
||||||
|
#include <qse/cmn/String.hpp>
|
||||||
|
#include <qse/cmn/HeapMmgr.hpp>
|
||||||
|
|
||||||
|
|
||||||
|
void t1 ()
|
||||||
|
{
|
||||||
|
QSE::HeapMmgr heap_mmgr (QSE::Mmgr::getDFL(), 30000);
|
||||||
|
QSE::String* z = new QSE::String();
|
||||||
|
|
||||||
|
{
|
||||||
|
QSE::String x (&heap_mmgr, QSE_T("this is a sample string"));
|
||||||
|
QSE::String y (x);
|
||||||
|
|
||||||
|
*z = y;
|
||||||
|
qse_printf (QSE_T("[%s]\n"), x.getBuffer());
|
||||||
|
}
|
||||||
|
|
||||||
|
qse_printf (QSE_T("-----------------\n"));
|
||||||
|
delete z;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
int main ()
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
qse_openstdsios ();
|
||||||
|
|
||||||
|
t1 ();
|
||||||
|
qse_printf (QSE_T("=================\n"));
|
||||||
|
qse_closestdsios ();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user