remove warnings and adjust code to new default lifetimes of SmallObjects

git-svn-id: svn://svn.code.sf.net/p/loki-lib/code/trunk@354 7ec92016-0320-0410-acc4-a06ded1c099a
This commit is contained in:
syntheticpp 2005-11-12 15:13:36 +00:00
parent 0fc58a0e86
commit 1c8bce4d43

View file

@ -10,6 +10,7 @@
// without express or implied warranty. // without express or implied warranty.
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
#include <iostream> #include <iostream>
#include "loki/SmallObj.h" #include "loki/SmallObj.h"
@ -43,8 +44,8 @@ struct SingletonDataObject
// //
//////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////
// LongevityLifetime::DieAsSmallObjectParent is the default // LongevityLifetime::DieAsSmallObjectParent is the default lifetime
// lifetime of SmallObject template: // of SmallObject template:
typedef Loki::SmallObject<> typedef Loki::SmallObject<>
SmallObject_DieAs; SmallObject_DieAs;
@ -164,10 +165,9 @@ public:
~B1_die_last(){std::cout<<"delete B1_die_last, look for SingletonDataObject888\n\n";} ~B1_die_last(){std::cout<<"delete B1_die_last, look for SingletonDataObject888\n\n";}
}; };
// test of FollowIntoDeath policy, not supported by msvc 7.1 compiler
#if !defined(_MSC_VER) || (_MSC_VER>=1400) #if !defined(_MSC_VER) || (_MSC_VER>=1400)
//////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////
// //
// How to use FollowIntoDeath with SmallObjects? // How to use FollowIntoDeath with SmallObjects?
@ -196,41 +196,6 @@ typedef SingletonHolder
> >
Singleton_of_with_a_MySmallObject; Singleton_of_with_a_MySmallObject;
////////////////////////////////////////////////////////////////////////////////////
//
// How to use FollowIntoDeath with classes containing a Functor/Function?
//
////////////////////////////////////////////////////////////////////////////////////
struct MyFunctionObject
{
MyFunctionObject()
{
functor = Functor<void> (this, &MyFunctionObject::f);
function = Function< void()>(this, &MyFunctionObject::f);
}
void f(){}
Functor<void> functor;
Function<void()> function;
};
typedef SingletonHolder
<
MyFunctionObject,
CreateUsingNew,
FollowIntoDeath::AfterMaster<Function<>::Impl::ObjAllocatorSingleton>::IsDestroyed
>
Singleton_MyFunctionObject1;
typedef SingletonHolder
<
MyFunctionObject,
CreateUsingNew,
FollowIntoDeath::AfterMaster<Functor<>::Impl::ObjAllocatorSingleton>::IsDestroyed
>
Singleton_MyFunctionObject2;
//////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////
@ -434,34 +399,32 @@ void heap_debug()
// //
//////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////
int main(int argc, char *argv[]) int main()
{ {
#ifdef _MSC_VER #ifdef _MSC_VER
heap_debug(); heap_debug();
#endif #endif
void* p;
MySmallObject_DieAs *s_DieAs = &Singleton_with_MySmallObject_DieAs::Instance(); p = (void*) &Singleton_with_MySmallObject_DieAs::Instance();
MyFunctionObject_DieAs *f_DieAs = &Singleton_MyFunctionObject_DieAs::Instance(); p = (void*) &Singleton_MyFunctionObject_DieAs::Instance();
std::cout<<"\n"; std::cout<<"\n";
B1_die_first *first= &Follower1_Singleton_B1_die_first::Instance(); p = (void*) &Follower1_Singleton_B1_die_first::Instance();
B1_die_last *last = &Follower1_Singleton_B1_die_last::Instance(); p = (void*) &Follower1_Singleton_B1_die_last::Instance();
// test of FollowIntoDeath policy, not supported by msvc 7.1 compiler // test of FollowIntoDeath policy, not supported by msvc 7.1 compiler
#if !defined(_MSC_VER) || (_MSC_VER>=1400) #if !defined(_MSC_VER) || (_MSC_VER>=1400)
MyFunctionObject *f1 = &Singleton_MyFunctionObject1::Instance();
MyFunctionObject *f2 = &Singleton_MyFunctionObject2::Instance();
std::cout << "\nMaster1:\n\n"; std::cout << "\nMaster1:\n\n";
B1_DefaultLifetime *def = &Follower1_Singleton_DefaultLifetime::Instance(); p = (void*) &Follower1_Singleton_DefaultLifetime::Instance();
B1_PhoenixSingleton *pho = &Follower1_Singleton_PhoenixSingleton::Instance(); p = (void*) &Follower1_Singleton_PhoenixSingleton::Instance();
B1_DeletableSingleton *del = &Follower1_Singleton_DeletableSingleton::Instance(); p = (void*) &Follower1_Singleton_DeletableSingleton::Instance();
std::cout << "\n\nMaster2:\n\n"; std::cout << "\n\nMaster2:\n\n";
@ -476,17 +439,17 @@ int main(int argc, char *argv[])
del2->data = &Master2_DeletableSingleton::Singleton::Instance(); del2->data = &Master2_DeletableSingleton::Singleton::Instance();
// memory leak when code is enabled // memory leak when code is enabled
//#define ENMasterBLE_LEMasterK //#define ENABLE_MEMORY_LEAK
#ifdef ENMasterBLE_LEMasterK #ifdef ENABLE_MEMORY_LEAK
B1_NoDestroy *no = &Follower1_Singleton_NoDestroy::Instance(); p = (void*) &Follower1_Singleton_NoDestroy::Instance();
B2_NoDestroy *no2 = &Follower2_Singleton_NoDestro0::Instance(); B2_NoDestroy *no2 = &Follower2_Singleton_NoDestroy::Instance();
no2->data = &Master2_NoDestroy::Singleton::Instance(); no2->data = &Master2_NoDestroy::Singleton::Instance();
#endif #endif
#endif //#if !defined(_MSC_VER) || (_MSC_VER>=1400) #endif //#if !defined(_MSC_VER) || (_MSC_VER>=1400)
#if defined(__BORLANDC__) || defined(__GNUC__) || defined(_MSC_VER) #if defined(__BORLANDC__) || defined(__GNUC__) || defined(_MSC_VER)
system("pause"); // Stop console window from closing if run from IDE. system("pause");
#endif #endif
std::cout << "\nnow leaving main \n"; std::cout << "\nnow leaving main \n";