| Index: trunk/src/tools/gn/source_dir.cc
|
| ===================================================================
|
| --- trunk/src/tools/gn/source_dir.cc (revision 214322)
|
| +++ trunk/src/tools/gn/source_dir.cc (working copy)
|
| @@ -1,98 +0,0 @@
|
| -// Copyright (c) 2013 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "tools/gn/source_dir.h"
|
| -
|
| -#include "base/logging.h"
|
| -#include "tools/gn/filesystem_utils.h"
|
| -#include "tools/gn/source_file.h"
|
| -
|
| -namespace {
|
| -
|
| -void AssertValueSourceDirString(const std::string& s) {
|
| - DCHECK(!s.empty());
|
| - DCHECK(s[0] == '/');
|
| - DCHECK(EndsWithSlash(s));
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -SourceDir::SourceDir() {
|
| -}
|
| -
|
| -SourceDir::SourceDir(const base::StringPiece& p)
|
| - : value_(p.data(), p.size()) {
|
| - if (!EndsWithSlash(value_))
|
| - value_.push_back('/');
|
| - AssertValueSourceDirString(value_);
|
| -}
|
| -
|
| -SourceDir::~SourceDir() {
|
| -}
|
| -
|
| -SourceFile SourceDir::ResolveRelativeFile(const base::StringPiece& p) const {
|
| - SourceFile ret;
|
| -
|
| - // It's an error to resolve an empty string or one that is a directory
|
| - // (indicated by a trailing slash) because this is the function that expects
|
| - // to return a file.
|
| - if (p.empty() || (p.size() > 0 && p[p.size() - 1] == '/'))
|
| - return SourceFile();
|
| - if (p[0] == '/') {
|
| - // Absolute path.
|
| - ret.value_.assign(p.data(), p.size());
|
| - return ret;
|
| - }
|
| -
|
| - ret.value_.reserve(value_.size() + p.size());
|
| - ret.value_.assign(value_);
|
| - ret.value_.append(p.data(), p.size());
|
| -
|
| - NormalizePath(&ret.value_);
|
| - return ret;
|
| -}
|
| -
|
| -SourceDir SourceDir::ResolveRelativeDir(const base::StringPiece& p) const {
|
| - SourceDir ret;
|
| -
|
| - if (p.empty())
|
| - return ret;
|
| - if (p[0] == '/') {
|
| - // Absolute path.
|
| - return SourceDir(p);
|
| - }
|
| -
|
| - ret.value_.reserve(value_.size() + p.size());
|
| - ret.value_.assign(value_);
|
| - ret.value_.append(p.data(), p.size());
|
| -
|
| - NormalizePath(&ret.value_);
|
| - if (!EndsWithSlash(ret.value_))
|
| - ret.value_.push_back('/');
|
| - AssertValueSourceDirString(ret.value_);
|
| -
|
| - return ret;
|
| -}
|
| -
|
| -base::FilePath SourceDir::Resolve(const base::FilePath& source_root) const {
|
| - if (is_null())
|
| - return base::FilePath();
|
| -
|
| - std::string converted;
|
| - if (is_system_absolute()) {
|
| - converted = value_;
|
| - ConvertPathToSystem(&converted);
|
| - return base::FilePath(UTF8ToFilePath(converted));
|
| - }
|
| -
|
| - // String the double-leading slash for source-relative paths.
|
| - converted.assign(&value_[2], value_.size() - 2);
|
| - ConvertPathToSystem(&converted);
|
| - return source_root.Append(UTF8ToFilePath(converted));
|
| -}
|
| -
|
| -void SourceDir::SwapInValue(std::string* v) {
|
| - value_.swap(*v);
|
| - AssertValueSourceDirString(value_);
|
| -}
|
|
|