DSPatch  v.2.42
C++ Cross-Platform, Object-Oriented, Flow-Based Programming Library
 All Classes Pages
DspSignalBus.cpp
1 /************************************************************************
2 DSPatch - Cross-Platform, Object-Oriented, Flow-Based Programming Library
3 Copyright (c) 2012-2013 Marcus Tomlinson
4 
5 This file is part of DSPatch.
6 
7 GNU Lesser General Public License Usage
8 This file may be used under the terms of the GNU Lesser General Public
9 License version 3.0 as published by the Free Software Foundation and
10 appearing in the file LGPLv3.txt included in the packaging of this
11 file. Please review the following information to ensure the GNU Lesser
12 General Public License version 3.0 requirements will be met:
13 http://www.gnu.org/copyleft/lgpl.html.
14 
15 Other Usage
16 Alternatively, this file may be used in accordance with the terms and
17 conditions contained in a signed written agreement between you and
18 Marcus Tomlinson.
19 
20 DSPatch is distributed in the hope that it will be useful,
21 but WITHOUT ANY WARRANTY; without even the implied warranty of
22 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
23 ************************************************************************/
24 
25 #include "DspSignalBus.h"
26 
27 //=================================================================================================
28 
29 DspSignalBus::~DspSignalBus() {};
30 
31 //=================================================================================================
32 
33 bool DspSignalBus::AddSignal( std::string signalName )
34 {
35  if( signalName != "" )
36  {
37  unsigned short signalIndex;
38  if( FindSignal( signalName, signalIndex ) ) // if the name already exists
39  {
40  return false;
41  }
42  }
43 
44  _signals.push_back( DspSignal( signalName ) );
45 
46  return true;
47 }
48 
49 //-------------------------------------------------------------------------------------------------
50 
51 bool DspSignalBus::SetSignal( unsigned short signalIndex, const DspSignal* newSignal )
52 {
53  if( signalIndex < _signals.size() && newSignal != NULL )
54  {
55  return _signals[signalIndex].SetSignal( newSignal );
56  }
57  else
58  {
59  return false;
60  }
61 }
62 
63 //-------------------------------------------------------------------------------------------------
64 
65 bool DspSignalBus::SetSignal( std::string signalName, const DspSignal* newSignal )
66 {
67  unsigned short signalIndex;
68 
69  if( FindSignal( signalName, signalIndex ) && newSignal != NULL )
70  {
71  return _signals[signalIndex].SetSignal( newSignal );
72  }
73  else
74  {
75  return false;
76  }
77 }
78 
79 //-------------------------------------------------------------------------------------------------
80 
81 DspSignal* DspSignalBus::GetSignal( unsigned short signalIndex )
82 {
83  if( signalIndex < _signals.size() )
84  {
85  return &_signals[signalIndex];
86  }
87  else
88  {
89  return NULL;
90  }
91 }
92 
93 //-------------------------------------------------------------------------------------------------
94 
95 DspSignal* DspSignalBus::GetSignal( std::string signalName )
96 {
97  unsigned short signalIndex;
98 
99  if( FindSignal( signalName, signalIndex ) )
100  {
101  return &_signals[signalIndex];
102  }
103  else
104  {
105  return NULL;
106  }
107 }
108 
109 //-------------------------------------------------------------------------------------------------
110 
111 bool DspSignalBus::FindSignal( std::string signalName, unsigned short& returnIndex ) const
112 {
113  for( unsigned short i = 0; i < _signals.size(); i++ )
114  {
115  if( signalName != "" && _signals[i].GetSignalName() == signalName )
116  {
117  returnIndex = i;
118  return true;
119  }
120  }
121  // if you get here the variable was not found.
122  return false;
123 }
124 
125 //-------------------------------------------------------------------------------------------------
126 
127 bool DspSignalBus::FindSignal( unsigned short signalIndex, unsigned short& returnIndex ) const
128 {
129  if( signalIndex < _signals.size() )
130  {
131  returnIndex = signalIndex;
132  return true;
133  }
134 
135  return false;
136 }
137 
138 //-------------------------------------------------------------------------------------------------
139 
140 unsigned short DspSignalBus::GetSignalCount() const
141 {
142  return _signals.size();
143 }
144 
145 //-------------------------------------------------------------------------------------------------
146 
147 void DspSignalBus::RemoveAllSignals()
148 {
149  _signals.clear();
150 }
151 
152 //-------------------------------------------------------------------------------------------------
153 
154 void DspSignalBus::ClearValue( unsigned short signalIndex )
155 {
156  if( signalIndex < _signals.size() )
157  {
158  return _signals[signalIndex].ClearValue();
159  }
160 }
161 
162 //-------------------------------------------------------------------------------------------------
163 
164 void DspSignalBus::ClearValue( std::string signalName )
165 {
166  unsigned short signalIndex;
167 
168  if( FindSignal( signalName, signalIndex ) )
169  {
170  return _signals[signalIndex].ClearValue();
171  }
172 }
173 
174 //-------------------------------------------------------------------------------------------------
175 
176 void DspSignalBus::ClearAllValues()
177 {
178  for( unsigned short i = 0; i < _signals.size(); i++ )
179  {
180  _signals[i].ClearValue();
181  }
182 }
183 
184 //=================================================================================================