diff options
author | Ed Schouten <ed@FreeBSD.org> | 2009-07-04 13:58:54 +0000 |
---|---|---|
committer | Ed Schouten <ed@FreeBSD.org> | 2009-07-04 13:58:54 +0000 |
commit | 5362a71c02e7d448a8ce98cf00c47e353fba5d04 (patch) | |
tree | 8ddfe382e1c6d590dc240e76f7cd45cea5c78e24 /lib/Lex/Preprocessor.cpp | |
parent | 4ebdf5c4f587daef4e0be499802eac3a7a49bf2f (diff) | |
download | src-5362a71c02e7d448a8ce98cf00c47e353fba5d04.tar.gz src-5362a71c02e7d448a8ce98cf00c47e353fba5d04.zip |
Import Clang r74788.vendor/clang/clang-r74788
Notes
Notes:
svn path=/vendor/clang/dist/; revision=195341
svn path=/vendor/clang/clang-r74788/; revision=195343; tag=vendor/clang/clang-r74788
Diffstat (limited to 'lib/Lex/Preprocessor.cpp')
-rw-r--r-- | lib/Lex/Preprocessor.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/lib/Lex/Preprocessor.cpp b/lib/Lex/Preprocessor.cpp index 24ee5d8a8f92..9f0c15f59e49 100644 --- a/lib/Lex/Preprocessor.cpp +++ b/lib/Lex/Preprocessor.cpp @@ -476,3 +476,26 @@ void Preprocessor::HandleIdentifier(Token &Identifier) { if (II.isExtensionToken() && !DisableMacroExpansion) Diag(Identifier, diag::ext_token_used); } + +void Preprocessor::AddCommentHandler(CommentHandler *Handler) { + assert(Handler && "NULL comment handler"); + assert(std::find(CommentHandlers.begin(), CommentHandlers.end(), Handler) == + CommentHandlers.end() && "Comment handler already registered"); + CommentHandlers.push_back(Handler); +} + +void Preprocessor::RemoveCommentHandler(CommentHandler *Handler) { + std::vector<CommentHandler *>::iterator Pos + = std::find(CommentHandlers.begin(), CommentHandlers.end(), Handler); + assert(Pos != CommentHandlers.end() && "Comment handler not registered"); + CommentHandlers.erase(Pos); +} + +void Preprocessor::HandleComment(SourceRange Comment) { + for (std::vector<CommentHandler *>::iterator H = CommentHandlers.begin(), + HEnd = CommentHandlers.end(); + H != HEnd; ++H) + (*H)->HandleComment(*this, Comment); +} + +CommentHandler::~CommentHandler() { } |