-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBaseManager.cpp
More file actions
67 lines (59 loc) · 1.71 KB
/
Copy pathBaseManager.cpp
File metadata and controls
67 lines (59 loc) · 1.71 KB
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
#include <map>
#include "DigitOperationTables.h"
#include "BaseManager.h"
BaseManager *BaseManager::s_pBM;
baselist BaseManager::s_mBases;
//----------------------------------------------------------------------------
// getInstance
//
BaseManager *BaseManager::getInstance() {
if (s_pBM == NULL) {
s_pBM = new BaseManager();
}
return s_pBM;
}
//----------------------------------------------------------------------------
// freeInstance
//
void BaseManager::freeInstance() {
if (s_pBM != NULL) {
delete s_pBM;
}
}
//----------------------------------------------------------------------------
// constructor
//
BaseManager::BaseManager() {}
//----------------------------------------------------------------------------
// destructor
//
BaseManager::~BaseManager() {
baselist::iterator it;
for (it = s_mBases.begin(); it != s_mBases.end(); ++it) {
if (it->second != NULL) {
delete it->second;
}
}
}
//----------------------------------------------------------------------------
// getBase
//
DigitOperationTables *BaseManager::getOperationTables(uchar iBase) {
DigitOperationTables *pResult = NULL;
baselist::const_iterator it = s_mBases.find(iBase);
if (it != s_mBases.end()) {
pResult = it->second;
} else {
pResult = DigitOperationTables::createInstance(iBase);
if (pResult != NULL) {
s_mBases[iBase] = pResult;
}
}
return pResult;
}
//----------------------------------------------------------------------------
// checkBaseCompatibility
//
bool BaseManager::checkBaseCompatibility(std::string sNumber, uchar iBase) {
return DigitOperationTables::checkBaseCompatibility(sNumber, iBase);
}