27 #ifndef _UCOMMON_COUNTER_H_ 28 #define _UCOMMON_COUNTER_H_ 30 #ifndef _UCOMMON_CONFIG_H_ 43 class __EXPORT counter
46 unsigned value, cycle;
58 counter(
unsigned limit);
70 inline unsigned range(
void) {
78 inline unsigned operator*() {
86 inline operator unsigned() {
94 void operator=(
unsigned value);
104 class __EXPORT SeqCounter :
protected counter
111 SeqCounter(
void *start,
size_t size,
unsigned count);
115 void *
get(
unsigned idx);
122 inline void operator=(
unsigned inc_offset) {
123 counter::operator=(inc_offset);
131 class __EXPORT toggle
143 inline bool operator*() {
147 inline void operator=(
bool v) {
151 inline operator bool() {
166 inline T *
get(
unsigned idx) {
167 return static_cast<T *
>(SeqCounter::get(idx));
177 SeqCounter(array, sizeof(T), size) {}
183 inline T*
get(void) {
184 return static_cast<T *
>(SeqCounter::get());
192 return reference_cast<T&>(SeqCounter::get());
199 inline operator T&() {
200 return reference_cast<T&>(SeqCounter::get());
209 return reference_cast<T&>(
get(offset));
T &() limit(T &value, T &low, T &high)
Convenience macro to range restrict values.
A template to return a sequence of objects of a specified type.
T & operator*()
Return next typed member of the sequence by pointer reference.
Various miscellaneous platform specific headers and defines.
toggle toggle_t
A convenience typecast for auto-toggled bools.
Common namespace for all ucommon objects.
counter counter_t
A convenience typecast for integer counters.
T & operator[](unsigned offset)
Return a specific typed member from the sequence list.
sequence(T *array, unsigned size)
Create a template auto-sequence from a list of typed pointers.