 |
helics
2.8.1
|
Go to the documentation of this file.
8 #include "../core/core-data.hpp"
9 #include "helics_cxx_export.h"
51 template<
typename BaseType,
identifiers ID, BaseType inval
idValue>
58 using underlyingType = BaseType;
75 BaseType
value() const noexcept {
return ivalue; };
83 bool isValid() const noexcept {
return (ivalue !=
invalidValue); }
90 template<
typename BaseType, helics::
identifiers ID, BaseType inval
idValue>
91 struct hash<
helics::identifier_id_t<BaseType, ID, invalidValue>> {
98 return std::hash<BaseType>{}(key.value());
104 using publication_id_t =
105 identifier_id_t<identifier_type, identifiers::publication, invalid_id_value>;
106 using input_id_t = identifier_id_t<identifier_type, identifiers::input, invalid_id_value>;
108 using query_id_t = identifier_id_t<identifier_type, identifiers::query, invalid_id_value>;
115 std::numeric_limits<double>::quiet_NaN();
126 return ((std::isnan(
value)) && (std::isnan(np.
value))) ?
152 return typeid(X).name();
154 namespace typestrings {
155 constexpr
auto svecstr =
"string_vector";
156 constexpr
auto dvecstr =
"double_vector";
157 constexpr
auto cvecstr =
"complex_vector";
159 constexpr
auto doublestr =
"double";
160 constexpr
auto floatstr =
"float";
161 constexpr
auto boolstr =
"bool";
163 constexpr
auto charstr =
"char";
164 constexpr
auto ucharstr =
"uchar";
165 constexpr
auto i32str =
"int32";
166 constexpr
auto ui32str =
"uint32";
167 constexpr
auto i64str =
"int64";
168 constexpr
auto ui64str =
"uint64";
170 constexpr
auto cfloatstr =
"complex_f";
171 constexpr
auto cdoublestr =
"complex";
172 constexpr
auto npstr =
"named_point";
173 constexpr
auto strstr =
"string";
177 inline constexpr
const char* typeNameString<std::vector<std::string>>()
179 return typestrings::svecstr;
182 inline constexpr
const char* typeNameString<std::vector<double>>()
184 return typestrings::dvecstr;
188 inline constexpr
const char* typeNameString<std::vector<std::complex<double>>>()
190 return typestrings::cvecstr;
197 return typestrings::doublestr;
204 return typestrings::floatstr;
211 return typestrings::boolstr;
218 return typestrings::charstr;
224 return typestrings::ucharstr;
228 inline constexpr
const char* typeNameString<std::int32_t>()
230 return typestrings::i32str;
234 inline constexpr
const char* typeNameString<std::uint32_t>()
236 return typestrings::ui32str;
242 return typestrings::i64str;
246 inline constexpr
const char* typeNameString<std::uint64_t>()
248 return typestrings::ui64str;
252 inline constexpr
const char* typeNameString<std::complex<float>>()
254 return typestrings::cfloatstr;
258 inline constexpr
const char* typeNameString<std::complex<double>>()
260 return typestrings::cdoublestr;
263 inline constexpr
const char* typeNameString<std::string>()
265 return typestrings::strstr;
269 inline constexpr
const char* typeNameString<NamedPoint>()
271 return typestrings::npstr;
290 helics_unknown = 262355,
294 inline constexpr
bool isRawType(
data_type type)
296 return (type == data_type::helics_any) || (type == data_type::helics_custom);
317 HELICS_CXX_EXPORT std::string
326 HELICS_CXX_EXPORT std::complex<double>
helicsGetComplex(
const std::string& val);
328 HELICS_CXX_EXPORT std::vector<double>
helicsGetVector(
const std::string& val);
336 std::vector<std::complex<double>>&
data);
347 HELICS_CXX_EXPORT
double vectorNorm(
const std::vector<double>& vec);
349 HELICS_CXX_EXPORT
double vectorNorm(
const std::vector<std::complex<double>>& vec);
361 const std::vector<std::complex<double>>& val);
372 return data_type::helics_custom;
376 constexpr
data_type helicsType<int64_t>()
378 return data_type::helics_int;
384 return data_type::helics_bool;
388 constexpr
data_type helicsType<std::string>()
390 return data_type::helics_string;
394 constexpr
data_type helicsType<NamedPoint>()
396 return data_type::helics_named_point;
401 return data_type::helics_double;
407 return data_type::helics_time;
411 constexpr
data_type helicsType<std::complex<double>>()
413 return data_type::helics_complex;
417 constexpr
data_type helicsType<std::vector<double>>()
419 return data_type::helics_vector;
423 constexpr
data_type helicsType<std::vector<std::complex<double>>>()
425 return data_type::helics_complex_vector;
430 constexpr
bool isConvertableType()
436 constexpr
bool isConvertableType<float>()
442 constexpr
bool isConvertableType<long double>()
448 constexpr
bool isConvertableType<int32_t>()
454 constexpr
bool isConvertableType<int16_t>()
460 constexpr
bool isConvertableType<uint16_t>()
466 constexpr
bool isConvertableType<char>()
472 constexpr
bool isConvertableType<unsigned char>()
478 constexpr
bool isConvertableType<uint64_t>()
494 constexpr
double invalidValue<double>()
500 constexpr int64_t invalidValue<int64_t>()
502 return (std::numeric_limits<int64_t>::min)();
506 constexpr uint64_t invalidValue<uint64_t>()
508 return (std::numeric_limits<uint64_t>::max)();
512 constexpr
Time invalidValue<Time>()
514 return Time::minVal();
518 inline NamedPoint invalidValue<NamedPoint>()
520 return {std::string(), std::nan(
"0")};
524 constexpr std::complex<double> invalidValue<std::complex<double>>()
526 return {invalidValue<double>(), 0.0};
532 constexpr
int primaryType = 0;
533 constexpr
int convertibleType = 1;
534 constexpr
int nonConvertibleType = 2;
541 std::conditional_t<helicsType<remove_cv_ref<X>>() != data_type::helics_custom,
542 std::integral_constant<int, primaryType>,
544 std::integral_constant<int, convertibleType>,
545 std::integral_constant<int, nonConvertibleType>>>;
std::string generateJsonString(const Json::Value &block)
Definition: JsonProcessingFunctions.cpp:97
@ data
print timing+data transmissions
Definition: loggingHelper.hpp:30
BaseType value() const noexcept
Definition: helicsTypes.hpp:75
@ helics_data_type_raw
Definition: helics_enums.h:71
std::string name
the text value for the named point
Definition: helicsTypes.hpp:113
Definition: helicsTypes.hpp:111
std::uint32_t identifier_type
specify the underlying type used in the identifiers
Definition: helicsTypes.hpp:21
bool operator==(identifier_id_t id) const noexcept
Definition: helicsTypes.hpp:77
Definition: core-data.hpp:31
std::size_t result_type
the result type of the hash code
Definition: helicsTypes.hpp:94
std::string helicsComplexVectorString(const std::vector< std::complex< double >> &val)
Definition: helicsTypes.cpp:282
constexpr const char * typeNameString< unsigned char >()
Definition: helicsTypes.hpp:222
X invalidValue()
Definition: helicsTypes.hpp:485
Definition: ValueConverter.hpp:26
constexpr data_type helicsType()
Definition: helicsTypes.hpp:370
constexpr const char * typeNameString()
Definition: helicsTypes.hpp:149
double value
the data value for the named point
Definition: helicsTypes.hpp:114
std::vector< double > helicsGetVector(const std::string &val)
Definition: helicsTypes.cpp:334
TimeRepresentation< count_time< 9 > > Time
Definition: helics-time.hpp:27
double helics_time
Definition: api-data.h:81
identifiers
Definition: helicsTypes.hpp:29
constexpr const char * typeNameString< char >()
Definition: helicsTypes.hpp:216
@ helics_data_type_multi
Definition: helics_enums.h:75
constexpr const char * typeNameString< bool >()
Definition: helicsTypes.hpp:209
constexpr identifier_type invalid_id_value
defining an invalid id value
Definition: helicsTypes.hpp:25
NamedPoint helicsGetNamedPoint(const std::string &val)
Definition: helicsTypes.cpp:348
double vectorNorm(const std::vector< double > &vec)
Definition: helicsTypes.cpp:66
bool operator==(const NamedPoint &np) const
Definition: helicsTypes.hpp:124
@ helics_data_type_any
Definition: helics_enums.h:77
const std::string & typeNameStringRef(data_type type)
Definition: helicsTypes.cpp:27
Definition: api-data.h:137
bool helicsBoolValue(const std::string &val)
Definition: helicsTypes.cpp:528
std::conditional_t< helicsType< remove_cv_ref< X > >() !=data_type::helics_custom, std::integral_constant< int, primaryType >, std::conditional_t< isConvertableType< remove_cv_ref< X > >(), std::integral_constant< int, convertibleType >, std::integral_constant< int, nonConvertibleType > >> typeCategory
Definition: helicsTypes.hpp:545
Definition: helicsTypes.hpp:52
constexpr double invalidDouble
defined constant for an invalid value as a double
Definition: helicsTypes.hpp:491
std::string helicsVectorString(const std::vector< double > &val)
Definition: helicsTypes.cpp:244
result_type operator()(argument_type const &key) const noexcept
Definition: helicsTypes.hpp:96
@ helics_data_type_complex_vector
Definition: helics_enums.h:63
@ helics_data_type_named_point
Definition: helics_enums.h:65
bool operator!=(identifier_id_t id) const noexcept
Definition: helicsTypes.hpp:79
constexpr const char * typeNameString< int64_t >()
Definition: helicsTypes.hpp:240
@ helics_data_type_double
Definition: helics_enums.h:55
@ helics_data_type_int
Definition: helics_enums.h:57
bool operator>(const NamedPoint &np) const
Definition: helicsTypes.hpp:141
std::vector< std::complex< double > > helicsGetComplexVector(const std::string &val)
Definition: helicsTypes.cpp:341
std::remove_cv_t< std::remove_reference_t< T > > remove_cv_ref
Helper template to remove const volatile references.
Definition: helicsTypes.hpp:530
@ helics_data_type_json
Definition: helics_enums.h:73
std::string helicsComplexString(double real, double imag)
Definition: helicsTypes.cpp:79
static const identifiers identity
the type of the identifier
Definition: helicsTypes.hpp:57
@ helics_data_type_string
Definition: helics_enums.h:53
constexpr const char * typeNameString< float >()
Definition: helicsTypes.hpp:202
@ helics_data_type_vector
Definition: helics_enums.h:61
NamedPoint(std::string valname, double valval)
Definition: helicsTypes.hpp:119
the main namespace for the helics co-simulation library User functions will be in the helics namespac...
Definition: AsyncFedCallInfo.hpp:14
data_type
Definition: helicsTypes.hpp:275
@ helics_data_type_complex
Definition: helics_enums.h:59
@ helics_data_type_time
Definition: helics_enums.h:69
double getDoubleFromString(const std::string &val)
Definition: helicsTypes.cpp:416
constexpr identifier_id_t(BaseType val) noexcept
Definition: helicsTypes.hpp:62
std::complex< double > getComplexFromString(const std::string &val)
Definition: helicsTypes.cpp:398
struct helics_complex helics_complex
data_type getTypeFromString(const std::string &typeName)
Definition: helicsTypes.cpp:187
constexpr const char * typeNameString< double >()
Definition: helicsTypes.hpp:195
data_block typeConvert(data_type type, double val)
Definition: helicsTypes.cpp:610
bool operator<(identifier_id_t id) const noexcept
Definition: helicsTypes.hpp:81
constexpr identifier_id_t(const identifier_id_t &id) noexcept
Definition: helicsTypes.hpp:64
interface_visibility
Definition: helicsTypes.hpp:38
std::string helicsNamedPointString(const NamedPoint &point)
Definition: helicsTypes.cpp:300
int helics_bool
Definition: api-data.h:92
constexpr identifier_id_t() noexcept
Definition: helicsTypes.hpp:60
@ helics_data_type_boolean
Definition: helics_enums.h:67
identifier_id_t & operator=(BaseType val) noexcept
Definition: helicsTypes.hpp:66
bool operator<(const NamedPoint &np) const
Definition: helicsTypes.hpp:134
std::complex< double > helicsGetComplex(const std::string &val)
Definition: helicsTypes.cpp:207