/** * Copyright (c) 2021 Dominic Masters * * This software is released under the MIT License. * https://opensource.org/licenses/MIT */ #include "save.h" void saveManagerInit(savemanager_t *man) { man->count = 0; } savevalue_t * saveManagerAddOrGet(savemanager_t *man, char *key) { uint8_t i, j; j = saveManagerGetKey(man, key); if(j != 0xFF) return man->values + j; // Find empty key for(i = 0; i < man->count; i++) { if(man->keys[i] != NULL) continue; man->keys[i] = key; return man->values + i; } // No empty key man->keys[man->count] = key; return man->values + man->count++; } uint8_t saveManagerGetKey(savemanager_t *man, char *key) { uint8_t i; for(i = 0; i < man->count; i++) { if(strcmp(man->keys + i, key) == 0) return i; } return 0xFF; } void saveManagerRemove(savemanager_t *man, char *key) { uint8_t i; i = saveManagerGetKey(man, key); if(i == 0xFF) return; man->keys[i] = NULL; } // Setters savevalue_t * saveManagerSetBool(savemanager_t *man, char *key, bool val) { savevalue_t * v = saveManagerAddOrGet(man, key); v->b = val; return v; } savevalue_t * saveManagerSetUint8(savemanager_t *man, char *key, uint8_t val) { savevalue_t * v = saveManagerAddOrGet(man, key); v->u8 = val; return v; } // Getters bool saveManagerGetBool(savemanager_t *man, char *key) { return saveManagerAddOrGet(man, key)->b; } uint8_t saveManagerGetUint8(savemanager_t *man, char *key) { return saveManagerAddOrGet(man, key)->u8; }