6#include <imtsdl/CSdlEnumConverter.h>
7#include <imtsdlgencpp/CSdlClassModificatorBaseComp.h>
8#include <imtsdlgencpp/CSdlGenTools.h>
9#include <imtsdlgencpp/CSdlUnionConverter.h>
22 protected CSdlGenTools,
24 protected imtsdl::CSdlEnumConverter,
27 using CSdlGenTools::AddArrayInternalChecksFail;
56 struct ListAccessResult
58 QString listVariableName;
59 QString listCountVariableName;
60 QString listCountVariableType;
61 QString customListAccessCode;
62 QString customAccessedElementName;
63 bool isCustomAccessedElementPointer =
false;
64 QString toObjectTransformMethod;
76 virtual QString GetContainerObjectClassName()
const = 0;
84 virtual QString GetContainerObjectVariableName()
const = 0;
92 virtual QString GetScalarArrayContainerObjectClassName()
const = 0;
100 virtual QString GetCustomArrayContainerObjectClassName()
const = 0;
122 virtual bool AddFieldValueWriteToObject(QTextStream& stream,
const imtsdl::CSdlField& field,
const QString& variableName, uint horizontalIndents)
const = 0;
136 virtual bool AddObjectValueWriteToObject(QTextStream& stream,
const imtsdl::CSdlField& field,
const QString& variableName, uint horizontalIndents)
const = 0;
171 virtual bool AddFieldValueAppendToObjectArray(QTextStream& stream,
const imtsdl::CSdlField& field,
const QString& arrayContainerVariableName,
const QString& variableName, uint horizontalIndents)
const = 0;
183 virtual bool AddArrayWriteToObject(QTextStream& stream,
const imtsdl::CSdlField& field,
const QString& variableName,
const QString& targetObjectVariableName, uint horizontalIndents)
const = 0;
226 virtual bool AddContainerListAccessCode(QTextStream& stream,
const imtsdl::CSdlField& field,
const QString& variableName, quint16 horizontalIndents, ListAccessResult& result)
const = 0;
242 virtual void AddUnionFieldValueReadFromObject(QTextStream& stream,
const imtsdl::CSdlField& field,
bool optional, quint16 hIndents)
const = 0 ;
243 virtual void AddUnionFieldValueWriteToObject(QTextStream& stream,
const imtsdl::CSdlField& field,
bool optional, quint16 hIndents)
const = 0 ;
247 void WriteMethodCall(QTextStream& stream, MetdodType type,
const QString& objectName = QString(),
bool isPointer =
false)
const;
248 std::shared_ptr<imtsdl::CSdlEntryBase> FindEntryByName(
const QString& entryName,
bool onlyLocal =
false)
const;
251 void WriteSetValueToStruct(QTextStream& stream,
const imtsdl::CSdlField& field,
const QString& objectName = QStringLiteral(
"object"))
const;
254 virtual bool ProcessSourceClassFile(
const imtsdl::CSdlType& sdlType, QIODevice* headerDevicePtr,
const iprm::IParamsSet* paramsPtr)
const override;
255 virtual bool ProcessHeaderClassFile(
const imtsdl::CSdlType& sdlType, QIODevice* sourceDevicePtr,
const iprm::IParamsSet* paramsPtr)
const override;
259 void AddFieldWriteToObjectCode(QTextStream& stream,
const imtsdl::CSdlField& field,
bool optional)
const;
260 void AddFieldReadFromObjectCode(QTextStream& stream,
const imtsdl::CSdlField& field,
bool optional)
const;
263 void AddScalarFieldWriteToObjectCode(QTextStream& stream,
const imtsdl::CSdlField& field,
bool optional,
bool isEnum,
bool isUnion)
const;
264 void AddCustomFieldWriteToObjectCode(QTextStream& stream,
const imtsdl::CSdlField& field,
bool optional)
const;
265 void AddCustomFieldWriteToObjectImplCode(QTextStream& stream,
const imtsdl::CSdlField& field,
bool optional, quint16 hIndents = 1)
const;
266 void AddArrayFieldWriteToObjectCode(QTextStream& stream,
const imtsdl::CSdlField& field,
bool optional)
const;
267 void AddArrayFieldWriteToObjectImplCode(QTextStream& stream,
const imtsdl::CSdlField& field,
bool optional, quint16 hIndents = 1)
const;
268 void AddCustomArrayFieldWriteToObjectCode(QTextStream& stream,
const imtsdl::CSdlField& field,
bool optional)
const;
269 void AddCustomArrayFieldWriteToObjectImplCode(QTextStream& stream,
const imtsdl::CSdlField& field,
bool optional, quint16 hIndents = 1)
const;
272 void AddFieldValueReadFromObject(QTextStream& stream,
const imtsdl::CSdlField& field,
bool optional,
bool isEnum,
bool isUnion, quint16 hIndents = 1)
const;
273 void AddCustomFieldReadFromObjectCode(QTextStream& stream,
const imtsdl::CSdlField& field,
bool optional)
const;
274 void AddCustomFieldReadFromObjectImplCode(QTextStream& stream,
const imtsdl::CSdlField& field,
bool optional, quint16 hIndents = 1)
const;
275 void AddArrayFieldReadFromObjectCode(QTextStream& stream,
const imtsdl::CSdlField& field,
bool optional,
bool isEnum,
bool isUnion)
const;
276 void AddArrayFieldReadFromObjectImplCode(QTextStream& stream,
const imtsdl::CSdlField& field,
bool optional,
bool isEnum,
bool isUnion, quint16 hIndents = 1)
const;
277 void AddCustomArrayFieldReadFromObjectCode(QTextStream& stream,
const imtsdl::CSdlField& field,
bool optional)
const;
278 void AddCustomArrayFieldReadToObjectImplCode(QTextStream& stream,
const imtsdl::CSdlField& field,
bool optional, quint16 hIndents = 1)
const;
virtual void WriteTypenameToObjectCode(QTextStream &stream, const imtsdl::CSdlType &sdlType) const =0
Writes code that writes the typename to an object.
virtual QString GetUnionListElementType(bool forScalar) const
virtual bool AddContainerValueReadFromObject(QTextStream &stream, const imtsdl::CSdlField &field, const QString &variableName, quint16 horizontalIndents) const =0
Writes a begin of code, that reads a value from an object.
virtual QString GetArrayContainerObjectVariableName() const =0
Same as GetContainerObjectVariableName, but only for arrays/lists.
virtual bool AddContainerListAccessCode(QTextStream &stream, const imtsdl::CSdlField &field, const QString &variableName, quint16 horizontalIndents, ListAccessResult &result) const =0
Writes code, that obtains a value from an object as list.
virtual QString AddCreationOfTemporaryArray(QTextStream &stream, const imtsdl::CSdlField &field) const =0
This method is used to create an array to store objects of the same type as the field.
virtual bool AddFieldValueAppendToObjectArray(QTextStream &stream, const imtsdl::CSdlField &field, const QString &arrayContainerVariableName, const QString &variableName, uint horizontalIndents) const =0
Writes code, that appends a scalar value to an object.
virtual bool AddContainerValueCheckConditionBegin(QTextStream &stream, const imtsdl::CSdlField &field, bool expected, quint16 horizontalIndents) const =0
Writes a begin of code, that checks whether the object contains a value.
virtual bool AddFieldValueWriteToObject(QTextStream &stream, const imtsdl::CSdlField &field, const QString &variableName, uint horizontalIndents) const =0
Writes code, that sets a scalar value to an object.
virtual bool AddObjectValueWriteToObject(QTextStream &stream, const imtsdl::CSdlField &field, const QString &variableName, uint horizontalIndents) const =0
Same as AddFieldValueWriteToObject, but only for object's container as object i.e.
virtual bool AddArrayWriteToObject(QTextStream &stream, const imtsdl::CSdlField &field, const QString &variableName, const QString &targetObjectVariableName, uint horizontalIndents) const =0
writes code, that sets an array variableName to an object targetObjectVariableName
void WriteSetValueToStruct(QTextStream &stream, const imtsdl::CSdlField &field, const QString &objectName=QStringLiteral("object")) const
Simply generates a start of code, that sets a value to struct like.