LibreCAD
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
storagemanagerimpl.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "cad/const.h"
4 #include "cad/base/cadentity.h"
12 #include "entitycontainer.h"
13 
17 #include <map>
18 #include <utility>
19 #include <string>
20 
21 namespace lc {
29  public:
35 
36  virtual ~StorageManagerImpl();
37 
42  void insertEntity(entity::CADEntity_CSPtr) override;
43 
48  void removeEntity(entity::CADEntity_CSPtr) override;
49 
55 
61  entity::CADEntity_CSPtr entityByID(ID_DATATYPE id) const override;
62 
69  lc::EntityContainer<entity::CADEntity_CSPtr> entitiesByLayer(const Layer_CSPtr layer) const override;
70 
76  Layer_CSPtr layerByName(const std::string& layerName) const override;
77 
83  DxfLinePatternByValue_CSPtr linePatternByName(const std::string& linePatternName) const override;
84 
89  std::map<std::string, Layer_CSPtr> allLayers() const override;
90 
96 
101  void addDocumentMetaType(DocumentMetaType_CSPtr dmt) override;
102 
107  void removeDocumentMetaType(DocumentMetaType_CSPtr dmt) override;
108 
112  void replaceDocumentMetaType(DocumentMetaType_CSPtr oldDmt, DocumentMetaType_CSPtr newDmt) override;
113 
114  std::map<std::string, DocumentMetaType_CSPtr, lc::StringHelper::cmpCaseInsensetive>
115  allMetaTypes() const override;
116 
117  lc::EntityContainer<entity::CADEntity_CSPtr> entitiesByBlock(Block_CSPtr block) const override;
118 
122  void optimise() override;
123 
124  private:
125  DocumentMetaType_CSPtr _metaDataTypeByName(const std::string& id) const override;
126 
128  std::map<std::string, DocumentMetaType_CSPtr, StringHelper::cmpCaseInsensetive> _documentMetaData;
129  std::map<std::string, lc::EntityContainer<entity::CADEntity_CSPtr>> _blocksEntities;
130  };
131 }
DocumentMetaType_CSPtr _metaDataTypeByName(const std::string &id) const override
DxfLinePatternByValue_CSPtr linePatternByName(const std::string &linePatternName) const override
returns line pattern By Name
std::map< std::string, DocumentMetaType_CSPtr, StringHelper::cmpCaseInsensetive > _documentMetaData
void insertEntity(entity::CADEntity_CSPtr) override
insertEntity
EntityContainer< entity::CADEntity_CSPtr > _entities
#define ID_DATATYPE
Definition: id.h:7
Layer_CSPtr layerByName(const std::string &layerName) const override
returns layer By Name
std::map< std::string, DocumentMetaType_CSPtr, lc::StringHelper::cmpCaseInsensetive > allMetaTypes() const override
std::map< std::string, Layer_CSPtr > allLayers() const override
return all Layers
void optimise() override
optimise the quadtree
void removeDocumentMetaType(DocumentMetaType_CSPtr dmt) override
remove a document meta type from the document
Definition: cadentity.h:12
EntityContainer< entity::CADEntity_CSPtr > & entityContainer() override
returns entity Container
void replaceDocumentMetaType(DocumentMetaType_CSPtr oldDmt, DocumentMetaType_CSPtr newDmt) override
remove document meta type
lc::EntityContainer< entity::CADEntity_CSPtr > entitiesByBlock(Block_CSPtr block) const override
lc::EntityContainer< entity::CADEntity_CSPtr > entitiesByLayer(const Layer_CSPtr layer) const override
Returns entities By Layer.
entity::CADEntity_CSPtr entityByID(ID_DATATYPE id) const override
return entity By ID
void addDocumentMetaType(DocumentMetaType_CSPtr dmt) override
add a document meta type
void insertEntityContainer(const EntityContainer< entity::CADEntity_CSPtr > &) override
insertEntityContainer
std::map< std::string, lc::EntityContainer< entity::CADEntity_CSPtr > > _blocksEntities
StorageManagerImpl()
Entity manager implementor.
void removeEntity(entity::CADEntity_CSPtr) override
remove Entity from the container