#ifndef SHARED_FUNCTION_STORE_H #define SHARED_FUNCTION_STORE_H #include "function.h" #include "expression_model_store.h" #include 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, nullptr); } Ion::Storage::Record activeRecordAtIndex(int i) const { return recordSatisfyingTestAtIndex(i, &isFunctionActive, nullptr); } ExpiringPointer modelForRecord(Ion::Storage::Record record) const { return ExpiringPointer(static_cast(privateModelForRecord(record))); } protected: static bool isFunctionActive(ExpressionModelHandle * model, void * context) { // An active function must be defined return isModelDefined(model, context) && static_cast(model)->isActive(); } }; } #endif