Make constructors target-specific. This fixes problems where the path would
authorNick Lewycky <nicholas@mxc.ca>
Sun, 11 May 2008 17:37:40 +0000 (17:37 +0000)
committerNick Lewycky <nicholas@mxc.ca>
Sun, 11 May 2008 17:37:40 +0000 (17:37 +0000)
include backslashes on Windows. This should fix llvm-ld problems on win32.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50960 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/System/Path.h
lib/System/Unix/Path.inc
lib/System/Win32/Path.inc

index 37c42aa366c84c041eb8de130193e54c71063576..ba251a9dbbc825d5266b0463f99eb2a78098dc4e 100644 (file)
@@ -180,7 +180,7 @@ namespace sys {
       /// of the path, use the isValid method.
       /// @param p The path to assign.
       /// @brief Construct a Path from a string.
-      explicit Path(const std::string& p) : path(p) {}
+      explicit Path(const std::string& p);
 
       /// This constructor will accept a character range as a path.  No checking
       /// is done on this path to determine if it is valid.  To determine
@@ -188,8 +188,7 @@ namespace sys {
       /// @param StrStart A pointer to the first character of the path name
       /// @param StrLen The length of the path name at StrStart
       /// @brief Construct a Path from a string.
-      explicit Path(const char *StrStart, unsigned StrLen)
-        : path(StrStart, StrStart+StrLen) {}
+      Path(const char *StrStart, unsigned StrLen);
 
     /// @}
     /// @name Operators
index 9f4b5914ce0e2450d10b1e3af8a5a3b784735589..6035a14d27aebb77fb03d71076c25ec96de2cbcb 100644 (file)
@@ -75,6 +75,12 @@ using namespace sys;
 
 extern const char sys::PathSeparator = ':';
 
+Path::Path(const std::string& p)
+  : path(p) {}
+
+Path::Path(const char *StrStart, unsigned StrLen)
+  : path(StrStart, StrLen) {}
+
 bool 
 Path::isValid() const {
   // Check some obvious things
index ce5fe2a3a5fcdfe1dc93187b5e71739d4b71a11a..b5897053b3c228ea5bb964694aa36068a07d646a 100644 (file)
@@ -46,6 +46,16 @@ namespace llvm {
 namespace sys {
 const char PathSeparator = ';';
 
+Path::Path(const std::string& p)
+  : path(p) {
+  FlipBackSlashes(path);
+}
+
+Path::Path(const char *StrStart, unsigned StrLen)
+  : path(StrStart, StrLen) {
+  FlipBackSlashes(path);
+}
+
 bool
 Path::isValid() const {
   if (path.empty())
@@ -230,7 +240,7 @@ Path::isRootDirectory() const {
 }
 
 std::string Path::getDirname() const {
-  return getDirnameCharSep(path, '\\');
+  return getDirnameCharSep(path, '/');
 }
 
 std::string