33#ifndef WOSS_DB_CUSTOM_DATA_CONTAINER_H
34#define WOSS_DB_CUSTOM_DATA_CONTAINER_H
64 template <
class T,
class M
idFunctor,
class InFunctor,
class Data,
class OutComp = std::less<T>,
class M
idComp = std::less<
double>,
class InComp = std::less<
double> >
72 using InnerData =
typename std::map< double, Data, InComp >;
81 using MediumData =
typename std::map< double, InnerData, MidComp >;
91 using CDCIt =
typename CustomContainer::iterator;
92 using CDCRIt =
typename CustomContainer::reverse_iterator;
93 using CDCCIt =
typename CustomContainer::const_iterator;
94 using CDCCRIt =
typename CustomContainer::const_reverse_iterator;
98 #if __cplusplus >= 201103L
162 const std::optional< Data >
get(
const T& tx,
const T& rx )
const;
252 template <
class T,
class M
idFunctor,
class InFunctor,
class Data,
class OutComp,
class M
idComp,
class InComp >
256 template <
class T,
class M
idFunctor,
class InFunctor,
class Data,
class OutComp,
class M
idComp,
class InComp >
262 std::cout <<
"CustomDataContainer::get() t = " << t <<
"; b = " << b <<
"; r = " << r << std::endl;
278 if ( it2 == it->second.end() ) {
279 if( rit2 == it->second.rend() )
281 it3 = rit2->second.lower_bound( r );
282 rit3 = rit2->second.rbegin();
283 if ( it3 != rit2->second.end() )
285 if ( rit3 != rit2->second.rend() )
290 it3 = it2->second.lower_bound( r );
291 rit3 = it2->second.rbegin();
292 if ( it3 != it2->second.end() )
294 if ( rit3 != it2->second.rend() )
298 if ( it3 == it2->second.end() )
300 return (it3->second);
304 template <
class T,
class M
idFunctor,
class InFunctor,
class Data,
class OutComp,
class M
idComp,
class InComp >
306 MidFunctor mid_funct;
313 double min_dist = INFINITY;
314 std::optional< Data > ret_val = {};
317 if (
debug ) std::cout <<
"CustomDataContainer::get() data_map is empty " << std::endl;
324 std::cout <<
"CustomDataContainer::get() start T = " << it->first <<
"; end T = " << rx << std::endl;
328 std::cout <<
"CustomDataContainer::get() overriding start T = " << tx <<
"; end T = " << rx << std::endl;
330 curr_b = mid_funct(tx,rx);
331 curr_r = in_funct(tx,rx);
334 curr_b = mid_funct(it->first,rx);
335 curr_r = in_funct(it->first,rx);
339 std::cout <<
"CustomDataContainer::get() curr bearing = " << curr_b * 180.0 / M_PI
340 <<
"; curr range = " << curr_r << std::endl;
342 auto itb = it->second.cbegin();
346 itb = it->second.lower_bound( curr_b );
347 if ( itb == it->second.cend() )
348 itb = (++(it->second.rbegin())).base();
350 delta_b = curr_b - itb->first;
354 delta_b = 2.0*M_PI - delta_b ;
357 double ort_dist = curr_r * sin(delta_b);
358 double ort_projection = std::sqrt( curr_r*curr_r - ort_dist*ort_dist );
361 std::cout <<
"CustomDataContainer::get() nearest bearing = " << itb->first * 180.0 / M_PI
362 <<
"; diff bearing = " << delta_b * 180.0 / M_PI <<
"; orthog distance = " << ort_dist
363 <<
"; orthog range projection = " << ort_projection << std::endl;
365 auto itr = itb->second.cbegin();
367 curr_dist = ort_dist;
369 itr = itb->second.lower_bound( ort_projection );
370 if ( itr == itb->second.cbegin() || itr == itb->second.cend() || itr->first == ort_projection ) {
371 if ( itr == itb->second.cend() )
372 itr = (++(itb->second.rbegin())).base();
373 double adj_distance = std::abs( ort_projection - itr->first );
374 curr_dist = std::sqrt( ort_projection*ort_projection + adj_distance*adj_distance );
377 double adj_distance = std::abs( ort_projection - itr->first );
378 double first_dist = std::sqrt( ort_projection*ort_projection + adj_distance*adj_distance );
381 std::cout <<
"CustomDataContainer::get() first try, range = " << itr->first
382 <<
"; dist = " << first_dist << std::endl;
385 adj_distance = std::abs( ort_projection - itr->first );
386 double before_dist = std::sqrt( ort_projection*ort_projection + adj_distance*adj_distance );
389 std::cout <<
"CustomDataContainer::get() second try, range = " << itr->first
390 <<
"; dist = " << before_dist << std::endl;
392 curr_dist = std::min( first_dist, before_dist );
393 if ( curr_dist == first_dist )
398 std::cout <<
"CustomDataContainer::get() nearest range = " << itr->first <<
"; distance = " << curr_dist
399 <<
"; min distance = " << min_dist << std::endl;
401 if ( curr_dist < min_dist ) {
402 min_dist = curr_dist;
403 ret_val = itr->second;
404 if ( curr_dist == 0 )
410 if (
debug && ret_val )
411 std::cout <<
"CustomDataContainer::get() ret value " << *ret_val << std::endl;
417 template <
class T,
class M
idFunctor,
class InFunctor,
class Data,
class OutComp,
class M
idComp,
class InComp >
421 std::cout <<
"CustomDataContainer::find() << t = " << t <<
"; b = " << b <<
"; r = " << r << std::endl;
427 std::cout <<
"CustomDataContainer::find() t not found" << std::endl;
433 std::cout <<
"CustomDataContainer::find() t found" << std::endl;
436 if ( it2 == it->second.end() ) {
438 std::cout <<
"CustomDataContainer::find() b not found" << std::endl;
444 std::cout <<
"CustomDataContainer::find() b found" << std::endl;
447 if ( it3 == it2->second.end() ) {
450 std::cout <<
"CustomDataContainer::find() r not found" << std::endl;
455 std::cout <<
"CustomDataContainer::find() r found, data = " << it3->second << std::endl;
460 template <
class T,
class M
idFunctor,
class InFunctor,
class Data,
class OutComp,
class M
idComp,
class InComp >
462 auto res =
find( t, b, r );
470 template <
class T,
class M
idFunctor,
class InFunctor,
class Data,
class OutComp,
class M
idComp,
class InComp >
477 template <
class T,
class M
idFunctor,
class InFunctor,
class Data,
class OutComp,
class M
idComp,
class InComp >
487 template <
class T,
class M
idFunctor,
class InFunctor,
class Data,
class OutComp,
class M
idComp,
class InComp >
500 template <
class T,
class M
idFunctor,
class InFunctor,
class Data,
class OutComp = std::less<T>,
class M
idComp = std::less<
double>,
class InComp = std::less<
double> >
508 using TimeData =
typename std::map< time_t, Data >;
517 using InnerData =
typename std::map< double, TimeData, InComp >;
526 using MediumData =
typename std::map< double, InnerData, MidComp >;
536 using CDCIt =
typename CustomContainer::iterator;
537 using CDCRIt =
typename CustomContainer::reverse_iterator;
538 using CDCCIt =
typename CustomContainer::const_iterator;
539 using CDCCRIt =
typename CustomContainer::const_reverse_iterator;
715 template <
class T,
class M
idFunctor,
class InFunctor,
class Data,
class OutComp,
class M
idComp,
class InComp >
719 template <
class T,
class M
idFunctor,
class InFunctor,
class Data,
class OutComp,
class M
idComp,
class InComp >
720 const Time CustomDataTimeContainer< T, MidFunctor, InFunctor, Data, OutComp, MidComp, InComp >::DB_CDATA_ALL_TIME_KEYS =
Time(1, 1, 1901, 0, 0, 0);
723 template <
class T,
class M
idFunctor,
class InFunctor,
class Data,
class OutComp,
class M
idComp,
class InComp >
729 std::cout <<
"CustomDataTimeContainer::get() t = " << t <<
"; b = " << b <<
"; r = " << r
730 <<
"; time_key = " << time_key << std::endl;
732 auto ret_val =
find();
746 if ( it2 == it->second.end() ) {
747 if ( rit2 == it->second.rend() )
749 it3 = rit2->second.lower_bound( r );
750 rit3 = rit2->second.rbegin();
751 if ( it3 != rit2->second.end() )
753 if ( rit3 != rit2->second.rend() )
758 it3 = it2->second.lower_bound( r );
759 rit3 = it2->second.rbegin();
760 if ( it3 != it2->second.end() )
762 if ( rit3 != it2->second.rend() )
766 if ( it3 == it2->second.end() )
772 template <
class T,
class M
idFunctor,
class InFunctor,
class Data,
class OutComp,
class M
idComp,
class InComp >
774 MidFunctor mid_funct;
782 double min_dist = INFINITY;
786 std::cout <<
"CustomDataTimeContainer::get() data_map is empty " << std::endl;
790 const TimeData* time_data_ptr =
nullptr;
794 std::cout <<
"CustomDataTimeContainer::get() start T = " << it->first <<
"; end T = " << rx << std::endl;
798 std::cout <<
"CustomDataTimeContainer::get() overriding start T = " << tx <<
"; end T = " << rx << std::endl;
800 curr_b = mid_funct(tx,rx);
801 curr_r = in_funct(tx,rx);
804 curr_b = mid_funct(it->first,rx);
805 curr_r = in_funct(it->first,rx);
809 std::cout <<
"CustomDataTimeContainer::get() curr bearing = " << curr_b * 180.0 / M_PI
810 <<
"; curr range = " << curr_r << std::endl;
816 itb = it->second.lower_bound( curr_b );
817 if ( itb == it->second.end() )
818 itb = (++(it->second.rbegin())).base();
820 delta_b = curr_b - itb->first;
824 delta_b = 2.0*M_PI - delta_b ;
827 double ort_dist = curr_r * sin(delta_b);
828 double ort_projection = std::sqrt( curr_r*curr_r - ort_dist*ort_dist );
831 std::cout <<
"CustomDataTimeContainer::get() nearest bearing = " << itb->first * 180.0 / M_PI
832 <<
"; diff bearing = " << delta_b * 180.0 / M_PI <<
"; orthog distance = " << ort_dist
833 <<
"; orthog range projection = " << ort_projection << std::endl;
837 curr_dist = ort_dist;
839 itr = itb->second.lower_bound( ort_projection );
840 if ( itr == itb->second.begin() || itr == itb->second.end() || itr->first == ort_projection ) {
841 if ( itr == itb->second.end() ) itr = (++(itb->second.rbegin())).base();
842 double adj_distance = std::abs( ort_projection - itr->first );
843 curr_dist = std::sqrt( ort_projection*ort_projection + adj_distance*adj_distance );
846 double adj_distance = std::abs( ort_projection - itr->first );
847 double first_dist = std::sqrt( ort_projection*ort_projection + adj_distance*adj_distance );
850 std::cout <<
"CustomDataTimeContainer::get() first try, range = " << itr->first
851 <<
"; dist = " << first_dist << std::endl;
854 adj_distance = std::abs( ort_projection - itr->first );
855 double before_dist = std::sqrt( ort_projection*ort_projection + adj_distance*adj_distance );
858 std::cout <<
"CustomDataTimeContainer::get() second try, range = " << itr->first
859 <<
"; dist = " << before_dist << std::endl;
861 curr_dist = std::min( first_dist, before_dist );
862 if ( curr_dist == first_dist )
867 std::cout <<
"CustomDataTimeContainer::get() nearest range = " << itr->first <<
"; distance = " << curr_dist
868 <<
"; min distance = " << min_dist << std::endl;
870 if ( curr_dist < min_dist ) {
871 min_dist = curr_dist;
872 time_data_ptr = &(itr->second);
873 if ( curr_dist == 0 )
879 if ( time_data_ptr !=
nullptr )
885 template <
class T,
class M
idFunctor,
class InFunctor,
class Data,
class OutComp,
class M
idComp,
class InComp >
888 std::cout <<
"CustomDataTimeContainer::find() << t = " << t <<
"; b = " << b <<
"; r = "
889 << r <<
"; time_key = " << time_key << std::endl;
895 std::cout <<
"CustomDataTimeContainer::find() t not found" << std::endl;
900 if (
debug ) std::cout <<
"CustomDataTimeContainer::find() t found" << std::endl;
903 if ( it2 == it->second.end() ) {
905 std::cout <<
"CustomDataTimeContainer::find() b not found" << std::endl;
910 if (
debug ) std::cout <<
"CustomDataTimeContainer::find() b found" << std::endl;
913 if ( it3 == it2->second.end() ) {
915 std::cout <<
"CustomDataTimeContainer::find() r not found" << std::endl;
919 if (
debug ) std::cout <<
"CustomDataTimeContainer::find() r found" << std::endl;
922 if ( it4 == it3->second.end() ) {
924 std::cout <<
"CustomDataTimeContainer::find() time_key not found" << std::endl;
929 if (
debug ) std::cout <<
"CustomDataTimeContainer::find() time_key found, Data = " << it4->second << std::endl;
935 template <
class T,
class M
idFunctor,
class InFunctor,
class Data,
class OutComp,
class M
idComp,
class InComp >
936 bool CustomDataTimeContainer< T, MidFunctor, InFunctor, Data, OutComp, MidComp, InComp >::insert(
const Data& d,
const T& t,
double b,
double r,
const Time& time_key ) {
937 auto data =
find( t, b, r, time_key );
945 template <
class T,
class M
idFunctor,
class InFunctor,
class Data,
class OutComp,
class M
idComp,
class InComp >
946 void CustomDataTimeContainer< T, MidFunctor, InFunctor, Data, OutComp, MidComp, InComp >::replace(
const Data& d,
const T& t,
double b,
double r,
const Time& time_key ) {
951 template <
class T,
class M
idFunctor,
class InFunctor,
class Data,
class OutComp,
class M
idComp,
class InComp >
963 template <
class T,
class M
idFunctor,
class InFunctor,
class Data,
class OutComp,
class M
idComp,
class InComp >
968 template <
class T,
class M
idFunctor,
class InFunctor,
class Data,
class OutComp,
class M
idComp,
class InComp >
971 std::cout <<
"CustomDataTimeContainer::calculateData() time_key = " << time_key << std::endl;
973 if ( time_data.empty() ) {
975 std::cout <<
"CustomDataTimeContainer::calculateData() time_data is empty." << std::endl;
980 if ( time_data.size() == 1 ) {
982 std::cout <<
"CustomDataTimeContainer::calculateData() time_data has size 1. Data created "
983 << time_data.begin()->second << std::endl;
985 return time_data.begin()->second;
988 time_t normalized_time = time_key;
990 if ( normalized_time < time_data.begin()->first ) {
992 std::cout <<
"CustomDataTimeContainer::calculateData() time_key has time < first key. Data created "
993 << time_data.begin()->second << std::endl;
995 return time_data.begin()->second;
998 normalized_time %= ( time_data.rbegin()->first - time_data.begin()->first );
999 if ( normalized_time == 0 )
1000 return time_data.begin()->second;
1002 normalized_time += time_data.begin()->first;
1003 auto upper_it = time_data.upper_bound(normalized_time);
1004 auto lower_it = upper_it;
1007 double alpha = ( std::abs((
double)(upper_it->first - normalized_time)) / std::abs((
double)( upper_it->first - lower_it->first )) );
1008 double beta = ( std::abs((
double)(normalized_time - lower_it->first)) / std::abs((
double)( upper_it->first - lower_it->first )) );
1011 std::cout <<
"CustomDataTimeContainer::calculateData() normalized_time = " << normalized_time
1012 <<
"; lower_it time = " << lower_it->first
1013 <<
"; upper_it time = " << upper_it->first
1014 <<
"; alpha = " << alpha <<
"; beta " << beta << std::endl;
1017 Data ret_val = std::move(lower_it->second->clone());
1020 *ret_val += *(upper_it->second) * beta;
1023 std::cout <<
"CustomDataTimeContainer::calculateData() return value = "
1024 << ret_val << std::endl;
1028 Data ret_val = lower_it->second * alpha + upper_it->second * beta;
1031 std::cout <<
"CustomDataTimeContainer::calculateData() return value = "
1032 << ret_val << std::endl;
MediumData & operator[](const T &key)
Definition woss-db-custom-data-container.h:127
typename CustomContainer::reverse_iterator CDCRIt
Definition woss-db-custom-data-container.h:92
typename std::map< double, InnerData, MidComp > MediumData
Definition woss-db-custom-data-container.h:81
typename CustomContainer::const_reverse_iterator CDCCRIt
Definition woss-db-custom-data-container.h:94
int size() const
Definition woss-db-custom-data-container.h:141
bool usingDebug()
Definition woss-db-custom-data-container.h:221
static constexpr double DB_CDATA_ALL_MEDIUM_KEYS
Definition woss-db-custom-data-container.h:99
typename MediumData::const_reverse_iterator CDCMediumCRIt
Definition woss-db-custom-data-container.h:85
typename InnerData::iterator CDCInnerIt
Definition woss-db-custom-data-container.h:73
bool insert(const Data &data, const T &t=DB_CDATA_ALL_OUTER_KEYS, double b=DB_CDATA_ALL_MEDIUM_KEYS, double r=DB_CDATA_ALL_INNER_KEYS)
Definition woss-db-custom-data-container.h:461
typename InnerData::reverse_iterator CDCInnerRIt
Definition woss-db-custom-data-container.h:74
typename MediumData::reverse_iterator CDCMediumRIt
Definition woss-db-custom-data-container.h:84
const std::optional< Data > get(const T &tx, const T &rx) const
Definition woss-db-custom-data-container.h:305
void replace(const Data &data, const T &t=DB_CDATA_ALL_OUTER_KEYS, double b=DB_CDATA_ALL_MEDIUM_KEYS, double r=DB_CDATA_ALL_INNER_KEYS)
Definition woss-db-custom-data-container.h:471
bool debug
Definition woss-db-custom-data-container.h:230
typename std::map< T, MediumData, OutComp > CustomContainer
Definition woss-db-custom-data-container.h:90
const std::optional< Data > get(const T &t=DB_CDATA_ALL_OUTER_KEYS, double b=DB_CDATA_ALL_MEDIUM_KEYS, double r=DB_CDATA_ALL_INNER_KEYS) const
Definition woss-db-custom-data-container.h:257
bool empty() const
Definition woss-db-custom-data-container.h:134
~CustomDataContainer()=default
typename InnerData::const_iterator CDCInnerCIt
Definition woss-db-custom-data-container.h:75
typename CustomContainer::iterator CDCIt
Definition woss-db-custom-data-container.h:91
void setDebug(bool flag)
Definition woss-db-custom-data-container.h:214
void clear()
Definition woss-db-custom-data-container.h:488
CustomContainer data_map
Definition woss-db-custom-data-container.h:235
typename MediumData::iterator CDCMediumIt
Definition woss-db-custom-data-container.h:82
std::optional< Data > find(const T &t=DB_CDATA_ALL_OUTER_KEYS, double b=DB_CDATA_ALL_MEDIUM_KEYS, double r=DB_CDATA_ALL_INNER_KEYS) const
Definition woss-db-custom-data-container.h:418
typename InnerData::const_reverse_iterator CDCInnerCRIt
Definition woss-db-custom-data-container.h:76
typename CustomContainer::const_iterator CDCCIt
Definition woss-db-custom-data-container.h:93
typename MediumData::const_iterator CDCMediumCIt
Definition woss-db-custom-data-container.h:83
static constexpr double DB_CDATA_ALL_INNER_KEYS
Definition woss-db-custom-data-container.h:101
void erase(const T &t=DB_CDATA_ALL_OUTER_KEYS, double b=DB_CDATA_ALL_MEDIUM_KEYS, double r=DB_CDATA_ALL_INNER_KEYS)
Definition woss-db-custom-data-container.h:478
typename std::map< double, Data, InComp > InnerData
Definition woss-db-custom-data-container.h:72
static const Coord DB_CDATA_ALL_OUTER_KEYS
Definition woss-db-custom-data-container.h:108
CustomDataContainer()=default
typename MediumData::const_iterator CDCMediumCIt
Definition woss-db-custom-data-container.h:528
typename CustomContainer::iterator CDCIt
Definition woss-db-custom-data-container.h:536
std::optional< Data > calculateData(const TimeData &time_data, const Time &time_key=DB_CDATA_ALL_TIME_KEYS) const
Definition woss-db-custom-data-container.h:969
bool insert(const Data &data, const T &t=DB_CDATA_ALL_OUTER_KEYS, double b=DB_CDATA_ALL_MEDIUM_KEYS, double r=DB_CDATA_ALL_INNER_KEYS, const Time &time_key=DB_CDATA_ALL_TIME_KEYS)
Definition woss-db-custom-data-container.h:936
bool empty() const
Definition woss-db-custom-data-container.h:573
typename std::map< T, MediumData, OutComp > CustomContainer
Definition woss-db-custom-data-container.h:535
typename std::map< double, InnerData, MidComp > MediumData
Definition woss-db-custom-data-container.h:526
typename CustomContainer::const_reverse_iterator CDCCRIt
Definition woss-db-custom-data-container.h:539
typename MediumData::iterator CDCMediumIt
Definition woss-db-custom-data-container.h:527
static constexpr double DB_CDATA_ALL_INNER_KEYS
Definition woss-db-custom-data-container.h:545
typename TimeData::iterator CDTCTimeIt
Definition woss-db-custom-data-container.h:509
typename std::map< time_t, Data > TimeData
Definition woss-db-custom-data-container.h:508
typename InnerData::const_reverse_iterator CDCInnerCRIt
Definition woss-db-custom-data-container.h:521
std::optional< Data > find(const T &t=DB_CDATA_ALL_OUTER_KEYS, double b=DB_CDATA_ALL_MEDIUM_KEYS, double r=DB_CDATA_ALL_INNER_KEYS, const Time &time_key=DB_CDATA_ALL_TIME_KEYS) const
Definition woss-db-custom-data-container.h:886
bool usingDebug() const
Definition woss-db-custom-data-container.h:669
static constexpr double DB_CDATA_ALL_MEDIUM_KEYS
Definition woss-db-custom-data-container.h:543
void erase(const T &t=DB_CDATA_ALL_OUTER_KEYS, double b=DB_CDATA_ALL_MEDIUM_KEYS, double r=DB_CDATA_ALL_INNER_KEYS, const Time &time_key=DB_CDATA_ALL_TIME_KEYS)
Definition woss-db-custom-data-container.h:952
typename TimeData::const_iterator CDTCTimeCIt
Definition woss-db-custom-data-container.h:511
typename std::map< double, TimeData, InComp > InnerData
Definition woss-db-custom-data-container.h:517
typename InnerData::iterator CDCInnerIt
Definition woss-db-custom-data-container.h:518
typename CustomContainer::reverse_iterator CDCRIt
Definition woss-db-custom-data-container.h:537
MediumData & operator[](const T &key)
Definition woss-db-custom-data-container.h:566
std::optional< Data > get(const T &t=DB_CDATA_ALL_OUTER_KEYS, double b=DB_CDATA_ALL_MEDIUM_KEYS, double r=DB_CDATA_ALL_INNER_KEYS, const Time &time_key=DB_CDATA_ALL_TIME_KEYS) const
Definition woss-db-custom-data-container.h:724
void replace(const Data &data, const T &t=DB_CDATA_ALL_OUTER_KEYS, double b=DB_CDATA_ALL_MEDIUM_KEYS, double r=DB_CDATA_ALL_INNER_KEYS, const Time &time_key=DB_CDATA_ALL_TIME_KEYS)
Definition woss-db-custom-data-container.h:946
typename TimeData::reverse_iterator CDTCTimeRIt
Definition woss-db-custom-data-container.h:510
static const Time DB_CDATA_ALL_TIME_KEYS
Definition woss-db-custom-data-container.h:549
typename InnerData::const_iterator CDCInnerCIt
Definition woss-db-custom-data-container.h:520
bool debug
Definition woss-db-custom-data-container.h:678
CustomContainer data_map
Definition woss-db-custom-data-container.h:683
typename MediumData::reverse_iterator CDCMediumRIt
Definition woss-db-custom-data-container.h:529
typename TimeData::const_reverse_iterator CDTCTimeCRIt
Definition woss-db-custom-data-container.h:512
int size() const
Definition woss-db-custom-data-container.h:580
CustomDataTimeContainer()
Definition woss-db-custom-data-container.h:554
static const Coord DB_CDATA_ALL_OUTER_KEYS
Definition woss-db-custom-data-container.h:547
typename MediumData::const_reverse_iterator CDCMediumCRIt
Definition woss-db-custom-data-container.h:530
void clear()
Definition woss-db-custom-data-container.h:964
std::optional< Data > get(const T &tx, const T &rx, const Time &time_key=DB_CDATA_ALL_TIME_KEYS) const
Definition woss-db-custom-data-container.h:773
typename InnerData::reverse_iterator CDCInnerRIt
Definition woss-db-custom-data-container.h:519
void setDebug(bool flag)
Definition woss-db-custom-data-container.h:662
~CustomDataTimeContainer()=default
typename CustomContainer::const_iterator CDCCIt
Definition woss-db-custom-data-container.h:538
a class for time date manipulation
Definition time-definitions.h:83
Definition ac-toolbox-arr-asc-reader.h:44
constexpr bool is_shared_ptr_v
Definition woss-db-custom-data-container.h:54
Definition woss-db-custom-data-container.h:48
Definitions and library for woss::Time, woss::SimTime, woss::TimeReference and woss::TimeReferenceTcl...