]> git.mxchange.org Git - simgear.git/commitdiff
Add isAbsolute/isRelative predicates to SGPath.
authorJames Turner <zakalawe@mac.com>
Sat, 14 Aug 2010 21:51:01 +0000 (22:51 +0100)
committerJames Turner <zakalawe@mac.com>
Sat, 14 Aug 2010 21:51:01 +0000 (22:51 +0100)
simgear/misc/sg_path.cxx
simgear/misc/sg_path.hxx

index 1711cb3ca89ae48a21d5fb703027ef295609867d..58772cdee9b261ff78a94fd3679bd71bd7c2df70 100644 (file)
@@ -331,3 +331,21 @@ string_list sgPathSplit( const string &search_path ) {
 
     return result;
 }
+
+bool SGPath::isAbsolute() const
+{
+  if (path.empty()) {
+    return false;
+  }
+  
+#ifdef _WIN32
+  // detect '[A-Za-z]:/'
+  if (path.size() > 2) {
+    if (isalpha(path[0]) && (path[1] == ':') && (path[2] == sgDirPathSep)) {
+      return true;
+    }
+  }
+#endif
+  
+  return (path[0] == sgDirPathSep);
+}
index 41b7d744b49552c2f89bacfb04c5c2482184a2d6..535eef85720830f8e660d10456a9d5a5bab9efb1 100644 (file)
@@ -147,6 +147,17 @@ public:
 
     bool isFile() const;
     bool isDir() const;
+    
+    /**
+     * Opposite sense to isAbsolute
+     */
+    bool isRelative() const { return !isAbsolute(); }
+    
+    /**
+     * Is this an absolute path?
+     * I.e starts with a directory seperator, or a single character + colon
+     */
+    bool isAbsolute() const;
 private:
 
     void fix();