OpenLexocad  27.0
PropertyLinkBase.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <Core/DbgInfo.h>
4 #include <Core/DocObject.h>
5 #include <Core/Object_Hnd.h>
6 #include <Core/Property.h>
7 #include <Core/Variant.h>
8 #include <Core/core_defines2.h>
9 
10 #include <boost/unordered_set.hpp>
11 
12 
13 namespace Core
14 {
16 {
18 
19 public:
20  PropertyLinkBase(void);
21  virtual ~PropertyLinkBase(void);
22 
23  virtual void setValue(Core::DocObject* o);
24  virtual bool setValueFromVariant(const Core::Variant& value) override;
25  virtual bool setKeyValue(const std::string& key, const Core::Variant& value) override;
26  virtual std::map<std::string, Core::Variant> getKeyValueMap() const override;
27 
28  Core::DocObject* getValue() const;
29  virtual Core::Variant getVariant(void) const override;
30 
32  virtual void copyValue(Core::Property* p) override;
33  virtual void deepCopy(Core::Property* p, Core::CoreDocument* dest_doc, DocObjectMap& copyMap) override;
34 
35  virtual bool createSQL(Base::AbstractWriter& writer, Base::PersistanceVersion& save_version, bool data) override;
36  virtual void save(Base::AbstractWriter& writer, Base::PersistanceVersion& save_version) override;
37  virtual inline void restore(Base::AbstractXMLReader& reader, Base::PersistanceVersion& version) override;
38  virtual const Core::PropertyKind getPropertyKind(void) const override;
39  virtual bool isEqual(const Property*) const override;
40  virtual bool isLink() const override { return true; }
41  virtual std::shared_ptr<Core::DbgInfo> getDbgInfo() const override;
42 
43  // Tries to resolve the link from the object handle. Returns 'true' if successful, 'false' if it failed
44  bool resolveLink();
45 
46 protected:
48 };
49 } // namespace Core
#define CORE_EXPORT
Definition: core_defines2.h:10
Definition: Persistance.h:20
LX_CORE_EXPORT Version & version
Definition: CoreDocument.h:197
Definition: Variant.h:90
Definition: AbstractXMLReader.h:10
PropertyKind
Definition: Property.h:54
Definition: Base.h:19
Definition: Writer.h:27
Definition: Object_Hnd.h:9
Definition: Property.h:81
std::map< Core::DocObject *, Core::DocObject * > DocObjectMap
Definition: DocObject.h:11
TYPESYSTEM_HEADER()
Definition: DocObject.h:28