diff options
author | Manjunath Kudlur <keveman@gmail.com> | 2015-11-06 16:27:58 -0800 |
---|---|---|
committer | Manjunath Kudlur <keveman@gmail.com> | 2015-11-06 16:27:58 -0800 |
commit | f41959ccb2d9d4c722fe8fc3351401d53bcf4900 (patch) | |
tree | ef0ca22cb2a5ac4bdec9d080d8e0788a53ed496d /tensorflow/stream_executor/lib/path.cc |
TensorFlow: Initial commit of TensorFlow library.
TensorFlow is an open source software library for numerical computation
using data flow graphs.
Base CL: 107276108
Diffstat (limited to 'tensorflow/stream_executor/lib/path.cc')
-rw-r--r-- | tensorflow/stream_executor/lib/path.cc | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/tensorflow/stream_executor/lib/path.cc b/tensorflow/stream_executor/lib/path.cc new file mode 100644 index 0000000000..a6e76e99b7 --- /dev/null +++ b/tensorflow/stream_executor/lib/path.cc @@ -0,0 +1,50 @@ +#include "tensorflow/stream_executor/lib/path.h" +#include "tensorflow/stream_executor/lib/strcat.h" + +using ::perftools::gputools::port::StringPiece; +using ::perftools::gputools::port::StrAppend; + +namespace perftools { +namespace gputools { +namespace port { +namespace internal { + +static bool IsAbsolutePath(port::StringPiece path) { + return !path.empty() && path[0] == '/'; +} + +// For an array of paths of length count, append them all together, +// ensuring that the proper path separators are inserted between them. +string JoinPathImpl(std::initializer_list<port::StringPiece> paths) { + string result; + + for (port::StringPiece path : paths) { + if (path.empty()) continue; + + if (result.empty()) { + result = path.ToString(); + continue; + } + + if (result[result.size() - 1] == '/') { + if (IsAbsolutePath(path)) { + StrAppend(&result, path.substr(1)); + } else { + StrAppend(&result, path); + } + } else { + if (IsAbsolutePath(path)) { + StrAppend(&result, path); + } else { + StrAppend(&result, "/", path); + } + } + } + + return result; +} + +} // namespace internal +} // namespace port +} // namespace gputools +} // namespace perftools |