-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathKxCppRTModelManager.cpp
75 lines (62 loc) · 1.64 KB
/
KxCppRTModelManager.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
// ----------------------------------------------------------------------------
// Copyright....: (c) SAP 1999-2021
// Project......:
// Library......:
// File.........: KxModelManager.cpp
// Author.......:
// Created......: Fri Jun 02 17:03:33 2006
// Description..:
// ----------------------------------------------------------------------------
#include "KxCppRTModelManager.h"
struct sPrivateData {
KxSTL::map< KxSTL::string, KxCppRTModel* > mModelFactory;
};
KxCppRTModelManager::KxCppRTModelManager()
{
mData = new sPrivateData();
}
KxCppRTModelManager::~KxCppRTModelManager()
{
delete mData;
}
void
KxCppRTModelManager::registerModel(KxSTL::string const& iModelName,
KxCppRTModel* iModelPtr)
{
mData->mModelFactory[iModelName] = iModelPtr;
}
const KxCppRTModel&
KxCppRTModelManager::getKxModel (KxSTL::string const& iModelName)
{
return instance().getModel(iModelName);
}
const KxCppRTModel&
KxCppRTModelManager::getModel (KxSTL::string const& iModelName)
{
KxSTL::map< KxSTL::string, KxCppRTModel* >::const_iterator lIter =
mData->mModelFactory.find (iModelName);
if (lIter == mData->mModelFactory.end())
{
throw "model not found";
}
return *((*lIter).second);
}
KxSTL::vector<KxSTL::string>
KxCppRTModelManager::getListModel()
{
KxSTL::map< KxSTL::string, KxCppRTModel* >::const_iterator lIter =
mData->mModelFactory.begin();
KxSTL::vector<KxSTL::string> lVectModelName;
while(lIter != mData->mModelFactory.end())
{
lVectModelName.push_back((*lIter).first);
lIter++;
}
return lVectModelName;
}
KxCppRTModelManager&
KxCppRTModelManager::instance()
{
static KxCppRTModelManager lSingleton;
return lSingleton;
}