 |
helics
3.0.1
|
9 #include "../common/GuardedTypes.hpp"
10 #include "../core/LocalFederateId.hpp"
12 #include "ValueFederate.hpp"
13 #include "data_view.hpp"
14 #include "gmlc/containers/DualMappedVector.hpp"
36 publication_info(
const std::string& n_name,
37 const std::string& n_type,
38 const std::string& n_units):
59 input_info(
const std::string& n_name,
const std::string& n_type,
const std::string& n_units):
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);
84 void addAlias(
const Input& inp,
const std::string& shortcutName);
146 std::string
localQuery(
const std::string& queryStr)
const;
189 std::function<
void(
Input&,
Time)> callback);
205 bool getUpdateFromCore(
Input& inp);
213 DualMappedVector<Input, std::string, InterfaceHandle, reference_stability::stable>>
218 reference_stability::stable>>
220 Time CurrentTime{-1.0};
221 Core* coreObject{
nullptr};
223 ValueFederate* fed{
nullptr};
224 atomic_guarded<std::function<void(Input&,
Time)>>
233 void getUpdateFromCore(InterfaceHandle handle);
constexpr Time timeZero
Definition: helicsTime.hpp:31
int helicsInputGetVectorSize(HelicsInput inp)
Definition: ValueFederateExport.cpp:888
double HelicsTime
Definition: api-data.h:90
HelicsTime helicsInputLastUpdateTime(HelicsInput ipt)
Definition: ValueFederateExport.cpp:1554
const HelicsBool HELICS_FALSE
Definition: api-data.h:105
constexpr Time initializationTime
Definition: helicsTime.hpp:38
void clearUpdates()
Definition: ValueFederateManager.cpp:538
const HelicsBool HELICS_TRUE
Definition: api-data.h:104
std::string type
publication type
Definition: ValueFederateManager.hpp:30
std::string name
the text value for the named point
Definition: helicsTypes.hpp:111
Definition: helicsTypes.hpp:109
void helicsInputGetBytes(HelicsInput inp, void *data, int maxDatalen, int *actualSize, HelicsError *err)
Definition: ValueFederateExport.cpp:702
void helicsInputSetDefaultComplexVector(HelicsInput inp, const double *vectorInput, int vectorLength, HelicsError *err)
Definition: ValueFederateExport.cpp:1128
Definition: application_api/ValueFederate.hpp:25
HelicsBool helicsPublicationIsValid(HelicsPublication pub)
Definition: ValueFederateExport.cpp:655
Definition: core-exceptions.hpp:38
@ HELICS_DATA_TYPE_ANY
Definition: helics_enums.h:90
HelicsDataTypes
Definition: helics_enums.h:63
int helicsFederateGetPublicationCount(HelicsFederate fed)
Definition: ValueFederateExport.cpp:1586
InterfaceHandle coreID
Handle from the core.
Definition: ValueFederateManager.hpp:32
void helicsPublicationPublishComplex(HelicsPublication pub, double real, double imag, HelicsError *err)
Definition: ValueFederateExport.cpp:576
HelicsBool helicsInputIsValid(HelicsInput ipt)
Definition: ValueFederateExport.cpp:664
void helicsInputSetDefaultInteger(HelicsInput inp, int64_t val, HelicsError *err)
Definition: ValueFederateExport.cpp:1051
void helicsPublicationAddTarget(HelicsPublication pub, const char *target, HelicsError *err)
Definition: ValueFederateExport.cpp:644
void * HelicsFederate
Definition: api-data.h:60
void helicsInputSetDefaultComplex(HelicsInput inp, double real, double imag, HelicsError *err)
Definition: ValueFederateExport.cpp:1098
@ HELICS_ERROR_INVALID_OBJECT
Definition: helics_enums.h:230
std::string_view getCleanedTypeName(std::string_view typeName)
Definition: helicsTypes.cpp:245
double value
the data value for the named point
Definition: helicsTypes.hpp:112
Definition: LocalFederateId.hpp:65
int getInputCount() const
Definition: ValueFederateManager.cpp:533
int size
required size of a publication
Definition: ValueFederateManager.hpp:34
void helicsInputSetDefaultNamedPoint(HelicsInput inp, const char *str, double val, HelicsError *err)
Definition: ValueFederateExport.cpp:1152
TimeRepresentation< count_time< 9 > > Time
Definition: helicsTime.hpp:27
std::string generate()
Definition: JsonBuilder.cpp:159
HelicsTime helicsInputGetTime(HelicsInput inp, HelicsError *err)
Definition: ValueFederateExport.cpp:810
std::string localQuery(const std::string &queryStr) const
Definition: ValueFederateManager.cpp:314
void * HelicsInput
Definition: api-data.h:26
@ HELICS_UNKNOWN
unknown state
Definition: CoreTypes.hpp:29
@ HELICS_DATA_TYPE_STRING
Definition: helics_enums.h:66
static void clearUpdate(const Input &inp)
Definition: ValueFederateManager.cpp:543
int helicsFederateGetInputCount(HelicsFederate fed)
Definition: ValueFederateExport.cpp:1596
Definition: data_view.hpp:22
HelicsPublication helicsFederateGetPublication(HelicsFederate fed, const char *key, HelicsError *err)
Definition: ValueFederateExport.cpp:328
const HelicsTime HELICS_TIME_INVALID
Definition: api-data.h:94
void startupToInitializeStateTransition()
Definition: ValueFederateManager.cpp:301
HelicsPublication helicsFederateRegisterTypePublication(HelicsFederate fed, const char *key, const char *type, const char *units, HelicsError *err)
Definition: ValueFederateExport.cpp:98
void removeTarget(const Publication &pub, const std::string &target)
Definition: ValueFederateManager.cpp:157
void helicsFederateClearUpdates(HelicsFederate fed)
Definition: ValueFederateExport.cpp:461
void helicsFederatePublishJSON(HelicsFederate fed, const char *json, HelicsError *err)
Definition: ValueFederateExport.cpp:308
DataType
Definition: helicsTypes.hpp:272
void addElement(const std::string &path, const std::string &value)
Definition: JsonBuilder.cpp:100
void publish(const Publication &pub, const data_view &block)
Definition: ValueFederateManager.cpp:222
HelicsPublication helicsFederateRegisterGlobalInput(HelicsFederate fed, const char *key, HelicsDataTypes type, const char *units, HelicsError *err)
Definition: ValueFederateExport.cpp:262
void helicsPublicationPublishInteger(HelicsPublication pub, int64_t val, HelicsError *err)
Definition: ValueFederateExport.cpp:505
@ HELICS_DATA_TYPE_RAW
Definition: helics_enums.h:84
Definition: core/Core.hpp:42
bool useJsonSerialization
all outgoing data should be serialized as JSON
Definition: ValueFederateManager.hpp:208
void addAlias(const Input &inp, const std::string &shortcutName)
Definition: ValueFederateManager.cpp:110
char helicsInputGetChar(HelicsInput inp, HelicsError *err)
Definition: ValueFederateExport.cpp:828
Definition: core-exceptions.hpp:84
const std::string & getTarget(const Input &inp) const
Definition: ValueFederateManager.cpp:407
Definition: api-data.h:147
const Input & getSubscription(const std::string &key) const
Definition: ValueFederateManager.cpp:458
int getPublicationCount() const
Definition: ValueFederateManager.cpp:528
static Time getLastUpdateTime(const Input &inp)
Definition: ValueFederateManager.cpp:236
HelicsInput helicsFederateGetInput(HelicsFederate fed, const char *key, HelicsError *err)
Definition: ValueFederateExport.cpp:382
void helicsPublicationPublishNamedPoint(HelicsPublication pub, const char *str, double val, HelicsError *err)
Definition: ValueFederateExport.cpp:626
HelicsPublication helicsFederateRegisterGlobalPublication(HelicsFederate fed, const char *key, HelicsDataTypes type, const char *units, HelicsError *err)
Definition: ValueFederateExport.cpp:165
bool isValid() const
Definition: application_api/Federate.hpp:646
Input & registerInput(const std::string &key, std::string type, const std::string &units)
Definition: ValueFederateManager.cpp:81
void helicsInputAddTarget(HelicsInput ipt, const char *target, HelicsError *err)
Definition: ValueFederateExport.cpp:673
@ HELICS_DATA_TYPE_TIME
Definition: helics_enums.h:82
InterfaceHandle handle
the id as generated by the Federate
Definition: application_api/Federate.hpp:630
@ HELICS_ERROR_INVALID_ARGUMENT
Definition: helics_enums.h:228
void helicsInputGetComplexVector(HelicsInput inp, double data[], int maxlen, int *actualSize, HelicsError *err)
Definition: ValueFederateExport.cpp:947
int helicsInputGetStringSize(HelicsInput inp)
Definition: ValueFederateExport.cpp:904
double helicsInputGetDouble(HelicsInput inp, HelicsError *err)
Definition: ValueFederateExport.cpp:795
Definition: api_objects.h:83
void helicsPublicationPublishComplexVector(HelicsPublication pub, const double *vectorInput, int vectorLength, HelicsError *err)
Definition: ValueFederateExport.cpp:608
void helicsPublicationPublishTime(HelicsPublication pub, HelicsTime val, HelicsError *err)
Definition: ValueFederateExport.cpp:547
HelicsInput helicsFederateGetInputByIndex(HelicsFederate fed, int index, HelicsError *err)
Definition: ValueFederateExport.cpp:408
HelicsPublication helicsFederateRegisterPublication(HelicsFederate fed, const char *key, HelicsDataTypes type, const char *units, HelicsError *err)
Definition: ValueFederateExport.cpp:118
std::vector< int > queryUpdates()
Definition: ValueFederateManager.cpp:391
IterationResult
Definition: CoreTypes.hpp:80
void helicsInputSetDefaultDouble(HelicsInput inp, double val, HelicsError *err)
Definition: ValueFederateExport.cpp:1069
HelicsInput helicsFederateGetSubscription(HelicsFederate fed, const char *key, HelicsError *err)
Definition: ValueFederateExport.cpp:435
HelicsInput helicsFederateRegisterSubscription(HelicsFederate fed, const char *key, const char *units, HelicsError *err)
Definition: ValueFederateExport.cpp:77
Definition: ValueFederateManager.hpp:66
Definition: JsonBuilder.hpp:61
void helicsPublicationPublishString(HelicsPublication pub, const char *str, HelicsError *err)
Definition: ValueFederateExport.cpp:491
HelicsInput helicsFederateRegisterInput(HelicsFederate fed, const char *key, HelicsDataTypes type, const char *units, HelicsError *err)
Definition: ValueFederateExport.cpp:212
std::string name
publication name
Definition: ValueFederateManager.hpp:29
void addTarget(const Publication &pub, const std::string &target)
Definition: ValueFederateManager.cpp:131
Definition: Publications.hpp:24
void helicsInputSetDefaultBytes(HelicsInput inp, const void *data, int dataLen, HelicsError *err)
Definition: ValueFederateExport.cpp:1015
Functions related to value federates for the C api.
void helicsInputClearUpdate(HelicsInput ipt)
Definition: ValueFederateExport.cpp:1571
void helicsPublicationPublishChar(HelicsPublication pub, char val, HelicsError *err)
Definition: ValueFederateExport.cpp:562
void helicsPublicationPublishDouble(HelicsPublication pub, double val, HelicsError *err)
Definition: ValueFederateExport.cpp:533
void helicsInputSetDefaultChar(HelicsInput inp, char val, HelicsError *err)
Definition: ValueFederateExport.cpp:1089
static bool hasUpdate(const Input &inp)
Definition: ValueFederateManager.cpp:227
const char * data() const noexcept
Definition: data_view.hpp:107
Definition: api-data.h:160
HelicsPublication helicsFederateRegisterGlobalTypePublication(HelicsFederate fed, const char *key, const char *type, const char *units, HelicsError *err)
Definition: ValueFederateExport.cpp:145
int helicsInputGetByteCount(HelicsInput inp)
Definition: ValueFederateExport.cpp:683
the main namespace for the helics co-simulation library User functions will be in the helics namespac...
Definition: AsyncFedCallInfo.hpp:14
void * HelicsPublication
Definition: api-data.h:31
HelicsInput helicsFederateRegisterTypeInput(HelicsFederate fed, const char *key, const char *type, const char *units, HelicsError *err)
Definition: ValueFederateExport.cpp:193
HelicsPublication helicsFederateRegisterGlobalTypeInput(HelicsFederate fed, const char *key, const char *type, const char *units, HelicsError *err)
Definition: ValueFederateExport.cpp:242
void helicsFederateRegisterFromPublicationJSON(HelicsFederate fed, const char *json, HelicsError *err)
Definition: ValueFederateExport.cpp:291
HelicsBool helicsInputGetBoolean(HelicsInput inp, HelicsError *err)
Definition: ValueFederateExport.cpp:777
size_t size() const noexcept
Definition: data_view.hpp:114
HelicsComplex helicsInputGetComplexObject(HelicsInput inp, HelicsError *err)
Definition: ValueFederateExport.cpp:867
void setDefaultValue(const Input &inp, const data_view &block)
Definition: ValueFederateManager.cpp:177
void helicsPublicationPublishVector(HelicsPublication pub, const double *vectorInput, int vectorLength, HelicsError *err)
Definition: ValueFederateExport.cpp:590
Definition: LocalFederateId.hpp:22
Input & getInput(const std::string &key)
Definition: ValueFederateManager.cpp:430
X getValue(ValueFederate &fed, const std::string &key)
Definition: Subscriptions.hpp:30
data_view getValue(const Input &inp)
Definition: ValueFederateManager.cpp:205
const std::string & typeNameStringRef(DataType type)
Definition: helicsTypes.cpp:46
int64_t helicsInputGetInteger(HelicsInput inp, HelicsError *err)
Definition: ValueFederateExport.cpp:762
void helicsInputSetDefaultTime(HelicsInput inp, HelicsTime val, HelicsError *err)
Definition: ValueFederateExport.cpp:1078
void helicsInputGetString(HelicsInput inp, char *outputString, int maxStringLen, int *actualLength, HelicsError *err)
Definition: ValueFederateExport.cpp:736
int helicsGetDataType(const char *val)
Definition: FederateExport.cpp:345
void helicsPublicationPublishBytes(HelicsPublication pub, const void *data, int datalen, HelicsError *err)
Definition: ValueFederateExport.cpp:477
Definition: application_api/Federate.hpp:28
HelicsBool helicsInputIsUpdated(HelicsInput ipt)
Definition: ValueFederateExport.cpp:1543
void helicsInputGetNamedPoint(HelicsInput inp, char *outputString, int maxStringLen, int *actualLength, double *val, HelicsError *err)
Definition: ValueFederateExport.cpp:974
void helicsInputGetComplex(HelicsInput inp, double *real, double *imag, HelicsError *err)
Definition: ValueFederateExport.cpp:845
PublicationId id
the id used as the identifier
Definition: ValueFederateManager.hpp:33
std::string units
publication units
Definition: ValueFederateManager.hpp:31
Definition: api_objects.h:111
void helicsInputGetVector(HelicsInput inp, double data[], int maxlen, int *actualSize, HelicsError *err)
Definition: ValueFederateExport.cpp:920
Definition: ValueFederateManager.hpp:28
HelicsPublication helicsFederateGetPublicationByIndex(HelicsFederate fed, int index, HelicsError *err)
Definition: ValueFederateExport.cpp:353
bool isBlockSizeValid(int size, const publication_info &pubI)
Definition: ValueFederateManager.cpp:217
void initializeToExecuteStateTransition(IterationResult result)
Definition: ValueFederateManager.cpp:308
void setInputNotificationCallback(std::function< void(Input &, Time)> callback)
Definition: ValueFederateManager.cpp:551
void helicsInputSetDefaultVector(HelicsInput inp, const double *vectorInput, int vectorLength, HelicsError *err)
Definition: ValueFederateExport.cpp:1108
void helicsInputSetDefaultString(HelicsInput inp, const char *str, HelicsError *err)
Definition: ValueFederateExport.cpp:1035
Publication & getPublication(const std::string &key)
Definition: ValueFederateManager.cpp:499
void disconnect()
Definition: ValueFederateManager.cpp:27
int HelicsBool
Definition: api-data.h:102
void updateTime(Time newTime, Time oldTime)
Definition: ValueFederateManager.cpp:259
void helicsInputSetDefaultBoolean(HelicsInput inp, HelicsBool val, HelicsError *err)
Definition: ValueFederateExport.cpp:1060
void helicsPublicationPublishBoolean(HelicsPublication pub, HelicsBool val, HelicsError *err)
Definition: ValueFederateExport.cpp:519
bool isValidIndex(sizeType testSize, const SizedDataType &vec)
Definition: core-data.hpp:132