================ @@ -178,6 +179,54 @@ class BitFieldExtractionNode : public ASTNode { int64_t m_last_index; }; +class IntegerLiteralNode : public ASTNode { +public: + IntegerLiteralNode(uint32_t location, llvm::APInt value, uint32_t radix, + bool is_unsigned, bool is_long, bool is_longlong) + : ASTNode(location, NodeKind::eScalarLiteralNode), m_value(value), + m_radix(radix), m_is_unsigned(is_unsigned), m_is_long(is_long), + m_is_longlong(is_longlong) {} + + llvm::Expected<lldb::ValueObjectSP> Accept(Visitor *v) const override; + + llvm::APInt GetValue() const { return m_value; } + uint32_t GetRadix() const { return m_radix; } + bool IsUnsigned() const { return m_is_unsigned; } + bool IsLong() const { return m_is_long; } + bool IsLongLong() const { return m_is_longlong; } + + static bool classof(const ASTNode *node) { + return node->GetKind() == NodeKind::eScalarLiteralNode; + } + +private: + llvm::APInt m_value; + uint32_t m_radix; + bool m_is_unsigned; + bool m_is_long; + bool m_is_longlong; +}; + +class FloatLiteralNode : public ASTNode { +public: + FloatLiteralNode(uint32_t location, llvm::APFloat value, bool is_float) + : ASTNode(location, NodeKind::eScalarLiteralNode), m_value(value), + m_is_float(is_float) {} + + llvm::Expected<lldb::ValueObjectSP> Accept(Visitor *v) const override; + + llvm::APFloat GetValue() const { return m_value; } + bool IsFloat() const { return m_is_float; } + + static bool classof(const ASTNode *node) { + return node->GetKind() == NodeKind::eScalarLiteralNode; + } + +private: + llvm::APFloat m_value; + bool m_is_float; ---------------- labath wrote:
Isn't this kind of encoded in the "semantics" property of the APFloat value? https://github.com/llvm/llvm-project/pull/152308 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits