summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/clang-query/Query.h
diff options
context:
space:
mode:
Diffstat (limited to 'clang-tools-extra/clang-query/Query.h')
-rw-r--r--clang-tools-extra/clang-query/Query.h32
1 files changed, 32 insertions, 0 deletions
diff --git a/clang-tools-extra/clang-query/Query.h b/clang-tools-extra/clang-query/Query.h
index 1f5a25db736..b4ff1d0f933 100644
--- a/clang-tools-extra/clang-query/Query.h
+++ b/clang-tools-extra/clang-query/Query.h
@@ -29,6 +29,8 @@ enum QueryKind {
QK_Match,
QK_SetBool,
QK_SetOutputKind,
+ QK_EnableOutputKind,
+ QK_DisableOutputKind,
QK_Quit
};
@@ -151,6 +153,36 @@ struct SetExclusiveOutputQuery : Query {
bool QuerySession::*Var;
};
+// Implements the non-exclusive 'set output dump|diag|print' options.
+struct SetNonExclusiveOutputQuery : Query {
+ SetNonExclusiveOutputQuery(QueryKind Kind, bool QuerySession::*Var,
+ bool Value)
+ : Query(Kind), Var(Var), Value(Value) {}
+ bool run(llvm::raw_ostream &OS, QuerySession &QS) const override {
+ QS.*Var = Value;
+ return true;
+ }
+
+ bool QuerySession::*Var;
+ bool Value;
+};
+
+struct EnableOutputQuery : SetNonExclusiveOutputQuery {
+ EnableOutputQuery(bool QuerySession::*Var)
+ : SetNonExclusiveOutputQuery(QK_EnableOutputKind, Var, true) {}
+
+ static bool classof(const Query *Q) { return Q->Kind == QK_EnableOutputKind; }
+};
+
+struct DisableOutputQuery : SetNonExclusiveOutputQuery {
+ DisableOutputQuery(bool QuerySession::*Var)
+ : SetNonExclusiveOutputQuery(QK_DisableOutputKind, Var, false) {}
+
+ static bool classof(const Query *Q) {
+ return Q->Kind == QK_DisableOutputKind;
+ }
+};
+
} // namespace query
} // namespace clang
OpenPOWER on IntegriCloud