SESubstanceManager.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 
13 #pragma once
14 #include <biogears/cdm/CommonDataModel.h>
15 #include <biogears/exports.h>
16 CDM_BIND_DECL(SubstanceData);
17 CDM_BIND_DECL(SubstanceCompoundData);
18 
19 namespace biogears {
20 class SESubstance;
21 class SESubstanceCompound;
22 
23 class BIOGEARS_API SESubstanceManager : public Loggable {
24 public:
25  SESubstanceManager(Logger* logger);
26  virtual ~SESubstanceManager();
27 
28  virtual void Clear();
29  virtual void Reset();
30  virtual bool LoadSubstanceDirectory();
31 
32  virtual const std::vector<SESubstance*>& GetSubstances() const;
33  virtual SESubstance* GetSubstance(const char* name) const;
34  virtual SESubstance* GetSubstance(const std::string& name) const;
35  virtual void AddSubstance(SESubstance& substance);
36 
37  virtual bool IsActive(const SESubstance& substance) const;
38  virtual const std::vector<SESubstance*>& GetActiveSubstances() const;
39  virtual void AddActiveSubstance(SESubstance& substance);
40  virtual void RemoveActiveSubstance(const SESubstance& substance);
41  virtual void RemoveActiveSubstances(const std::vector<SESubstance*>& substances);
42  virtual void RemoveActiveSubstances();
43 
44  virtual const std::vector<SESubstance*>& GetActiveGases() const;
45  virtual const std::vector<SESubstance*>& GetActiveLiquids() const;
46  virtual const std::vector<SESubstance*>& GetActiveDrugs() const;
47 
48  virtual const std::vector<SESubstanceCompound*>& GetCompounds() const;
49  virtual SESubstanceCompound* GetCompound(const char* name) const;
50  virtual SESubstanceCompound* GetCompound(const std::string& name) const;
51  virtual void AddCompound(SESubstanceCompound& compound);
52 
53  virtual bool IsActive(const SESubstanceCompound& compound) const;
54  virtual const std::vector<SESubstanceCompound*>& GetActiveCompounds() const;
55  virtual void AddActiveCompound(SESubstanceCompound& compound);
56  virtual void RemoveActiveCompound(SESubstanceCompound& compound);
57  virtual void RemoveActiveCompounds(const std::vector<SESubstanceCompound*>& compounds);
58 
59  virtual SESubstance* ReadSubstanceFile(const char* xmlFile);
60  virtual SESubstance* ReadSubstanceFile(const std::string& xmlFile);
61 
62 protected:
63  std::vector<SESubstance*> m_Substances;
64  std::vector<SESubstance*> m_ActiveSubstances;
65  std::vector<SESubstance*> m_ActiveGases;
66  std::vector<SESubstance*> m_ActiveLiquids;
67  std::vector<SESubstance*> m_ActiveDrugs;
68 
69  std::vector<SESubstanceCompound*> m_Compounds;
70  std::vector<SESubstanceCompound*> m_ActiveCompounds;
71 
72 private:
73  std::map<SESubstance*, const CDM::SubstanceData*> m_OriginalSubstanceData;
74  std::map<SESubstanceCompound*, const CDM::SubstanceCompoundData*> m_OriginalCompoundData;
75 };
76 }
std::map< SESubstance *, const CDM::SubstanceData * > m_OriginalSubstanceData
Definition: SESubstanceManager.h:73
Definition: SESubstanceCompound.h:26
Definition: Logger.h:27
Definition: Logger.h:75
std::vector< SESubstance * > m_ActiveSubstances
Definition: SESubstanceManager.h:64
std::vector< SESubstance * > m_Substances
Definition: SESubstanceManager.h:63
Definition: SESubstance.h:49
std::vector< SESubstanceCompound * > m_ActiveCompounds
Definition: SESubstanceManager.h:70
std::vector< SESubstance * > m_ActiveGases
Definition: SESubstanceManager.h:65
std::vector< SESubstanceCompound * > m_Compounds
Definition: SESubstanceManager.h:69
Definition: SESubstanceManager.h:23
Definition: SEElectricalCircuit.h:18
std::map< SESubstanceCompound *, const CDM::SubstanceCompoundData * > m_OriginalCompoundData
Definition: SESubstanceManager.h:74
std::vector< SESubstance * > m_ActiveLiquids
Definition: SESubstanceManager.h:66
std::vector< SESubstance * > m_ActiveDrugs
Definition: SESubstanceManager.h:67