Reverting const accessor for class optional_property
[asdcplib.git] / src / KM_util.h
index b209d27841a890814e1841885a5e1abae6ed4f4d..f6a8935fda44d54297df3db6bd5b0e717e606412 100755 (executable)
@@ -259,28 +259,30 @@ namespace Kumu
   //
   class ArchivableUi16 : public Kumu::IArchive
     {
-      ui16_t m_Value;
-
     public:
-      ArchivableUi16() : m_Value(0) {}
-      ArchivableUi16(const ui16_t& value) : m_Value(value) {}
+      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(m_Value);
+       return Writer->WriteUi16BE(value);
       }
 
       bool   Unarchive(MemIOReader* Reader) {
        if ( Reader == 0 ) return false;
-       return Reader->ReadUi16BE(&m_Value);
+       return Reader->ReadUi16BE(&value);
       }
 
       const char* EncodeString(char* str_buf, ui32_t buf_len) const {
-       snprintf(str_buf, buf_len, "%hu", m_Value);
+       snprintf(str_buf, buf_len, "%hu", value);
        return str_buf;
       }
     };
@@ -332,6 +334,18 @@ namespace Kumu
        return false;
       }
 
+      inline bool operator>(const Identifier& rhs) const {
+       ui32_t test_size = xmin(rhs.Size(), SIZE);
+
+       for ( ui32_t i = 0; i < test_size; i++ )
+         {
+           if ( m_Value[i] != rhs.m_Value[i] )
+             return m_Value[i] > rhs.m_Value[i];
+         }
+       
+       return false;
+      }
+
       inline bool operator==(const Identifier& rhs) const {
        if ( rhs.Size() != SIZE ) return false;
        return ( memcmp(m_Value, rhs.m_Value, SIZE) == 0 );