 |
helics
3.0.1
|
Go to the documentation of this file.
10 #include "helics/helics-config.h"
12 #include "helics_cxx_export.h"
28 using defV = std::variant<double,
33 std::vector<std::complex<double>>,
43 complex_vector_loc = 5U,
47 HELICS_CXX_EXPORT
bool changeDetected(
const defV& prevValue,
const std::string& val,
double deltaV);
48 HELICS_CXX_EXPORT
bool changeDetected(
const defV& prevValue, std::string_view val,
double deltaV);
49 HELICS_CXX_EXPORT
bool
52 const std::vector<std::complex<double>>& val,
54 HELICS_CXX_EXPORT
bool
56 HELICS_CXX_EXPORT
bool
58 HELICS_CXX_EXPORT
bool changeDetected(
const defV& prevValue,
double val,
double deltaV);
59 HELICS_CXX_EXPORT
bool changeDetected(
const defV& prevValue, int64_t val,
double deltaV);
61 HELICS_CXX_EXPORT
bool changeDetected(
const defV& prevValue,
const NamedPoint& val,
double deltaV);
67 return (obj) ? 1LL : 0LL;
73 return static_cast<int64_t
>(val);
77 return static_cast<int64_t
>(val);
81 return static_cast<int64_t
>(val);
85 return static_cast<int64_t
>(val);
89 return static_cast<int64_t
>(val);
93 return static_cast<int64_t
>(val);
97 return static_cast<int64_t
>(val);
101 return val.getBaseTimeCode();
106 return static_cast<double>(val);
109 inline std::complex<double>
make_valid(
const std::complex<float>& val)
111 return {val.real(), val.imag()};
118 return std::forward<X>(obj);
124 HELICS_CXX_EXPORT
void valueExtract(
const defV& dv, std::complex<double>& val);
127 HELICS_CXX_EXPORT
void valueExtract(
const defV& dv, std::vector<double>& val);
130 HELICS_CXX_EXPORT
void valueExtract(
const defV& dv, std::vector<std::complex<double>>& val);
144 HELICS_CXX_EXPORT
defV readJsonValue(
const data_view& dv);
148 HELICS_CXX_EXPORT
void
151 HELICS_CXX_EXPORT
void
154 HELICS_CXX_EXPORT
void
169 std::enable_if_t<std::is_arithmetic<X>::value && (!std::is_same<X, char>::value)>
172 switch (dv.index()) {
174 val =
static_cast<X
>(std::get<double>(dv));
177 val =
static_cast<X
>(std::get<int64_t>(dv));
181 const auto& v = std::get<std::string>(dv);
182 if (v.find_first_of(
".eE[]") == std::string::npos) {
192 auto& cv = std::get<std::complex<double>>(dv);
193 val =
static_cast<X
>((cv.imag() != 0.0) ? std::abs(cv) : cv.real());
199 const auto& vec = std::get<std::vector<double>>(dv);
200 val =
static_cast<X
>((vec.size() == 1) ? vec[0] :
vectorNorm(vec));
203 case complex_vector_loc:
205 const auto& vec = std::get<std::vector<std::complex<double>>>(dv);
207 if (vec.size() == 1) {
208 if (vec[0].imag() == 0.0) {
209 vald = vec[0].real();
211 vald = std::abs(vec[0]);
216 val =
static_cast<X
>(vald);
219 case named_point_loc: {
220 const auto& np = std::get<NamedPoint>(dv);
221 if (std::isnan(np.value)) {
222 if (np.name.find_first_of(
".eE[]") == std::string::npos) {
228 val =
static_cast<X
>(np.value);
237 std::enable_if_t<std::is_arithmetic<X>::value && (!std::is_same<X, char>::value)>
241 case DataType::HELICS_ANY: {
247 case DataType::HELICS_STRING:
250 if (v.find_first_of(
".eE[]") == std::string_view::npos) {
258 case DataType::HELICS_BOOL:
261 case DataType::HELICS_NAMED_POINT: {
263 if (std::isnan(npval.value)) {
265 if (npval.name.find_first_of(
".eE[]") == std::string::npos) {
271 catch (
const std::invalid_argument&) {
272 val =
static_cast<X
>(
274 std::conditional_t<std::is_integral<X>::value, int64_t,
double>>());
277 val =
static_cast<X
>(npval.value);
282 case DataType::HELICS_DOUBLE: {
284 val =
static_cast<X
>(V);
287 case DataType::HELICS_INT: {
289 val =
static_cast<X
>(V);
292 case DataType::HELICS_TIME: {
295 val = std::is_integral<X>::value ?
static_cast<X
>(vtime.getBaseTimeCode()) :
296 static_cast<X
>(
static_cast<double>(vtime));
299 case DataType::HELICS_VECTOR: {
302 val =
static_cast<X
>(V[0]);
308 case DataType::HELICS_COMPLEX: {
311 val =
static_cast<X
>((V.imag() != 0) ? std::abs(V) : V.real());
314 case DataType::HELICS_COMPLEX_VECTOR: {
317 if (V[0].imag() == 0) {
318 val =
static_cast<X
>(V[0].real());
320 val =
static_cast<X
>(std::abs(V[0]));
328 case DataType::HELICS_JSON:
331 case DataType::HELICS_CUSTOM:
332 throw(std::invalid_argument(
"unrecognized helics type"));
336 HELICS_CXX_EXPORT
void valueConvert(
defV& val,
DataType newType);
constexpr Time timeZero
Definition: helicsTime.hpp:31
TypeLocation
Definition: HelicsPrimaryTypes.hpp:37
void helicsCoreSendCommand(HelicsCore core, const char *target, const char *command, HelicsError *err)
Definition: helicsExport.cpp:685
Common functions for the HELICS C api.
std::string helicsIntString(std::int64_t val)
Definition: helicsTypes.cpp:334
std::variant< double, int64_t, std::string, std::complex< double >, std::vector< double >, std::vector< std::complex< double > >, NamedPoint > defV
Definition: HelicsPrimaryTypes.hpp:34
@ HELICS_ERROR_USER_ABORT
Definition: helics_enums.h:213
double HelicsTime
Definition: api-data.h:90
HelicsCore helicsCoreClone(HelicsCore core, HelicsError *err)
Definition: helicsExport.cpp:336
const char * helicsGetBuildFlags(void)
Definition: helicsExport.cpp:34
const HelicsBool HELICS_FALSE
Definition: api-data.h:105
void helicsCoreFree(HelicsCore core)
Definition: helicsExport.cpp:853
FedObject * getFedObject(HelicsFederate fed, HelicsError *err) noexcept
Definition: FederateExport.cpp:27
const HelicsBool HELICS_TRUE
Definition: api-data.h:104
std::string name
the text value for the named point
Definition: helicsTypes.hpp:111
Definition: helicsTypes.hpp:109
void helicsLoadSignalHandlerCallback(HelicsBool(*handler)(int))
Definition: helicsExport.cpp:97
@ HELICS_SEQUENCING_MODE_ORDERED
Definition: helics_enums.h:367
void helicsErrorClear(HelicsError *err)
Definition: helicsExport.cpp:57
void helicsFederateDestroy(HelicsFederate fed)
Definition: helicsExport.cpp:835
void helicsBrokerSetTimeBarrier(HelicsBroker broker, HelicsTime barrierTime, HelicsError *err)
Definition: helicsExport.cpp:547
CoreType
Definition: CoreTypes.hpp:36
Definition: core-exceptions.hpp:38
static X interpret(const data_view &block)
Definition: ValueConverter.hpp:132
void helicsCoreDestroy(HelicsCore core)
Definition: helicsExport.cpp:847
const char * message
Definition: api-data.h:162
Definition: core-exceptions.hpp:93
int64_t make_valid(bool obj)
Definition: HelicsPrimaryTypes.hpp:65
std::string helicsComplexVectorString(const std::vector< std::complex< double >> &val)
Definition: helicsTypes.cpp:354
HelicsBroker helicsBrokerClone(HelicsBroker broker, HelicsError *err)
Definition: helicsExport.cpp:445
X invalidValue()
Definition: helicsTypes.hpp:491
Definition: ValueConverter.hpp:98
HelicsBool helicsBrokerIsConnected(HelicsBroker broker)
Definition: helicsExport.cpp:468
void * HelicsFederate
Definition: api-data.h:60
@ HELICS_ERROR_INVALID_OBJECT
Definition: helics_enums.h:230
std::vector< std::complex< double > > helicsGetComplexVector(std::string_view val)
Definition: helicsTypes.cpp:381
double value
the data value for the named point
Definition: helicsTypes.hpp:112
void helicsCoreSetGlobal(HelicsCore core, const char *valueName, const char *value, HelicsError *err)
Definition: helicsExport.cpp:672
size_t cleanUpBrokers()
Definition: BrokerFactory.cpp:269
@ HELICS_ERROR_REGISTRATION_FAILURE
Definition: helics_enums.h:234
void helicsFederateFinalize(HelicsFederate fed, HelicsError *err)
Definition: FederateExport.cpp:629
TimeRepresentation< count_time< 9 > > Time
Definition: helicsTime.hpp:27
void helicsCoreDataLink(HelicsCore core, const char *source, const char *target, HelicsError *err)
Definition: helicsExport.cpp:492
@ HELICS_ERROR_CONNECTION_FAILURE
Definition: helics_enums.h:232
HelicsFederate helicsFederateClone(HelicsFederate fed, HelicsError *err)
Definition: FederateExport.cpp:541
HelicsCore helicsCreateCore(const char *type, const char *name, const char *initString, HelicsError *err)
Definition: helicsExport.cpp:266
@ HELICS_ERROR_EXTERNAL_TYPE
Definition: helics_enums.h:209
@ HELICS_UNKNOWN
unknown state
Definition: CoreTypes.hpp:29
DataType getTypeFromString(std::string_view typeName)
Definition: helicsTypes.cpp:219
@ HELICS_ERROR_INVALID_FUNCTION_CALL
Definition: helics_enums.h:218
HelicsBool helicsIsCoreTypeAvailable(const char *type)
Definition: helicsExport.cpp:107
@ DEFAULT
ZMQ if available or UDP.
Definition: data_view.hpp:22
void helicsBrokerSendCommand(HelicsBroker broker, const char *target, const char *command, HelicsError *err)
Definition: helicsExport.cpp:520
const char * helicsCoreGetIdentifier(HelicsCore core)
Definition: helicsExport.cpp:722
constexpr auto versionString
Definition: helicsVersion.hpp:16
void helicsBrokerFree(HelicsBroker broker)
Definition: helicsExport.cpp:863
Definition: core-exceptions.hpp:75
const char * helicsBrokerGetIdentifier(HelicsBroker broker)
Definition: helicsExport.cpp:712
void helicsBrokerDisconnect(HelicsBroker broker, HelicsError *err)
Definition: helicsExport.cpp:819
double vectorNorm(const std::vector< double > &vec)
Definition: helicsTypes.cpp:85
DataType
Definition: helicsTypes.hpp:272
std::shared_ptr< Core > FindOrCreate(CoreType type, const std::string &coreName, std::vector< std::string > args)
Definition: CoreFactory.cpp:189
Definition: core-exceptions.hpp:66
HelicsCore helicsCreateCoreFromArgs(const char *type, const char *name, int argc, const char *const *argv, HelicsError *err)
Definition: helicsExport.cpp:301
HelicsError helicsErrorInitialize(void)
Definition: helicsExport.cpp:48
Definition: core-exceptions.hpp:47
void helicsBrokerClearTimeBarrier(HelicsBroker broker)
Definition: helicsExport.cpp:556
std::string helicsDoubleString(double val)
Definition: helicsTypes.cpp:339
Definition: core/Core.hpp:42
const char * helicsGetCompilerVersion(void)
Definition: helicsExport.cpp:39
Definition: core-exceptions.hpp:84
@ HELICS_ERROR_OTHER
Definition: helics_enums.h:211
void helicsCloseLibrary(void)
Definition: helicsExport.cpp:902
bool changeDetected(const defV &prevValue, const std::string &val, double)
Definition: helicsPrimaryTypes.cpp:16
BrokerObject * getBrokerObject(HelicsBroker broker, HelicsError *err) noexcept
Definition: helicsExport.cpp:221
void * HelicsBroker
Definition: api-data.h:55
void helicsCoreGlobalError(HelicsCore core, int errorCode, const char *errorString, HelicsError *err)
Definition: helicsExport.cpp:574
@ HELICS_ERROR_INVALID_ARGUMENT
Definition: helics_enums.h:228
bool helicsBoolValue(std::string_view val)
Definition: helicsTypes.cpp:626
constexpr double invalidDouble
defined constant for an invalid value as a double
Definition: helicsTypes.hpp:497
std::string helicsVectorString(const std::vector< double > &val)
Definition: helicsTypes.cpp:344
HelicsBroker helicsCreateBrokerFromArgs(const char *type, const char *name, int argc, const char *const *argv, HelicsError *err)
Definition: helicsExport.cpp:412
NamedPoint helicsGetNamedPoint(std::string_view val)
Definition: helicsTypes.cpp:388
Definition: api_objects.h:43
constexpr auto compiler
Definition: helicsVersion.hpp:33
CoreObject * getCoreObject(HelicsCore core, HelicsError *err) noexcept
Definition: helicsExport.cpp:204
void helicsCoreDisconnect(HelicsCore core, HelicsError *err)
Definition: helicsExport.cpp:782
HelicsBool helicsCoreConnect(HelicsCore core, HelicsError *err)
Definition: helicsExport.cpp:764
Definition: api_objects.h:53
std::string helicsComplexString(double real, double imag)
Definition: helicsTypes.cpp:103
naming a set of types that are interchangeable and recognizable inside the HELICS application API and...
HelicsBool helicsBrokerIsValid(HelicsBroker broker)
Definition: helicsExport.cpp:459
void helicsBrokerMakeConnections(HelicsBroker broker, const char *file, HelicsError *err)
Definition: helicsExport.cpp:609
std::int64_t getIntFromString(std::string_view val)
Definition: helicsTypes.cpp:462
HelicsBroker helicsCreateBroker(const char *type, const char *name, const char *initString, HelicsError *err)
Definition: helicsExport.cpp:384
void helicsBrokerAddDestinationFilterToEndpoint(HelicsBroker broker, const char *filter, const char *endpoint, HelicsError *err)
Definition: helicsExport.cpp:596
Definition: api-data.h:160
the main namespace for the helics co-simulation library User functions will be in the helics namespac...
Definition: AsyncFedCallInfo.hpp:14
void helicsClearSignalHandler()
Definition: helicsExport.cpp:79
size_t cleanUpCores()
Definition: CoreFactory.cpp:320
@ HELICS_SEQUENCING_MODE_FAST
Definition: helics_enums.h:365
void helicsBrokerSetLogFile(HelicsBroker broker, const char *logFileName, HelicsError *err)
Definition: helicsExport.cpp:538
void helicsCoreAddSourceFilterToEndpoint(HelicsCore core, const char *filter, const char *endpoint, HelicsError *err)
Definition: helicsExport.cpp:623
constexpr auto buildFlags
Definition: helicsVersion.hpp:30
void helicsAbort(int errorCode, const char *errorString)
Definition: helicsExport.cpp:913
void * HelicsCore
Definition: api-data.h:49
std::complex< double > getComplexFromString(std::string_view val)
Definition: helicsTypes.cpp:444
void helicsCoreSetReadyToInit(HelicsCore core, HelicsError *err)
Definition: helicsExport.cpp:755
const char * helicsGetVersion(void)
Definition: helicsExport.cpp:29
void valueExtract(const defV &dv, std::string &val)
Definition: helicsPrimaryTypes.cpp:174
void helicsFederateFree(HelicsFederate fed)
Definition: helicsExport.cpp:873
void helicsBrokerAddSourceFilterToEndpoint(HelicsBroker broker, const char *filter, const char *endpoint, HelicsError *err)
Definition: helicsExport.cpp:583
std::shared_ptr< Broker > create(CoreType type, const std::string &configureString)
Definition: BrokerFactory.cpp:98
std::vector< double > helicsGetVector(std::string_view val)
Definition: helicsTypes.cpp:374
void helicsCoreAddDestinationFilterToEndpoint(HelicsCore core, const char *filter, const char *endpoint, HelicsError *err)
Definition: helicsExport.cpp:636
HelicsBool helicsBrokerWaitForDisconnect(HelicsBroker broker, int msToWait, HelicsError *err)
Definition: helicsExport.cpp:799
void helicsBrokerSetGlobal(HelicsBroker broker, const char *valueName, const char *value, HelicsError *err)
Definition: helicsExport.cpp:507
Definition: core/Broker.hpp:18
void helicsBrokerGlobalError(HelicsBroker broker, int errorCode, const char *errorString, HelicsError *err)
Definition: helicsExport.cpp:565
void helicsLoadSignalHandler()
Definition: helicsExport.cpp:74
HelicsBool helicsCoreIsConnected(HelicsCore core)
Definition: helicsExport.cpp:663
constexpr LocalFederateId gLocalCoreId(-259)
std::string helicsNamedPointString(const NamedPoint &point)
Definition: helicsTypes.cpp:359
const char * helicsBrokerGetAddress(HelicsBroker broker)
Definition: helicsExport.cpp:733
const char * helicsCoreGetAddress(HelicsCore core)
Definition: helicsExport.cpp:744
void helicsCoreMakeConnections(HelicsCore core, const char *file, HelicsError *err)
Definition: helicsExport.cpp:649
HelicsBool helicsCoreIsValid(HelicsCore core)
Definition: helicsExport.cpp:351
double getDoubleFromString(std::string_view val)
Definition: helicsTypes.cpp:473
int32_t error_code
Definition: api-data.h:161
void helicsCoreSetLogFile(HelicsCore core, const char *logFileName, HelicsError *err)
Definition: helicsExport.cpp:703
HelicsFederate helicsGetFederateByName(const char *fedName, HelicsError *err)
Definition: helicsExport.cpp:360
Definition: core-exceptions.hpp:18
HelicsBool helicsCoreWaitForDisconnect(HelicsCore core, int msToWait, HelicsError *err)
Definition: helicsExport.cpp:809
@ HELICS_ERROR_SYSTEM_FAILURE
Definition: helics_enums.h:224
void helicsBrokerDestroy(HelicsBroker broker)
Definition: helicsExport.cpp:841
int HelicsBool
Definition: api-data.h:102
void helicsBrokerDataLink(HelicsBroker broker, const char *source, const char *target, HelicsError *err)
Definition: helicsExport.cpp:479
std::complex< double > helicsGetComplex(std::string_view val)
Definition: helicsTypes.cpp:275