SEDataRequest.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 <string>
15 
16 #include <biogears/cdm/properties/SEDecimalFormat.h>
17 #include <biogears/cdm/utils/unitconversion/CompoundUnit.h>
18 #include <biogears/schema/cdm/Scenario.hxx>
19 
20 namespace biogears {
21 class SESubstanceManager;
22 class SEDecimalFormat;
23 class SEDataRequestManager;
24 
25 class BIOGEARS_API SEDataRequest : public SEDecimalFormat {
26  friend class SEDataRequestManager;
27 
28 protected:
29  SEDataRequest(const SEDecimalFormat* dfault = nullptr);
30 
31 public:
32  virtual ~SEDataRequest() override;
33 
34  virtual void Clear(); //clear memory
35 
36  virtual bool Load(const CDM::DataRequestData& in);
37  virtual CDM::DataRequestData* Unload() const;
38 
39 protected:
40  virtual void Unload(CDM::DataRequestData& data) const;
41 
42 public:
43  virtual size_t HashCode() const = 0;
44 
45  // The System Property Name
46  virtual std::string GetName() const;
47  virtual const char* GetName_cStr() const;
48  virtual void SetName(const char* name);
49  virtual void SetName(const std::string& name);
50  virtual bool HasName() const;
51  virtual void InvalidateName();
52 
53  // The Requested Unit String
54  virtual const char* GetRequestedUnit() const;
55  virtual void SetRequestedUnit(const char* unit);
56  virtual void SetRequestedUnit(const std::string& unit);
57  virtual bool HasRequestedUnit() const;
58  virtual void InvalidateRequestedUnit();
59 
60  // The Unit that data will be retrieved in
61  // If the Requested unit is present, this should be set to that unit
62  // I cannot do this automatically, since I don't know what the quantity of the property is, so some other logic needs to complete this logic
63  // If the Requested unit is NOT present, this should be set to whatever the unit of the System Property is set as
64  virtual const CCompoundUnit* GetUnit() const;
65  virtual void SetUnit(const CCompoundUnit& unit);
66  virtual bool HasUnit() const;
67  virtual void InvalidateUnit();
68 
69  virtual void Set(const char* name, const char* unit = "");
70  virtual void Set(const std::string& name, const std::string& unit = "");
71  virtual void Set(const char* name, const CCompoundUnit& unit);
72  virtual void Set(const std::string& name, const CCompoundUnit& unit);
73 
74 protected:
75  std::string m_Name;
76  std::string m_RequestedUnit;
77  mutable size_t m_Hash;
79 };
80 }
std::string m_RequestedUnit
Definition: SEDataRequest.h:76
Definition: CompoundUnit.h:59
std::string m_Name
Definition: SEDataRequest.h:75
Definition: SEDataRequestManager.h:30
const CCompoundUnit * m_Unit
Definition: SEDataRequest.h:78
Definition: SEDecimalFormat.h:25
Class corresponding to the DataRequestData schema type.
Definition: Scenario.hxx:1494
Definition: SEDataRequest.h:25
Definition: SEElectricalCircuit.h:18
size_t m_Hash
Definition: SEDataRequest.h:77