58 DiscreteProperty(RESQML2_NS::AbstractRepresentation* rep,
const std::string& guid,
const std::string& title,
59 unsigned int dimension, gsoap_eml2_3::eml23__IndexableElement attachmentKind, EML2_NS::PropertyKind* propKind);
71 DLL_IMPORT_OR_EXPORT std::string
pushBackRefToExistingIntegerDataset(EML2_NS::AbstractHdfProxy* proxy,
const std::string & datasetName, int64_t nullValue, int64_t minimumValue, int64_t maximumValue)
final;
72 using AbstractValuesProperty::pushBackRefToExistingIntegerDataset;
74 DLL_IMPORT_OR_EXPORT int64_t
getNullValue(uint64_t patchIndex = (std::numeric_limits<uint64_t>::max)()) const final;
84 DLL_IMPORT_OR_EXPORT
void setMinimumValue(int64_t value, uint64_t index = 0) const final;
86 DLL_IMPORT_OR_EXPORT
void setMaximumValue(int64_t value, uint64_t index = 0) const final;
92 DLL_IMPORT_OR_EXPORT COMMON_NS::NumberArrayStatistics<int8_t> getInt8Statistics(uint64_t patchIndex)
const final {
return getStats<int8_t>(patchIndex); }
93 DLL_IMPORT_OR_EXPORT COMMON_NS::NumberArrayStatistics<uint8_t> getUInt8Statistics(uint64_t patchIndex)
const final {
return getStats<uint8_t>(patchIndex); }
94 DLL_IMPORT_OR_EXPORT COMMON_NS::NumberArrayStatistics<int16_t> getInt16Statistics(uint64_t patchIndex)
const final {
return getStats<int16_t>(patchIndex); }
95 DLL_IMPORT_OR_EXPORT COMMON_NS::NumberArrayStatistics<uint16_t> getUInt16Statistics(uint64_t patchIndex)
const final {
return getStats<uint16_t>(patchIndex); }
96 DLL_IMPORT_OR_EXPORT COMMON_NS::NumberArrayStatistics<int32_t> getInt32Statistics(uint64_t patchIndex)
const final {
return getStats<int32_t>(patchIndex); }
97 DLL_IMPORT_OR_EXPORT COMMON_NS::NumberArrayStatistics<uint32_t> getUInt32Statistics(uint64_t patchIndex)
const final {
return getStats<uint32_t>(patchIndex); }
98 DLL_IMPORT_OR_EXPORT COMMON_NS::NumberArrayStatistics<int64_t> getInt64Statistics(uint64_t patchIndex)
const final {
return getStats<int64_t>(patchIndex); }
99 DLL_IMPORT_OR_EXPORT COMMON_NS::NumberArrayStatistics<uint64_t> getUInt64Statistics(uint64_t patchIndex)
const final {
return getStats<uint64_t>(patchIndex); }
104 DLL_IMPORT_OR_EXPORT
static const char*
XML_NS;
113 size_t getMinimumValueSize()
const;
114 size_t getMaximumValueSize()
const;
117 COMMON_NS::NumberArrayStatistics<T> getStats(uint64_t patchIndex)
const {
118 auto nullValue = getNullValueOfPatch(patchIndex);
119 if constexpr (std::is_signed_v<T>) {
120 if (nullValue > (std::numeric_limits<T>::max)() || nullValue < (std::numeric_limits<T>::min)()) {
121 nullValue = (std::numeric_limits<T>::max)();
125 if (nullValue > 0 ||
static_cast<uint64_t
>(nullValue) < (std::numeric_limits<T>::min)()) {
126 nullValue = (std::numeric_limits<T>::max)();
129 COMMON_NS::NumberArrayStatistics<T> result;
130 result.setNullValue(
static_cast<T
>(nullValue));
132 const auto* valuesforPatch =
static_cast<gsoap_eml2_3::_resqml22__DiscreteProperty*
>(gsoapProxy2_3)->ValuesForPatch.at(patchIndex);
133 auto const* intArray =
dynamic_cast<gsoap_eml2_3::eml23__AbstractIntegerArray const*
>(valuesforPatch);
134 if (intArray ==
nullptr)
return result;
136 for (
size_t i = 0; i < intArray->Statistics.size(); ++i) {
137 auto const* stats = intArray->Statistics[i];
138 if (stats->MaximumValue) {
139 if constexpr (std::is_signed_v<T>) {
140 if (*stats->MaximumValue > (std::numeric_limits<T>::min)() &&
141 *stats->MaximumValue < (std::numeric_limits<T>::max)()) {
142 result.setMaximum(
static_cast<T
>(*stats->MaximumValue), i);
146 if (*stats->MaximumValue > 0 &&
147 static_cast<uint64_t
>(*stats->MaximumValue) < (std::numeric_limits<T>::max)()) {
148 result.setMaximum(
static_cast<T
>(*stats->MaximumValue), i);
152 if (stats->MinimumValue) {
153 if constexpr (std::is_signed_v<T>) {
154 if (*stats->MinimumValue > (std::numeric_limits<T>::min)() &&
155 *stats->MinimumValue < (std::numeric_limits<T>::max)()) {
156 result.setMinimum(
static_cast<T
>(*stats->MinimumValue), i);
160 if (*stats->MinimumValue > 0 &&
161 static_cast<uint64_t
>(*stats->MinimumValue) < (std::numeric_limits<T>::max)()) {
162 result.setMinimum(
static_cast<T
>(*stats->MinimumValue), i);
166 if (stats->ModePercentage) {
167 result.setModePercentage(*stats->ModePercentage, i);
169 if (stats->ValidValueCount) {
170 result.setValidValueCount(*stats->ValidValueCount, i);
172 if (stats->ValuesMedian) {
173 result.setMedian(*stats->ValuesMedian, i);
175 if (stats->ValuesMode) {
176 if constexpr (std::is_signed_v<T>) {
177 if (*stats->ValuesMode > (std::numeric_limits<T>::min)() &&
178 *stats->ValuesMode < (std::numeric_limits<T>::max)()) {
179 result.setMode(
static_cast<T
>(*stats->ValuesMode), i);
183 if (*stats->ValuesMode > 0 &&
184 static_cast<uint64_t
>(*stats->ValuesMode) < (std::numeric_limits<T>::max)()) {
185 result.setMode(
static_cast<T
>(*stats->ValuesMode), i);