Browse Source

Change visibility of protobufobject functions

Alexey Edelev 6 years ago
parent
commit
37e2a6a74c
2 changed files with 44 additions and 44 deletions
  1. 3 6
      src/generator/templates.cpp
  2. 41 38
      src/lib/protobufobject.h

+ 3 - 6
src/generator/templates.cpp

@@ -32,11 +32,8 @@ const char *Templates::DefaultProtobufIncludesTemplate = "#include <QMetaType>\n
                                                          "#include <unordered_map>\n\n";
 
 const char *Templates::PreambleTemplate = "/* This file is autogenerated. DO NOT CHANGE. All changes will be lost */\n\n"
-                                          "#pragma once\n\n"
-                                          "#include <QObject>\n"
-                                          "#include <QMetaType>\n"
-                                          "#include <protobufobject.h>\n"
-                                          "#include <unordered_map>\n\n";
+                                      "#pragma once\n\n"
+                                      "#include <QObject>\n";
 
 const char *Templates::InternalIncludeTemplate =  "#include \"$type_lower$.h\"\n";
 const char *Templates::ExternalIncludeTemplate = "#include <$type$>\n";
@@ -143,7 +140,7 @@ const std::unordered_map<::google::protobuf::FieldDescriptor::Type, std::string>
     //    {FieldDescriptor::TYPE_MESSAGE, ""},//Custom typename
     {::google::protobuf::FieldDescriptor::TYPE_BYTES, "QByteArray"},
     {::google::protobuf::FieldDescriptor::TYPE_UINT32, "int"},//Limited usage see https://doc.qt.io/qt-5/qtqml-typesystem-basictypes.html
-    {::google::protobuf::FieldDescriptor::TYPE_ENUM, ""},//Custom typename
+    //    {FieldDescriptor::TYPE_ENUM, ""},//Custom typename
     {::google::protobuf::FieldDescriptor::TYPE_SFIXED32, "int"},
     //        {FieldDescriptor::TYPE_SFIXED64, "int"},//Not supported see https://doc.qt.io/qt-5/qtqml-typesystem-basictypes.html
     {::google::protobuf::FieldDescriptor::TYPE_SINT32, "int"},

+ 41 - 38
src/lib/protobufobject.h

@@ -53,8 +53,9 @@ enum WireTypes {
 
 constexpr int NotUsedFieldIndex = -1;
 
-class ProtobufObjectPrivate : public QObject {
-public:
+class ProtobufObjectPrivate : public QObject
+{
+protected:
     using ListSerializer = std::function<QByteArray(const ProtobufObjectPrivate *, const QVariant &, int &)>;
     using ListDeserializer = std::function<void(ProtobufObjectPrivate *, QByteArray::const_iterator &, QVariant &)>;
     struct SerializationHandlers {
@@ -65,8 +66,12 @@ public:
     using SerializerRegistry = std::unordered_map<int/*metatypeid*/, SerializationHandlers>;
     static SerializerRegistry serializers;
 
+public:
     explicit ProtobufObjectPrivate(QObject *parent = nullptr) : QObject(parent) {}
 
+    virtual QByteArray serializePrivate() const = 0;
+    virtual void deserializePrivate(const QByteArray &data) = 0;
+
     /*  Header byte
      *  bits    | 7  6  5  4  3 |  2  1  0
      *  -----------------------------------
@@ -507,30 +512,11 @@ public:
         }
         return QVariant::fromValue(out);
     }
-
-public:
-    virtual QByteArray serializePrivate() const = 0;
-    virtual void deserializePrivate(const QByteArray &data) = 0;
 };
 
 template <typename T>
 class ProtobufObject : public ProtobufObjectPrivate
 {
-protected:
-    static void registerSerializers(int metaTypeId, int listMetaTypeId) {
-        serializers[listMetaTypeId] = {ListSerializer(serializeComplexListType), ListDeserializer(deserializeComplexListType)};
-    }
-
-    QByteArray serializePrivate() const override {
-        qProtoDebug() << T::staticMetaObject.className() << "serializePrivate";
-        return serialize();
-    }
-
-    void deserializePrivate(const QByteArray &data) override {
-        qProtoDebug() << T::staticMetaObject.className() << "deserializePrivate";
-        deserialize(data);
-    }
-
 public:
     explicit ProtobufObject(QObject *parent = nullptr) : ProtobufObjectPrivate(parent) {}
 
@@ -552,23 +538,6 @@ public:
 
         return result;
     }
-//TODO: migrate to this function for complex types serialization
-//    static QByteArray serializeSelf(const QVariant &variantValue) {
-//        T value = variantValue.value<T>();
-//        return value->serialize();
-//    }
-
-    static QByteArray serializeComplexListType(const ProtobufObjectPrivate* serializer, const QVariant &listValue, int &outFieldIndex) {
-        QList<T> list = listValue.value<QList<T>>();
-        return serializer->serializeListType(list, outFieldIndex);
-    }
-
-    static void deserializeComplexListType(ProtobufObjectPrivate* deserializer, QByteArray::const_iterator &it, QVariant &previous) {
-        QList<T> previousList = previous.value<QList<T>>();
-        QVariant newMember = deserializer->deserializeListType<T>(it);
-        previousList.append(newMember.value<T>());
-        previous.setValue(previousList);
-    }
 
     void deserialize(const QByteArray &array) {
         qProtoDebug() << T::staticMetaObject.className() << "deserialize";
@@ -600,6 +569,40 @@ public:
             deserializeProperty(wireType, metaProperty, it);
         }
     }
+
+protected:
+    static void registerSerializers(int metaTypeId, int listMetaTypeId) {
+        serializers[listMetaTypeId] = {ListSerializer(serializeComplexListType), ListDeserializer(deserializeComplexListType)};
+    }
+
+private:
+    QByteArray serializePrivate() const override {
+        qProtoDebug() << T::staticMetaObject.className() << "serializePrivate";
+        return serialize();
+    }
+
+    void deserializePrivate(const QByteArray &data) override {
+        qProtoDebug() << T::staticMetaObject.className() << "deserializePrivate";
+        deserialize(data);
+    }
+
+//TODO: migrate to this function for complex types serialization
+//    static QByteArray serializeSelf(const QVariant &variantValue) {
+//        T value = variantValue.value<T>();
+//        return value->serialize();
+//    }
+
+    static QByteArray serializeComplexListType(const ProtobufObjectPrivate* serializer, const QVariant &listValue, int &outFieldIndex) {
+        QList<T> list = listValue.value<QList<T>>();
+        return serializer->serializeListType(list, outFieldIndex);
+    }
+
+    static void deserializeComplexListType(ProtobufObjectPrivate* deserializer, QByteArray::const_iterator &it, QVariant &previous) {
+        QList<T> previousList = previous.value<QList<T>>();
+        QVariant newMember = deserializer->deserializeListType<T>(it);
+        previousList.append(newMember.value<T>());
+        previous.setValue(previousList);
+    }
 };
 
 }