mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-19 08:47:28 +01:00
53 lines
1.3 KiB
C++
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();
|
|
}
|
|
}
|
|
|
|
}
|