003 File Manager
Current Path:
/usr/src/contrib/llvm-project/clang/include/clang/Frontend
usr
/
src
/
contrib
/
llvm-project
/
clang
/
include
/
clang
/
Frontend
/
📁
..
📄
ASTConsumers.h
(1.93 KB)
📄
ASTUnit.h
(34.09 KB)
📄
ChainedDiagnosticConsumer.h
(2.39 KB)
📄
CommandLineSourceLoc.h
(4.25 KB)
📄
CompilerInstance.h
(27.29 KB)
📄
CompilerInvocation.h
(8.85 KB)
📄
DependencyOutputOptions.h
(2.77 KB)
📄
DiagnosticRenderer.h
(6.69 KB)
📄
FrontendAction.h
(11.74 KB)
📄
FrontendActions.h
(9.39 KB)
📄
FrontendDiagnostic.h
(521 B)
📄
FrontendOptions.h
(13.21 KB)
📄
FrontendPluginRegistry.h
(877 B)
📄
LayoutOverrideSource.h
(2.08 KB)
📄
LogDiagnosticPrinter.h
(2.37 KB)
📄
MigratorOptions.h
(877 B)
📄
MultiplexConsumer.h
(3.58 KB)
📄
PCHContainerOperations.h
(527 B)
📄
PrecompiledPreamble.h
(11.83 KB)
📄
PreprocessorOutputOptions.h
(1.58 KB)
📄
SerializedDiagnosticPrinter.h
(1.41 KB)
📄
SerializedDiagnosticReader.h
(4.21 KB)
📄
SerializedDiagnostics.h
(1.47 KB)
📄
TextDiagnostic.h
(4.83 KB)
📄
TextDiagnosticBuffer.h
(2.25 KB)
📄
TextDiagnosticPrinter.h
(1.82 KB)
📄
Utils.h
(8.73 KB)
📄
VerifyDiagnosticConsumer.h
(11.4 KB)
Editing: CommandLineSourceLoc.h
//===--- CommandLineSourceLoc.h - Parsing for source locations-*- C++ -*---===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // Command line parsing for source locations. // //===----------------------------------------------------------------------===// #ifndef LLVM_CLANG_FRONTEND_COMMANDLINESOURCELOC_H #define LLVM_CLANG_FRONTEND_COMMANDLINESOURCELOC_H #include "clang/Basic/LLVM.h" #include "llvm/Support/CommandLine.h" #include "llvm/Support/raw_ostream.h" namespace clang { /// A source location that has been parsed on the command line. struct ParsedSourceLocation { std::string FileName; unsigned Line; unsigned Column; public: /// Construct a parsed source location from a string; the Filename is empty on /// error. static ParsedSourceLocation FromString(StringRef Str) { ParsedSourceLocation PSL; std::pair<StringRef, StringRef> ColSplit = Str.rsplit(':'); std::pair<StringRef, StringRef> LineSplit = ColSplit.first.rsplit(':'); // If both tail splits were valid integers, return success. if (!ColSplit.second.getAsInteger(10, PSL.Column) && !LineSplit.second.getAsInteger(10, PSL.Line)) { PSL.FileName = std::string(LineSplit.first); // On the command-line, stdin may be specified via "-". Inside the // compiler, stdin is called "<stdin>". if (PSL.FileName == "-") PSL.FileName = "<stdin>"; } return PSL; } }; /// A source range that has been parsed on the command line. struct ParsedSourceRange { std::string FileName; /// The starting location of the range. The first element is the line and /// the second element is the column. std::pair<unsigned, unsigned> Begin; /// The ending location of the range. The first element is the line and the /// second element is the column. std::pair<unsigned, unsigned> End; /// Returns a parsed source range from a string or None if the string is /// invalid. /// /// These source string has the following format: /// /// file:start_line:start_column[-end_line:end_column] /// /// If the end line and column are omitted, the starting line and columns /// are used as the end values. static Optional<ParsedSourceRange> fromString(StringRef Str) { std::pair<StringRef, StringRef> RangeSplit = Str.rsplit('-'); unsigned EndLine, EndColumn; bool HasEndLoc = false; if (!RangeSplit.second.empty()) { std::pair<StringRef, StringRef> Split = RangeSplit.second.rsplit(':'); if (Split.first.getAsInteger(10, EndLine) || Split.second.getAsInteger(10, EndColumn)) { // The string does not end in end_line:end_column, so the '-' // probably belongs to the filename which menas the whole // string should be parsed. RangeSplit.first = Str; } else HasEndLoc = true; } auto Begin = ParsedSourceLocation::FromString(RangeSplit.first); if (Begin.FileName.empty()) return None; if (!HasEndLoc) { EndLine = Begin.Line; EndColumn = Begin.Column; } return ParsedSourceRange{std::move(Begin.FileName), {Begin.Line, Begin.Column}, {EndLine, EndColumn}}; } }; } namespace llvm { namespace cl { /// Command-line option parser that parses source locations. /// /// Source locations are of the form filename:line:column. template<> class parser<clang::ParsedSourceLocation> final : public basic_parser<clang::ParsedSourceLocation> { public: inline bool parse(Option &O, StringRef ArgName, StringRef ArgValue, clang::ParsedSourceLocation &Val); }; bool parser<clang::ParsedSourceLocation>:: parse(Option &O, StringRef ArgName, StringRef ArgValue, clang::ParsedSourceLocation &Val) { using namespace clang; Val = ParsedSourceLocation::FromString(ArgValue); if (Val.FileName.empty()) { errs() << "error: " << "source location must be of the form filename:line:column\n"; return true; } return false; } } } #endif
Upload File
Create Folder