Files
ResInsight/Fwk/AppFwk/cafProjectDataModel/cafPdmXml/cafPdmXmlFieldHandle.h
2020-02-25 13:57:51 +01:00

69 lines
2.2 KiB
C++

#pragma once
#include "cafPdmFieldCapability.h"
#include <QString>
#include <vector>
class QXmlStreamReader;
class QXmlStreamWriter;
namespace caf
{
class PdmFieldHandle;
class PdmObjectFactory;
class PdmReferenceHelper;
//==================================================================================================
//
//
//
//==================================================================================================
class PdmXmlFieldHandle : public PdmFieldCapability
{
public:
PdmXmlFieldHandle(PdmFieldHandle* owner , bool giveOwnership);
~PdmXmlFieldHandle() override { }
PdmFieldHandle* fieldHandle() { return m_owner; }
const PdmFieldHandle* fieldHandle() const { return m_owner; }
bool isIOReadable() const { return m_isIOReadable; }
bool isIOWritable() const { return m_isIOWritable; }
bool isCopyable() const { return m_isCopyable;}
void disableIO();
void setIOWritable(bool isWritable) { m_isIOWritable = isWritable; }
void setIOReadable(bool isReadable) { m_isIOReadable = isReadable; }
void setCopyable(bool isCopyable) { m_isCopyable = isCopyable; }
QString childClassKeyword();
void registerKeywordAlias(const QString& alias);
bool matchesKeywordAlias(const QString& keyword) const;
virtual void readFieldData(QXmlStreamReader& xmlStream, PdmObjectFactory* objectFactory) = 0;
virtual void writeFieldData(QXmlStreamWriter& xmlStream) const = 0;
virtual bool resolveReferences() = 0;
virtual QString referenceString() const { return QString(); }
protected:
bool assertValid() const;
QString m_childClassKeyword; ///< Must be set in constructor of derived XmlFieldHandle
private:
bool m_isIOReadable;
bool m_isIOWritable;
bool m_isCopyable;
std::vector<QString> m_keywordAliases;
PdmFieldHandle* m_owner;
};
} // End of namespace caf
#include "cafInternalPdmXmlFieldCapability.h"