From de3e61a11c98abd357d39818dc004aa6dab81356 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Sun, 20 Jul 2014 15:31:23 +0200 Subject: [PATCH 1/3] (Settings data) Get rid of fake_settings/fake_extern --- apple/OSX/settings.m | 3 --- settings_data.c | 16 ---------------- settings_data.h | 1 - 3 files changed, 20 deletions(-) diff --git a/apple/OSX/settings.m b/apple/OSX/settings.m index 84437c272c..4f7d49f936 100644 --- a/apple/OSX/settings.m +++ b/apple/OSX/settings.m @@ -142,9 +142,6 @@ NSWindowDelegate> NSMutableArray* thisGroup = nil; NSMutableArray* thisSubGroup = nil; self.settings = [NSMutableArray array]; - - setting_data_load_current(); - setting_data = (const rarch_setting_t *)setting_data_get_list(); for (i = 0; setting_data[i].type; i ++) diff --git a/settings_data.c b/settings_data.c index 7d996512b1..a478d92fb3 100644 --- a/settings_data.c +++ b/settings_data.c @@ -29,16 +29,6 @@ } \ } -// HACK -struct settings fake_settings; -struct global fake_extern; - -void setting_data_load_current(void) -{ - memcpy(&fake_settings, &g_settings, sizeof(struct settings)); - memcpy(&fake_extern, &g_extern, sizeof(struct global)); -} - // Input static const char* get_input_config_prefix(const rarch_setting_t* setting) { @@ -140,8 +130,6 @@ void setting_data_reset_setting(const rarch_setting_t* setting) void setting_data_reset(const rarch_setting_t* settings) { const rarch_setting_t *setting; - memset(&fake_settings, 0, sizeof(fake_settings)); - memset(&fake_extern, 0, sizeof(fake_extern)); for (setting = settings; setting->type != ST_NONE; setting++) setting_data_reset_setting(setting); @@ -752,10 +740,6 @@ static void general_change_handler(const void *data) g_settings.libretro_log_level = *setting->value.unsigned_integer; } - -#define g_settings fake_settings -#define g_extern fake_extern - #define NEXT (list[index++]) #define START_GROUP(NAME) { const char *GROUP_NAME = NAME; NEXT = setting_data_group_setting (ST_GROUP, NAME); #define END_GROUP() NEXT = setting_data_group_setting (ST_END_GROUP, 0); } diff --git a/settings_data.h b/settings_data.h index 6ef623078e..e963e72cff 100644 --- a/settings_data.h +++ b/settings_data.h @@ -118,7 +118,6 @@ rarch_setting_t setting_data_bind_setting(const char* name, const char* descript const struct retro_keybind* default_value, const char *group, const char *subgroup); // These functions operate only on RetroArch's main settings list -void setting_data_load_current(void); rarch_setting_t* setting_data_get_list(void); #ifdef APPLE From cf7c33d7d811014dba746ce94c4a7a7d0d17dba3 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 20 Jul 2014 16:51:43 +0200 Subject: [PATCH 2/3] (settings_data.c) Cleanups --- settings_data.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/settings_data.c b/settings_data.c index a478d92fb3..d36b62a66c 100644 --- a/settings_data.c +++ b/settings_data.c @@ -137,9 +137,9 @@ void setting_data_reset(const rarch_setting_t* settings) bool setting_data_load_config_path(const rarch_setting_t* settings, const char* path) { - config_file_t *config; + config_file_t *config = (config_file_t*)config_file_new(path); - if (!(config = (config_file_t*)config_file_new(path))) + if (!config) return NULL; setting_data_load_config(settings, config); @@ -199,10 +199,10 @@ bool setting_data_load_config(const rarch_setting_t* settings, config_file_t* co bool setting_data_save_config_path(const rarch_setting_t* settings, const char* path) { - config_file_t* config; bool result = false; + config_file_t* config = (config_file_t*)config_file_new(path); - if (!(config = (config_file_t*)config_file_new(path))) + if (!config) config = config_file_new(0); setting_data_save_config(settings, config); From 0329f7df244c9c26bc808e2bae82bd3fd052c1cb Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Sun, 20 Jul 2014 17:25:08 +0200 Subject: [PATCH 3/3] (setting data) Unroll macros --- settings_data.c | 46 ++++++++++++++++++++++++++++++++++------------ 1 file changed, 34 insertions(+), 12 deletions(-) diff --git a/settings_data.c b/settings_data.c index d36b62a66c..d156ea6ee4 100644 --- a/settings_data.c +++ b/settings_data.c @@ -1,5 +1,6 @@ /* RetroArch - A frontend for libretro. * Copyright (C) 2013-2014 - Jason Fetters + * Copyright (C) 2011-2014 - Daniel De Matteis * * RetroArch is free software: you can redistribute it and/or modify it under the terms * of the GNU General Public License as published by the Free Software Found- @@ -353,20 +354,41 @@ rarch_setting_t setting_data_group_setting(enum setting_type type, const char* n return result; } -#define DEFINE_BASIC_SETTING_TYPE(TAG, TYPE, VALUE, SETTING_TYPE, GROUP, SUBGROUP, CHANGE_HANDLER_T) \ - rarch_setting_t setting_data_##TAG##_setting(const char* name, const char* description, TYPE* target, TYPE default_value, const char *group, const char *subgroup, CHANGE_HANDLER_T change_handler) \ -{ \ - rarch_setting_t result = { SETTING_TYPE, name, sizeof(TYPE), description, group, subgroup }; \ - result.change_handler = change_handler; \ - result.value.VALUE = target; \ - result.default_value.VALUE = default_value; \ - return result; \ +rarch_setting_t setting_data_float_setting(const char* name, const char* description, float* target, float default_value, const char *group, const char *subgroup, change_handler_t change_handler) +{ + rarch_setting_t result = { ST_FLOAT, name, sizeof(float), description, group, subgroup }; + result.change_handler = change_handler; + result.value.fraction = target; + result.default_value.fraction = default_value; + return result; } - DEFINE_BASIC_SETTING_TYPE(bool, bool, boolean, ST_BOOL, const char *, const char*, change_handler_t) - DEFINE_BASIC_SETTING_TYPE(int, int, integer, ST_INT, const char *, const char *, change_handler_t) - DEFINE_BASIC_SETTING_TYPE(uint, unsigned int, unsigned_integer, ST_UINT, const char *, const char *, change_handler_t) - DEFINE_BASIC_SETTING_TYPE(float, float, fraction, ST_FLOAT, const char *, const char *, change_handler_t) +rarch_setting_t setting_data_bool_setting(const char* name, const char* description, bool* target, bool default_value, const char *group, const char *subgroup, change_handler_t change_handler) +{ + rarch_setting_t result = { ST_BOOL, name, sizeof(bool), description, group, subgroup }; + result.change_handler = change_handler; + result.value.boolean = target; + result.default_value.boolean = default_value; + return result; +} + +rarch_setting_t setting_data_int_setting(const char* name, const char* description, int* target, int default_value, const char *group, const char *subgroup, change_handler_t change_handler) +{ + rarch_setting_t result = { ST_INT, name, sizeof(int), description, group, subgroup }; + result.change_handler = change_handler; + result.value.integer = target; + result.default_value.integer = default_value; + return result; +} + +rarch_setting_t setting_data_uint_setting(const char* name, const char* description, unsigned int* target, unsigned int default_value, const char *group, const char *subgroup, change_handler_t change_handler) +{ + rarch_setting_t result = { ST_UINT, name, sizeof(unsigned int), description, group, subgroup }; + result.change_handler = change_handler; + result.value.unsigned_integer = target; + result.default_value.unsigned_integer = default_value; + return result; +} rarch_setting_t setting_data_string_setting(enum setting_type type, const char* name, const char* description, char* target,