source: libs/QtGui/src/SgModuleContainer.cpp @ 445

Revision 445, 3.7 KB checked in by lmalek, 10 years ago (diff)

Samgar edition by WRUT. Based on Qt. Initial import.

Line 
1#include "SgModuleContainer.h"
2
3namespace Sg
4{
5    SgModuleContainerIterator::SgModuleContainerIterator():
6            SgModuleContainerIteratorType()
7    {
8    }
9
10    SgModuleContainerIterator::SgModuleContainerIterator(const SgModuleContainerIteratorType &org):
11            SgModuleContainerIteratorType(org)
12    {
13    }
14
15    SgModulePtr& SgModuleContainerIterator::operator* ()
16    {
17        return ((SgModuleContainerIteratorType)(*this))->second;
18    }
19
20    SgModulePtr* SgModuleContainerIterator::operator-> ()
21    {
22        return &(((SgModuleContainerIteratorType)(*this))->second);
23    }
24
25    SgModuleContainer::SgModuleContainer(const SgObject* parentObject): SgObject("", parentObject)
26    {
27    }
28
29    SgModuleContainer::~SgModuleContainer()
30    {
31        for (SgModuleContainerIterator iter = modules.begin(); iter != modules.end(); iter++) {
32            if ( (*iter) != NULL){
33                delete (*iter);
34                (*iter)=NULL;
35            }
36        }
37        modules.clear();
38    }
39
40    bool SgModuleContainer::add(const SgNameType& newModuleName, const SgNameType &categoryName, const SgNameType &subCategoryName)
41    {
42        SgModuleContainerIterator iter;
43        if ( (iter = modules.find(newModuleName)) == modules.end() )
44        {
45            Sg::SgModule* newModule = new Sg::SgModule(newModuleName, categoryName, subCategoryName, false, this);
46            modules.insert( std::pair<SgNameType, SgModulePtr>(newModule->getName(),newModule) );
47            modified();
48            return true;
49        }
50        else
51        {
52            (*iter)->setCategory(categoryName);
53            (*iter)->setSubCategory(subCategoryName);
54        }
55        (*iter)->setActive(true);
56        modified();
57        return false;
58    }
59
60    bool SgModuleContainer::addPort(const SgNameType &moduleName, const SgNameType &newPortName)
61    {
62        bool portAdded = false;
63        SgModuleContainerIterator itModule = modules.find(moduleName);
64        if ( itModule != this->null() )
65            if ( (portAdded = (*itModule)->addPort(newPortName)) )
66                modified();
67        return portAdded;
68    }
69
70    bool SgModuleContainer::clear()
71    {
72        for (SgModuleContainerIterator iter = modules.begin(); iter != modules.end(); iter++) {
73            if ( (*iter) != NULL){
74                delete (*iter);
75                (*iter)=NULL;
76            }
77        }
78        modules.clear();
79        modified();
80        return true;
81    }
82
83    bool SgModuleContainer::del(const SgNameType &moduleName)
84    {
85        if ( &(*modules.find(moduleName)) != NULL)
86            delete &(*modules.find(moduleName));
87        if ( modules.erase(moduleName) )
88        {
89            modified();
90            return true;
91        }
92        return false;
93    }
94
95    bool SgModuleContainer::delPort(const SgNameType &moduleName, const SgNameType &portName)
96    {
97        bool portRemoved = false;
98        SgModuleContainerIterator itModule = modules.find(moduleName);
99        if ( itModule != this->null() )
100            if ( (portRemoved =(*itModule)->delPort(portName)) )
101                modified();
102        return portRemoved;
103    }
104
105    SgModuleContainerIterator SgModuleContainer::get(const SgNameType &moduleName)
106    {
107        return modules.find(moduleName);
108    }
109
110    bool SgModuleContainer::exist(const SgNameType &moduleName)
111    {
112        return ( modules.find(moduleName) != modules.end() );
113    }
114
115    SgModuleContainerIterator SgModuleContainer::begin()
116    {
117        return modules.begin();
118    }
119
120    SgModuleContainerIterator SgModuleContainer::end()
121    {
122        return modules.end();
123    }
124
125    SgModuleContainerIterator SgModuleContainer::null()
126    {
127        return modules.end();
128    }
129
130    int SgModuleContainer::size()
131    {
132        return modules.size();
133    }
134
135} // namespace Sg (END)
Note: See TracBrowser for help on using the repository browser.