From e6563f52231c603b409638b22530d016757542c8 Mon Sep 17 00:00:00 2001 From: Kevin Cheng Date: Wed, 20 Oct 2021 12:12:02 -0700 Subject: Bring back TosaVersion struct - check fails only when major/minor mismatches - dump warning if major/minor matches but patch/draft mismatches Signed-off-by: Kevin Cheng Change-Id: I0464f1018faa69b81fa93d42e51e1afd7412977a --- src/tosa_serialization_handler.cpp | 33 +++++++++++++++------------------ 1 file changed, 15 insertions(+), 18 deletions(-) (limited to 'src') diff --git a/src/tosa_serialization_handler.cpp b/src/tosa_serialization_handler.cpp index fced242..a382542 100644 --- a/src/tosa_serialization_handler.cpp +++ b/src/tosa_serialization_handler.cpp @@ -148,7 +148,7 @@ TosaSerializationBasicBlock::~TosaSerializationBasicBlock() TosaSerializationHandler::TosaSerializationHandler() { _schemaLoaded = false; - _version = VersionToStr(TOSA_VERSION_MAJOR, TOSA_VERSION_MINOR, TOSA_VERSION_PATCH, TOSA_VERSION_DRAFT); + _version = TosaVersion(TOSA_VERSION_MAJOR, TOSA_VERSION_MINOR, TOSA_VERSION_PATCH, TOSA_VERSION_DRAFT); } TosaSerializationHandler::~TosaSerializationHandler() @@ -319,17 +319,6 @@ tosa_err_t TosaSerializationHandler::Clear() return TOSA_OK; } -std::string TosaSerializationHandler::VersionToStr(int32_t major, int32_t minor, int32_t patch, bool draft) -{ - std::string str; - str += std::to_string(major) + "."; - str += std::to_string(minor) + "."; - str += std::to_string(patch); - if (draft) - str += "d"; - return str; -} - tosa_err_t TosaSerializationHandler::Deserialize(const uint8_t* buf) { auto fb_tosa_graph = GetTosaGraph(buf); @@ -353,14 +342,22 @@ tosa_err_t TosaSerializationHandler::Deserialize(const uint8_t* buf) // erase container Clear(); - std::string read_version = VersionToStr(fb_tosa_version->_major(), fb_tosa_version->_minor(), - fb_tosa_version->_patch(), fb_tosa_version->_draft()); + TosaVersion read_version(fb_tosa_version->_major(), fb_tosa_version->_minor(), fb_tosa_version->_patch(), + fb_tosa_version->_draft()); - if (read_version != GetVersionStr()) + TosaVersion::compat_t is_compat = read_version.is_compatible(GetVersion()); + switch (is_compat) { - printf("Read flatbuffer version %s doesn't match serializer version %s\n", read_version.c_str(), - GetVersionStr().c_str()); - return TOSA_VERSION_MISMATCH; + case TosaVersion::compat_t::COMPLETELY_COMPATIBLE: + break; + case TosaVersion::compat_t::PARTIALLY_COMPATIBLE: + printf("WARNING: Read flatbuffer version %s is partially compatible with serializer version %s\n", + read_version.to_string().c_str(), GetVersion().to_string().c_str()); + break; + case TosaVersion::compat_t::NOT_COMPATIBLE: + printf("ERROR: Read flatbuffer version %s is not compatible with serializer version %s\n", + read_version.to_string().c_str(), GetVersion().to_string().c_str()); + return TOSA_VERSION_MISMATCH; } for (size_t i = 0; i < fb_tosa_blocks->size(); i++) -- cgit v1.2.1