Files
Upsilon/apps/shared/function_store.h
2019-09-20 17:11:42 +02:00

29 lines
960 B
C++

#ifndef SHARED_FUNCTION_STORE_H
#define SHARED_FUNCTION_STORE_H
#include "function.h"
#include "expression_model_store.h"
#include <stdint.h>
namespace Shared {
// FunctionStore stores functions and gives them a color.
class FunctionStore : public ExpressionModelStore {
public:
FunctionStore() : ExpressionModelStore() {}
uint32_t storeChecksum();
int numberOfActiveFunctions() const { return numberOfModelsSatisfyingTest(&isFunctionActive); }
Ion::Storage::Record activeRecordAtIndex(int i) const { return recordSatisfyingTestAtIndex(i, &isFunctionActive); }
ExpiringPointer<Function> modelForRecord(Ion::Storage::Record record) const { return ExpiringPointer<Function>(static_cast<Function *>(privateModelForRecord(record))); }
protected:
static bool isFunctionActive(ExpressionModelHandle * model) {
// An active function must be defined
return isModelDefined(model) && static_cast<Function *>(model)->isActive();
}
};
}
#endif