diff options
author | Scott Graham <scottmg@chromium.org> | 2012-08-12 22:51:21 (GMT) |
---|---|---|
committer | Evan Martin <martine@danga.com> | 2012-08-12 22:58:47 (GMT) |
commit | 0af67f1babe08c7e00ba194ccb47c4a0c60fa52a (patch) | |
tree | e1e7be9da98c6bfc2716af0eff748ef9dec8cd29 /src/includes_normalize.h | |
parent | c08766e86d10f0ef5417f6c6accbff37706b08c4 (diff) | |
download | Ninja-0af67f1babe08c7e00ba194ccb47c4a0c60fa52a.zip Ninja-0af67f1babe08c7e00ba194ccb47c4a0c60fa52a.tar.gz Ninja-0af67f1babe08c7e00ba194ccb47c4a0c60fa52a.tar.bz2 |
add functions for normalizing win32 include paths
(Note from Evan: this is landing Scott's code more or less verbatim
without a lot of analysis; it could maybe be simplified and reduced,
but it's only intended to be used in the MSVC helper so it's fine
to be experimental.)
Diffstat (limited to 'src/includes_normalize.h')
-rw-r--r-- | src/includes_normalize.h | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/includes_normalize.h b/src/includes_normalize.h new file mode 100644 index 0000000..458613a --- /dev/null +++ b/src/includes_normalize.h @@ -0,0 +1,35 @@ +// Copyright 2012 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include <string> +#include <vector> +using namespace std; + +struct StringPiece; + +/// Utility functions for normalizing include paths on Windows. +/// TODO: this likely duplicates functionality of CanonicalizePath; refactor. +struct IncludesNormalize { + // Internal utilities made available for testing, maybe useful otherwise. + static string Join(const vector<string>& list, char sep); + static vector<string> Split(const string& input, char sep); + static string ToLower(const string& s); + static string AbsPath(StringPiece s); + static string Relativize(StringPiece path, const string& start); + + /// Normalize by fixing slashes style, fixing redundant .. and . and makes the + /// path relative to |relative_to|. Case is normalized to lowercase on + /// Windows too. + static string Normalize(StringPiece input, const char* relative_to); +}; |