1 #ifndef ILWISOBJECTIMPL_H
2 #define ILWISOBJECTIMPL_H
8 #include "Kernel_global.h"
12 #include "numericrange.h"
13 #include "juliantime.h"
14 #include "prepareoptions.h"
21 class IlwisObjectFactory;
22 class ConnectorInterface;
25 struct PrepareOptions;
27 typedef IlwisTypes (*IlwisTypeFunction)(
const QString& resource);
136 virtual bool prepare();
144 void setName(
const QString& nm);
152 void setCode(
const QString &cd);
159 QDateTime modifiedTime()
const;
167 void setModifiedTime(
const Time& time);
174 Time createTime()
const;
181 void setCreateTime(
const Time& time);
188 virtual QString toString();
200 virtual void setConnector(
ConnectorInterface *connector,
int mode=cmINPUT | cmOUTPUT);
217 virtual bool isValid()
const;
225 virtual bool isReadOnly()
const;
232 virtual void setReadOnly(
bool yesno);
238 virtual bool hasChanged()
const;
245 virtual void changed(
bool yesno) ;
252 virtual IlwisTypes ilwisType()
const = 0;
260 virtual bool prepare(
const QString& def);
269 bool fromInternal(
const QSqlRecord& rec);
276 bool isAnonymous()
const;
282 virtual Resource source(
int mode=cmINPUT)
const;
288 virtual bool store(
int mode=smMETADATA | smBINARYDATA);
297 void connectTo(
const QUrl &url,
const QString &format,
const QString &fnamespace, ConnectorMode cmode);
310 virtual bool merge(
const IlwisObject* obj,
int options=0);
311 bool isSystemObject()
const;
312 bool isInternalObject()
const;
314 template<
typename T>
static T create(
const QString& def){
320 template<
typename T>
static T create(quint64
id){
333 static IlwisObject *create(
const Resource& source,
const PrepareOptions& options=PrepareOptions());
341 static IlwisTypes findType(
const QString &source);
350 static QString type2Name(IlwisTypes t);
359 static IlwisTypes name2Type(
const QString &name);
365 static void addTypeFunction(IlwisTypeFunction);
367 static IlwisTypes name2ExtendedType(
const QString &dname);
370 QScopedPointer<ConnectorInterface>& connector(
int mode=cmINPUT | cmOUTPUT);
371 const QScopedPointer<ConnectorInterface> &connector(
int mode=cmINPUT | cmOUTPUT)
const;
372 bool setValid(
bool yesno);
373 void copyTo(IlwisObject *obj);
376 std::mutex _loadforstore;
384 QScopedPointer<Ilwis::ConnectorInterface> _connector;
385 QScopedPointer<Ilwis::ConnectorInterface> _outConnector;
386 static QVector<IlwisTypeFunction> _typeFunctions;
395 #define IVARIANT(o) qVariantFromValue(o)
400 #endif // ILWISOBJECTIMPL_H