Packets: Fix VariantParser invalid parser access bug
[senf.git] / Utils / singleton.cti
index b99e39d..79dd1f7 100644 (file)
@@ -1,8 +1,8 @@
 // $Id$
 //
-// Copyright (C) 2007 
-// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS)
-// Kompetenzzentrum fuer Satelitenkommunikation (SatCom)
+// Copyright (C) 2007
+// Fraunhofer Institute for Open Communication Systems (FOKUS)
+// Competence Center NETwork research (NET), St. Augustin, GERMANY
 //     Stefan Bund <g0dil@berlios.de>
 //
 // This program is free software; you can redistribute it and/or modify
 ///////////////////////////////cti.p///////////////////////////////////////
 
 template <class Self>
+prefix_ senf::singleton<Self>::singleton()
+{
+    alive_ = true;
+}
+
+template <class Self>
+prefix_ senf::singleton<Self>::~singleton()
+{
+    alive_ = false;
+}
+
+template <class Self>
+bool senf::singleton<Self>::alive_ (false);
+
+template <class Self>
 prefix_ Self & senf::singleton<Self>::instance()
 {
     static Self instance_;
-    creator_.nop(); // Force instantiation of force_creation
+    // Force instantiation of force_creation (at static object creation time)
+    creator_.nop();
     return instance_;
 }
 
 template <class Self>
+prefix_ bool senf::singleton<Self>::alive()
+{
+    return alive_;
+}
+
+template <class Self>
 prefix_ senf::singleton<Self>::force_creation::force_creation()
 {
-    senf::singleton<Self>::instance(); // Force execution of instance() thereby creating instance
+    // Force execution of instance() thereby creating instance
+    senf::singleton<Self>::instance();
 }
 
 template <class Self>
@@ -52,7 +75,7 @@ prefix_ void senf::singleton<Self>::force_creation::nop()
 }
 
 template <class Self>
-typename senf::singleton<Self>::force_creation senf::singleton<Self>::create_;
+typename senf::singleton<Self>::force_creation senf::singleton<Self>::creator_;
 
 ///////////////////////////////cti.e///////////////////////////////////////
 #undef prefix_