diff options
author | Olivier Gayot <og@satcom1.com> | 2017-11-18 13:42:45 +0100 |
---|---|---|
committer | Olivier Gayot <og@satcom1.com> | 2017-11-19 14:01:08 +0100 |
commit | acab244a6342be7597d0f2d22dc90a43f425fbb8 (patch) | |
tree | fc9288bbea13abb702820a524cbc4ce6fb247ce5 | |
parent | 589f8e2558d008c63892f2345b233e28d889620b (diff) |
Added functions to print a number as hex or dec string
Signed-off-by: Olivier Gayot <og@satcom1.com>
-rw-r--r-- | number.cpp | 48 | ||||
-rw-r--r-- | number.h | 10 |
2 files changed, 58 insertions, 0 deletions
@@ -1,5 +1,53 @@ +#include <iomanip> +#include <sstream> #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 @@ -9,6 +9,16 @@ public: number() = default; /** + * \brief Return a hexadecimal string representation of this number. + */ + std::string to_hex_string() const; + + /** + * \brief Return a decimal string representation of this number. + */ + std::string to_dec_string() const; + + /** * \brief Return the result of the addition of a number and this number. * * \param n The number to add to this number. |