SECombinedCircuit.h
1 /**************************************************************************************
2 Copyright 2015 Applied Research Associates, Inc.
3 Licensed under the Apache License, Version 2.0 (the "License"); you may not use
4 this file except in compliance with the License. You may obtain a copy of the License
5 at:
6 http://www.apache.org/licenses/LICENSE-2.0
7 Unless required by applicable law or agreed to in writing, software distributed under
8 the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
9 CONDITIONS OF ANY KIND, either express or implied. See the License for the
10 specific language governing permissions and limitations under the License.
11 **************************************************************************************/
12 #pragma once
13 
14 #define COMBINED_CIRCUIT_TEMPLATE typename CombinedCircuitBindType, typename CircuitType, typename CircuitBindType, typename NodeType, typename CircuitNodeBindType, typename PathType, typename CircuitPathBindType
15 #define COMBINED_CIRCUIT_TYPES CombinedCircuitBindType, CircuitType, CircuitBindType, NodeType, CircuitNodeBindType, PathType, CircuitPathBindType
16 
17 #include <string>
18 
19 namespace biogears {
20 template <COMBINED_CIRCUIT_TEMPLATE>
21 class SECombinedCircuit : public CircuitType {
22 public:
23  SECombinedCircuit(const char* name, Logger* logger);
24  SECombinedCircuit(const std::string& name, Logger* logger);
25  virtual ~SECombinedCircuit() override;
26 
27  virtual void Clear() override; //clear memory
28 
29  bool Load(const CombinedCircuitBindType& in);
30  CombinedCircuitBindType* Unload() const;
31 
32 protected:
33  void Unload(CombinedCircuitBindType& data) const;
34 
35 public:
36  virtual void AddCircuit(CircuitType& c) override;
37  virtual void RemoveCircuit(CircuitType& c) override;
38  virtual CircuitType* GetCircuit(const char* name) override;
39  virtual CircuitType* GetCircuit(const std::string& name) override;
40 
41  virtual NodeType& CreateNode(const char* name) override;
42  virtual NodeType& CreateNode(const std::string& name) override;
43  virtual NodeType* GetNode(const char* name) const override;
44  virtual NodeType* GetNode(const std::string& name) const override;
45  virtual void DeleteNode(const NodeType& node) override;
46  virtual void DeleteNode(const char* name) override;
47  virtual void DeleteNode(const std::string& name) override;
48  virtual void RemoveNode(const NodeType& node) override;
49  virtual void RemoveNode(const char* name) override;
50  virtual void RemoveNode(const std::string& name) override;
51 
52  virtual PathType& CreatePath(NodeType& src, NodeType& tgt, const char* name) override;
53  virtual PathType& CreatePath(NodeType& src, NodeType& tgt, const std::string& name) override;
54  virtual PathType* GetPath(const char* path) const override;
55  virtual PathType* GetPath(const std::string& path) const override;
56  virtual void DeletePath(const PathType& path) override;
57  virtual void DeletePath(const char* name) override;
58  virtual void DeletePath(const std::string& name) override;
59  virtual void RemovePath(const PathType& path) override;
60  virtual void RemovePath(const char* name) override;
61  virtual void RemovePath(const std::string& name) override;
62 
63 protected:
64  std::vector<NodeType*> m_LinkNodes;
65  std::vector<PathType*> m_LinkPaths;
66  std::vector<std::string> m_RemovedNodes;
67  std::vector<std::string> m_RemovedPaths;
68  std::map<std::string, CircuitType*> m_Circuits;
69 };
70 }
71 #include <biogears/cdm/circuit/SECombinedCircuit.inl>
virtual NodeType * GetNode(const char *name) const override
bool Load(const CombinedCircuitBindType &in)
virtual CircuitType * GetCircuit(const char *name) override
std::vector< std::string > m_RemovedPaths
Definition: SECombinedCircuit.h:67
std::vector< NodeType * > m_LinkNodes
Definition: SECombinedCircuit.h:64
SECombinedCircuit(const char *name, Logger *logger)
virtual void AddCircuit(CircuitType &c) override
virtual void DeletePath(const PathType &path) override
std::vector< PathType * > m_LinkPaths
Definition: SECombinedCircuit.h:65
virtual void Clear() override
Definition: Logger.h:75
virtual PathType & CreatePath(NodeType &src, NodeType &tgt, const char *name) override
CombinedCircuitBindType * Unload() const
virtual void DeleteNode(const NodeType &node) override
Definition: SECombinedCircuit.h:21
virtual NodeType & CreateNode(const char *name) override
std::vector< std::string > m_RemovedNodes
Definition: SECombinedCircuit.h:66
virtual ~SECombinedCircuit() override
virtual void RemovePath(const PathType &path) override
virtual void RemoveNode(const NodeType &node) override
Definition: SEElectricalCircuit.h:18
virtual void RemoveCircuit(CircuitType &c) override
virtual PathType * GetPath(const char *path) const override
std::map< std::string, CircuitType * > m_Circuits
Definition: SECombinedCircuit.h:68