mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-19 08:47:28 +01:00
ExpressionModelHandle --> ExpressionModel SingleExpressionModelHandle --> ExpressionModelHandle StorageFunction --> Function StorageCartesianFunction --> CartesianFunction StorageFunctionApp --> FunctionApp
51 lines
1.5 KiB
C++
51 lines
1.5 KiB
C++
#include "sequence_store.h"
|
|
#include <ion/storage.h>
|
|
extern "C" {
|
|
#include <assert.h>
|
|
#include <stddef.h>
|
|
}
|
|
|
|
namespace Sequence {
|
|
|
|
constexpr const char * SequenceStore::k_sequenceNames[MaxNumberOfSequences];
|
|
|
|
const char * SequenceStore::firstAvailableName(int * nameIndex) {
|
|
// Choose available name
|
|
int currentNameIndex = 0;
|
|
while (currentNameIndex < MaxNumberOfSequences) {
|
|
const char * name = k_sequenceNames[currentNameIndex];
|
|
if (Ion::Storage::sharedStorage()->recordBaseNamedWithExtension(name, Ion::Storage::seqExtension).isNull()) {
|
|
if (nameIndex) {
|
|
*nameIndex = currentNameIndex;
|
|
}
|
|
return name;
|
|
}
|
|
currentNameIndex++;
|
|
}
|
|
return nullptr;
|
|
}
|
|
|
|
Ion::Storage::Record::ErrorStatus SequenceStore::addEmptyModel() {
|
|
// Choose available name
|
|
int nameIndex;
|
|
const char * name = firstAvailableName(&nameIndex);
|
|
assert(name);
|
|
// Choose the corresponding color
|
|
KDColor color = Palette::DataColor[nameIndex];
|
|
Sequence::SequenceRecordData data(color);
|
|
// m_sequences
|
|
return Ion::Storage::sharedStorage()->createRecordWithExtension(name, modelExtension(), &data, sizeof(data));
|
|
}
|
|
|
|
void SequenceStore::setMemoizedModelAtIndex(int cacheIndex, Ion::Storage::Record record) const {
|
|
assert(cacheIndex >= 0 && cacheIndex < maxNumberOfMemoizedModels());
|
|
m_sequences[cacheIndex] = Sequence(record);
|
|
}
|
|
|
|
Shared::ExpressionModelHandle * SequenceStore::memoizedModelAtIndex(int cacheIndex) const {
|
|
assert(cacheIndex >= 0 && cacheIndex < maxNumberOfMemoizedModels());
|
|
return &m_sequences[cacheIndex];
|
|
}
|
|
|
|
}
|