aboutsummaryrefslogtreecommitdiffstats
path: root/lib/System/Path.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/System/Path.cpp')
-rw-r--r--lib/System/Path.cpp60
1 files changed, 60 insertions, 0 deletions
diff --git a/lib/System/Path.cpp b/lib/System/Path.cpp
new file mode 100644
index 0000000..e32842d
--- /dev/null
+++ b/lib/System/Path.cpp
@@ -0,0 +1,60 @@
+//===-- Path.cpp - Implement OS Path Concept --------------------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file was developed by Reid Spencer and is distributed under the
+// University of Illinois Open Source License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This header file implements the operating system Path concept.
+//
+//===----------------------------------------------------------------------===//
+#include "llvm/System/Path.h"
+
+namespace llvm {
+namespace sys {
+
+//===----------------------------------------------------------------------===//
+//=== WARNING: Implementation here must contain only TRULY operating system
+//=== independent code.
+//===----------------------------------------------------------------------===//
+
+bool
+Path::is_valid() const {
+ if ( empty() ) return false;
+ return true;
+}
+
+void
+Path::fill( char* buffer, unsigned bufflen ) const {
+ unsigned pathlen = length();
+ assert( bufflen > pathlen && "Insufficient buffer size" );
+ unsigned copylen = pathlen <? (bufflen - 1);
+ this->copy(buffer, copylen, 0 );
+ buffer[ copylen ] = 0;
+}
+
+void
+Path::make_directory() {
+ char end[2];
+ end[0] = '/';
+ end[1] = 0;
+ if ( empty() )
+ this->assign( end );
+ else if ( (*this)[length()-1] != '/')
+ this->append( end );
+}
+
+void
+Path::make_file() {
+ if ( (*this)[length()-1] == '/')
+ this->erase( this->length()-1, 1 );
+}
+
+// Include the truly platform-specific parts of this class.
+#include "platform/Path.cpp"
+}
+}
+
+// vim: sw=2