helics  3.0.1
ValueFederateManager.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 #pragma once
8 
9 #include "../common/GuardedTypes.hpp"
10 #include "../core/LocalFederateId.hpp"
11 #include "Inputs.hpp"
12 #include "ValueFederate.hpp"
13 #include "data_view.hpp"
14 #include "gmlc/containers/DualMappedVector.hpp"
15 #include "helicsTypes.hpp"
16 
17 #include <map>
18 #include <memory>
19 #include <string>
20 #include <vector>
21 
22 namespace helics {
24 class Core;
25 class ValueFederate;
26 
29  std::string name;
30  std::string type;
31  std::string units;
34  int size{-1};
35  bool forward{true};
36  publication_info(const std::string& n_name,
37  const std::string& n_type,
38  const std::string& n_units):
39  name(n_name),
40  type(n_type), units(n_units)
41  {
42  }
43 };
45 struct input_info {
50  Time lastQuery{0.0};
51  int sourceIndex{0};
52  std::string name;
53  std::string type;
54  std::string units;
55  std::string pubtype;
56 
57  std::function<void(Input&, Time)> callback;
58  bool hasUpdate = false;
59  input_info(const std::string& n_name, const std::string& n_type, const std::string& n_units):
60  name(n_name), type(n_type), units(n_units)
61  {
62  }
63 };
64 
67  public:
70 
72  registerPublication(const std::string& key, std::string type, const std::string& units);
76  Input& registerInput(const std::string& key, std::string type, const std::string& units);
77 
84  void addAlias(const Input& inp, const std::string& shortcutName);
85 
92  void addAlias(const Publication& pub, const std::string& shortcutName);
97  void addTarget(const Publication& pub, const std::string& target);
102  void addTarget(const Input& inp, const std::string& target);
103 
108  void removeTarget(const Publication& pub, const std::string& target);
113  void removeTarget(const Input& inp, const std::string& target);
114 
120  void setDefaultValue(const Input& inp, const data_view& block);
121 
126  data_view getValue(const Input& inp);
127 
129  void publish(const Publication& pub, const data_view& block);
130 
132  static bool hasUpdate(const Input& inp);
134  static Time getLastUpdateTime(const Input& inp);
135 
140  void updateTime(Time newTime, Time oldTime);
146  std::string localQuery(const std::string& queryStr) const;
151  std::vector<int> queryUpdates();
152 
154  const std::string& getTarget(const Input& inp) const;
155 
159  Input& getInput(const std::string& key);
160  const Input& getInput(const std::string& key) const;
162  Input& getInput(int index);
163  const Input& getInput(int index) const;
167  const Input& getSubscription(const std::string& key) const;
168  Input& getSubscription(const std::string& key);
169 
173  Publication& getPublication(const std::string& key);
174  const Publication& getPublication(const std::string& key) const;
175 
176  Publication& getPublication(int index);
177  const Publication& getPublication(int index) const;
178 
183  void setInputNotificationCallback(std::function<void(Input&, Time)> callback);
188  static void setInputNotificationCallback(const Input& inp,
189  std::function<void(Input&, Time)> callback);
190 
192  void disconnect();
193 
195  int getPublicationCount() const;
197  int getInputCount() const;
200  void clearUpdates();
204  static void clearUpdate(const Input& inp);
205  bool getUpdateFromCore(Input& inp);
206 
207  public:
208  bool useJsonSerialization{false};
209  private:
210  LocalFederateId fedID;
212  gmlc::containers::
213  DualMappedVector<Input, std::string, InterfaceHandle, reference_stability::stable>>
214  inputs;
215  shared_guarded_m<gmlc::containers::DualMappedVector<Publication,
216  std::string,
218  reference_stability::stable>>
219  publications;
220  Time CurrentTime{-1.0};
221  Core* coreObject{nullptr};
222 
223  ValueFederate* fed{nullptr};
224  atomic_guarded<std::function<void(Input&, Time)>>
225  allCallback;
227  inputData;
229  targetIDs;
231  inputTargets;
232  private:
233  void getUpdateFromCore(InterfaceHandle handle);
234 };
235 
236 } // namespace helics
helics::input_info::callback
std::function< void(Input &, Time)> callback
callback to trigger on update
Definition: ValueFederateManager.hpp:57
helics::timeZero
constexpr Time timeZero
Definition: helicsTime.hpp:31
helics::Input
Definition: Inputs.hpp:38
helicsInputGetUnits
const char * helicsInputGetUnits(HelicsInput inp)
Definition: ValueFederateExport.cpp:1314
helics::input_info
Definition: ValueFederateManager.hpp:45
helicsInputGetVectorSize
int helicsInputGetVectorSize(HelicsInput inp)
Definition: ValueFederateExport.cpp:888
helicsPublicationGetName
const char * helicsPublicationGetName(HelicsPublication pub)
Definition: ValueFederateExport.cpp:1263
HelicsTime
double HelicsTime
Definition: api-data.h:90
helicsTypes.hpp
helicsInputLastUpdateTime
HelicsTime helicsInputLastUpdateTime(HelicsInput ipt)
Definition: ValueFederateExport.cpp:1554
HELICS_FALSE
const HelicsBool HELICS_FALSE
Definition: api-data.h:105
helics::initializationTime
constexpr Time initializationTime
Definition: helicsTime.hpp:38
helicsInputSetOption
void helicsInputSetOption(HelicsInput inp, int option, int value, HelicsError *err)
Definition: ValueFederateExport.cpp:1477
helics::ValueFederateManager::clearUpdates
void clearUpdates()
Definition: ValueFederateManager.cpp:538
helics::Input::checkUpdate
bool checkUpdate(bool assumeUpdate=false)
Definition: Inputs.cpp:514
HELICS_TRUE
const HelicsBool HELICS_TRUE
Definition: api-data.h:104
helics::publication_info::type
std::string type
publication type
Definition: ValueFederateManager.hpp:30
helics::NamedPoint::name
std::string name
the text value for the named point
Definition: helicsTypes.hpp:111
helics::NamedPoint
Definition: helicsTypes.hpp:109
helics::IdentifierId< IdentifierType, Identifiers::PUBLICATION, invalid_id_value >
helicsInputGetName
const char * helicsInputGetName(HelicsInput inp)
Definition: ValueFederateExport.cpp:1227
helicsInputGetBytes
void helicsInputGetBytes(HelicsInput inp, void *data, int maxDatalen, int *actualSize, HelicsError *err)
Definition: ValueFederateExport.cpp:702
helicsInputSetDefaultComplexVector
void helicsInputSetDefaultComplexVector(HelicsInput inp, const double *vectorInput, int vectorLength, HelicsError *err)
Definition: ValueFederateExport.cpp:1128
helics::ValueFederate
Definition: application_api/ValueFederate.hpp:25
helicsPublicationIsValid
HelicsBool helicsPublicationIsValid(HelicsPublication pub)
Definition: ValueFederateExport.cpp:655
helics::InvalidIdentifier
Definition: core-exceptions.hpp:38
HELICS_DATA_TYPE_ANY
@ HELICS_DATA_TYPE_ANY
Definition: helics_enums.h:90
helics::input_info::name
std::string name
input name
Definition: ValueFederateManager.hpp:52
HelicsDataTypes
HelicsDataTypes
Definition: helics_enums.h:63
helicsFederateGetPublicationCount
int helicsFederateGetPublicationCount(HelicsFederate fed)
Definition: ValueFederateExport.cpp:1586
helics::publication_info::coreID
InterfaceHandle coreID
Handle from the core.
Definition: ValueFederateManager.hpp:32
helicsPublicationPublishComplex
void helicsPublicationPublishComplex(HelicsPublication pub, double real, double imag, HelicsError *err)
Definition: ValueFederateExport.cpp:576
helics::Input::isUpdated
bool isUpdated()
Definition: Inputs.cpp:567
helicsInputIsValid
HelicsBool helicsInputIsValid(HelicsInput ipt)
Definition: ValueFederateExport.cpp:664
helicsInputSetDefaultInteger
void helicsInputSetDefaultInteger(HelicsInput inp, int64_t val, HelicsError *err)
Definition: ValueFederateExport.cpp:1051
helicsPublicationAddTarget
void helicsPublicationAddTarget(HelicsPublication pub, const char *target, HelicsError *err)
Definition: ValueFederateExport.cpp:644
HelicsFederate
void * HelicsFederate
Definition: api-data.h:60
helicsInputSetDefaultComplex
void helicsInputSetDefaultComplex(HelicsInput inp, double real, double imag, HelicsError *err)
Definition: ValueFederateExport.cpp:1098
HELICS_ERROR_INVALID_OBJECT
@ HELICS_ERROR_INVALID_OBJECT
Definition: helics_enums.h:230
helics::getCleanedTypeName
std::string_view getCleanedTypeName(std::string_view typeName)
Definition: helicsTypes.cpp:245
helics::NamedPoint::value
double value
the data value for the named point
Definition: helicsTypes.hpp:112
helics::InterfaceHandle
Definition: LocalFederateId.hpp:65
helics::ValueFederateManager::getInputCount
int getInputCount() const
Definition: ValueFederateManager.cpp:533
helics::publication_info::size
int size
required size of a publication
Definition: ValueFederateManager.hpp:34
helicsInputSetDefaultNamedPoint
void helicsInputSetDefaultNamedPoint(HelicsInput inp, const char *str, double val, HelicsError *err)
Definition: ValueFederateExport.cpp:1152
helics::Time
TimeRepresentation< count_time< 9 > > Time
Definition: helicsTime.hpp:27
helics::fileops::JsonBuilder::generate
std::string generate()
Definition: JsonBuilder.cpp:159
helicsInputGetTime
HelicsTime helicsInputGetTime(HelicsInput inp, HelicsError *err)
Definition: ValueFederateExport.cpp:810
helics::ValueFederateManager::localQuery
std::string localQuery(const std::string &queryStr) const
Definition: ValueFederateManager.cpp:314
HelicsInput
void * HelicsInput
Definition: api-data.h:26
helics::HELICS_UNKNOWN
@ HELICS_UNKNOWN
unknown state
Definition: CoreTypes.hpp:29
helics::input_info::lastUpdate
Time lastUpdate
the time the subscription was last updated
Definition: ValueFederateManager.hpp:49
helics::input_info::id
InputId id
the id used as the identifier
Definition: ValueFederateManager.hpp:47
HELICS_DATA_TYPE_STRING
@ HELICS_DATA_TYPE_STRING
Definition: helics_enums.h:66
helics::ValueFederateManager::clearUpdate
static void clearUpdate(const Input &inp)
Definition: ValueFederateManager.cpp:543
helicsFederateGetInputCount
int helicsFederateGetInputCount(HelicsFederate fed)
Definition: ValueFederateExport.cpp:1596
helics::InputObject
Definition: api_objects.h:103
helics::data_view
Definition: data_view.hpp:22
helicsPublicationGetInfo
const char * helicsPublicationGetInfo(HelicsPublication pub)
Definition: ValueFederateExport.cpp:1362
helicsFederateGetPublication
HelicsPublication helicsFederateGetPublication(HelicsFederate fed, const char *key, HelicsError *err)
Definition: ValueFederateExport.cpp:328
HELICS_TIME_INVALID
const HelicsTime HELICS_TIME_INVALID
Definition: api-data.h:94
helics::ValueFederateManager::startupToInitializeStateTransition
void startupToInitializeStateTransition()
Definition: ValueFederateManager.cpp:301
helicsFederateRegisterTypePublication
HelicsPublication helicsFederateRegisterTypePublication(HelicsFederate fed, const char *key, const char *type, const char *units, HelicsError *err)
Definition: ValueFederateExport.cpp:98
helics::ValueFederateManager::removeTarget
void removeTarget(const Publication &pub, const std::string &target)
Definition: ValueFederateManager.cpp:157
helicsFederateClearUpdates
void helicsFederateClearUpdates(HelicsFederate fed)
Definition: ValueFederateExport.cpp:461
helicsFederatePublishJSON
void helicsFederatePublishJSON(HelicsFederate fed, const char *json, HelicsError *err)
Definition: ValueFederateExport.cpp:308
helics::DataType
DataType
Definition: helicsTypes.hpp:272
helics::fileops::JsonBuilder::addElement
void addElement(const std::string &path, const std::string &value)
Definition: JsonBuilder.cpp:100
helics::ValueFederateManager::publish
void publish(const Publication &pub, const data_view &block)
Definition: ValueFederateManager.cpp:222
helics::input_info::lastQuery
Time lastQuery
the time the query was made
Definition: ValueFederateManager.hpp:50
helicsFederateRegisterGlobalInput
HelicsPublication helicsFederateRegisterGlobalInput(HelicsFederate fed, const char *key, HelicsDataTypes type, const char *units, HelicsError *err)
Definition: ValueFederateExport.cpp:262
helicsPublicationPublishInteger
void helicsPublicationPublishInteger(HelicsPublication pub, int64_t val, HelicsError *err)
Definition: ValueFederateExport.cpp:505
HELICS_DATA_TYPE_RAW
@ HELICS_DATA_TYPE_RAW
Definition: helics_enums.h:84
helics::Core
Definition: core/Core.hpp:42
helics::ValueFederateManager::useJsonSerialization
bool useJsonSerialization
all outgoing data should be serialized as JSON
Definition: ValueFederateManager.hpp:208
helics::Input::getHelicsInjectionType
DataType getHelicsInjectionType() const
Definition: Inputs.hpp:398
helics::ValueFederateManager::addAlias
void addAlias(const Input &inp, const std::string &shortcutName)
Definition: ValueFederateManager.cpp:110
helicsInputGetChar
char helicsInputGetChar(HelicsInput inp, HelicsError *err)
Definition: ValueFederateExport.cpp:828
helics::RegistrationFailure
Definition: core-exceptions.hpp:84
helics::ValueFederateManager::getTarget
const std::string & getTarget(const Input &inp) const
Definition: ValueFederateManager.cpp:407
HelicsComplex
Definition: api-data.h:147
helics::ValueFederateManager::getSubscription
const Input & getSubscription(const std::string &key) const
Definition: ValueFederateManager.cpp:458
helicsInputSetTag
void helicsInputSetTag(HelicsInput inp, const char *tagname, const char *tagvalue, HelicsError *err)
Definition: ValueFederateExport.cpp:1412
helics::ValueFederateManager::getPublicationCount
int getPublicationCount() const
Definition: ValueFederateManager.cpp:528
helics::ValueFederateManager::getLastUpdateTime
static Time getLastUpdateTime(const Input &inp)
Definition: ValueFederateManager.cpp:236
helicsFederateGetInput
HelicsInput helicsFederateGetInput(HelicsFederate fed, const char *key, HelicsError *err)
Definition: ValueFederateExport.cpp:382
helicsPublicationPublishNamedPoint
void helicsPublicationPublishNamedPoint(HelicsPublication pub, const char *str, double val, HelicsError *err)
Definition: ValueFederateExport.cpp:626
helicsInputGetPublicationDataType
int helicsInputGetPublicationDataType(HelicsInput ipt)
Definition: ValueFederateExport.cpp:1204
helicsFederateRegisterGlobalPublication
HelicsPublication helicsFederateRegisterGlobalPublication(HelicsFederate fed, const char *key, HelicsDataTypes type, const char *units, HelicsError *err)
Definition: ValueFederateExport.cpp:165
helicsInputGetType
const char * helicsInputGetType(HelicsInput inp)
Definition: ValueFederateExport.cpp:1168
helics::Interface::isValid
bool isValid() const
Definition: application_api/Federate.hpp:646
helics::ValueFederateManager::registerInput
Input & registerInput(const std::string &key, std::string type, const std::string &units)
Definition: ValueFederateManager.cpp:81
helicsInputAddTarget
void helicsInputAddTarget(HelicsInput ipt, const char *target, HelicsError *err)
Definition: ValueFederateExport.cpp:673
HELICS_DATA_TYPE_TIME
@ HELICS_DATA_TYPE_TIME
Definition: helics_enums.h:82
helics::Interface::handle
InterfaceHandle handle
the id as generated by the Federate
Definition: application_api/Federate.hpp:630
HELICS_ERROR_INVALID_ARGUMENT
@ HELICS_ERROR_INVALID_ARGUMENT
Definition: helics_enums.h:228
helicsPublicationGetType
const char * helicsPublicationGetType(HelicsPublication pub)
Definition: ValueFederateExport.cpp:1209
helicsInputGetComplexVector
void helicsInputGetComplexVector(HelicsInput inp, double data[], int maxlen, int *actualSize, HelicsError *err)
Definition: ValueFederateExport.cpp:947
helicsInputGetStringSize
int helicsInputGetStringSize(HelicsInput inp)
Definition: ValueFederateExport.cpp:904
helicsInputGetDouble
double helicsInputGetDouble(HelicsInput inp, HelicsError *err)
Definition: ValueFederateExport.cpp:795
helics::FedObject
Definition: api_objects.h:83
helicsPublicationPublishComplexVector
void helicsPublicationPublishComplexVector(HelicsPublication pub, const double *vectorInput, int vectorLength, HelicsError *err)
Definition: ValueFederateExport.cpp:608
helicsPublicationPublishTime
void helicsPublicationPublishTime(HelicsPublication pub, HelicsTime val, HelicsError *err)
Definition: ValueFederateExport.cpp:547
helicsFederateGetInputByIndex
HelicsInput helicsFederateGetInputByIndex(HelicsFederate fed, int index, HelicsError *err)
Definition: ValueFederateExport.cpp:408
helicsFederateRegisterPublication
HelicsPublication helicsFederateRegisterPublication(HelicsFederate fed, const char *key, HelicsDataTypes type, const char *units, HelicsError *err)
Definition: ValueFederateExport.cpp:118
helics::ValueFederateManager::queryUpdates
std::vector< int > queryUpdates()
Definition: ValueFederateManager.cpp:391
helics::IterationResult
IterationResult
Definition: CoreTypes.hpp:80
helicsInputSetInfo
void helicsInputSetInfo(HelicsInput inp, const char *info, HelicsError *err)
Definition: ValueFederateExport.cpp:1346
helicsPublicationGetUnits
const char * helicsPublicationGetUnits(HelicsPublication pub)
Definition: ValueFederateExport.cpp:1319
helicsInputSetDefaultDouble
void helicsInputSetDefaultDouble(HelicsInput inp, double val, HelicsError *err)
Definition: ValueFederateExport.cpp:1069
helicsInputGetExtractionUnits
const char * helicsInputGetExtractionUnits(HelicsInput ipt)
Definition: ValueFederateExport.cpp:1297
helicsFederateGetSubscription
HelicsInput helicsFederateGetSubscription(HelicsFederate fed, const char *key, HelicsError *err)
Definition: ValueFederateExport.cpp:435
helicsFederateRegisterSubscription
HelicsInput helicsFederateRegisterSubscription(HelicsFederate fed, const char *key, const char *units, HelicsError *err)
Definition: ValueFederateExport.cpp:77
helicsPublicationGetTag
const char * helicsPublicationGetTag(HelicsPublication pub, const char *tagname)
Definition: ValueFederateExport.cpp:1428
helics::ValueFederateManager
Definition: ValueFederateManager.hpp:66
helics::input_info::units
std::string units
input units
Definition: ValueFederateManager.hpp:54
helicsSubscriptionGetTarget
const char * helicsSubscriptionGetTarget(HelicsInput sub)
Definition: ValueFederateExport.cpp:1245
helics::fileops::JsonBuilder
Definition: JsonBuilder.hpp:61
helicsInputGetTag
const char * helicsInputGetTag(HelicsInput inp, const char *tagname)
Definition: ValueFederateExport.cpp:1395
helicsInputGetPublicationType
const char * helicsInputGetPublicationType(HelicsInput ipt)
Definition: ValueFederateExport.cpp:1186
helicsPublicationPublishString
void helicsPublicationPublishString(HelicsPublication pub, const char *str, HelicsError *err)
Definition: ValueFederateExport.cpp:491
helicsFederateRegisterInput
HelicsInput helicsFederateRegisterInput(HelicsFederate fed, const char *key, HelicsDataTypes type, const char *units, HelicsError *err)
Definition: ValueFederateExport.cpp:212
helics::publication_info::name
std::string name
publication name
Definition: ValueFederateManager.hpp:29
helics::ValueFederateManager::addTarget
void addTarget(const Publication &pub, const std::string &target)
Definition: ValueFederateManager.cpp:131
helics::input_info::pubtype
std::string pubtype
the listed type of the corresponding publication
Definition: ValueFederateManager.hpp:55
helicsInputSetMinimumChange
void helicsInputSetMinimumChange(HelicsInput inp, double tolerance, HelicsError *err)
Definition: ValueFederateExport.cpp:1534
helicsPublicationSetTag
void helicsPublicationSetTag(HelicsPublication pub, const char *tagname, const char *tagvalue, HelicsError *err)
Definition: ValueFederateExport.cpp:1445
helics::Publication
Definition: Publications.hpp:24
helicsInputSetDefaultBytes
void helicsInputSetDefaultBytes(HelicsInput inp, const void *data, int dataLen, HelicsError *err)
Definition: ValueFederateExport.cpp:1015
ValueFederate.h
Functions related to value federates for the C api.
helicsInputClearUpdate
void helicsInputClearUpdate(HelicsInput ipt)
Definition: ValueFederateExport.cpp:1571
helicsInputGetInfo
const char * helicsInputGetInfo(HelicsInput inp)
Definition: ValueFederateExport.cpp:1329
helicsPublicationPublishChar
void helicsPublicationPublishChar(HelicsPublication pub, char val, HelicsError *err)
Definition: ValueFederateExport.cpp:562
helicsPublicationPublishDouble
void helicsPublicationPublishDouble(HelicsPublication pub, double val, HelicsError *err)
Definition: ValueFederateExport.cpp:533
helicsInputSetDefaultChar
void helicsInputSetDefaultChar(HelicsInput inp, char val, HelicsError *err)
Definition: ValueFederateExport.cpp:1089
helics::ValueFederateManager::hasUpdate
static bool hasUpdate(const Input &inp)
Definition: ValueFederateManager.cpp:227
helics::data_view::data
const char * data() const noexcept
Definition: data_view.hpp:107
helics::input_info::coreID
InterfaceHandle coreID
Handle from the core.
Definition: ValueFederateManager.hpp:46
HelicsError
Definition: api-data.h:160
helicsFederateRegisterGlobalTypePublication
HelicsPublication helicsFederateRegisterGlobalTypePublication(HelicsFederate fed, const char *key, const char *type, const char *units, HelicsError *err)
Definition: ValueFederateExport.cpp:145
helicsInputGetByteCount
int helicsInputGetByteCount(HelicsInput inp)
Definition: ValueFederateExport.cpp:683
helics
the main namespace for the helics co-simulation library User functions will be in the helics namespac...
Definition: AsyncFedCallInfo.hpp:14
helicsPublicationGetOption
int helicsPublicationGetOption(HelicsPublication pub, int option)
Definition: ValueFederateExport.cpp:1493
HelicsPublication
void * HelicsPublication
Definition: api-data.h:31
helicsFederateRegisterTypeInput
HelicsInput helicsFederateRegisterTypeInput(HelicsFederate fed, const char *key, const char *type, const char *units, HelicsError *err)
Definition: ValueFederateExport.cpp:193
helicsFederateRegisterGlobalTypeInput
HelicsPublication helicsFederateRegisterGlobalTypeInput(HelicsFederate fed, const char *key, const char *type, const char *units, HelicsError *err)
Definition: ValueFederateExport.cpp:242
helics::Input::getHelicsType
DataType getHelicsType() const
Definition: Inputs.hpp:395
helicsFederateRegisterFromPublicationJSON
void helicsFederateRegisterFromPublicationJSON(HelicsFederate fed, const char *json, HelicsError *err)
Definition: ValueFederateExport.cpp:291
helicsPublicationSetMinimumChange
void helicsPublicationSetMinimumChange(HelicsPublication pub, double tolerance, HelicsError *err)
Definition: ValueFederateExport.cpp:1525
helicsInputGetBoolean
HelicsBool helicsInputGetBoolean(HelicsInput inp, HelicsError *err)
Definition: ValueFederateExport.cpp:777
helics::data_view::size
size_t size() const noexcept
Definition: data_view.hpp:114
helicsInputGetComplexObject
HelicsComplex helicsInputGetComplexObject(HelicsInput inp, HelicsError *err)
Definition: ValueFederateExport.cpp:867
helics::ValueFederateManager::setDefaultValue
void setDefaultValue(const Input &inp, const data_view &block)
Definition: ValueFederateManager.cpp:177
helicsPublicationSetInfo
void helicsPublicationSetInfo(HelicsPublication pub, const char *info, HelicsError *err)
Definition: ValueFederateExport.cpp:1379
helics::input_info::sourceIndex
int sourceIndex
the index of the data source for multi-source inputs
Definition: ValueFederateManager.hpp:51
helicsPublicationSetOption
void helicsPublicationSetOption(HelicsPublication pub, int option, int value, HelicsError *err)
Definition: ValueFederateExport.cpp:1509
helicsPublicationPublishVector
void helicsPublicationPublishVector(HelicsPublication pub, const double *vectorInput, int vectorLength, HelicsError *err)
Definition: ValueFederateExport.cpp:590
helics::LocalFederateId
Definition: LocalFederateId.hpp:22
helics::ValueFederateManager::getInput
Input & getInput(const std::string &key)
Definition: ValueFederateManager.cpp:430
helics::getValue
X getValue(ValueFederate &fed, const std::string &key)
Definition: Subscriptions.hpp:30
helics::ValueFederateManager::getValue
data_view getValue(const Input &inp)
Definition: ValueFederateManager.cpp:205
helics::typeNameStringRef
const std::string & typeNameStringRef(DataType type)
Definition: helicsTypes.cpp:46
helicsInputGetInteger
int64_t helicsInputGetInteger(HelicsInput inp, HelicsError *err)
Definition: ValueFederateExport.cpp:762
helicsInputSetDefaultTime
void helicsInputSetDefaultTime(HelicsInput inp, HelicsTime val, HelicsError *err)
Definition: ValueFederateExport.cpp:1078
helicsInputGetString
void helicsInputGetString(HelicsInput inp, char *outputString, int maxStringLen, int *actualLength, HelicsError *err)
Definition: ValueFederateExport.cpp:736
helicsGetDataType
int helicsGetDataType(const char *val)
Definition: FederateExport.cpp:345
helics::input_info::hasUpdate
bool hasUpdate
indicator that there was an update
Definition: ValueFederateManager.hpp:58
helicsPublicationPublishBytes
void helicsPublicationPublishBytes(HelicsPublication pub, const void *data, int datalen, HelicsError *err)
Definition: ValueFederateExport.cpp:477
helicsInputGetInjectionUnits
const char * helicsInputGetInjectionUnits(HelicsInput ipt)
Definition: ValueFederateExport.cpp:1280
gmlc::libguarded::shared_guarded
Definition: application_api/Federate.hpp:28
helicsInputIsUpdated
HelicsBool helicsInputIsUpdated(HelicsInput ipt)
Definition: ValueFederateExport.cpp:1543
helicsInputGetNamedPoint
void helicsInputGetNamedPoint(HelicsInput inp, char *outputString, int maxStringLen, int *actualLength, double *val, HelicsError *err)
Definition: ValueFederateExport.cpp:974
helics::Input::getDisplayName
virtual const std::string & getDisplayName() const override
Definition: Inputs.hpp:409
helicsInputGetComplex
void helicsInputGetComplex(HelicsInput inp, double *real, double *imag, HelicsError *err)
Definition: ValueFederateExport.cpp:845
helics::input_info::type
std::string type
input type
Definition: ValueFederateManager.hpp:53
helics::publication_info::id
PublicationId id
the id used as the identifier
Definition: ValueFederateManager.hpp:33
helics::publication_info::units
std::string units
publication units
Definition: ValueFederateManager.hpp:31
helicsInputGetOption
int helicsInputGetOption(HelicsInput inp, int option)
Definition: ValueFederateExport.cpp:1461
helics::PublicationObject
Definition: api_objects.h:111
helicsInputGetVector
void helicsInputGetVector(HelicsInput inp, double data[], int maxlen, int *actualSize, HelicsError *err)
Definition: ValueFederateExport.cpp:920
helics::publication_info
Definition: ValueFederateManager.hpp:28
helicsFederateGetPublicationByIndex
HelicsPublication helicsFederateGetPublicationByIndex(HelicsFederate fed, int index, HelicsError *err)
Definition: ValueFederateExport.cpp:353
helics::isBlockSizeValid
bool isBlockSizeValid(int size, const publication_info &pubI)
Definition: ValueFederateManager.cpp:217
helics::ValueFederateManager::initializeToExecuteStateTransition
void initializeToExecuteStateTransition(IterationResult result)
Definition: ValueFederateManager.cpp:308
helics::Input::clearUpdate
void clearUpdate()
Definition: Inputs.cpp:583
helics::ValueFederateManager::setInputNotificationCallback
void setInputNotificationCallback(std::function< void(Input &, Time)> callback)
Definition: ValueFederateManager.cpp:551
helics::input_info::lastData
data_view lastData
the last published data from a target
Definition: ValueFederateManager.hpp:48
helicsInputSetDefaultVector
void helicsInputSetDefaultVector(HelicsInput inp, const double *vectorInput, int vectorLength, HelicsError *err)
Definition: ValueFederateExport.cpp:1108
helicsInputSetDefaultString
void helicsInputSetDefaultString(HelicsInput inp, const char *str, HelicsError *err)
Definition: ValueFederateExport.cpp:1035
helics::ValueFederateManager::getPublication
Publication & getPublication(const std::string &key)
Definition: ValueFederateManager.cpp:499
helics::ValueFederateManager::disconnect
void disconnect()
Definition: ValueFederateManager.cpp:27
HelicsBool
int HelicsBool
Definition: api-data.h:102
helics::ValueFederateManager::updateTime
void updateTime(Time newTime, Time oldTime)
Definition: ValueFederateManager.cpp:259
helicsInputSetDefaultBoolean
void helicsInputSetDefaultBoolean(HelicsInput inp, HelicsBool val, HelicsError *err)
Definition: ValueFederateExport.cpp:1060
helicsPublicationPublishBoolean
void helicsPublicationPublishBoolean(HelicsPublication pub, HelicsBool val, HelicsError *err)
Definition: ValueFederateExport.cpp:519
helics::isValidIndex
bool isValidIndex(sizeType testSize, const SizedDataType &vec)
Definition: core-data.hpp:132