1 //---------------------------------------------------------------------------
\r
2 // Management Class of QCalcUnit
\r
3 //---------------------------------------------------------------------------
\r
7 #include "QCalcManager.h"
\r
8 #include "QCompilerCntl.h"
\r
9 #include "QCalcUnit.h"
\r
11 //---------------------------------------------------------------------------
\r
15 QCalcManager::QCalcManager(void) {
\r
17 mQCalcUnits.clear();
\r
19 //---------------------------------------------------------------------------
\r
23 QCalcManager::QCalcManager(std::istream &is){
\r
25 mQCalcUnits.clear();
\r
26 AddFromIntermediate(is);
\r
28 //---------------------------------------------------------------------------
\r
32 QCalcManager::~QCalcManager(){
\r
35 //---------------------------------------------------------------------------
\r
37 //---------------------------------------------------------------------------
\r
39 * Compile intermediate
\r
42 QCalcManager::AddFromIntermediate(std::istream &is) {
\r
43 QCompilerCntl qccntl(is);
\r
46 if (true == qccntl.Compile()) {
\r
47 unsigned int cntl_size = qccntl.GetNumberOfControl();
\r
48 for (unsigned int i = 0; i < cntl_size; i++) {
\r
49 cu = qccntl.AllocateControl(i);
\r
50 if (NULL != cu) mQCalcUnits.push_back(cu);
\r
52 mNumberOfQBits = qccntl.GetNumberOfQBits();
\r
58 //---------------------------------------------------------------------------
\r
63 QCalcManager::Calc(QBits * const qBits) {
\r
64 if (qBits->GetNumberOfQBits() >= mNumberOfQBits) {
\r
65 int unit_count = mQCalcUnits.size();
\r
66 for (int i = 0; i < unit_count; i++) {
\r
67 mQCalcUnits[i]->Calc(qBits);
\r
73 //---------------------------------------------------------------------------
\r
78 QCalcManager::AddUnit(QCalcUnit *qc) {
\r
80 mQCalcUnits.push_back(qc);
\r
83 //---------------------------------------------------------------------------
\r
88 QCalcManager::DeleteAll(void) {
\r
90 int vec_size = mQCalcUnits.size();
\r
91 for (int i = 0; i < vec_size; i++) {
\r
92 delete mQCalcUnits[i];
\r
94 mQCalcUnits.clear();
\r
96 //---------------------------------------------------------------------------
\r