diff options
| author | Enrico Granata <egranata@apple.com> | 2012-03-17 02:02:03 +0000 |
|---|---|---|
| committer | Enrico Granata <egranata@apple.com> | 2012-03-17 02:02:03 +0000 |
| commit | ab8674f99f155285e2c8e8c95c1ede4be42ecfe2 (patch) | |
| tree | bcb14c75b5b1b229fe1c1f83d8d78477ce8d5dc5 /lldb/examples/synthetic/bitfield/program.cpp | |
| parent | ce690f4b2415d50da1a5019d0dde2ecf375e7d3e (diff) | |
| download | bcm5719-llvm-ab8674f99f155285e2c8e8c95c1ede4be42ecfe2.tar.gz bcm5719-llvm-ab8674f99f155285e2c8e8c95c1ede4be42ecfe2.zip | |
Adding a new example of synthetic children provider
llvm-svn: 152970
Diffstat (limited to 'lldb/examples/synthetic/bitfield/program.cpp')
| -rw-r--r-- | lldb/examples/synthetic/bitfield/program.cpp | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/lldb/examples/synthetic/bitfield/program.cpp b/lldb/examples/synthetic/bitfield/program.cpp new file mode 100644 index 00000000000..5276824a2fb --- /dev/null +++ b/lldb/examples/synthetic/bitfield/program.cpp @@ -0,0 +1,74 @@ +typedef unsigned int uint32_t; + +enum MaskingOperator +{ + eMaskingOperatorDefault = 0, + eMaskingOperatorAnd = 1, + eMaskingOperatorOr = 2, + eMaskingOperatorXor = 3, + eMaskingOperatorNand = 4, + eMaskingOperatorNor = 5 +}; + +class MaskedData +{ +private: + uint32_t value; + uint32_t mask; + MaskingOperator oper; +public: + MaskedData( uint32_t V = 0, + uint32_t M = 0, + MaskingOperator P = eMaskingOperatorDefault) : + value(V), + mask(M), + oper(P) + { + } + + uint32_t apply() + { + switch(oper) + { + case eMaskingOperatorAnd: + return value & mask; + case eMaskingOperatorOr: + return value | mask; + case eMaskingOperatorXor: + return value ^ mask; + case eMaskingOperatorNand: + return ~(value & mask); + case eMaskingOperatorNor: + return ~(value | mask); + case eMaskingOperatorDefault: // fall through + default: + return value; + } + } + + void setValue(uint32_t V) + { + value = V; + } + + void setMask (uint32_t M) + { + mask = M; + } + + void setOperator(MaskingOperator P) + { + oper = P; + } +}; + +int main() +{ + MaskedData data_1(0xFF0F,0xA01F,eMaskingOperatorAnd); + MaskedData data_2(data_1.apply(),0x1AFC,eMaskingOperatorXor); + MaskedData data_3(data_2.apply(),0xFFCF,eMaskingOperatorOr); + MaskedData data_4(data_3.apply(),0xAABC,eMaskingOperatorAnd); + MaskedData data_5(data_4.apply(),0xFFAC,eMaskingOperatorNor); + MaskedData data_6(data_5.apply(),0x0000BEEF,eMaskingOperatorAnd); + return data_6.apply(); // <-- what comes out of here? +}
\ No newline at end of file |

