diff options
author | Samuel Benzaquen <sbenza@google.com> | 2013-06-04 15:46:22 +0000 |
---|---|---|
committer | Samuel Benzaquen <sbenza@google.com> | 2013-06-04 15:46:22 +0000 |
commit | c31b3524cb60481f1746c1faa1cb5eb31c04c0df (patch) | |
tree | 755b7a9a7d713ad9b08153249c263a94f4d1866f /clang/lib/ASTMatchers/Dynamic/VariantValue.cpp | |
parent | 16522c01dca90d70c5888d78eae3d4014e42e9d1 (diff) | |
download | bcm5719-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.cpp | 27 |
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; } |