diff options
Diffstat (limited to 'lib/System/Path.cpp')
-rw-r--r-- | lib/System/Path.cpp | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/lib/System/Path.cpp b/lib/System/Path.cpp new file mode 100644 index 0000000000..e32842dd18 --- /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 |