 |
helics
3.3.0
|
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:
248 case DataType::HELICS_CHAR:
251 if (v.find_first_of(
".eE[]") == std::string_view::npos) {
259 case DataType::HELICS_BOOL:
262 case DataType::HELICS_NAMED_POINT: {
264 if (std::isnan(npval.value)) {
266 if (npval.name.find_first_of(
".eE[]") == std::string::npos) {
272 catch (
const std::invalid_argument&) {
273 val =
static_cast<X
>(
275 std::conditional_t<std::is_integral<X>::value, int64_t,
double>>());
278 val =
static_cast<X
>(npval.value);
283 case DataType::HELICS_DOUBLE: {
285 val =
static_cast<X
>(V);
288 case DataType::HELICS_INT: {
290 val =
static_cast<X
>(V);
293 case DataType::HELICS_TIME: {
296 val = std::is_integral<X>::value ?
static_cast<X
>(vtime.getBaseTimeCode()) :
297 static_cast<X
>(
static_cast<double>(vtime));
300 case DataType::HELICS_VECTOR: {
303 val =
static_cast<X
>(V[0]);
309 case DataType::HELICS_COMPLEX: {
312 val =
static_cast<X
>((V.imag() != 0) ? std::abs(V) : V.real());
315 case DataType::HELICS_COMPLEX_VECTOR: {
318 if (V[0].imag() == 0) {
319 val =
static_cast<X
>(V[0].real());
321 val =
static_cast<X
>(std::abs(V[0]));
329 case DataType::HELICS_JSON:
332 case DataType::HELICS_CUSTOM:
333 throw(std::invalid_argument(
"unrecognized helics type"));
337 HELICS_CXX_EXPORT
void valueConvert(
defV& val,
DataType newType);
339 HELICS_CXX_EXPORT SmallBuffer typeConvertDefV(
DataType type,
const defV& val);
340 HELICS_CXX_EXPORT SmallBuffer typeConvertDefV(
const defV& val);
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:756
Common functions for the HELICS C api.
std::string helicsIntString(std::int64_t val)
Definition: helicsTypes.cpp:353
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:246
double HelicsTime
Definition: api-data.h:100
HelicsCore helicsCoreClone(HelicsCore core, HelicsError *err)
Definition: helicsExport.cpp:431
const char * helicsGetBuildFlags(void)
Definition: helicsExport.cpp:36
const HelicsBool HELICS_FALSE
Definition: api-data.h:115
void helicsCoreFree(HelicsCore core)
Definition: helicsExport.cpp:924
FedObject * getFedObject(HelicsFederate fed, HelicsError *err) noexcept
Definition: FederateExport.cpp:29
const HelicsBool HELICS_TRUE
Definition: api-data.h:114
std::string name
the text value for the named point
Definition: helicsTypes.hpp:112
Definition: helicsTypes.hpp:110
@ HELICS_SEQUENCING_MODE_ORDERED
Definition: helics_enums.h:399
void helicsErrorClear(HelicsError *err)
Definition: helicsExport.cpp:66
void helicsFederateDestroy(HelicsFederate fed)
Definition: helicsExport.cpp:906
void helicsBrokerSetTimeBarrier(HelicsBroker broker, HelicsTime barrierTime, HelicsError *err)
Definition: helicsExport.cpp:618
CoreType
Definition: CoreTypes.hpp:36
Definition: core-exceptions.hpp:39
static X interpret(const data_view &block)
Definition: ValueConverter.hpp:147
void helicsCoreDestroy(HelicsCore core)
Definition: helicsExport.cpp:918
const char * message
Definition: api-data.h:171
Definition: core-exceptions.hpp:94
int64_t make_valid(bool obj)
Definition: HelicsPrimaryTypes.hpp:65
std::string helicsComplexVectorString(const std::vector< std::complex< double >> &val)
Definition: helicsTypes.cpp:373
HelicsBroker helicsBrokerClone(HelicsBroker broker, HelicsError *err)
Definition: helicsExport.cpp:516
X invalidValue()
Definition: helicsTypes.hpp:493
Definition: ValueConverter.hpp:113
HelicsBool helicsBrokerIsConnected(HelicsBroker broker)
Definition: helicsExport.cpp:539
void * HelicsFederate
Definition: api-data.h:65
void helicsLoadSignalHandlerCallbackNoExit(HelicsBool(*handler)(int), HelicsBool useSeparateThread)
Definition: helicsExport.cpp:183
@ HELICS_ERROR_INVALID_OBJECT
Definition: helics_enums.h:238
std::vector< std::complex< double > > helicsGetComplexVector(std::string_view val)
Definition: helicsTypes.cpp:400
double value
the data value for the named point
Definition: helicsTypes.hpp:113
void helicsCoreSetGlobal(HelicsCore core, const char *valueName, const char *value, HelicsError *err)
Definition: helicsExport.cpp:743
size_t cleanUpBrokers()
Definition: BrokerFactory.cpp:266
@ HELICS_ERROR_REGISTRATION_FAILURE
Definition: helics_enums.h:242
void helicsFederateFinalize(HelicsFederate fed, HelicsError *err)
Definition: FederateExport.cpp:719
TimeRepresentation< count_time< 9 > > Time
Definition: helicsTime.hpp:27
void helicsCoreDataLink(HelicsCore core, const char *source, const char *target, HelicsError *err)
Definition: helicsExport.cpp:563
@ HELICS_ERROR_CONNECTION_FAILURE
Definition: helics_enums.h:240
HelicsCore helicsCreateCore(const char *type, const char *name, const char *initString, HelicsError *err)
Definition: helicsExport.cpp:361
@ HELICS_ERROR_EXTERNAL_TYPE
Definition: helics_enums.h:216
DataType getTypeFromString(std::string_view typeName)
Definition: helicsTypes.cpp:238
@ HELICS_ERROR_INVALID_FUNCTION_CALL
Definition: helics_enums.h:226
HelicsBool helicsIsCoreTypeAvailable(const char *type)
Definition: helicsExport.cpp:202
@ 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:591
const char * helicsCoreGetIdentifier(HelicsCore core)
Definition: helicsExport.cpp:793
std::shared_ptr< Broker > create(CoreType type, std::string_view configureString)
Definition: BrokerFactory.cpp:99
constexpr auto versionString
Definition: helicsVersion.hpp:18
void helicsBrokerFree(HelicsBroker broker)
Definition: helicsExport.cpp:934
Definition: core-exceptions.hpp:76
const char * helicsBrokerGetIdentifier(HelicsBroker broker)
Definition: helicsExport.cpp:783
void helicsBrokerDisconnect(HelicsBroker broker, HelicsError *err)
Definition: helicsExport.cpp:890
double vectorNorm(const std::vector< double > &vec)
Definition: helicsTypes.cpp:103
DataType
Definition: helicsTypes.hpp:273
Definition: core-exceptions.hpp:67
HelicsCore helicsCreateCoreFromArgs(const char *type, const char *name, int argc, const char *const *argv, HelicsError *err)
Definition: helicsExport.cpp:396
HelicsError helicsErrorInitialize(void)
Definition: helicsExport.cpp:57
Definition: core-exceptions.hpp:48
void helicsBrokerClearTimeBarrier(HelicsBroker broker)
Definition: helicsExport.cpp:627
std::string helicsDoubleString(double val)
Definition: helicsTypes.cpp:358
Definition: core/Core.hpp:41
const char * helicsGetCompilerVersion(void)
Definition: helicsExport.cpp:41
Definition: core-exceptions.hpp:85
@ HELICS_ERROR_OTHER
Definition: helics_enums.h:218
void helicsCloseLibrary(void)
Definition: helicsExport.cpp:973
bool changeDetected(const defV &prevValue, const std::string &val, double)
Definition: helicsPrimaryTypes.cpp:16
BrokerObject * getBrokerObject(HelicsBroker broker, HelicsError *err) noexcept
Definition: helicsExport.cpp:316
void * HelicsBroker
Definition: api-data.h:60
void helicsCoreGlobalError(HelicsCore core, int errorCode, const char *errorString, HelicsError *err)
Definition: helicsExport.cpp:645
std::shared_ptr< Core > FindOrCreate(CoreType type, std::string_view coreName, std::vector< std::string > args)
Definition: CoreFactory.cpp:219
@ HELICS_ERROR_INVALID_ARGUMENT
Definition: helics_enums.h:236
bool helicsBoolValue(std::string_view val)
Definition: helicsTypes.cpp:645
constexpr double invalidDouble
defined constant for an invalid value as a double
Definition: helicsTypes.hpp:499
std::string helicsVectorString(const std::vector< double > &val)
Definition: helicsTypes.cpp:363
HelicsBroker helicsCreateBrokerFromArgs(const char *type, const char *name, int argc, const char *const *argv, HelicsError *err)
Definition: helicsExport.cpp:483
NamedPoint helicsGetNamedPoint(std::string_view val)
Definition: helicsTypes.cpp:407
Definition: api_objects.h:48
constexpr auto compiler
Definition: helicsVersion.hpp:35
CoreObject * getCoreObject(HelicsCore core, HelicsError *err) noexcept
Definition: helicsExport.cpp:299
const char * helicsGetSystemInfo(void)
Definition: helicsExport.cpp:46
void helicsCoreDisconnect(HelicsCore core, HelicsError *err)
Definition: helicsExport.cpp:853
void helicsBrokerSendOrderedCommand(HelicsBroker broker, const char *target, const char *command, HelicsError *err)
Definition: helicsExport.cpp:600
void cleanupHelicsLibrary()
Definition: Federate.cpp:38
HelicsBool helicsCoreConnect(HelicsCore core, HelicsError *err)
Definition: helicsExport.cpp:835
Definition: api_objects.h:58
std::string helicsComplexString(double real, double imag)
Definition: helicsTypes.cpp:121
naming a set of types that are interchangeable and recognizable inside the HELICS application API and...
HelicsBool helicsBrokerIsValid(HelicsBroker broker)
Definition: helicsExport.cpp:530
void helicsBrokerMakeConnections(HelicsBroker broker, const char *file, HelicsError *err)
Definition: helicsExport.cpp:680
std::int64_t getIntFromString(std::string_view val)
Definition: helicsTypes.cpp:481
HelicsBroker helicsCreateBroker(const char *type, const char *name, const char *initString, HelicsError *err)
Definition: helicsExport.cpp:455
SmallBuffer typeConvert(DataType type, double val)
Definition: helicsTypes.cpp:732
void helicsBrokerAddDestinationFilterToEndpoint(HelicsBroker broker, const char *filter, const char *endpoint, HelicsError *err)
Definition: helicsExport.cpp:667
Definition: api-data.h:169
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:113
size_t cleanUpCores()
Definition: CoreFactory.cpp:349
@ HELICS_SEQUENCING_MODE_FAST
Definition: helics_enums.h:397
void helicsBrokerSetLogFile(HelicsBroker broker, const char *logFileName, HelicsError *err)
Definition: helicsExport.cpp:609
void helicsLoadSignalHandlerCallback(HelicsBool(*handler)(int), HelicsBool useSeparateThread)
Definition: helicsExport.cpp:164
void helicsCoreAddSourceFilterToEndpoint(HelicsCore core, const char *filter, const char *endpoint, HelicsError *err)
Definition: helicsExport.cpp:694
constexpr auto buildFlags
Definition: helicsVersion.hpp:32
void helicsAbort(int errorCode, const char *errorString)
Definition: helicsExport.cpp:983
void * HelicsCore
Definition: api-data.h:54
std::string systemInfo()
Definition: helicsVersion.cpp:195
void helicsCoreSendOrderedCommand(HelicsCore core, const char *target, const char *command, HelicsError *err)
Definition: helicsExport.cpp:765
std::complex< double > getComplexFromString(std::string_view val)
Definition: helicsTypes.cpp:463
void helicsCoreSetReadyToInit(HelicsCore core, HelicsError *err)
Definition: helicsExport.cpp:826
const char * helicsGetVersion(void)
Definition: helicsExport.cpp:31
void valueExtract(const defV &dv, std::string &val)
Definition: helicsPrimaryTypes.cpp:174
void helicsFederateFree(HelicsFederate fed)
Definition: helicsExport.cpp:944
void helicsBrokerAddSourceFilterToEndpoint(HelicsBroker broker, const char *filter, const char *endpoint, HelicsError *err)
Definition: helicsExport.cpp:654
std::vector< double > helicsGetVector(std::string_view val)
Definition: helicsTypes.cpp:393
void helicsCoreAddDestinationFilterToEndpoint(HelicsCore core, const char *filter, const char *endpoint, HelicsError *err)
Definition: helicsExport.cpp:707
HelicsBool helicsBrokerWaitForDisconnect(HelicsBroker broker, int msToWait, HelicsError *err)
Definition: helicsExport.cpp:870
void helicsBrokerSetGlobal(HelicsBroker broker, const char *valueName, const char *value, HelicsError *err)
Definition: helicsExport.cpp:578
Definition: core/Broker.hpp:18
void helicsBrokerGlobalError(HelicsBroker broker, int errorCode, const char *errorString, HelicsError *err)
Definition: helicsExport.cpp:636
void helicsLoadSignalHandler()
Definition: helicsExport.cpp:103
HelicsBool helicsCoreIsConnected(HelicsCore core)
Definition: helicsExport.cpp:734
constexpr LocalFederateId gLocalCoreId(-259)
std::string helicsNamedPointString(const NamedPoint &point)
Definition: helicsTypes.cpp:378
const char * helicsBrokerGetAddress(HelicsBroker broker)
Definition: helicsExport.cpp:804
void helicsLoadThreadedSignalHandler()
Definition: helicsExport.cpp:108
const char * helicsCoreGetAddress(HelicsCore core)
Definition: helicsExport.cpp:815
void helicsCoreMakeConnections(HelicsCore core, const char *file, HelicsError *err)
Definition: helicsExport.cpp:720
HelicsBool helicsCoreIsValid(HelicsCore core)
Definition: helicsExport.cpp:446
double getDoubleFromString(std::string_view val)
Definition: helicsTypes.cpp:492
int32_t error_code
Definition: api-data.h:170
void helicsCoreSetLogFile(HelicsCore core, const char *logFileName, HelicsError *err)
Definition: helicsExport.cpp:774
Definition: core-exceptions.hpp:18
HelicsBool helicsCoreWaitForDisconnect(HelicsCore core, int msToWait, HelicsError *err)
Definition: helicsExport.cpp:880
@ HELICS_ERROR_SYSTEM_FAILURE
Definition: helics_enums.h:232
void helicsBrokerDestroy(HelicsBroker broker)
Definition: helicsExport.cpp:912
int HelicsBool
Definition: api-data.h:112
void helicsBrokerDataLink(HelicsBroker broker, const char *source, const char *target, HelicsError *err)
Definition: helicsExport.cpp:550
std::complex< double > helicsGetComplex(std::string_view val)
Definition: helicsTypes.cpp:294