LibreCAD
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
metainfo.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <unordered_map>
4 #include <string>
7 
8 namespace lc {
12  // TODO: Container to store meta information on a entity
13  class MetaInfo : public std::enable_shared_from_this<MetaInfo>, public std::unordered_map<std::string, EntityMetaType_CSPtr> {
14  public:
15  // COnvenience function to add a MetaType to the MetaInfo map
16  std::shared_ptr<MetaInfo> add(EntityMetaType_CSPtr mt);
17  std::shared_ptr<MetaInfo> addDxfLinePattern(DxfLinePattern_CSPtr lp);
18 
19  // std::shared_ptr<MetaInfo> add(std::string name, MetaType_CSPtr mi);
20 
21  virtual ~MetaInfo() = default;
22 
23  static std::shared_ptr<MetaInfo> create() {
24  return std::make_shared<lc::MetaInfo>();
25  }
26  };
27 
28  DECLARE_SHORT_SHARED_PTR(MetaInfo)
29 }
std::shared_ptr< MetaInfo > addDxfLinePattern(DxfLinePattern_CSPtr lp)
Definition: metainfo.cpp:17
DECLARE_SHORT_SHARED_PTR(Document)
Definition: cadentity.h:12
virtual ~MetaInfo()=default
static std::shared_ptr< MetaInfo > create()
Definition: metainfo.h:23
std::shared_ptr< MetaInfo > add(EntityMetaType_CSPtr mt)
Definition: metainfo.cpp:8