diff options
| author | Adrian Prantl <aprantl@apple.com> | 2024-12-06 15:11:21 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-12-06 15:11:21 -0800 |
| commit | 0ee364d2a28104aaa36e246fc8a316f86de32aae (patch) | |
| tree | 05556423933005ba0bdf6605630987734d162d42 /lldb/test/Shell/ScriptInterpreter/Python/Inputs/FormatterBytecode/MyOptional.cpp | |
| parent | da65fe1c16308cdb71b2fd26aaedc0ce52521ab4 (diff) | |
[lldb] Add a compiler/interpreter of LLDB data formatter bytecode to lldb/examples (#113398)
This PR adds a proof-of-concept for a bytecode designed to ship and run
LLDB data formatters. More motivation and context can be found in the
`formatter-bytecode.md` file and on discourse.
https://discourse.llvm.org/t/a-bytecode-for-lldb-data-formatters/82696
Diffstat (limited to 'lldb/test/Shell/ScriptInterpreter/Python/Inputs/FormatterBytecode/MyOptional.cpp')
| -rw-r--r-- | lldb/test/Shell/ScriptInterpreter/Python/Inputs/FormatterBytecode/MyOptional.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/lldb/test/Shell/ScriptInterpreter/Python/Inputs/FormatterBytecode/MyOptional.cpp b/lldb/test/Shell/ScriptInterpreter/Python/Inputs/FormatterBytecode/MyOptional.cpp new file mode 100644 index 000000000000..abba34439d88 --- /dev/null +++ b/lldb/test/Shell/ScriptInterpreter/Python/Inputs/FormatterBytecode/MyOptional.cpp @@ -0,0 +1,23 @@ +// A bare-bones llvm::Optional reimplementation. + +template <typename T> struct MyOptionalStorage { + MyOptionalStorage(T val) : value(val), hasVal(true) {} + MyOptionalStorage() {} + T value; + bool hasVal = false; +}; + +template <typename T> struct MyOptional { + MyOptionalStorage<T> Storage; + MyOptional(T val) : Storage(val) {} + MyOptional() {} + T &operator*() { return Storage.value; } +}; + +void stop() {} + +int main(int argc, char **argv) { + MyOptional<int> x, y = 42; + stop(); // break here + return *y; +} |
