SESubstanceCompound.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 
15 #include <memory>
16 
17 #include <biogears/cdm/CommonDataModel.h>
18 #include <biogears/exports.h>
19 #include <biogears/schema/cdm/Substance.hxx>
20 #include <biogears/cdm/substance/SESubstanceConcentration.h>
21 
22 namespace biogears {
23 class SESubstance;
24 class SESubstanceManager;
25 
26 class BIOGEARS_API SESubstanceCompound : public Loggable {
27 public:
28  explicit SESubstanceCompound(const std::string& name, Logger* logger);
29  explicit SESubstanceCompound(const char* name, Logger* logger);
30  SESubstanceCompound(Logger* logger);
31  virtual ~SESubstanceCompound();
32 
33  static std::unique_ptr<SESubstanceCompound> make_unique(const std::string& name, Logger* logger);
34  virtual void Clear();
35 
36  virtual bool Load(const CDM::SubstanceCompoundData& in, const SESubstanceManager& subMgr);
37  virtual CDM::SubstanceCompoundData* Unload() const;
38 
39 protected:
40  virtual void Unload(CDM::SubstanceCompoundData& data) const;
41 
42 public:
43  virtual std::string GetName() const;
44  virtual const char* GetName_cStr() const;
45  virtual void SetName(const char* name);
46  virtual void SetName(const std::string& name);
47  virtual bool HasName() const;
48  virtual void InvalidateName();
49 
50  virtual CDM::enumSubstanceClass::value GetClassification() const;
51  virtual void SetClassification(CDM::enumSubstanceClass::value subClass);
52  virtual bool HasClassification() const;
53  virtual void InvalidateClassification();
54  virtual bool GetRhFactor() const;
55  virtual void SetRhFactor(bool subFactor);
56  virtual bool HasRhFactor() const;
57 
58  bool HasComponent() const;
59  bool HasComponent(const SESubstance& substance) const;
60  std::vector<SESubstanceConcentration>& GetComponents();
61  const std::vector<SESubstanceConcentration> GetComponents() const;
62  SESubstanceConcentration& GetComponent(SESubstance& substance);
63  const SESubstanceConcentration GetComponent(SESubstance& substance) const;
64  void RemoveComponent(const SESubstance& substance);
65 
66 protected:
67  std::string m_Name;
69  bool m_RhFactor;
70 
71  std::vector<SESubstanceConcentration> m_Components;
72 };
73 }
Class corresponding to the SubstanceCompoundData schema type.
Definition: Substance.hxx:6604
bool m_RhFactor
Definition: SESubstanceCompound.h:69
Definition: SESubstanceCompound.h:26
Definition: Logger.h:27
value
Underlying enum type.
Definition: Substance.hxx:1328
Definition: Logger.h:75
Definition: SESubstanceConcentration.h:25
std::vector< SESubstanceConcentration > m_Components
Definition: SESubstanceCompound.h:71
Definition: SESubstance.h:49
CDM::enumSubstanceClass::value m_Classification
Definition: SESubstanceCompound.h:68
Definition: SESubstanceManager.h:23
Definition: SEElectricalCircuit.h:18
std::string m_Name
Definition: SESubstanceCompound.h:67