X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fmisc%2Fsg_path.hxx;h=70f1b6c52b5ee8ca4911813459b12fe795b95df6;hb=2e71b64de1d937e2b7c34dd4a2365be455d0b82a;hp=4b92f033344d14aef68168d4dee52faa2e346908;hpb=0ff748987b4d26cf3f110729bd645d64cb2d3ca0;p=simgear.git diff --git a/simgear/misc/sg_path.hxx b/simgear/misc/sg_path.hxx index 4b92f033..70f1b6c5 100644 --- a/simgear/misc/sg_path.hxx +++ b/simgear/misc/sg_path.hxx @@ -6,7 +6,7 @@ // Written by Curtis L. Olson, started April 1999. // -// Copyright (C) 1999 Curtis L. Olson - curt@flightgear.org +// Copyright (C) 1999 Curtis L. Olson - http://www.flightgear.org/~curt // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public @@ -18,10 +18,9 @@ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // -// You should have received a copy of the GNU Library General Public -// License along with this library; if not, write to the -// Free Software Foundation, Inc., 59 Temple Place - Suite 330, -// Boston, MA 02111-1307, USA. +// 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. // // $Id$ @@ -29,23 +28,19 @@ #ifndef _SG_PATH_HXX #define _SG_PATH_HXX +#include #include +#include -#include STL_STRING +#include -SG_USING_STD(string); +using std::string; - -#ifdef macintosh -# define SG_PATH_SEP ':' -# define SG_BAD_PATH_SEP '/' -#else -# define SG_PATH_SEP '/' -# define SG_BAD_PATH_SEP ':' +#ifdef _MSC_VER + typedef int mode_t; #endif - /** * A class to hide path separator difference across platforms and assist * in managing file system path names. @@ -87,25 +82,51 @@ public: * @param p additional path component */ void append( const string& p ); + /** + * Append a new piece to the existing path. Inserts a search path + * separator to the existing path and the new patch component. + * @param p additional path component */ + void add( const string& p ); + /** * Concatenate a string to the end of the path without inserting a * path separator. - * @param p addtional path suffix + * @param p additional path suffix */ void concat( const string& p ); + /** + * Get the file part of the path (everything after the last path sep) + * @return file string + */ + string file() const; + /** * Get the directory part of the path. * @return directory string */ - string dir(); + string dir() const; - /** Get the path string + /** + * Get the base part of the path (everything but the extension.) + * @return the base string + */ + string base() const; + + /** + * Get the extension part of the path (everything after the final ".") + * @return the extension string + */ + string extension() const; + + /** + * Get the path string * @return path string */ string str() const { return path; } - /** Get the path string + /** + * Get the path string * @return path in "C" string (ptr to char array) form. */ const char* c_str() { return path.c_str(); } @@ -116,6 +137,12 @@ public: */ bool exists() const; + /** + * Create the designated directory. + * @return 0 on success, or <0 on failure. + */ + int create_dir(mode_t mode); + private: void fix(); @@ -123,6 +150,17 @@ private: }; +/** + * Split a directory string into a list of it's parent directories. + */ +string_list sgPathBranchSplit( const string &path ); + +/** + * Split a directory search path into a vector of individual paths + */ +string_list sgPathSplit( const string &search_path ); + + #endif // _SG_PATH_HXX