helics  2.8.1
Input.hpp
1 /*
2 Copyright (c) 2017-2021,
3 Battelle Memorial Institute; Lawrence Livermore National Security, LLC; Alliance for Sustainable
4 Energy, LLC. See the top-level NOTICE for additional details. All rights reserved.
5 SPDX-License-Identifier: BSD-3-Clause
6 */
7 #ifndef HELICS_CPP98_INPUT_HPP_
8 #define HELICS_CPP98_INPUT_HPP_
9 #pragma once
10 
11 #include "../shared_api_library/ValueFederate.h"
12 #include "helicsExceptions.hpp"
13 
14 #include <string>
15 #include <vector>
16 
17 namespace helicscpp {
19 class Input {
20  public:
22  explicit Input(helics_input hsub) HELICS_NOTHROW: inp(hsub) {}
24  Input() HELICS_NOTHROW: inp(HELICS_NULL_POINTER) {}
26  Input(const Input& inputs) HELICS_NOTHROW: inp(inputs.inp) {}
28  Input& operator=(const Input& input)
29  {
30  inp = input.inp;
31  return *this;
32  }
34  operator helics_input() const { return inp; }
36  helics_input baseObject() const { return inp; }
38  bool isValid() const { return (helicsInputIsValid(inp) == helics_true); }
40  void addTarget(const std::string& target)
41  {
42  helicsInputAddTarget(inp, target.c_str(), HELICS_IGNORE_ERROR);
43  }
46  void setDefault(const char* data, int len)
47  {
48  helicsInputSetDefaultRaw(inp, data, len, HELICS_IGNORE_ERROR);
49  }
51  void setDefault(const std::string& str)
52  {
53  helicsInputSetDefaultString(inp, str.c_str(), HELICS_IGNORE_ERROR);
54  }
56  void setDefault(int64_t val) { helicsInputSetDefaultInteger(inp, val, HELICS_IGNORE_ERROR); }
58  void setDefault(bool val)
59  {
60  helicsInputSetDefaultBoolean(inp, val ? helics_true : helics_false, HELICS_IGNORE_ERROR);
61  }
63  void setDefault(double val) { helicsInputSetDefaultDouble(inp, val, HELICS_IGNORE_ERROR); }
65  void setDefault(const std::complex<double>& cmplx)
66  {
67  helicsInputSetDefaultComplex(inp, cmplx.real(), cmplx.imag(), HELICS_IGNORE_ERROR);
68  }
70  void setDefault(const std::vector<double>& data)
71  {
73  data.data(),
74  static_cast<int>(data.size() * sizeof(double)),
75  HELICS_IGNORE_ERROR);
76  }
77 
80  int getRawValue(std::vector<char>& data)
81  {
82  int size = helicsInputGetRawValueSize(inp);
83  data.resize(size);
85  inp, data.data(), static_cast<int>(data.size()), &size, HELICS_IGNORE_ERROR);
86  return size;
87  }
90 
92  std::string getString()
93  {
94  int size = helicsInputGetStringSize(inp);
95  std::string result;
96 
97  result.resize(static_cast<size_t>(size) + 1);
98  // this function results in a null terminated string
99  helicsInputGetString(inp, &result[0], size + 1, &size, HELICS_IGNORE_ERROR);
100  if (!(result.empty()) && (result[static_cast<size_t>(size) - 1] == '\0')) {
101  result.resize(static_cast<size_t>(size) - 1);
102  } else {
103  result.resize(size);
104  }
105  return result;
106  }
108  void getNamedPoint(std::string& name, double* val)
109  {
110  int size = helicsInputGetStringSize(inp);
111 
112  name.resize(static_cast<size_t>(size) + 1);
113  // this function results in a null terminated string
114  helicsInputGetNamedPoint(inp, &name[0], size + 1, &size, val, HELICS_IGNORE_ERROR);
115  name.resize(size);
116  }
118  int64_t getInteger() { return helicsInputGetInteger(inp, HELICS_IGNORE_ERROR); }
120  bool getBoolean()
121  {
122  helics_bool val = helicsInputGetBoolean(inp, HELICS_IGNORE_ERROR);
123  return (val == helics_true);
124  }
126  double getDouble() { return helicsInputGetDouble(inp, HELICS_IGNORE_ERROR); }
128  std::complex<double> getComplex()
129  {
130  helics_complex hc = helicsInputGetComplexObject(inp, HELICS_IGNORE_ERROR);
131  std::complex<double> result(hc.real, hc.imag);
132  return result;
133  }
138  int getVector(double* data, int maxlen)
139  {
140  helicsInputGetVector(inp, data, maxlen, &maxlen, hThrowOnError());
141  return maxlen;
142  }
144  void getVector(std::vector<double>& data)
145  {
146  int actualSize = helicsInputGetVectorSize(inp);
147  data.resize(actualSize);
148  helicsInputGetVector(inp, data.data(), actualSize, HELICS_NULL_POINTER, hThrowOnError());
149  }
150 
152  bool isUpdated() const { return (helicsInputIsUpdated(inp) > 0); }
153 
156 
159  // call helicsInputIsUpdated for each inp
160 
163  const char* getKey() const { return helicsInputGetKey(inp); }
165  const char* getUnits() const { return helicsInputGetExtractionUnits(inp); }
167  const char* getInjectionUnits() const { return helicsInputGetInjectionUnits(inp); }
169  const char* getPublicationType() const { return helicsInputGetPublicationType(inp); }
171  const char* getType() const { return helicsInputGetType(inp); }
173  const char* getTarget() const { return helicsSubscriptionGetKey(inp); }
175  const char* getInfo() const { return helicsInputGetInfo(inp); }
177  void setInfo(const std::string& info)
178  {
179  helicsInputSetInfo(inp, info.c_str(), HELICS_IGNORE_ERROR);
180  }
181  void setOption(int32_t option, int32_t value = 1)
182  {
183  helicsInputSetOption(inp, option, value, HELICS_IGNORE_ERROR);
184  }
185  int32_t getOption(int32_t option) { return helicsInputGetOption(inp, option); }
186 
187  private:
188  helics_input inp;
189 };
190 
191 } // namespace helicscpp
192 #endif
data
@ data
print timing+data transmissions
Definition: loggingHelper.hpp:30
helicscpp::Input::setDefault
void setDefault(const char *data, int len)
Definition: Input.hpp:46
helicscpp::Input::clearUpdate
void clearUpdate()
Definition: Input.hpp:158
helicscpp::Input::getUnits
const char * getUnits() const
Definition: Input.hpp:165
helicsInputGetRawValue
void helicsInputGetRawValue(helics_input ipt, void *data, int maxDataLength, int *actualSize, helics_error *err)
Definition: ValueFederateExport.cpp:690
helicscpp::Input::getInfo
const char * getInfo() const
Definition: Input.hpp:175
helicsInputSetDefaultBoolean
void helicsInputSetDefaultBoolean(helics_input ipt, helics_bool val, helics_error *err)
Definition: ValueFederateExport.cpp:1021
helicsInputGetVector
void helicsInputGetVector(helics_input ipt, double data[], int maxLength, int *actualSize, helics_error *err)
Definition: ValueFederateExport.cpp:908
helicsInputGetBoolean
helics_bool helicsInputGetBoolean(helics_input ipt, helics_error *err)
Definition: ValueFederateExport.cpp:765
helicsInputGetKey
const char * helicsInputGetKey(helics_input ipt)
Definition: ValueFederateExport.cpp:1156
helicscpp::Input::setDefault
void setDefault(const std::complex< double > &cmplx)
Definition: Input.hpp:65
helicscpp::Input::getVector
void getVector(std::vector< double > &data)
Definition: Input.hpp:144
helicsInputGetString
void helicsInputGetString(helics_input ipt, char *outputString, int maxStringLength, int *actualLength, helics_error *err)
Definition: ValueFederateExport.cpp:724
helicscpp::Input::setDefault
void setDefault(int64_t val)
Definition: Input.hpp:56
helicsInputGetRawValueSize
int helicsInputGetRawValueSize(helics_input ipt)
Definition: ValueFederateExport.cpp:671
helicscpp::Input::Input
Input(const Input &inputs) HELICS_NOTHROW
Definition: Input.hpp:26
helicscpp::Input::getComplex
std::complex< double > getComplex()
Definition: Input.hpp:128
helicscpp::Input::operator=
Input & operator=(const Input &input)
Definition: Input.hpp:28
helicsInputGetType
const char * helicsInputGetType(helics_input ipt)
Definition: ValueFederateExport.cpp:1105
helicsInputGetNamedPoint
void helicsInputGetNamedPoint(helics_input ipt, char *outputString, int maxStringLength, int *actualLength, double *val, helics_error *err)
Definition: ValueFederateExport.cpp:935
helics_time
double helics_time
Definition: api-data.h:81
helicsInputGetOption
int helicsInputGetOption(helics_input inp, int option)
Definition: ValueFederateExport.cpp:1315
helicsInputGetComplexObject
helics_complex helicsInputGetComplexObject(helics_input ipt, helics_error *err)
Definition: ValueFederateExport.cpp:855
helicscpp::Input::getDouble
double getDouble()
Definition: Input.hpp:126
helicscpp::Input::getType
const char * getType() const
Definition: Input.hpp:171
helics_false
const helics_bool helics_false
Definition: api-data.h:95
helicscpp::Input::setDefault
void setDefault(const std::string &str)
Definition: Input.hpp:51
helics_true
const helics_bool helics_true
Definition: api-data.h:94
helicsInputSetInfo
void helicsInputSetInfo(helics_input inp, const char *info, helics_error *err)
Definition: ValueFederateExport.cpp:1268
helicscpp::Input::setDefault
void setDefault(const std::vector< double > &data)
Definition: Input.hpp:70
helicsInputLastUpdateTime
helics_time helicsInputLastUpdateTime(helics_input ipt)
Definition: ValueFederateExport.cpp:1408
helicsInputAddTarget
void helicsInputAddTarget(helics_input ipt, const char *target, helics_error *err)
Definition: ValueFederateExport.cpp:661
helicscpp::Input::getBoolean
bool getBoolean()
Definition: Input.hpp:120
helicscpp::Input::getInjectionUnits
const char * getInjectionUnits() const
Definition: Input.hpp:167
helicscpp::Input::isValid
bool isValid() const
Definition: Input.hpp:38
helicsInputGetExtractionUnits
const char * helicsInputGetExtractionUnits(helics_input ipt)
Definition: ValueFederateExport.cpp:1222
helics_complex
Definition: api-data.h:137
helicscpp::Input::getNamedPoint
void getNamedPoint(std::string &name, double *val)
Definition: Input.hpp:108
helicscpp::Input::setDefault
void setDefault(bool val)
Definition: Input.hpp:58
helicsSubscriptionGetKey
const char * helicsSubscriptionGetKey(helics_input ipt)
Definition: ValueFederateExport.cpp:1173
helicscpp::Input::getRawValue
int getRawValue(std::vector< char > &data)
Definition: Input.hpp:80
helicsInputGetVectorSize
int helicsInputGetVectorSize(helics_input ipt)
Definition: ValueFederateExport.cpp:876
helicscpp::Input::setDefault
void setDefault(double val)
Definition: Input.hpp:63
helicsInputGetInjectionUnits
const char * helicsInputGetInjectionUnits(helics_input ipt)
Definition: ValueFederateExport.cpp:1206
helicscpp::Input
Definition: Input.hpp:19
helicscpp::Input::setInfo
void setInfo(const std::string &info)
Definition: Input.hpp:177
helicscpp::hThrowOnError
Definition: helicsExceptions.hpp:38
helicsInputClearUpdate
void helicsInputClearUpdate(helics_input ipt)
Definition: ValueFederateExport.cpp:1425
helicscpp::Input::baseObject
helics_input baseObject() const
Definition: Input.hpp:36
helicscpp::Input::addTarget
void addTarget(const std::string &target)
Definition: Input.hpp:40
helicsInputSetDefaultRaw
void helicsInputSetDefaultRaw(helics_input ipt, const void *data, int inputDataLength, helics_error *err)
Definition: ValueFederateExport.cpp:976
helicscpp::Input::isUpdated
bool isUpdated() const
Definition: Input.hpp:152
helicscpp::Input::getPublicationType
const char * getPublicationType() const
Definition: Input.hpp:169
helicsInputSetDefaultComplex
void helicsInputSetDefaultComplex(helics_input ipt, double real, double imag, helics_error *err)
Definition: ValueFederateExport.cpp:1059
helicscpp::Input::getInteger
int64_t getInteger()
Definition: Input.hpp:118
helicscpp::Input::Input
Input(helics_input hsub) HELICS_NOTHROW
Definition: Input.hpp:22
helicsInputGetInteger
int64_t helicsInputGetInteger(helics_input ipt, helics_error *err)
Definition: ValueFederateExport.cpp:750
helicsInputSetDefaultString
void helicsInputSetDefaultString(helics_input ipt, const char *str, helics_error *err)
Definition: ValueFederateExport.cpp:996
helicscpp::Input::getRawValueSize
int getRawValueSize()
Definition: Input.hpp:89
helicscpp::Input::getKey
const char * getKey() const
Definition: Input.hpp:163
helicscpp::Input::getVector
int getVector(double *data, int maxlen)
Definition: Input.hpp:138
helicscpp::Input::Input
Input() HELICS_NOTHROW
Definition: Input.hpp:24
helicscpp::Input::getTarget
const char * getTarget() const
Definition: Input.hpp:173
helicsInputGetPublicationType
const char * helicsInputGetPublicationType(helics_input ipt)
Definition: ValueFederateExport.cpp:1122
helicsInputGetDouble
double helicsInputGetDouble(helics_input ipt, helics_error *err)
Definition: ValueFederateExport.cpp:783
helicsInputSetDefaultInteger
void helicsInputSetDefaultInteger(helics_input ipt, int64_t val, helics_error *err)
Definition: ValueFederateExport.cpp:1012
helicsInputGetInfo
const char * helicsInputGetInfo(helics_input inp)
Definition: ValueFederateExport.cpp:1252
helicsInputGetStringSize
int helicsInputGetStringSize(helics_input ipt)
Definition: ValueFederateExport.cpp:892
helics_input
void * helics_input
Definition: api-data.h:26
helicscpp::Input::getLastUpdateTime
helics_time getLastUpdateTime() const
Definition: Input.hpp:155
helicsInputIsUpdated
helics_bool helicsInputIsUpdated(helics_input ipt)
Definition: ValueFederateExport.cpp:1397
helicsInputSetOption
void helicsInputSetOption(helics_input inp, int option, int value, helics_error *err)
Definition: ValueFederateExport.cpp:1331
helics_bool
int helics_bool
Definition: api-data.h:92
helicsInputSetDefaultVector
void helicsInputSetDefaultVector(helics_input ipt, const double *vectorInput, int vectorLength, helics_error *err)
Definition: ValueFederateExport.cpp:1069
helicscpp::Input::getString
std::string getString()
Definition: Input.hpp:92
helicsInputIsValid
helics_bool helicsInputIsValid(helics_input ipt)
Definition: ValueFederateExport.cpp:652
helicscpp
Definition: cpp98/Broker.hpp:18
helicsInputSetDefaultDouble
void helicsInputSetDefaultDouble(helics_input ipt, double val, helics_error *err)
Definition: ValueFederateExport.cpp:1030