Both serializer and schema carry version info now

- version number now encoded in serializer as well
- rename experimental to draft
- rename internal function from FreezeBuilder/InitWithBuf to Serialize/Deserialize

Signed-off-by: Kevin Cheng <kevin.cheng@arm.com>
Change-Id: I70cb07832fdf66c6bde3d18aadf1f3646765887e
diff --git a/include/tosa_generated.h b/include/tosa_generated.h
index 56ebbf2..51e33ce 100644
--- a/include/tosa_generated.h
+++ b/include/tosa_generated.h
@@ -1879,26 +1879,26 @@
     VT__MAJOR = 4,
     VT__MINOR = 6,
     VT__PATCH = 8,
-    VT__EXPERIMENTAL = 10
+    VT__DRAFT = 10
   };
   int32_t _major() const {
     return GetField<int32_t>(VT__MAJOR, 0);
   }
   int32_t _minor() const {
-    return GetField<int32_t>(VT__MINOR, 22);
+    return GetField<int32_t>(VT__MINOR, 23);
   }
   int32_t _patch() const {
     return GetField<int32_t>(VT__PATCH, 0);
   }
-  bool _experimental() const {
-    return GetField<uint8_t>(VT__EXPERIMENTAL, 0) != 0;
+  bool _draft() const {
+    return GetField<uint8_t>(VT__DRAFT, 1) != 0;
   }
   bool Verify(flatbuffers::Verifier &verifier) const {
     return VerifyTableStart(verifier) &&
            VerifyField<int32_t>(verifier, VT__MAJOR) &&
            VerifyField<int32_t>(verifier, VT__MINOR) &&
            VerifyField<int32_t>(verifier, VT__PATCH) &&
-           VerifyField<uint8_t>(verifier, VT__EXPERIMENTAL) &&
+           VerifyField<uint8_t>(verifier, VT__DRAFT) &&
            verifier.EndTable();
   }
 };
@@ -1911,13 +1911,13 @@
     fbb_.AddElement<int32_t>(Version::VT__MAJOR, _major, 0);
   }
   void add__minor(int32_t _minor) {
-    fbb_.AddElement<int32_t>(Version::VT__MINOR, _minor, 22);
+    fbb_.AddElement<int32_t>(Version::VT__MINOR, _minor, 23);
   }
   void add__patch(int32_t _patch) {
     fbb_.AddElement<int32_t>(Version::VT__PATCH, _patch, 0);
   }
-  void add__experimental(bool _experimental) {
-    fbb_.AddElement<uint8_t>(Version::VT__EXPERIMENTAL, static_cast<uint8_t>(_experimental), 0);
+  void add__draft(bool _draft) {
+    fbb_.AddElement<uint8_t>(Version::VT__DRAFT, static_cast<uint8_t>(_draft), 1);
   }
   explicit VersionBuilder(flatbuffers::FlatBufferBuilder &_fbb)
         : fbb_(_fbb) {
@@ -1934,14 +1934,14 @@
 inline flatbuffers::Offset<Version> CreateVersion(
     flatbuffers::FlatBufferBuilder &_fbb,
     int32_t _major = 0,
-    int32_t _minor = 22,
+    int32_t _minor = 23,
     int32_t _patch = 0,
-    bool _experimental = false) {
+    bool _draft = true) {
   VersionBuilder builder_(_fbb);
   builder_.add__patch(_patch);
   builder_.add__minor(_minor);
   builder_.add__major(_major);
-  builder_.add__experimental(_experimental);
+  builder_.add__draft(_draft);
   return builder_.Finish();
 }
 
diff --git a/include/tosa_serialization_handler.h b/include/tosa_serialization_handler.h
index 73254dd..7fd8282 100644
--- a/include/tosa_serialization_handler.h
+++ b/include/tosa_serialization_handler.h
@@ -26,6 +26,10 @@
 #include <string>
 #include <vector>
 
+#define TOSA_VERSION_MAJOR 0
+#define TOSA_VERSION_MINOR 23
+#define TOSA_VERSION_PATCH 0
+#define TOSA_VERSION_DRAFT true
 #define TENSOR_BUFFER_FORCE_ALIGNMENT 8
 
 namespace tosa
@@ -43,66 +47,6 @@
     NUM_TOSA_ERROR
 };
 
-struct TosaVersion
-{
-    int32_t _major;
-    int32_t _minor;
-    int32_t _patch;
-    bool _experimental;
-    bool _valid;
-
-    TosaVersion()
-    {
-        _valid = false;
-    }
-
-    TosaVersion(int32_t major, int32_t minor, int32_t patch, bool experimental)
-    {
-        set_version(major, minor, patch, experimental);
-    }
-
-    void set_version(int32_t major, int32_t minor, int32_t patch, bool experimental)
-    {
-        _major        = major;
-        _minor        = minor;
-        _patch        = patch;
-        _experimental = experimental;
-        _valid        = true;
-    }
-
-    std::string to_string() const
-    {
-        std::string str;
-        assert(_valid);
-        str += std::to_string(_major) + ".";
-        str += std::to_string(_minor) + ".";
-        str += std::to_string(_patch);
-        if (_experimental)
-            str += "(experimental)";
-        return str;
-    };
-
-    bool operator==(const TosaVersion& rhs)
-    {
-        assert(_valid);
-        if (!_valid)
-            return false;
-        if (rhs._major == _major && rhs._minor == _minor && rhs._patch == _patch && rhs._experimental == _experimental)
-        {
-            return true;
-        }
-        return false;
-    }
-
-    bool operator!=(const TosaVersion& rhs)
-    {
-        assert(_valid);
-        if (!_valid)
-            return true;
-        return !((*this) == rhs);
-    }
-};
-
 class TosaSerializationHandler;
 
 class TosaSerializationTensor
@@ -303,7 +247,7 @@
     static tosa_err_t ConvertU8toBool(const std::vector<uint8_t>& in, uint32_t out_size, std::vector<bool>& out);
 
     // version
-    const TosaVersion& GetTosaVersion() const
+    const std::string& GetVersionStr()
     {
         return _version;
     }
@@ -350,13 +294,12 @@
 
 protected:
     tosa_err_t Clear();
-    tosa_err_t InitWithBuf(const uint8_t* buf);
-    tosa_err_t FreezeBuilder();
-    tosa_err_t SetTosaVersion();
-    tosa_err_t CheckTosaVersion(const TosaVersion& read_version);
+    tosa_err_t Deserialize(const uint8_t* buf);
+    tosa_err_t Serialize();
+    std::string VersionToStr(int32_t major, int32_t minor, int32_t patch, bool draft);
 
 private:
-    TosaVersion _version;                              /* tosa version */
+    std::string _version;                              /* version string */
     flatbuffers::FlatBufferBuilder _builder;           /* flatbuffer builder */
     flatbuffers::Parser _parser;                       /* flatbuffer parser, used for json parsing */
     std::vector<TosaSerializationBasicBlock*> _blocks; /* array structure to store all TosaSerializationBasicBlock */