2024-11-11 08:29:59 +00:00
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include <QString>
|
2024-11-16 13:37:42 +00:00
|
|
|
|
#include <memory>
|
2024-11-11 08:29:59 +00:00
|
|
|
|
|
|
|
|
|
namespace datas {
|
|
|
|
|
class IDataArray;
|
|
|
|
|
class IDataObject {
|
|
|
|
|
public:
|
|
|
|
|
virtual ~IDataObject() = default;
|
|
|
|
|
|
2024-11-16 13:37:42 +00:00
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD>Ƿ<EFBFBD><EFBFBD>ն<EFBFBD><EFBFBD><EFBFBD>.
|
|
|
|
|
*
|
|
|
|
|
* \return <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
virtual bool isEmpty() const = 0;
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD>Array.
|
|
|
|
|
*
|
|
|
|
|
* \return <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
2024-11-11 08:29:59 +00:00
|
|
|
|
virtual bool isArray() const = 0;
|
2024-11-16 13:37:42 +00:00
|
|
|
|
/**
|
|
|
|
|
* @brief ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Array.
|
|
|
|
|
*
|
|
|
|
|
* \return
|
|
|
|
|
*/
|
|
|
|
|
virtual std::shared_ptr<IDataArray> toArray() = 0;
|
2024-11-11 08:29:59 +00:00
|
|
|
|
|
2024-11-16 05:11:57 +00:00
|
|
|
|
virtual bool getBool(const QString& key) const = 0;
|
|
|
|
|
virtual double getDouble(const QString& key) const = 0;
|
|
|
|
|
virtual int32_t getInt32(const QString& key) const = 0;
|
|
|
|
|
virtual int64_t getInt64(const QString& key) const = 0;
|
|
|
|
|
virtual QString getString(const QString& key) const = 0;
|
2024-11-16 13:37:42 +00:00
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD>ȡָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀն<EFBFBD><EFBFBD><EFBFBD>.
|
|
|
|
|
*
|
|
|
|
|
* \param key
|
|
|
|
|
* \return
|
|
|
|
|
*/
|
|
|
|
|
virtual std::shared_ptr<IDataObject> getObject(const QString& key) const = 0;
|
2024-11-16 05:11:57 +00:00
|
|
|
|
|
2024-11-11 08:29:59 +00:00
|
|
|
|
virtual void setBool(const QString& key, bool value) = 0;
|
|
|
|
|
virtual void setDouble(const QString& key, double value) = 0;
|
|
|
|
|
virtual void setInt32(const QString& key, int32_t value) = 0;
|
|
|
|
|
virtual void setInt64(const QString& key, int64_t value) = 0;
|
|
|
|
|
virtual void setString(const QString& key, const QString& value) = 0;
|
2024-11-16 13:37:42 +00:00
|
|
|
|
virtual void setObject(const QString& key, std::shared_ptr<IDataObject> value) = 0;
|
2024-11-16 05:11:57 +00:00
|
|
|
|
|
|
|
|
|
virtual QString toText() const = 0;
|
|
|
|
|
virtual void loadFrom(const QString &text) = 0;
|
2024-11-11 08:29:59 +00:00
|
|
|
|
};
|
|
|
|
|
class IDataArray : public IDataObject {
|
|
|
|
|
public:
|
|
|
|
|
virtual ~IDataArray() = default;
|
|
|
|
|
|
2024-11-16 05:11:57 +00:00
|
|
|
|
virtual bool isValid() const = 0;
|
|
|
|
|
|
2024-11-11 08:29:59 +00:00
|
|
|
|
virtual int32_t size() const = 0;
|
2024-11-16 13:37:42 +00:00
|
|
|
|
virtual std::shared_ptr<IDataObject> get(int index) const = 0;
|
|
|
|
|
virtual void insert(int index, std::shared_ptr<IDataObject> value) = 0;
|
|
|
|
|
virtual void append(std::shared_ptr<IDataObject> value) = 0;
|
2024-11-11 08:29:59 +00:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template<typename T> void dataSet(IDataObject& object, const QString& key, T value);
|
|
|
|
|
template<typename T> T dataGet(IDataObject& object, const QString& key);
|
|
|
|
|
|
|
|
|
|
}
|