diff --git a/test/Longevity/Makefile b/test/Longevity/Makefile new file mode 100755 index 0000000..c7d783f --- /dev/null +++ b/test/Longevity/Makefile @@ -0,0 +1,32 @@ + + +CPP = g++ +CC = gcc +OBJ = main.o +LINKOBJ = main.o +CXXINCS = -I./../../include +LIBS = -L../../lib -lloki +CXXFLAGS = $(CXXINCS) -O2 -DNDEBUG +BIN = main-gcc.exe +RM = rm -f +CHK_DIR_EXISTS= if not exist +MKDIR = mkdir + +.PHONY: all all-before all-after clean clean-custom + +all: all-before $(BIN) all-after + + +clean: clean-custom + ${RM} $(OBJ) $(BIN) + +$(BIN): $(OBJ) + $(CPP) $(LINKOBJ) -o main-gcc.exe $(LIBS) + +check_tmp: + @$(CHK_DIR_EXISTS) "" $(MKDIR) "tmp" + +Factory.o: Factory.cpp + $(CPP) -c main.cpp -o main.o $(CXXFLAGS) + + diff --git a/test/Longevity/main.cpp b/test/Longevity/main.cpp new file mode 100755 index 0000000..c5359a1 --- /dev/null +++ b/test/Longevity/main.cpp @@ -0,0 +1,40 @@ + +#include + +#include "loki/Singleton.h" + + +struct L1 +{ + L1(){std::cout << "create L1: " << this << "\n";} + ~L1(){std::cout << "delete L1: " << this <<" \n";} +}; + +struct L2 +{ + L2(){std::cout << "create L2 \n";} + ~L2(){std::cout << "delete L2 \n";} +}; + +struct L3 +{ + L3(){std::cout << "create L3 \n";} + ~L3(){std::cout << "delete L3 \n";} +}; + +int main() +{ + Loki::SetLongevity + (new L1, 1); + Loki::SetLongevity + (new L1, 1, Loki::Private::Deleter::Delete); + Loki::SetLongevity::Type> + (new L1, 1, Loki::Private::Deleter::Delete); + Loki::SetLongevity(new L2, 2); + Loki::SetLongevity(new L1, 1); + Loki::SetLongevity(new L3, 3); + Loki::SetLongevity(new L1, 1); + + std::cout << "\n"; +} + diff --git a/test/Longevity/make.msvc.bat b/test/Longevity/make.msvc.bat new file mode 100755 index 0000000..454c62a --- /dev/null +++ b/test/Longevity/make.msvc.bat @@ -0,0 +1,13 @@ +if not exist tmp\ mkdir tmp + +cl -c -Zm200 -O2 -DNDEBUG -MT -EHsc -GR -W0 -wd4710 -I"." -I"..\..\include" -Fotmp\ main.cpp + +if not defined LOKI_MSVC_NOLIB ( + +link /NOLOGO /SUBSYSTEM:CONSOLE /incremental:no /OUT:"main-msvc.exe" ..\..\lib\loki.lib tmp\main.obj + +) else ( + +link /NOLOGO /SUBSYSTEM:CONSOLE /incremental:no /OUT:"main-msvc.exe" tmp\main.obj ..\..\lib\SmallObj.obj ..\..\lib\Singleton.obj + +)