25 #ifndef _mtsStateTable_h
26 #define _mtsStateTable_h
73 friend class mtsTaskTest;
74 friend class mtsStateTableTest;
75 friend class mtsCollectorBaseTest;
87 void ToStreamRaw(std::ostream & outputStream,
const char delimiter =
' ',
88 bool headerOnly =
false,
const std::string & headerPrefix =
"")
const;
165 virtual void ToStream(std::ostream & outputStream,
const mtsStateIndex & when)
const = 0;
168 template <
class _elementType>
179 AccessorBase(table, id), History(*history), Current(data) {}
182 History.Element(when.
Index()).ToStream(outputStream);
186 data = History.Element(when.
Index());
187 return Table.ValidateReadIndex(when);
193 if (!Table.ValidateReadIndex(when))
196 return &(History.Element(when.
Index()));
202 return Get(when, *pdata);
206 return Get(when, *pref);
212 return Get(Table.GetIndexReader(), data);
215 return Get(Table.GetIndexReader(), data);
219 return Get(Table.GetIndexDelayed(), data);
222 return Get(Table.GetIndexDelayed(), data);
275 std::vector<mtsStateIndex::TimeTicksType>
Ticks;
324 bool SetSize(
const size_t size);
331 timeIndex = GetIndexReader();
340 size_t SetDelay(
size_t newDelay);
344 return (Ticks[timeIndex.
Index()] == timeIndex.
Ticks());
349 return this->AutomaticAdvanceFlag;
354 this->AutomaticAdvanceFlag = automaticAdvance;
358 int GetStateVectorID(
const std::string & dataName)
const;
364 template <
class _elementType>
365 mtsStateDataId NewElement(
const std::string & name =
"", _elementType * element = 0);
368 template <
class _elementType>
369 void AddData(_elementType & element,
const std::string & name =
"") {
370 NewElement(name, &element);
375 template <
class _elementType>
377 return StateVectorElements[id];
382 return StateVectorElements[id];
390 template<
class _elementType>
410 void StartIfAutomatic(
void);
420 void AdvanceIfAutomatic(
void);
425 bool ReplayAdvance(
void);
431 return this->Tic.Data;
435 return this->Toc.Data;
439 return this->HistoryLength;
443 return this->StateVector.size();
449 return AveragePeriod;
453 void ToStream(std::ostream & out)
const;
457 void Debug(std::ostream & out,
unsigned int * listColumn,
unsigned int number)
const;
465 void CSVWrite(std::ostream & out,
bool nonZeroOnly =
false);
466 void CSVWrite(std::ostream & out,
unsigned int * listColumn,
unsigned int number,
bool nonZeroOnly =
false);
468 void CSVWrite(std::ostream & out,
mtsGenericObject ** listColumn,
unsigned int number,
bool nonZeroOnly =
false);
471 inline const std::string &
GetName(
void)
const {
return Name; }
474 void DataCollectionEventTriggeringRatio(
const mtsDouble & eventTriggeringRatio);
478 void DataCollectionStart(
const mtsDouble & delay);
479 void DataCollectionStop(
const mtsDouble & delay);
491 return object->GetName();
495 template <
class _elementType>
497 return "mtsStateTable::Accessor";
500 template <
class _elementType>
517 template <
class _elementType>
527 #endif // _mtsStateTable_h
Defines the command interfaces.
Defines a function object to use a void command (mtsCommandVoid)
#define CISST_EXPORT
Definition: cmnExportMacros.h:50
mtsFunctionWrite Progress
Definition: mtsStateTable.h:142
mtsStateTable::IndexRange BatchRange
Definition: mtsStateTable.h:111
Defines the command interfaces.
mtsStateIndex Last
Definition: mtsStateTable.h:85
double TimeIntervalForProgressEvent
Definition: mtsStateTable.h:123
std::string Name
Definition: mtsStateTable.h:305
bool GetDelayed(mtsGenericObject &data) const
Definition: mtsStateTable.h:221
CMN_DECLARE_SERVICES_INSTANTIATION(mtsStateTable)
size_t CounterForEvent
Definition: mtsStateTable.h:120
#define CMN_UNUSED(argument)
Definition: cmnPortability.h:479
const value_type * GetPointer(const mtsStateIndex &when) const
Definition: mtsStateTable.h:192
const osaTimeServer * TimeServer
Definition: mtsStateTable.h:282
Class registration macros.
std::vector< AccessorBase * > StateVectorAccessors
Definition: mtsStateTable.h:271
~DataCollectionInfo()
Definition: mtsStateTable.h:154
double StopTime
Definition: mtsStateTable.h:108
size_t BatchCounter
Definition: mtsStateTable.h:117
TimeTicksType Ticks(void) const
Definition: mtsStateIndex.h:99
mtsDouble Toc
Definition: mtsStateTable.h:287
virtual void ToStream(std::ostream &outputStream) const
size_t GetNumberOfElements(void) const
Definition: mtsStateTable.h:442
bool Get(const mtsStateIndex &when, value_type &data) const
Definition: mtsStateTable.h:185
bool ValidateReadIndex(const mtsStateIndex &timeIndex) const
Definition: mtsStateTable.h:343
mtsStateTable::IndexRange mtsStateTableIndexRange
Definition: mtsStateTable.h:484
DataCollectionInfo DataCollection
Definition: mtsStateTable.h:309
Statistical analysis for periodic signals.
double StartTime
Definition: mtsStateTable.h:103
Definition: mtsFunctionVoid.h:36
Base class for high level objects.
Definition: cmnGenericObject.h:51
std::vector< std::string > StateVectorDataNames
Definition: mtsStateTable.h:267
Base class for data object in cisstMultiTask.
Definition: mtsGenericObject.h:56
static FinalRefType * ConditionalWrap(T &obj)
Definition: mtsGenericObjectProxy.h:673
bool Get(const mtsStateIndex &when, mtsGenericObject &data) const
Definition: mtsStateTable.h:199
size_t HistoryLength
Definition: mtsStateTable.h:232
mtsIntervalStatistics PeriodStats
Definition: mtsStateTable.h:294
mtsFunctionVoid CollectionStarted
Definition: mtsStateTable.h:135
Definition: mtsStateTable.h:94
Definition: mtsIntervalStatistics.h:45
const bool & AutomaticAdvance(void) const
Definition: mtsStateTable.h:348
void GetIndexReader(mtsStateIndex &timeIndex) const
Definition: mtsStateTable.h:330
DataCollectionInfo(void)
Definition: mtsStateTable.h:145
mtsFunctionWrite BatchReady
Definition: mtsStateTable.h:131
Definition: mtsGenericObjectProxy.h:47
double AveragePeriod
Definition: mtsStateTable.h:302
Defines a state data array used in a state table.
mtsStateDataId NewElement(const std::string &name="", _elementType *element=0)
Definition: mtsStateTable.h:501
Definition: mtsStateArray.h:47
Definition: mtsStateTable.h:169
Definition: mtsStateTable.h:67
Forward declarations and #define for cisstMultiTask.
const mtsStateTable & Table
Definition: mtsStateTable.h:160
Definition: mtsComponent.h:150
size_t Delay
Definition: mtsStateTable.h:245
double TimeOfLastProgressEvent
Definition: mtsStateTable.h:126
Defines cmnGenericObject.
std::vector< mtsStateIndex::TimeTicksType > Ticks
Definition: mtsStateTable.h:275
bool Collecting
Definition: mtsStateTable.h:98
Definition: mtsStateTable.h:158
mtsStateDataId Id
Definition: mtsStateTable.h:161
#define CMN_DECLARE_SERVICES(hasDynamicCreation, lod)
Definition: cmnClassRegisterMacros.h:116
void AddData(_elementType &element, const std::string &name="")
Definition: mtsStateTable.h:369
Definition: mtsGenericObjectProxy.h:46
void SetAutomaticAdvance(bool automaticAdvance)
Definition: mtsStateTable.h:353
mtsStateIndex First
Definition: mtsStateTable.h:84
double GetToc(void) const
Definition: mtsStateTable.h:434
size_t IndexDelayed
Definition: mtsStateTable.h:241
bool GetDelayed(value_type &data) const
Definition: mtsStateTable.h:218
double SumOfPeriods
Definition: mtsStateTable.h:299
Class for relative time.
Definition: osaTimeServer.h:73
size_t IndexWriter
Definition: mtsStateTable.h:235
int mtsStateDataId
Definition: mtsStateTable.h:47
bool GetLatest(mtsGenericObject &data) const
Definition: mtsStateTable.h:214
mtsStateTable::AccessorBase * GetAccessor(const _elementType &element) const
size_t BatchSize
Definition: mtsStateTable.h:114
std::string mtsObjectName(const mtsStateTable *object)
Definition: mtsStateTable.h:489
_elementType * GetStateDataElement(mtsStateDataId id) const
Definition: mtsStateTable.h:376
size_t GetHistoryLength(void) const
Definition: mtsStateTable.h:438
void ToStream(std::ostream &outputStream, const mtsStateIndex &when) const
Definition: mtsStateTable.h:181
Defines an index used for mtsStateTable.
mtsFunctionWrite CollectionStopped
Definition: mtsStateTable.h:139
Defines a base class the state data array.
bool AutomaticAdvanceFlag
Definition: mtsStateTable.h:254
double GetAveragePeriod(void) const
Definition: mtsStateTable.h:448
double GetTic(void) const
Definition: mtsStateTable.h:430
Definition: mtsCollectorState.h:44
virtual ~AccessorBase()
Definition: mtsStateTable.h:164
Definition: mtsStateIndex.h:51
Definition: mtsFunctionWrite.h:37
Definition: mtsGenericObjectProxy.h:45
mtsStateDataId PeriodId
Definition: mtsStateTable.h:279
const int CMN_NO_DYNAMIC_CREATION
Definition: cmnClassRegisterMacros.h:328
const int CMN_DYNAMIC_CREATION
Definition: cmnClassRegisterMacros.h:331
mtsDouble Period
Definition: mtsStateTable.h:291
size_t IndexReader
Definition: mtsStateTable.h:238
mtsStateDataId TocId
Definition: mtsStateTable.h:278
AccessorBase(const mtsStateTable &table, mtsStateDataId id)
Definition: mtsStateTable.h:163
virtual void ToStreamRaw(std::ostream &outputStream, const char delimiter= ' ', bool headerOnly=false, const std::string &headerPrefix="") const
const std::string & GetName(void) const
Definition: mtsStateTable.h:471
void SetCurrent(const value_type &data)
Definition: mtsStateTable.h:224
Accessor(const mtsStateTable &table, mtsStateDataId id, const mtsStateArray< value_type > *history, value_ref_type *data)
Definition: mtsStateTable.h:177
int Index(void) const
Definition: mtsStateIndex.h:94
Definition: mtsStateTable.h:80
std::vector< mtsStateArrayBase * > StateVector
Definition: mtsStateTable.h:257
#define CMN_LOG_ALLOW_DEFAULT
Definition: cmnLogLoD.h:76
std::vector< mtsGenericObject * > StateVectorElements
Definition: mtsStateTable.h:263
mtsGenericObject * GetStateVectorElement(size_t id) const
Definition: mtsStateTable.h:381
bool GetLatest(value_type &data) const
Definition: mtsStateTable.h:211