comparison liboctave/file-ops.h @ 8007:a2ab20ba78f7

make file_ops a proper singleton class
author John W. Eaton <jwe@octave.org>
date Mon, 04 Aug 2008 23:44:50 -0400
parents 05ee52d7fad6
children d936b21b3a6b
comparison
equal deleted inserted replaced
8006:b0e7bbe7cd47 8007:a2ab20ba78f7
33 33
34 struct 34 struct
35 OCTAVE_API 35 OCTAVE_API
36 file_ops 36 file_ops
37 { 37 {
38 protected:
39
40 file_ops (void);
41
42 public:
43
38 static int mkdir (const std::string&, mode_t); 44 static int mkdir (const std::string&, mode_t);
39 static int mkdir (const std::string&, mode_t, std::string&); 45 static int mkdir (const std::string&, mode_t, std::string&);
40 46
41 static int mkfifo (const std::string&, mode_t); 47 static int mkfifo (const std::string&, mode_t);
42 static int mkfifo (const std::string&, mode_t, std::string&); 48 static int mkfifo (const std::string&, mode_t, std::string&);
82 static int umask (mode_t); 88 static int umask (mode_t);
83 89
84 static int unlink (const std::string&); 90 static int unlink (const std::string&);
85 static int unlink (const std::string&, std::string&); 91 static int unlink (const std::string&, std::string&);
86 92
87 static bool is_dir_sep (char); 93 static bool is_dir_sep (char c)
94 {
95 return instance_ok () ? instance->do_is_dir_sep (c) : false;
96 }
88 97
89 static std::string concat (const std::string&, const std::string&); 98 static std::string concat (const std::string&, const std::string&);
90 99
91 static char dir_sep_char; 100 static char dir_sep_char (void)
92 static std::string dir_sep_str; 101 {
93 static std::string dir_sep_chars; 102 return instance_ok () ? instance->xdir_sep_char : 0;
103 }
104
105 static std::string dir_sep_str (void)
106 {
107 return instance_ok () ? instance->xdir_sep_str : std::string ();
108 }
109
110 static std::string dir_sep_chars (void)
111 {
112 return instance_ok () ? instance->xdir_sep_chars : std::string ();
113 }
114
115 private:
116
117 // No copying!
118
119 file_ops (const file_ops&);
120
121 file_ops& operator = (const file_ops&);
122
123 // The real thing.
124 static file_ops *instance;
125
126 static bool instance_ok (void);
127
128 char xdir_sep_char;
129 std::string xdir_sep_str;
130 std::string xdir_sep_chars;
131
132 bool do_is_dir_sep (char c) { return xdir_sep_chars.find (c) != NPOS; }
94 }; 133 };
95 134
96 #endif 135 #endif
97 136
98 /* 137 /*