1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-01-24 18:23:54 +00:00
openmw/apps/opencs/view/doc/subviewfactory.hpp

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

48 lines
1.3 KiB
C++
Raw Normal View History

2012-12-11 12:22:43 +00:00
#ifndef CSV_DOC_SUBVIEWFACTORY_H
#define CSV_DOC_SUBVIEWFACTORY_H
#include <map>
#include "../../model/world/universalid.hpp"
namespace CSMDoc
{
class Document;
}
namespace CSVDoc
{
class SubView;
class SubViewFactoryBase
{
public:
SubViewFactoryBase() = default;
SubViewFactoryBase(const SubViewFactoryBase&) = delete;
SubViewFactoryBase& operator=(const SubViewFactoryBase&) = delete;
virtual ~SubViewFactoryBase() = default;
2012-12-11 12:22:43 +00:00
virtual SubView* makeSubView(const CSMWorld::UniversalId& id, CSMDoc::Document& document) = 0;
///< The ownership of the returned sub view is not transferred.
};
class SubViewFactoryManager
{
std::map<CSMWorld::UniversalId::Type, SubViewFactoryBase*> mSubViewFactories;
2022-09-22 18:26:05 +00:00
public:
SubViewFactoryManager() = default;
SubViewFactoryManager(const SubViewFactoryManager&) = delete;
SubViewFactoryManager& operator=(const SubViewFactoryManager&) = delete;
2012-12-11 12:22:43 +00:00
~SubViewFactoryManager();
void add(const CSMWorld::UniversalId::Type& id, SubViewFactoryBase* factory);
///< The ownership of \a factory is transferred to this.
SubView* makeSubView(const CSMWorld::UniversalId& id, CSMDoc::Document& document);
///< The ownership of the returned sub view is not transferred.
};
}
#endif