From a1ff01ce9c4ccb75c0c2b8d3f9f7734bc494bce8 Mon Sep 17 00:00:00 2001 From: lganzzzo Date: Sat, 25 Jan 2020 01:48:37 +0700 Subject: [PATCH] Better API Docs. --- src/oatpp/core/data/mapping/type/Type.cpp | 3 +-- src/oatpp/core/data/mapping/type/Type.hpp | 24 +++++++++++++++++-- .../parser/json/mapping/Deserializer.hpp | 19 +++++++++++++++ src/oatpp/parser/json/mapping/Serializer.hpp | 18 ++++++++++++++ .../parser/json/mapping/DeserializerTest.hpp | 2 +- 5 files changed, 61 insertions(+), 5 deletions(-) diff --git a/src/oatpp/core/data/mapping/type/Type.cpp b/src/oatpp/core/data/mapping/type/Type.cpp index ba13c167..6b16929c 100644 --- a/src/oatpp/core/data/mapping/type/Type.cpp +++ b/src/oatpp/core/data/mapping/type/Type.cpp @@ -43,9 +43,8 @@ namespace __class { std::atomic_int ClassId::ID_COUNTER(0); -ClassId::ClassId(const char* pName, const char* pQualifier) +ClassId::ClassId(const char* pName) : name(pName) - , qualifier(pQualifier) , id(ID_COUNTER ++) {} diff --git a/src/oatpp/core/data/mapping/type/Type.hpp b/src/oatpp/core/data/mapping/type/Type.hpp index 2a711fa0..db0e2990 100644 --- a/src/oatpp/core/data/mapping/type/Type.hpp +++ b/src/oatpp/core/data/mapping/type/Type.hpp @@ -35,15 +35,35 @@ namespace oatpp { namespace data { namespace mapping { namespace type { class Type; // FWD +/** + * Structure representing `ID` of the type class. + */ class ClassId { private: static std::atomic_int ID_COUNTER; public: + /** + * Get count of all type classes created. + * @return + */ static int getClassCount(); public: - ClassId(const char* pName, const char* pQualifier = nullptr); + + /** + * Constructor. + * @param pName + */ + ClassId(const char* pName); + + /** + * Name of the type class. + */ const char* const name; - const char* const qualifier; + + /** + * Integer ID of the type class.
+ * *Note: class type IDs are integer values incremented continuously from [0 to `getClassCount()`]* + */ const v_int32 id; }; diff --git a/src/oatpp/parser/json/mapping/Deserializer.hpp b/src/oatpp/parser/json/mapping/Deserializer.hpp index 643b1446..b873f3d0 100644 --- a/src/oatpp/parser/json/mapping/Deserializer.hpp +++ b/src/oatpp/parser/json/mapping/Deserializer.hpp @@ -179,12 +179,31 @@ private: std::vector m_methods; public: + /** + * Constructor. + * @param config + */ Deserializer(const std::shared_ptr& config = std::make_shared()); + /** + * Set deserializer method for type. + * @param classId - &id:oatpp::data::mapping::type::ClassId;. + * @param method - `typedef AbstractObjectWrapper (*DeserializerMethod)(Deserializer*, parser::Caret&, const Type* const)`. + */ void setDeserializerMethod(const data::mapping::type::ClassId& classId, DeserializerMethod method); + /** + * Deserialize text. + * @param caret - &id:oatpp::parser::Caret;. + * @param type - &id:oatpp::data::mapping::type::Type; + * @return - `AbstractObjectWrapper` over deserialized object. + */ AbstractObjectWrapper deserialize(parser::Caret& caret, const Type* const type); + /** + * Get deserializer config. + * @return + */ const std::shared_ptr& getConfig(); }; diff --git a/src/oatpp/parser/json/mapping/Serializer.hpp b/src/oatpp/parser/json/mapping/Serializer.hpp index 2f42d5de..ae6d0c00 100644 --- a/src/oatpp/parser/json/mapping/Serializer.hpp +++ b/src/oatpp/parser/json/mapping/Serializer.hpp @@ -151,12 +151,30 @@ private: std::vector m_methods; public: + /** + * Constructor. + * @param config - serializer config. + */ Serializer(const std::shared_ptr& config = std::make_shared()); + /** + * Set serializer method for type. + * @param classId - &id:oatpp::data::mapping::type::ClassId;. + * @param method - `typedef void (*SerializerMethod)(Serializer*, data::stream::ConsistentOutputStream*, const data::mapping::type::AbstractObjectWrapper&)`. + */ void setSerializerMethod(const data::mapping::type::ClassId& classId, SerializerMethod method); + /** + * Serialize object to stream. + * @param stream - &id:oatpp::data::stream::ConsistentOutputStream;. + * @param polymorph - DTO as &id:oatpp::data::mapping::type::AbstractObjectWrapper;. + */ void serializeToStream(data::stream::ConsistentOutputStream* stream, const data::mapping::type::AbstractObjectWrapper& polymorph); + /** + * Get serializer config. + * @return + */ const std::shared_ptr& getConfig(); }; diff --git a/test/oatpp/parser/json/mapping/DeserializerTest.hpp b/test/oatpp/parser/json/mapping/DeserializerTest.hpp index b3d140c5..2173ce3d 100644 --- a/test/oatpp/parser/json/mapping/DeserializerTest.hpp +++ b/test/oatpp/parser/json/mapping/DeserializerTest.hpp @@ -32,7 +32,7 @@ namespace oatpp { namespace test { namespace parser { namespace json { namespace class DeserializerTest : public UnitTest{ public: - DeserializerTest():UnitTest("TEST[parser::json::mapping::DeserializerTestTest]"){} + DeserializerTest():UnitTest("TEST[parser::json::mapping::DeserializerTest]"){} void onRun() override; };