OpenLexocad  28.0
PropertyLinkSetBase.h
Go to the documentation of this file.
1 #pragma once
2 
4 
5 
6 namespace Core
7 {
8 class DocObject;
9 class LX_CORE_EXPORT PropertyLinkSetBase : public PropertyLinkBaseBase
10 {
12 
13 public:
14  virtual void setValue(const std::unordered_set<Core::DocObject*>& set);
15  bool setValueFromVariant(const Core::Variant& value) override;
17  bool setKeyValue(const std::string& key, const Core::Variant& value) override;
19  std::map<std::string, Core::Variant> getKeyValueMap() const override;
20 
21  const std::unordered_set<Core::DocObject*>& getValue() const;
22  Core::Variant getVariant() const override;
23 
24  void copyValue(Core::Property* p) override;
25  void deepCopy(Core::Property* p, Core::CoreDocument* dest_doc, DocObjectMap& copyMap) override;
26 
27  virtual bool addLink(Core::DocObject* link) override;
28  virtual void addLinks(const std::unordered_set<Core::DocObject*>& linkset);
29  virtual bool removeLink(Core::DocObject* link) override;
30  bool hasLink(const Core::DocObject* o) const;
31  void setEmpty();
32  bool isEmpty() const;
33  size_t getSize() const;
34  void rehash(long n);
35 
36 
37  void save(Base::AbstractWriter& writer, Base::PersistenceVersion& save_version) override;
39  const Core::PropertyKind getPropertyKind(void) const override;
40  bool isEqual(const Property* p) const override;
41  bool isLink() const override { return true; }
42  std::shared_ptr<Core::DbgInfo> getDbgInfo() const override;
43  virtual Core::Property* copy(void) const override;
44  virtual void paste(const Core::Property& from) override;
45  virtual std::vector<Core::DocObject*> getLinks() override;
46 
47 protected:
48  std::unordered_set<Core::DocObject*> _linkSet;
49 };
50 
51 } // namespace Core
Core::CoreDocument
Definition: CoreDocument.h:269
Core::PropertyKind
PropertyKind
Definition: Property.h:42
Core::DocObjectMap
std::map< Core::DocObject *, Core::DocObject * > DocObjectMap
Definition: DocObject.h:50
Core::DocObject
Definition: DocObject.h:54
Base::PersistenceVersion
Definition: Persistence.h:13
Core
Definition: Base.h:5
Core::Variant
Definition: Variant.h:78
Base::AbstractWriter
Definition: Writer.h:13
Base::AbstractXMLReader
Definition: AbstractXMLReader.h:7
Core::version
LX_CORE_EXPORT Version & version
Core::Property
Definition: Property.h:72
TYPESYSTEM_HEADER
#define TYPESYSTEM_HEADER()
define for subclassing Base::BaseClass
Definition: Base.h:12