Files
Upsilon/apps/shared/storage_expression_model_store.cpp

53 lines
1.3 KiB
C++

#include "storage_expression_model_store.h"
namespace Shared {
int StorageExpressionModelStore::numberOfModels() const {
return Ion::Storage::sharedStorage()->numberOfRecordsWithExtension(modelExtension());
}
int StorageExpressionModelStore::numberOfDefinedModels() const {
int result = 0;
int i = 0;
while (!modelAtIndex(i).isEmpty()) {
if (modelAtIndex(i).isDefined()) {
result++;
}
i++;
}
return result;
}
StorageExpressionModel StorageExpressionModelStore::modelAtIndex(int i) const {
return StorageExpressionModel(Ion::Storage::sharedStorage()->recordWithExtensionAtIndex(modelExtension(), i));
}
StorageExpressionModel StorageExpressionModelStore::definedModelAtIndex(int i) const {
assert(i >= 0 && i < numberOfDefinedModels());
int index = 0;
int currentModelIndex = 0;
while (true) {
assert(currentModelIndex < numberOfModels());
if (modelAtIndex(currentModelIndex).isDefined()) {
if (i == index) {
return modelAtIndex(currentModelIndex);
}
index++;
}
currentModelIndex++;
}
}
void StorageExpressionModelStore::removeAll() {
Ion::Storage::sharedStorage()->destroyRecordsWithExtension(modelExtension());
}
void StorageExpressionModelStore::tidy() {
int modelsCount = numberOfModels();
for (int i = 0; i < modelsCount; i++) {
modelAtIndex(i).tidy();
}
}
}