From 8e761289a2446367267c6c0d9a26e734f0f78306 Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Wed, 16 Dec 2020 20:29:05 +0300 Subject: Get rid of legacy build systems and rename cutl/ to libcutl/ --- cutl/fs/auto-remove.cxx | 30 ----- cutl/fs/auto-remove.hxx | 82 ------------ cutl/fs/exception.cxx | 16 --- cutl/fs/exception.hxx | 36 ------ cutl/fs/path.cxx | 120 ----------------- cutl/fs/path.hxx | 333 ------------------------------------------------ cutl/fs/path.ixx | 70 ---------- cutl/fs/path.txx | 209 ------------------------------ 8 files changed, 896 deletions(-) delete mode 100644 cutl/fs/auto-remove.cxx delete mode 100644 cutl/fs/auto-remove.hxx delete mode 100644 cutl/fs/exception.cxx delete mode 100644 cutl/fs/exception.hxx delete mode 100644 cutl/fs/path.cxx delete mode 100644 cutl/fs/path.hxx delete mode 100644 cutl/fs/path.ixx delete mode 100644 cutl/fs/path.txx (limited to 'cutl/fs') diff --git a/cutl/fs/auto-remove.cxx b/cutl/fs/auto-remove.cxx deleted file mode 100644 index 00dfc61..0000000 --- a/cutl/fs/auto-remove.cxx +++ /dev/null @@ -1,30 +0,0 @@ -// file : cutl/fs/auto-remove.cxx -// license : MIT; see accompanying LICENSE file - -#include // std::remove -#include - -#include - -namespace cutl -{ - namespace fs - { - auto_remove:: - ~auto_remove () - { - if (!canceled_) - std::remove (path_.string ().c_str ()); // Ignore error. - } - - auto_removes:: - ~auto_removes () - { - if (!canceled_) - { - for (paths::iterator i (paths_.begin ()); i != paths_.end (); ++i) - std::remove (i->string ().c_str ()); // Ignore error. - } - } - } -} diff --git a/cutl/fs/auto-remove.hxx b/cutl/fs/auto-remove.hxx deleted file mode 100644 index 93fd2c5..0000000 --- a/cutl/fs/auto-remove.hxx +++ /dev/null @@ -1,82 +0,0 @@ -// file : cutl/fs/auto-remove.hxx -// license : MIT; see accompanying LICENSE file - -#ifndef CUTL_FS_AUTO_REMOVE_HXX -#define CUTL_FS_AUTO_REMOVE_HXX - -#include - -#include -#include - -#include - -namespace cutl -{ - namespace fs - { - // Remove a file or an empty directory on destruction unless canceled. - // - struct LIBCUTL_EXPORT auto_remove - { - explicit - auto_remove (path const& p) - : path_ (p), canceled_ (false) - { - } - - ~auto_remove (); - - void - cancel () - { - canceled_ = true; - } - - private: - auto_remove (auto_remove const&); - - auto_remove& - operator= (auto_remove const&); - - private: - path path_; - bool canceled_; - }; - - // Remove a list of file or aempty directories on destruction unless - // canceled. - // - struct LIBCUTL_EXPORT auto_removes - { - auto_removes (): canceled_ (false) {} - ~auto_removes (); - - void - add (path const& p) - { - paths_.push_back (p); - } - - void - cancel () - { - canceled_ = true; - } - - private: - auto_removes (auto_removes const&); - - auto_removes& - operator= (auto_removes const&); - - private: - typedef std::vector paths; - - paths paths_; - bool canceled_; - }; - } -} - -#endif // CUTL_FS_AUTO_REMOVE_HXX diff --git a/cutl/fs/exception.cxx b/cutl/fs/exception.cxx deleted file mode 100644 index b894a7b..0000000 --- a/cutl/fs/exception.cxx +++ /dev/null @@ -1,16 +0,0 @@ -// file : cutl/fs/exception.cxx -// license : MIT; see accompanying LICENSE file - -#include - -namespace cutl -{ - namespace fs - { - char const* error:: - what () const LIBCUTL_NOTHROW_NOEXCEPT - { - return "filesystem error"; - } - } -} diff --git a/cutl/fs/exception.hxx b/cutl/fs/exception.hxx deleted file mode 100644 index ebb04bf..0000000 --- a/cutl/fs/exception.hxx +++ /dev/null @@ -1,36 +0,0 @@ -// file : cutl/fs/exception.hxx -// license : MIT; see accompanying LICENSE file - -#ifndef CUTL_FS_EXCEPTION_HXX -#define CUTL_FS_EXCEPTION_HXX - -#include - -#include - -namespace cutl -{ - namespace fs - { - struct LIBCUTL_EXPORT error: exception - { - error (int code): code_ (code) {} - - // Error code (errno). - // - int - code () const - { - return code_; - } - - virtual char const* - what () const LIBCUTL_NOTHROW_NOEXCEPT; - - private: - int code_; - }; - } -} - -#endif // CUTL_FS_EXCEPTION_HXX diff --git a/cutl/fs/path.cxx b/cutl/fs/path.cxx deleted file mode 100644 index 0a95507..0000000 --- a/cutl/fs/path.cxx +++ /dev/null @@ -1,120 +0,0 @@ -// file : cutl/fs/path.cxx -// license : MIT; see accompanying LICENSE file - -#ifdef _WIN32 -# include // _MAX_PATH -# include // _[w]getcwd, _[w]chdir -#else -# include // mbstowcs, wcstombs -# include // PATH_MAX -# include // getcwd, chdir -#endif - -#ifndef _WIN32 -# ifndef PATH_MAX -# define PATH_MAX 4096 -# endif -#endif - -#include - -namespace cutl -{ - namespace fs - { - char const* invalid_path_base:: - what () const LIBCUTL_NOTHROW_NOEXCEPT - { - return "invalid filesystem path"; - } - - // - // char - // - - template <> - LIBCUTL_EXPORT basic_path basic_path:: - current () - { -#ifdef _WIN32 - char cwd[_MAX_PATH]; - if(_getcwd(cwd, _MAX_PATH) == 0) - throw invalid_basic_path ("."); -#else - char cwd[PATH_MAX]; - if (getcwd (cwd, PATH_MAX) == 0) - throw invalid_basic_path ("."); -#endif - - return basic_path (cwd); - } - - template <> - LIBCUTL_EXPORT void basic_path:: - current (basic_path const& p) - { - string_type const& s (p.string ()); - - if (p.empty ()) - throw invalid_basic_path (s); - -#ifdef _WIN32 - if(_chdir(s.c_str ()) != 0) - throw invalid_basic_path (s); -#else - if (chdir (s.c_str ()) != 0) - throw invalid_basic_path (s); -#endif - } - - // - // wchar_t - // - - template <> - LIBCUTL_EXPORT basic_path basic_path:: - current () - { -#ifdef _WIN32 - wchar_t wcwd[_MAX_PATH]; - if(_wgetcwd(wcwd, _MAX_PATH) == 0) - throw invalid_basic_path (L"."); -#else - char cwd[PATH_MAX]; - if (getcwd (cwd, PATH_MAX) == 0) - throw invalid_basic_path (L"."); - - wchar_t wcwd[PATH_MAX]; - if (mbstowcs (wcwd, cwd, PATH_MAX) == size_type (-1)) - throw invalid_basic_path (L"."); -#endif - - return basic_path (wcwd); - } - - template <> - LIBCUTL_EXPORT void basic_path:: - current (basic_path const& p) - { - string_type const& s (p.string ()); - - if (p.empty ()) - throw invalid_basic_path (s); - -#ifdef _WIN32 - if(_wchdir(s.c_str ()) != 0) - throw invalid_basic_path (s); -#else - char ns[PATH_MAX + 1]; - - if (wcstombs (ns, s.c_str (), PATH_MAX) == size_type (-1)) - throw invalid_basic_path (s); - - ns[PATH_MAX] = '\0'; - - if (chdir (ns) != 0) - throw invalid_basic_path (s); -#endif - } - } -} diff --git a/cutl/fs/path.hxx b/cutl/fs/path.hxx deleted file mode 100644 index df0782e..0000000 --- a/cutl/fs/path.hxx +++ /dev/null @@ -1,333 +0,0 @@ -// file : cutl/fs/path.hxx -// license : MIT; see accompanying LICENSE file - -#ifndef CUTL_FS_PATH_HXX -#define CUTL_FS_PATH_HXX - -#include -#include - -#include - -#include -#include - -namespace cutl -{ - namespace fs - { - template - class basic_path; - - template - struct path_traits - { - typedef std::basic_string string_type; - typedef typename string_type::size_type size_type; - - // Canonical directory and path seperators. - // -#ifdef _WIN32 - static C const directory_separator = '\\'; - static C const path_separator = ';'; -#else - static C const directory_separator = '/'; - static C const path_separator = ':'; -#endif - - // Directory separator tests. On some platforms there - // could be multiple seperators. For example, on Windows - // we check for both '/' and '\'. - // - static bool - is_separator (C c) - { -#ifdef _WIN32 - return c == '\\' || c == '/'; -#else - return c == '/'; -#endif - } - - static size_type - find_separator (string_type const& s, size_type pos = 0) - { - for (size_type n (s.size ()); pos < n; ++pos) - { - if (is_separator (s[pos])) - return pos; - } - - return string_type::npos; - } - - static size_type - rfind_separator (string_type const& s, size_type pos = string_type::npos) - { - if (pos == string_type::npos) - pos = s.size (); - else - pos++; - - for (; pos > 0; --pos) - { - if (is_separator (s[pos - 1])) - return pos - 1; - } - - return string_type::npos; - } - - static int - compare (string_type const& l, string_type const& r) - { - size_type ln (l.size ()), rn (r.size ()), n (ln < rn ? ln : rn); - for (size_type i (0); i != n; ++i) - { -#ifdef _WIN32 - C lc (tolower (l[i])), rc (tolower (r[i])); -#else - C lc (l[i]), rc (r[i]); -#endif - if (is_separator (lc) && is_separator (rc)) - continue; - - if (lc < rc) return -1; - if (lc > rc) return 1; - } - - return ln < rn ? -1 : (ln > rn ? 1 : 0); - } - - private: -#ifdef _WIN32 - static C - tolower (C); -#endif - }; - - template - class invalid_basic_path; - - typedef basic_path path; - typedef invalid_basic_path invalid_path; - - typedef basic_path wpath; - typedef invalid_basic_path invalid_wpath; - - // - // - class LIBCUTL_EXPORT invalid_path_base: exception - { - public: - virtual char const* - what () const LIBCUTL_NOTHROW_NOEXCEPT; - }; - - template - class invalid_basic_path: public invalid_path_base - { - public: - typedef std::basic_string string_type; - - invalid_basic_path (C const* p): path_ (p) {} - invalid_basic_path (string_type const& p): path_ (p) {} - ~invalid_basic_path () LIBCUTL_NOTHROW_NOEXCEPT {} - - string_type const& - path () const - { - return path_; - } - - private: - string_type path_; - }; - - template - class basic_path - { - public: - typedef std::basic_string string_type; - typedef typename string_type::size_type size_type; - - typedef path_traits traits; - - // Construct special empty path. - // - basic_path () - { - } - - explicit - basic_path (C const* s) - : path_ (s) - { - init (); - } - - basic_path (C const* s, size_type n) - : path_ (s, n) - { - init (); - } - - explicit - basic_path (string_type const& s) - : path_ (s) - { - init (); - } - - void - swap (basic_path& p) - { - path_.swap (p.path_); - } - - void - clear () - { - path_.clear (); - } - - static basic_path - current (); - - static void - current (basic_path const&); - - public: - bool - empty () const - { - return path_.empty (); - } - - bool - absolute () const; - - bool - relative () const - { - return !absolute (); - } - - bool - root () const; - - public: - // Return the path without the directory part. - // - basic_path - leaf () const; - - // Return the directory part of the path or empty path if - // there is no directory. - // - basic_path - directory () const; - - // Return the path without the extension, if any. - // - basic_path - base () const; - - public: - // Normalize the path. This includes collapsing the '.' and '..' - // directories if possible, collapsing multiple directory - // separators, and converting all directory separators to the - // canonical form. Returns *this. - // - basic_path& - normalize (); - - // Make the path absolute using the current directory unless - // it is already absolute. - // - basic_path& - complete (); - - public: - basic_path - operator/ (basic_path const& x) const - { - basic_path r (*this); - r /= x; - return r; - } - - basic_path& - operator/= (basic_path const&); - - basic_path - operator+ (string_type const& s) const - { - return basic_path (path_ + s); - } - - basic_path& - operator+= (string_type const& s) - { - path_ += s; - return *this; - } - - // Note that comparison is case-insensitive if the filesystem is - // not case-sensitive (e.g., Windows). - // - bool - operator== (basic_path const& x) const - { - return traits::compare (path_, x.path_) == 0; - } - - bool - operator!= (basic_path const& x) const - { - return !(*this == x); - } - - bool - operator< (basic_path const& x) const - { - return traits::compare (path_, x.path_) < 0; - } - - public: - const string_type& - string () const - { - return path_; - } - - // If possible, return a POSIX representation of the path. For example, - // for a Windows path in the form foo\bar this function will return - // foo/bar. If it is not possible to create a POSIX representation for - // this path (e.g., c:\foo), this function will throw the invalid_path - // exception. - // - string_type - posix_string () const; - - private: - void - init (); - - private: - string_type path_; - }; - - template - inline std::basic_ostream& - operator<< (std::basic_ostream& os, basic_path const& p) - { - return os << p.string (); - } - } -} - -#include -#include - -#endif // CUTL_FS_PATH_HXX diff --git a/cutl/fs/path.ixx b/cutl/fs/path.ixx deleted file mode 100644 index b46e4f6..0000000 --- a/cutl/fs/path.ixx +++ /dev/null @@ -1,70 +0,0 @@ -// file : cutl/fs/path.ixx -// license : MIT; see accompanying LICENSE file - -#ifdef _WIN32 -# include // std::tolower -# include // std::towlower -#endif - -namespace cutl -{ - namespace fs - { -#ifdef _WIN32 - template <> - inline char path_traits:: - tolower (char c) - { - return std::tolower (c); - } - - template <> - inline wchar_t path_traits:: - tolower (wchar_t c) - { - return std::towlower (c); - } -#endif - - template - inline bool basic_path:: - absolute () const - { -#ifdef _WIN32 - return path_.size () > 1 && path_[1] == ':'; -#else - return !path_.empty () && traits::is_separator (path_[0]); -#endif - } - - template - inline bool basic_path:: - root () const - { -#ifdef _WIN32 - return path_.size () == 2 && path_[1] == ':'; -#else - return path_.size () == 1 && traits::is_separator (path_[0]); -#endif - } - - template - inline basic_path& basic_path:: - complete () - { - if (relative ()) - *this = current () / *this; - - return *this; - } - -#ifndef _WIN32 - template - inline typename basic_path::string_type basic_path:: - posix_string () const - { - return string (); - } -#endif - } -} diff --git a/cutl/fs/path.txx b/cutl/fs/path.txx deleted file mode 100644 index 5c6611e..0000000 --- a/cutl/fs/path.txx +++ /dev/null @@ -1,209 +0,0 @@ -// file : cutl/fs/path.txx -// license : MIT; see accompanying LICENSE file - -#include - -namespace cutl -{ - namespace fs - { - template - basic_path basic_path:: - leaf () const - { - size_type p (traits::rfind_separator (path_)); - - return p != string_type::npos - ? basic_path (path_.c_str () + p + 1, path_.size () - p - 1) - : *this; - } - - template - basic_path basic_path:: - directory () const - { - if (root ()) - return basic_path (); - - size_type p (traits::rfind_separator (path_)); - - // Include the trailing slash so that we get correct behavior - // if directory is root. - // - return p != string_type::npos - ? basic_path (path_.c_str (), p + 1) - : basic_path (); - } - - template - basic_path basic_path:: - base () const - { - size_type i (path_.size ()); - - for (; i > 0; --i) - { - if (path_[i - 1] == '.') - break; - - if (traits::is_separator (path_[i - 1])) - { - i = 0; - break; - } - } - - // Weed out paths like ".txt" and "/.txt" - // - if (i > 1 && !traits::is_separator (path_[i - 2])) - { - return basic_path (path_.c_str (), i - 1); - } - else - return *this; - } - -#ifdef _WIN32 - template - typename basic_path::string_type basic_path:: - posix_string () const - { - if (absolute ()) - throw invalid_basic_path (path_); - - string_type r (path_); - - // Translate Windows-style separators to the POSIX ones. - // - for (size_type i (0), n (r.size ()); i != n; ++i) - if (r[i] == '\\') - r[i] = '/'; - - return r; - } -#endif - - template - basic_path& basic_path:: - operator/= (basic_path const& r) - { - if (r.absolute ()) - throw invalid_basic_path (r.path_); - - if (path_.empty () || r.path_.empty ()) - { - path_ += r.path_; - return *this; - } - - if (!traits::is_separator (path_[path_.size () - 1])) - path_ += traits::directory_separator; - - path_ += r.path_; - - return *this; - } - - template - basic_path& basic_path:: - normalize () - { - if (empty ()) - return *this; - - bool abs (absolute ()); - - typedef std::vector paths; - paths ps; - - for (size_type b (0), e (traits::find_separator (path_)), - n (path_.size ());; - e = traits::find_separator (path_, b)) - { - string_type s (path_, b, e == string_type::npos ? e : e - b); - ps.push_back (s); - - if (e == string_type::npos) - break; - - ++e; - - while (e < n && traits::is_separator (path_[e])) - ++e; - - if (e == n) - break; - - b = e; - } - - // First collapse '.' and '..'. - // - paths r; - - for (typename paths::const_iterator i (ps.begin ()), e (ps.end ()); - i != e; ++i) - { - string_type const& s (*i); - size_type n (s.size ()); - - if (n == 1 && s[0] == '.') - continue; - - if (n == 2 && s[0] == '.' && s[1] == '.') - { - // Pop the last directory from r unless it is '..'. - // - if (!r.empty ()) - { - string_type const& s1 (r.back ()); - - if (!(s1.size () == 2 && s1[0] == '.' && s1[1] == '.')) - { - // Cannot go past the root directory. - // - if (abs && r.size () == 1) - throw invalid_basic_path (path_); - - r.pop_back (); - continue; - } - } - } - - r.push_back (s); - } - - // Reassemble the path. - // - string_type p; - - for (typename paths::const_iterator i (r.begin ()), e (r.end ()); - i != e;) - { - p += *i; - - if (++i != e) - p += traits::directory_separator; - } - - if (p.empty () && !r.empty ()) - p += traits::directory_separator; // Root directory. - - path_.swap (p); - return *this; - } - - template - void basic_path:: - init () - { - // Strip trailing slashes except for the case where the single - // slash represents the root directory. - // - size_type n (path_.size ()); - for (; n > 1 && traits::is_separator (path_[n - 1]); --n) ; - path_.resize (n); - } - } -} -- cgit v1.1