|
- #include <stddef.h>
-
- #include "state.h"
- #include "ini.h"
-
-
- // Running State
-
- // TODO
-
-
- // Persistent State
-
- void cart_info_done(cart_info* cart) {
- if (cart->file) fclose(cart->file);
- free(cart->filename);
- }
-
-
- void nese_state_done(nese_State* state) {
- cart_info_done(&state->cart);
- }
-
-
- static const ini_datum prefs_schema = {
- .type = ini_section,
- .name = "nese",
- .count = 2,
- .data = (ini_datum[]){
- {
- .type = ini_section,
- .name = ".cart",
- .offset = offsetof(nese_State, cart),
- .count = 1,
- .data = (ini_datum[]){
- {
- .type = ini_string,
- .name = "filename",
- .offset = offsetof(cart_info, filename),
- },
- }
- }, {
- .type = ini_section,
- .name = ".flags",
- .offset = offsetof(nese_State, flags),
- .count = 1,
- .data = (ini_datum[]){
- {
- .type = ini_flag,
- .name = "fullscreen",
- .shift = State_Bit_Fullscreen,
- },
- }
- },
- },
- };
-
- int save_prefs_file(const nese_State* state, FILE* file) {
- return write_ini_file(file, &prefs_schema, state);
- }
-
- int load_prefs_file(nese_State* state, FILE* file) {
- return read_ini_file(file, &prefs_schema, state);
- }
-
- int save_prefs_filename(const nese_State* state,
- const char* filename) {
- int status = -1;
- FILE* file = fopen(filename, "w");
- if (NULL != file) {
- status = write_ini_file(file, &prefs_schema, state);
- fclose(file);
- }
- return status;
- }
-
- int load_prefs_filename(nese_State* state,
- const char* filename) {
- int status = -1;
- FILE* file = fopen(filename, "r");
- if (NULL != file) {
- status = read_ini_file(file, &prefs_schema, state);
- fclose(file);
- }
- return status;
- }
|