hokein updated this revision to Diff 430646. hokein added a comment. add addPayload method, and share payload in cook as well
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D125311/new/ https://reviews.llvm.org/D125311 Files: clang-tools-extra/pseudo/include/clang-pseudo/Token.h clang-tools-extra/pseudo/lib/Lex.cpp clang-tools-extra/pseudo/lib/Token.cpp Index: clang-tools-extra/pseudo/lib/Token.cpp =================================================================== --- clang-tools-extra/pseudo/lib/Token.cpp +++ clang-tools-extra/pseudo/lib/Token.cpp @@ -116,7 +116,7 @@ } TokenStream stripComments(const TokenStream &Input) { - TokenStream Out; + TokenStream Out(Input.getPayload()); for (const Token &T : Input.tokens()) { if (T.Kind == tok::comment) continue; Index: clang-tools-extra/pseudo/lib/Lex.cpp =================================================================== --- clang-tools-extra/pseudo/lib/Lex.cpp +++ clang-tools-extra/pseudo/lib/Lex.cpp @@ -77,7 +77,7 @@ auto CleanedStorage = std::make_shared<llvm::BumpPtrAllocator>(); clang::IdentifierTable Identifiers(LangOpts); TokenStream Result(CleanedStorage); - + Result.addPayload(Code.getPayload()); for (auto Tok : Code.tokens()) { if (Tok.flag(LexFlags::NeedsCleaning)) { // Remove escaped newlines and trigraphs. Index: clang-tools-extra/pseudo/include/clang-pseudo/Token.h =================================================================== --- clang-tools-extra/pseudo/include/clang-pseudo/Token.h +++ clang-tools-extra/pseudo/include/clang-pseudo/Token.h @@ -161,6 +161,18 @@ return Storage[1]; } + /// Returns the shared payload. + std::shared_ptr<void> getPayload() const { return Payload; } + /// Adds the given payload to the stream. + void addPayload(std::shared_ptr<void> P) { + if (!Payload) + Payload = std::move(P); + else + Payload = std::make_shared< + std::pair<std::shared_ptr<void>, std::shared_ptr<void>>>( + std::move(P), std::move(Payload)); + } + /// Print the tokens in this stream to the output stream. /// /// The presence of newlines/spaces is preserved, but not the quantity.
Index: clang-tools-extra/pseudo/lib/Token.cpp =================================================================== --- clang-tools-extra/pseudo/lib/Token.cpp +++ clang-tools-extra/pseudo/lib/Token.cpp @@ -116,7 +116,7 @@ } TokenStream stripComments(const TokenStream &Input) { - TokenStream Out; + TokenStream Out(Input.getPayload()); for (const Token &T : Input.tokens()) { if (T.Kind == tok::comment) continue; Index: clang-tools-extra/pseudo/lib/Lex.cpp =================================================================== --- clang-tools-extra/pseudo/lib/Lex.cpp +++ clang-tools-extra/pseudo/lib/Lex.cpp @@ -77,7 +77,7 @@ auto CleanedStorage = std::make_shared<llvm::BumpPtrAllocator>(); clang::IdentifierTable Identifiers(LangOpts); TokenStream Result(CleanedStorage); - + Result.addPayload(Code.getPayload()); for (auto Tok : Code.tokens()) { if (Tok.flag(LexFlags::NeedsCleaning)) { // Remove escaped newlines and trigraphs. Index: clang-tools-extra/pseudo/include/clang-pseudo/Token.h =================================================================== --- clang-tools-extra/pseudo/include/clang-pseudo/Token.h +++ clang-tools-extra/pseudo/include/clang-pseudo/Token.h @@ -161,6 +161,18 @@ return Storage[1]; } + /// Returns the shared payload. + std::shared_ptr<void> getPayload() const { return Payload; } + /// Adds the given payload to the stream. + void addPayload(std::shared_ptr<void> P) { + if (!Payload) + Payload = std::move(P); + else + Payload = std::make_shared< + std::pair<std::shared_ptr<void>, std::shared_ptr<void>>>( + std::move(P), std::move(Payload)); + } + /// Print the tokens in this stream to the output stream. /// /// The presence of newlines/spaces is preserved, but not the quantity.
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits