Interface: AggregateUse
Author: Eugene Shvets
Intention is to make addition of user-defined aggregates easy.
Dispatch is based on aggregate id (AggregateID enum is Aggregates.h),
which is the first argument for every command in this interface.
No in-memory data structures is created to keep aggregate info, therefore
we need to pass ParamList argument to each command
- Components providing this interface:
-
tos.lib.TinyDB.Aggregates.AggregateUseM
- Components requiring this interface:
-
tos.lib.TinyDB.AggOperator
-
result_t
merge
(uint8_t id, char *destdata, char *mergedata, ParamList *params, ParamVals *paramValues)
-
result_t update(uint8_t id, char *dest, char *value, ParamList *params, ParamVals *paramValues)
-
result_t init(uint8_t id, char *data, ParamList *params, ParamVals *paramValues, bool isFirstTime)
-
uint16_t stateSize(uint8_t id, ParamList *params, ParamVals *paramValues)
-
bool hasData(uint8_t id, char *data, ParamList *params, ParamVals *paramValues)
-
TinyDBError finalize(uint8_t id, char *data, char *result_buf, ParamList *params, ParamVals *paramValues)
-
AggregateProperties getProperties(uint8_t id)
merge
result_t merge(uint8_t id, char *destdata, char *mergedata, ParamList *params, ParamVals *paramValues)
dest, merge - raw data. each aggregate can cast it to appropriate data structure.
Stuff that previosly came as part of expr->ex.tagg is passed in general way as list of params