diff --git a/test/DeletableSingleton/DeletableSingleton.cpp b/test/DeletableSingleton/DeletableSingleton.cpp new file mode 100755 index 0000000..5918aa6 --- /dev/null +++ b/test/DeletableSingleton/DeletableSingleton.cpp @@ -0,0 +1,80 @@ +//////////////////////////////////////////////////////////////////////////////// +// The Loki Library +// Copyright (c) 2005 by Curtis Krauskopf +// Copyright (c) 2005 by Peter Kuemmel +// +// Code covered by the MIT License +// The authors make no representations about the suitability of this software +// for any purpose. It is provided "as is" without express or implied warranty. +//////////////////////////////////////////////////////////////////////////////// + +// Show an example of a Loki policy that uses DeletableSingleton. +// +// Expected output: +// +// LogClass::LogClass() +// LogClass singleton instantiated +// Going to manually delete LogBook. +// LogClass::~LogClass() +// LogClass::LogClass() +// LogClass reinstantiated. +// Going to terminate program now. +// LogClass::~LogClass() +// + +#include +#include // for Loki::SingletonHolder + +using namespace std; // okay for small programs +using namespace Loki; // okay for small programs + +// A singleton LogClass object derived from the Example class. +// Its longevity is set by the user on the command line. +// +class LogClass +{ +public: + LogClass() + { + print("LogClass::LogClass()"); + }; + ~LogClass() + { + print("LogClass::~LogClass()"); + } + void print(const char *s) + { + cout << s << endl; + } +}; + +typedef SingletonHolder LogBook; + +class Example +{ +public: + void method() + { + cout << "test\n"; + } +}; + + +int main(int argc, char *argv[]) +{ + // Instantiate both singletons by calling them... + LogBook::Instance().print("LogClass singleton instantiated"); + LogBook::Instance().print("Going to manually delete LogBook."); + + DeletableSingleton::GracefulDelete(); + + LogBook::Instance().print("LogClass reinstantiated."); + LogBook::Instance().print("Going to terminate program now."); + +#if defined(__BORLANDC__) || defined(_MSC_VER) + system("PAUSE"); +#endif + + return 0; +} + diff --git a/test/DeletableSingleton/DeletableSingleton.vcproj b/test/DeletableSingleton/DeletableSingleton.vcproj new file mode 100644 index 0000000..758d676 --- /dev/null +++ b/test/DeletableSingleton/DeletableSingleton.vcproj @@ -0,0 +1,179 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +