diff options
author | Reid Spencer <rspencer@reidspencer.com> | 2004-08-29 05:24:01 +0000 |
---|---|---|
committer | Reid Spencer <rspencer@reidspencer.com> | 2004-08-29 05:24:01 +0000 |
commit | 8e66595512b065b69d595bae665b6ad665eca6d0 (patch) | |
tree | 1c901bbf4fff4a03d396f9374940fc8d7392651f /lib/System/Path.cpp | |
parent | 81bc6e377e06c358747f59bce781aba25c60fb56 (diff) |
Revise the design of the Path concept per peer review. Too many changes to
note individually but these essence of it is to not derive from
std::string, clarify the interface, and provide better documentation.
There is now also (untested) implementations for AIX, Darwin, and SunOS.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16078 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/System/Path.cpp')
-rw-r--r-- | lib/System/Path.cpp | 35 |
1 files changed, 7 insertions, 28 deletions
diff --git a/lib/System/Path.cpp b/lib/System/Path.cpp index e32842dd18..93c1e0a710 100644 --- a/lib/System/Path.cpp +++ b/lib/System/Path.cpp @@ -10,10 +10,11 @@ // This header file implements the operating system Path concept. // //===----------------------------------------------------------------------===// + #include "llvm/System/Path.h" namespace llvm { -namespace sys { +using namespace sys; //===----------------------------------------------------------------------===// //=== WARNING: Implementation here must contain only TRULY operating system @@ -21,40 +22,18 @@ namespace sys { //===----------------------------------------------------------------------===// 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; +Path::is_file() const { + return (is_valid() && path[path.length()-1] != '/'); } -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 ); +bool +Path::is_directory() const { + return (is_valid() && path[path.length()-1] == '/'); } -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 |