summaryrefslogtreecommitdiffstats
path: root/clang/lib/ASTMatchers/Dynamic/VariantValue.cpp
diff options
context:
space:
mode:
authorSamuel Benzaquen <sbenza@google.com>2013-06-04 15:46:22 +0000
committerSamuel Benzaquen <sbenza@google.com>2013-06-04 15:46:22 +0000
commitc31b3524cb60481f1746c1faa1cb5eb31c04c0df (patch)
tree755b7a9a7d713ad9b08153249c263a94f4d1866f /clang/lib/ASTMatchers/Dynamic/VariantValue.cpp
parent16522c01dca90d70c5888d78eae3d4014e42e9d1 (diff)
downloadbcm5719-llvm-c31b3524cb60481f1746c1faa1cb5eb31c04c0df.tar.gz
bcm5719-llvm-c31b3524cb60481f1746c1faa1cb5eb31c04c0df.zip
Parser/Registry argument enhancements.
Summary: Parser/Registry argument enhancements. - 2 argument support. - unsigned values support. Reviewers: klimek CC: cfe-commits, revane Differential Revision: http://llvm-reviews.chandlerc.com/D915 llvm-svn: 183231
Diffstat (limited to 'clang/lib/ASTMatchers/Dynamic/VariantValue.cpp')
-rw-r--r--clang/lib/ASTMatchers/Dynamic/VariantValue.cpp27
1 files changed, 25 insertions, 2 deletions
diff --git a/clang/lib/ASTMatchers/Dynamic/VariantValue.cpp b/clang/lib/ASTMatchers/Dynamic/VariantValue.cpp
index e310fbfc58f..6fcbe7fc495 100644
--- a/clang/lib/ASTMatchers/Dynamic/VariantValue.cpp
+++ b/clang/lib/ASTMatchers/Dynamic/VariantValue.cpp
@@ -22,20 +22,27 @@ VariantValue::VariantValue(const VariantValue &Other) : Type(VT_Nothing) {
*this = Other;
}
-VariantValue::VariantValue(const DynTypedMatcher &Matcher) : Type(VT_Nothing) {
- setMatcher(Matcher);
+VariantValue::VariantValue(unsigned Unsigned) : Type(VT_Nothing) {
+ setUnsigned(Unsigned);
}
VariantValue::VariantValue(const std::string &String) : Type(VT_Nothing) {
setString(String);
}
+VariantValue::VariantValue(const DynTypedMatcher &Matcher) : Type(VT_Nothing) {
+ setMatcher(Matcher);
+}
+
VariantValue::~VariantValue() { reset(); }
VariantValue &VariantValue::operator=(const VariantValue &Other) {
if (this == &Other) return *this;
reset();
switch (Other.Type) {
+ case VT_Unsigned:
+ setUnsigned(Other.getUnsigned());
+ break;
case VT_String:
setString(Other.getString());
break;
@@ -58,12 +65,28 @@ void VariantValue::reset() {
delete Value.Matcher;
break;
// Cases that do nothing.
+ case VT_Unsigned:
case VT_Nothing:
break;
}
Type = VT_Nothing;
}
+bool VariantValue::isUnsigned() const {
+ return Type == VT_Unsigned;
+}
+
+unsigned VariantValue::getUnsigned() const {
+ assert(isUnsigned());
+ return Value.Unsigned;
+}
+
+void VariantValue::setUnsigned(unsigned NewValue) {
+ reset();
+ Type = VT_Unsigned;
+ Value.Unsigned = NewValue;
+}
+
bool VariantValue::isString() const {
return Type == VT_String;
}
OpenPOWER on IntegriCloud