OpenLexocad  27.1
PropertyLinkSetBase.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/Property.h>
6 #include <Core/Variant.h>
7 
8 
9 namespace Core
10 {
11 class LX_CORE_EXPORT PropertyLinkSetBase : public PropertyLinkBaseBase
12 {
14 
15 public:
17  virtual ~PropertyLinkSetBase();
18 
19  virtual void setValue(const std::unordered_set<Core::DocObject*>& set);
20  bool setValueFromVariant(const Core::Variant& value) override;
22  bool setKeyValue(const std::string& key, const Core::Variant& value) override;
24  std::map<std::string, Core::Variant> getKeyValueMap() const override;
25 
26  const std::unordered_set<Core::DocObject*>& getValue() const;
27  Core::Variant getVariant() const override;
28 
29  void copyValue(Core::Property* p) override;
30  void deepCopy(Core::Property* p, Core::CoreDocument* dest_doc, DocObjectMap& copyMap) override;
31 
32  virtual bool addLink(Core::DocObject* link);
33  virtual void addLinks(const std::unordered_set<Core::DocObject*>& linkset);
34  virtual bool removeLink(Core::DocObject* link) override;
35  bool hasLink(const Core::DocObject* o) const;
36  void setEmpty();
37  bool isEmpty() const;
38  size_t getSize() const;
39  void rehash(long n);
40 
41 
42  void save(Base::AbstractWriter& writer, Base::PersistenceVersion& save_version) override;
43  inline void restore(Base::AbstractXMLReader& reader, Base::PersistenceVersion& version) override;
44  const Core::PropertyKind getPropertyKind(void) const override;
45  bool isEqual(const Property* p) const override;
46  bool isLink() const override { return true; }
47  std::shared_ptr<Core::DbgInfo> getDbgInfo() const override;
48  virtual Core::Property* copy(void) const override;
49  virtual void paste(const Core::Property& from) override;
50 
51 protected:
52  std::unordered_set<Core::DocObject*> _linkSet;
53 };
54 
55 } // 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