From acab244a6342be7597d0f2d22dc90a43f425fbb8 Mon Sep 17 00:00:00 2001 From: Olivier Gayot Date: Sat, 18 Nov 2017 13:42:45 +0100 Subject: Added functions to print a number as hex or dec string Signed-off-by: Olivier Gayot --- number.cpp | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) (limited to 'number.cpp') diff --git a/number.cpp b/number.cpp index f6f445c..26b0ed2 100644 --- a/number.cpp +++ b/number.cpp @@ -1,5 +1,53 @@ +#include +#include #include "number.h" +/* Type Conversion {{{ */ + +std::string +number::to_hex_string() const +{ + if (_operands.empty()) { + return std::string("0x0"); + } + + std::ostringstream ss; + + ss << "0x" << std::hex; + + for (auto it = _operands.crbegin(); it != _operands.crend(); ++it) { + ss << *it; + + /* If more operands are present, successive ones must be padded. */ + ss << std::setfill('0'); + ss << std::setw(16); + } + + return ss.str(); +} + +std::string +number::to_dec_string() const +{ + if (_operands.empty()) { + return std::string("0"); + } + + std::ostringstream ss; + + ss << std::dec; + + if (_operands.size() == 1) { + ss << _operands.front(); + } else { + /* TODO */ + ss << "[Not implemented]"; + } + + return ss.str(); +} + +/* }}} */ /* Operations {{{ */ number -- cgit v1.2.3