ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
ecvExternalFactory.h
Go to the documentation of this file.
1 // ----------------------------------------------------------------------------
2 // - CloudViewer: www.cloudViewer.org -
3 // ----------------------------------------------------------------------------
4 // Copyright (c) 2018-2024 www.cloudViewer.org
5 // SPDX-License-Identifier: MIT
6 // ----------------------------------------------------------------------------
7 
8 #pragma once
9 
10 // Local
11 #include "ecvHObject.h"
12 
13 // Qt
14 #include <QMap>
15 
23 public:
26  public:
28  Container() {}
29 
31 
34  ccExternalFactory* getFactoryByName(const QString& factoryName) const;
35 
37 
40  void addFactory(ccExternalFactory* factory);
41 
43  typedef QSharedPointer<Container> Shared;
44 
48 
50 
53  static void SetUniqueInstance(Container::Shared container);
54 
55  protected:
57  QMap<QString, ccExternalFactory*> m_factories;
58  };
59 
61 
63  ccExternalFactory(QString factoryName);
64 
66  inline QString getFactoryName() const { return m_factoryName; }
67 
69 
73  virtual ccHObject* buildObject(const QString& metaName) = 0;
74 
75 protected:
77  QString m_factoryName;
78 };
#define CV_DB_LIB_API
Definition: CV_db.h:15
A convenience holder for all factories.
void addFactory(ccExternalFactory *factory)
Adds a new factory to the container.
Container()
Default constructor.
ccExternalFactory * getFactoryByName(const QString &factoryName) const
Returns factory using its (unique) name as key.
static void SetUniqueInstance(Container::Shared container)
Sets the unqiue static instance of the external factories container.
QMap< QString, ccExternalFactory * > m_factories
Set of factories.
QSharedPointer< Container > Shared
Shared pointer type.
static Container::Shared GetUniqueInstance()
ccExternalFactory(QString factoryName)
Default constructor.
QString m_factoryName
Name.
virtual ccHObject * buildObject(const QString &metaName)=0
Custom object building method.
QString getFactoryName() const
Returns the (unique) name of the factory.
Hierarchical CLOUDVIEWER Object.
Definition: ecvHObject.h:25