X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fmisc%2Fsg_path.hxx;h=bdb45e01e74d78e8af654086990636e29cc08bb9;hb=3b3baa996b2485855534f08b68c52f3a40149598;hp=3bc672240a3f6b43086d2a035293efdaf7ee3e53;hpb=e2b4c0787a4398199ef2d35e05963acd58b7a04c;p=simgear.git diff --git a/simgear/misc/sg_path.hxx b/simgear/misc/sg_path.hxx index 3bc67224..bdb45e01 100644 --- a/simgear/misc/sg_path.hxx +++ b/simgear/misc/sg_path.hxx @@ -31,19 +31,11 @@ #include - #include STL_STRING -SG_USING_STD(string); - +#include -#ifdef macintosh -# define SG_PATH_SEP ':' -# define SG_BAD_PATH_SEP '/' -#else -# define SG_PATH_SEP '/' -# define SG_BAD_PATH_SEP ':' -#endif +SG_USING_STD(string); /** @@ -69,7 +61,7 @@ public: * Construct a path based on the starting path provided. * @param p initial path */ - SGPath( const string p ); + SGPath( const string& p ); /** Destructor */ ~SGPath(); @@ -78,39 +70,75 @@ public: * Set path to a new value * @param p new path */ - void set( const string p ); + void set( const string& p ); + SGPath& operator= ( const char* p ) { this->set(p); return *this; } /** * Append another piece to the existing path. Inserts a path * separator between the existing component and the new component. * @param p additional path component */ - void append( const string p ); + void append( const string& p ); /** * Concatenate a string to the end of the path without inserting a * path separator. * @param p addtional path suffix */ - void concat( const string p ); + 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 base part of the path (everything but the extension.) + * @return the base string + */ + string base() const; + + /** + * Get the extention part of the path (everything after the final ".") + * @return the extention string + */ + string extension() const; + /** Get the path string * @return path string */ - inline string str() const { return path; } + string str() const { return path; } /** Get the path string * @return path in "C" string (ptr to char array) form. */ - inline const char *c_str() { return path.c_str(); } + const char* c_str() { return path.c_str(); } + + /** + * Determine if file exists by attempting to fopen it. + * @return true if file exists, otherwise returns false. + */ + bool exists() const; + +private: + + void fix(); + }; +/** + * Split a directory search path into a vector of individual paths + */ +string_list sgPathSplit( const string &search_path ); + + #endif // _SG_PATH_HXX