003 File Manager
Current Path:
/usr/src/contrib/llvm-project/clang/utils/TableGen
usr
/
src
/
contrib
/
llvm-project
/
clang
/
utils
/
TableGen
/
📁
..
📄
ASTTableGen.cpp
(5.02 KB)
📄
ASTTableGen.h
(14.83 KB)
📄
ClangASTNodesEmitter.cpp
(7.94 KB)
📄
ClangASTPropertiesEmitter.cpp
(30.37 KB)
📄
ClangAttrEmitter.cpp
(149.44 KB)
📄
ClangCommentCommandInfoEmitter.cpp
(4.21 KB)
📄
ClangCommentHTMLNamedCharacterReferenceEmitter.cpp
(2.84 KB)
📄
ClangCommentHTMLTagsEmitter.cpp
(2.32 KB)
📄
ClangDataCollectorsEmitter.cpp
(513 B)
📄
ClangDiagnosticsEmitter.cpp
(59.2 KB)
📄
ClangOpcodesEmitter.cpp
(10.63 KB)
📄
ClangOpenCLBuiltinEmitter.cpp
(30.56 KB)
📄
ClangOptionDocEmitter.cpp
(13.16 KB)
📄
ClangSACheckersEmitter.cpp
(10.79 KB)
📄
ClangTypeNodesEmitter.cpp
(6.9 KB)
📄
MveEmitter.cpp
(83.2 KB)
📄
NeonEmitter.cpp
(79.2 KB)
📄
SveEmitter.cpp
(42.28 KB)
📄
TableGen.cpp
(17.16 KB)
📄
TableGenBackends.h
(6.59 KB)
Editing: ClangCommentHTMLNamedCharacterReferenceEmitter.cpp
//===--- ClangCommentHTMLNamedCharacterReferenceEmitter.cpp -----------------=// // // 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 // //===----------------------------------------------------------------------===// // // This tablegen backend emits an efficient function to translate HTML named // character references to UTF-8 sequences. // //===----------------------------------------------------------------------===// #include "TableGenBackends.h" #include "llvm/ADT/SmallString.h" #include "llvm/Support/ConvertUTF.h" #include "llvm/TableGen/Error.h" #include "llvm/TableGen/Record.h" #include "llvm/TableGen/StringMatcher.h" #include "llvm/TableGen/TableGenBackend.h" #include <vector> using namespace llvm; /// Convert a code point to the corresponding UTF-8 sequence represented /// as a C string literal. /// /// \returns true on success. static bool translateCodePointToUTF8(unsigned CodePoint, SmallVectorImpl<char> &CLiteral) { char Translated[UNI_MAX_UTF8_BYTES_PER_CODE_POINT]; char *TranslatedPtr = Translated; if (!ConvertCodePointToUTF8(CodePoint, TranslatedPtr)) return false; StringRef UTF8(Translated, TranslatedPtr - Translated); raw_svector_ostream OS(CLiteral); OS << "\""; for (size_t i = 0, e = UTF8.size(); i != e; ++i) { OS << "\\x"; OS.write_hex(static_cast<unsigned char>(UTF8[i])); } OS << "\""; return true; } void clang::EmitClangCommentHTMLNamedCharacterReferences(RecordKeeper &Records, raw_ostream &OS) { std::vector<Record *> Tags = Records.getAllDerivedDefinitions("NCR"); std::vector<StringMatcher::StringPair> NameToUTF8; SmallString<32> CLiteral; for (std::vector<Record *>::iterator I = Tags.begin(), E = Tags.end(); I != E; ++I) { Record &Tag = **I; std::string Spelling = std::string(Tag.getValueAsString("Spelling")); uint64_t CodePoint = Tag.getValueAsInt("CodePoint"); CLiteral.clear(); CLiteral.append("return "); if (!translateCodePointToUTF8(CodePoint, CLiteral)) { SrcMgr.PrintMessage(Tag.getLoc().front(), SourceMgr::DK_Error, Twine("invalid code point")); continue; } CLiteral.append(";"); StringMatcher::StringPair Match(Spelling, std::string(CLiteral.str())); NameToUTF8.push_back(Match); } emitSourceFileHeader("HTML named character reference to UTF-8 " "translation", OS); OS << "StringRef translateHTMLNamedCharacterReferenceToUTF8(\n" " StringRef Name) {\n"; StringMatcher("Name", NameToUTF8, OS).Emit(); OS << " return StringRef();\n" << "}\n\n"; }
Upload File
Create Folder