From acbda29f838280ba98cf9e9e539e9d8a6e8fc6ad Mon Sep 17 00:00:00 2001 From: David Robillard Date: Fri, 9 Jun 2006 15:07:31 +0000 Subject: Added Om aka Graph aka god knows what git-svn-id: http://svn.drobilla.net/lad/grauph@9 a436a847-0d15-0410-975c-d299462d15a1 --- src/common/util/Path.h | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 src/common/util/Path.h (limited to 'src/common/util/Path.h') diff --git a/src/common/util/Path.h b/src/common/util/Path.h new file mode 100644 index 00000000..126fe01d --- /dev/null +++ b/src/common/util/Path.h @@ -0,0 +1,84 @@ +/* This file is part of Om. Copyright (C) 2005 Dave Robillard. + * + * Om 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 2 of the License, or (at your option) any later + * version. + * + * Om 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 details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef PATH_H +#define PATH_H + +#include +#include +using std::string; + +namespace Om { + + +/** Simple wrapper around standard string with useful path-specific methods. + */ +class Path : public std::basic_string { +public: + Path(const std::basic_string& path) + : std::basic_string(path) + { + assert(path.length() > 0); + } + + + inline bool is_valid() const + { + return (find_last_of("/") != string::npos); + } + + /** Return the name of this object (everything after the last '/'). + */ + inline std::basic_string name() const + { + assert(is_valid()); + + if ((*this) == "/") + return ""; + else + return substr(find_last_of("/")+1); + } + + + /** Return the parent's path. + * + * Calling this on the path "/" will return "/". + */ + inline Path parent() const + { + assert(is_valid()); + + std::basic_string parent = substr(0, find_last_of("/")); + return (parent == "") ? "/" : parent; + } + + inline Path base_path() const + { + assert(is_valid()); + + if ((*this) == "/") + return *this; + else + return (*this) + "/"; + } + + Path(const char* s) : std::basic_string(s) {} +}; + + +} // namespace Om + +#endif // PATH_H -- cgit v1.2.1