X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2FKM_util.h;h=f6a8935fda44d54297df3db6bd5b0e717e606412;hb=refs%2Fpull%2F25%2Fhead;hp=f3f60f187b3715b9a1d50e7af4412a3254047d8f;hpb=75ca93c530e1f2531c66f7027213ec7514918508;p=asdcplib.git diff --git a/src/KM_util.h b/src/KM_util.h index f3f60f1..f6a8935 100755 --- a/src/KM_util.h +++ b/src/KM_util.h @@ -256,6 +256,37 @@ namespace Kumu } }; + // + class ArchivableUi16 : public Kumu::IArchive + { + public: + ui16_t value; + + ArchivableUi16() : value(0) {} + ArchivableUi16(const ui16_t& val) : value(val) {} + virtual ~ArchivableUi16() {} + + bool HasValue() const { return true; } + ui32_t ArchiveLength() const { return sizeof(ui16_t); } + + operator ui16_t() const { return value; } + + bool Archive(MemIOWriter* Writer) const { + if ( Writer == 0 ) return false; + return Writer->WriteUi16BE(value); + } + + bool Unarchive(MemIOReader* Reader) { + if ( Reader == 0 ) return false; + return Reader->ReadUi16BE(&value); + } + + const char* EncodeString(char* str_buf, ui32_t buf_len) const { + snprintf(str_buf, buf_len, "%hu", value); + return str_buf; + } + }; + // typedef Kumu::ArchivableList StringList;