source: libs/QtGui/src/SgConnectionContainer.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 "SgConnectionContainer.h"
2
3namespace Sg
4{
5    SgConnectionContainerIterator::SgConnectionContainerIterator():
6            SgConnectionContainerIteratorType()
7    {
8    }
9
10    SgConnectionContainerIterator::SgConnectionContainerIterator(const SgConnectionContainerIteratorType &org):
11            SgConnectionContainerIteratorType(org)
12    {
13    }
14
15    SgConnectionPtr& SgConnectionContainerIterator::operator* ()
16    {
17        return ((SgConnectionContainerIteratorType)(*this))->second;
18    }
19
20    SgConnectionPtr* SgConnectionContainerIterator::operator-> ()
21    {
22        return &(((SgConnectionContainerIteratorType)(*this))->second);
23    }
24
25
26    SgConnectionContainer::SgConnectionContainer(const SgObject* parentObject): SgObject("", parentObject)
27    {
28    }
29
30    SgConnectionContainer::~SgConnectionContainer()
31    {
32        for (SgConnectionContainerIterator iter = connections.begin(); iter != connections.end(); iter++) {
33            if ( (*iter) != NULL){
34                delete (*iter);
35                (*iter)=NULL;
36            }
37        }
38        connections.clear();
39    }
40
41    bool SgConnectionContainer::add(const SgModule* module1, const SgPort* port1,
42                                    const SgModule* module2, const SgPort* port2,
43                                    SgConnection::SgProtocolType protocol, SgConnection::SgNetworkType network)
44    {   
45        SgNameType connName = SgConnection::FullConnectionName(module1->getName(), port1->getName(),
46                                                               module2->getName(), port2->getName(),
47                                                               protocol, network);
48        SgConnectionContainerIterator iter;
49        if ( (iter = connections.find(connName)) == connections.end() )
50        {
51            SgConnectionPtr itConn = new SgConnection(module1, port1, module2, port2, protocol, network, this);
52            connections.insert( std::pair<SgNameType, SgConnectionPtr>(connName, itConn) );
53            modified();
54            return true;
55        }
56        return false;
57    }
58
59    bool SgConnectionContainer::clear()
60    {
61        for (SgConnectionContainerIterator iter = connections.begin(); iter != connections.end(); iter++) {
62            if ( (*iter) != NULL){
63                delete (*iter);
64                (*iter)=NULL;
65            }
66        }
67        connections.clear();
68        modified();
69        return true;
70    }
71
72    bool SgConnectionContainer::del(const SgNameType &connectionName)
73    {
74        SgConnectionContainerIterator iter;
75        if ( connections.find((connectionName)) != connections.end())
76        {
77            if ( &(*connections.find(connectionName)) != NULL)
78            {
79                iter = connections.find(connectionName);
80                if ( connections.erase(connectionName) )
81                {
82                    delete (*iter);
83                    modified();
84                    return true;
85                }
86            }
87        }
88        return false;
89    }
90
91    SgConnectionContainerIterator SgConnectionContainer::get(const SgNameType &connectionName)
92    {
93        return connections.find(connectionName);
94    }
95
96    bool SgConnectionContainer::exist(const SgNameType &connectionName)
97    {
98        return ( connections.find(connectionName) != connections.end() );
99    }
100
101    SgConnectionContainerIterator SgConnectionContainer::begin()
102    {
103        return connections.begin();
104    }
105
106    SgConnectionContainerIterator SgConnectionContainer::end()
107    {
108        return connections.end();
109    }
110
111    SgConnectionContainerIterator SgConnectionContainer::null()
112    {
113        return connections.end();
114    }
115
116    int SgConnectionContainer::size()
117    {
118        return connections.size();
119    }
120} // namespace Sg (END)
121
Note: See TracBrowser for help on using the repository browser.