diff liboctave/pathsearch.cc @ 8008:4d13a7a2f6ab

dir_path: use singleton class for static data members
author John W. Eaton <jwe@octave.org>
date Tue, 05 Aug 2008 12:04:10 -0400
parents a1dbe9d80eee
children 0ef13e15319b
line wrap: on
line diff
--- a/liboctave/pathsearch.cc	Mon Aug 04 23:44:50 2008 -0400
+++ b/liboctave/pathsearch.cc	Tue Aug 05 12:04:10 2008 -0400
@@ -37,11 +37,29 @@
 
 #include "kpse.cc"
 
-char dir_path::path_sep_char = SEPCHAR;
+dir_path::static_members *dir_path::static_members::instance = 0;
+
+dir_path::static_members::static_members (void)
+  : xpath_sep_char (SEPCHAR), xpath_sep_str (SEPCHAR_STR) { }
+
+bool
+dir_path::static_members::instance_ok (void)
+{
+  bool retval = true;
 
-std::string dir_path::path_sep_str (SEPCHAR_STR);
+  if (! instance)
+    instance = new static_members ();
 
-static bool octave_kpathsea_initialized = false;
+  if (! instance)
+    {
+      (*current_liboctave_error_handler)
+	("unable to create dir_path::static_members object!");
+
+      retval = false;
+    }
+
+  return retval;
+}
 
 string_vector
 dir_path::elements (void)
@@ -123,6 +141,8 @@
 void
 dir_path::init (void)
 {
+  static bool octave_kpathsea_initialized = false;
+
   if (! octave_kpathsea_initialized)
     {
       std::string val = octave_env::getenv ("KPATHSEA_DEBUG");