Mercurial > hg > octave-lyh
view 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 |
line wrap: on
line source
/* Copyright (C) 1996, 1997, 2000, 2002, 2005, 2006, 2007 John W. Eaton This file is part of Octave. Octave is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. Octave is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Octave; see the file COPYING. If not, see <http://www.gnu.org/licenses/>. */ #if !defined (octave_file_ops_h) #define octave_file_ops_h 1 #include <string> #ifdef HAVE_SYS_TYPES_H #include <sys/types.h> #endif #include "str-vec.h" struct OCTAVE_API file_ops { protected: file_ops (void); public: static int mkdir (const std::string&, mode_t); static int mkdir (const std::string&, mode_t, std::string&); static int mkfifo (const std::string&, mode_t); static int mkfifo (const std::string&, mode_t, std::string&); static int link (const std::string&, const std::string&); static int link (const std::string&, const std::string&, std::string&); static int symlink (const std::string&, const std::string&); static int symlink (const std::string&, const std::string&, std::string&); static int readlink (const std::string&, std::string&); static int readlink (const std::string&, std::string&, std::string&); static int rename (const std::string&, const std::string&); static int rename (const std::string&, const std::string&, std::string&); static int rmdir (const std::string&); static int rmdir (const std::string&, std::string&); static int recursive_rmdir (const std::string&); static int recursive_rmdir (const std::string&, std::string&); static std::string canonicalize_file_name (const std::string&); static std::string canonicalize_file_name (const std::string&, std::string&); static std::string tempnam (const std::string&, const std::string&); static std::string tempnam (const std::string&, const std::string&, std::string&); typedef std::string (*tilde_expansion_hook) (const std::string&); static tilde_expansion_hook tilde_expansion_preexpansion_hook; static tilde_expansion_hook tilde_expansion_failure_hook; static string_vector tilde_additional_prefixes; static string_vector tilde_additional_suffixes; static std::string tilde_expand (const std::string&); static string_vector tilde_expand (const string_vector&); static int umask (mode_t); static int unlink (const std::string&); static int unlink (const std::string&, std::string&); static bool is_dir_sep (char c) { return instance_ok () ? instance->do_is_dir_sep (c) : false; } static std::string concat (const std::string&, const std::string&); static char dir_sep_char (void) { return instance_ok () ? instance->xdir_sep_char : 0; } static std::string dir_sep_str (void) { return instance_ok () ? instance->xdir_sep_str : std::string (); } static std::string dir_sep_chars (void) { return instance_ok () ? instance->xdir_sep_chars : std::string (); } private: // No copying! file_ops (const file_ops&); file_ops& operator = (const file_ops&); // The real thing. static file_ops *instance; static bool instance_ok (void); char xdir_sep_char; std::string xdir_sep_str; std::string xdir_sep_chars; bool do_is_dir_sep (char c) { return xdir_sep_chars.find (c) != NPOS; } }; #endif /* ;;; Local Variables: *** ;;; mode: C++ *** ;;; End: *** */