OpenLexocad  27.0
PropertyLinkListBase.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 
11 namespace Core
12 {
14 {
16 
17 public:
19  virtual ~PropertyLinkListBase();
20 
21  virtual void setValue(const std::list<Core::DocObject*>& list);
22  virtual bool setValueFromVariant(const Core::Variant&) { return false; }
23 
24  const std::list<Core::DocObject*>& getValue() const;
25  virtual Core::Variant getVariant(void) const override { return Core::Variant(_linkList); }
26 
27  virtual void copyValue(Core::Property* p) override;
28  virtual void deepCopy(Core::Property* p, Core::CoreDocument* dest_doc, DocObjectMap& copyMap) override;
29 
30  virtual void addLink(Core::DocObject* o);
31  virtual void removeLink(Core::DocObject* o);
32  virtual bool hasLink(Core::DocObject* o) const;
33  virtual void setEmpty();
34  bool isEmpty() const;
35  size_t getSize() const;
36 
37  virtual void save(Base::AbstractWriter& writer, Base::PersistanceVersion& save_version) override;
38  virtual inline void restore(Base::AbstractXMLReader& reader, Base::PersistanceVersion& version) override;
39  virtual const Core::PropertyKind getPropertyKind(void) const override;
40  virtual bool isEqual(const Property*) const override;
41  virtual bool isLink() const override { return true; }
42  virtual std::shared_ptr<Core::DbgInfo> getDbgInfo() const override;
43 
44 protected:
45  std::list<Core::DocObject*> _linkList;
46 };
47 
48 } // 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: Property.h:81
std::map< Core::DocObject *, Core::DocObject * > DocObjectMap
Definition: DocObject.h:11
TYPESYSTEM_HEADER()
Definition: DocObject.h:28