#pragma once #include #include #include "data_types.h" namespace depict { class ValidateDocArray; class ValidateDocObject : public datas::IDataObject { friend class ValidateDocArray; private: QJsonObject _object_bind; public: ValidateDocObject(QJsonObject obj); ValidateDocObject(); // ͨ¹ý IDataObject ¼Ì³Ð bool isEmpty() const override; bool isArray() const override; bool isObject() const override; std::shared_ptr newArray() const override; std::shared_ptr newObject() const override; std::shared_ptr getChild(const QString& key) const override; void setChild(const QString& key, std::shared_ptr obj) override; bool isValueField(const QString& key) const override; bool getBool(const QString& key) const override; double getDouble(const QString& key) const override; int32_t getInt32(const QString& key) const override; int64_t getInt64(const QString& key) const override; uint64_t getUInt64(const QString &key) const override; QString getString(const QString& key) const override; void setBool(const QString& key, bool value) override; void setDouble(const QString& key, double value) override; void setInt32(const QString& key, int32_t value) override; void setUInt64(const QString &key, uint64_t value) override; void setInt64(const QString& key, int64_t value) override; void setString(const QString& key, const QString& value) override; QString toText() const override; void loadFrom(const QString& text) override; }; class ValidateDocArray : public datas::IDataArray { friend class ValidateDocObject; private: QJsonArray _array_bind; public: ValidateDocArray(QJsonArray array); ValidateDocArray(); // ͨ¹ý IDataArray ¼Ì³Ð bool isEmpty() const override; bool isArray() const override; bool isObject() const override; int32_t size() const override; std::shared_ptr get(int index) const override; void insert(int index, std::shared_ptr value) override; void append(std::shared_ptr value) override; }; }