6#include <QtCore/QByteArray>
9#include <iser/IObject.h>
12#include <imtgql/CGqlEnum.h>
19class CGqlParamObject:
virtual public iser::IObject
24 QByteArrayList GetParamIds()
const;
25 QVariant GetParamArgumentValue(
const QByteArray& paramId)
const;
26 CGqlParamObject* CreateParamObject(
const QByteArray& paramId);
27 const CGqlParamObject* GetParamArgumentObjectPtr(
const QByteArray& paramId, qsizetype index = 0)
const;
28 qsizetype GetObjectsCount(
const QByteArray& paramId)
const;
29 QList<const CGqlParamObject*> GetParamArgumentObjectPtrList(
const QByteArray& paramId)
const;
30 CGqlParamObject* GetParentObject()
const;
31 void InsertParam(
const QByteArray& paramId,
const QVariant& value);
32 void InsertParam(
const QByteArray& paramId,
const imtgql::CGqlEnum& value);
33 void InsertParam(
const QByteArray& paramId,
const CGqlParamObject&
object);
34 void InsertParam(
const QByteArray& paramId,
const QList<CGqlParamObject>& objectList);
35 CGqlParamObject* AppendParamToArray(
const QByteArray& paramId,
const CGqlParamObject&
object);
36 bool IsObject(
const QByteArray& paramId)
const;
37 bool IsEnum(
const QByteArray& paramId)
const;
38 bool IsObjectList(
const QByteArray& paramId)
const;
41 Q_REQUIRED_RESULT QVariant operator[](
const QByteArray& paramId)
const;
42 Q_REQUIRED_RESULT
bool ContainsParam(
const QByteArray& paramId)
const;
45 virtual bool Serialize(iser::IArchive &archive)
override;
48 virtual bool CopyFrom(
const IChangeable&
object, CompatibilityMode mode = CM_WITHOUT_REFS)
override;
49 virtual istd::IChangeableUniquePtr CloneMe(CompatibilityMode mode = CM_WITHOUT_REFS)
const override;
50 virtual bool ResetData(CompatibilityMode mode = CM_WITHOUT_REFS)
override;
53 void RemoveParam(
const QByteArray& paramId);
56 QMap<QByteArray, QVariant> m_simpleParams;
57 QMap<QByteArray, istd::TSharedInterfacePtr<CGqlParamObject>> m_objectParams;
58 QMap<QByteArray, QList<istd::TSharedInterfacePtr<CGqlParamObject>>> m_objectParamsArray;
59 QByteArray m_objectId;
60 CGqlParamObject* m_parentPtr;
65inline QVariant CGqlParamObject::operator[](
const QByteArray& paramId)
const
67 return GetParamArgumentValue(paramId);
71inline bool CGqlParamObject::ContainsParam(
const QByteArray& paramId)
const
73 if (m_simpleParams.contains(paramId)){
76 if (m_objectParams.contains(paramId)){
79 if (m_objectParamsArray.contains(paramId)){
90Q_DECLARE_METATYPE(
const imtgql::CGqlParamObject*)