changed the behavior of member functions of RefCounted.
Changed SharedPtr to make use of RefCounted. Added StrBase and String.
This commit is contained in:
		| @ -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_ASSERT (this->_ref_count == 0); | 	qse_size_t ref () const | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	void ref () const |  | ||||||
| 	{ | 	{ | ||||||
| 		this->_ref_count++; | 		return ++this->_ref_count; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	void deref (bool kill = true) 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 | ||||||
| 	{ | 	{ | ||||||
| 		if (--this->_ref_count == 0 && kill)  | 		return --this->_ref_count; | ||||||
| 		{ |  | ||||||
| 			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; | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user