diff options
author | Evan Martin <martine@danga.com> | 2012-09-13 22:33:40 (GMT) |
---|---|---|
committer | Evan Martin <martine@danga.com> | 2012-09-13 22:33:40 (GMT) |
commit | 7096bf1507f98be981aa14ffd9ed5a4a8b1c1494 (patch) | |
tree | 10f75334ddb1dc86c2cc85db0cab93ca672d39de /src/includes_normalize.h | |
parent | 50af448b293b411bde5232931525574aba3bb451 (diff) | |
parent | 06fa62352d1e9868409b299ffc8abc8f4cd9a39d (diff) | |
download | Ninja-7096bf1507f98be981aa14ffd9ed5a4a8b1c1494.zip Ninja-7096bf1507f98be981aa14ffd9ed5a4a8b1c1494.tar.gz Ninja-7096bf1507f98be981aa14ffd9ed5a4a8b1c1494.tar.bz2 |
version 1.0.0v1.0.0
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..43527af --- /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(const string& input, const char* relative_to); +}; |