OpenLexocad  27.1
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 
9 
10 namespace Core
11 {
12 class LX_CORE_EXPORT PropertyLinkListBase : public Core::PropertyLinkBaseBase
13 {
15 
16 public:
18  virtual ~PropertyLinkListBase();
19 
20  virtual void setValue(const std::list<Core::DocObject*>& list);
21  virtual bool setValueFromVariant(const Core::Variant&) { return false; }
22 
23  const std::list<Core::DocObject*>& getValue() const;
24  virtual Core::Variant getVariant(void) const override { return Core::Variant(_linkList); }
25 
26  virtual void copyValue(Core::Property* p) override;
27  virtual void deepCopy(Core::Property* p, Core::CoreDocument* dest_doc, DocObjectMap& copyMap) override;
28 
29  virtual void addLink(Core::DocObject* o);
30  virtual bool removeLink(Core::DocObject* o) override;
31  virtual bool hasLink(Core::DocObject* o) const;
32  virtual void setEmpty();
33  bool isEmpty() const;
34  size_t getSize() const;
35 
36  virtual void save(Base::AbstractWriter& writer, Base::PersistenceVersion& save_version) override;
37  virtual inline void restore(Base::AbstractXMLReader& reader, Base::PersistenceVersion& 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  virtual Core::Property* copy(void) const override;
43  virtual void paste(const Core::Property& from) override;
44 
45 protected:
47 };
48 
49 } // namespace Core
Definition: Persistence.h:14
LX_CORE_EXPORT Version & version
Definition: CoreDocument.h:210
Definition: Variant.h:87
Definition: AbstractXMLReader.h:7
PropertyKind
Definition: Property.h:50
Definition: Base.h:12
Definition: Writer.h:16
Definition: Property.h:77
std::map< Core::DocObject *, Core::DocObject * > DocObjectMap
Definition: DocObject.h:10
TYPESYSTEM_HEADER()
Definition: DocObject.h:51