diff -r 4feced261c68 -r de822cd3df3a project_files/frontlib/model/scheme.c --- a/project_files/frontlib/model/scheme.c Tue Jan 21 22:38:13 2014 +0100 +++ b/project_files/frontlib/model/scheme.c Tue Jan 21 22:43:06 2014 +0100 @@ -1,95 +1,95 @@ -/* - * Hedgewars, a free turn based strategy game - * Copyright (C) 2012 Simeon Maxein - * - * This program 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 Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#include "scheme.h" - -#include "../util/inihelper.h" -#include "../util/logging.h" -#include "../util/util.h" - -#include -#include -#include -#include - -flib_scheme *flib_scheme_create(const char *schemeName) { - flib_scheme *result = flib_calloc(1, sizeof(flib_scheme)); - if(log_badargs_if(schemeName==NULL) || result==NULL) { - return NULL; - } - - result->name = flib_strdupnull(schemeName); - result->mods = flib_calloc(flib_meta.modCount, sizeof(*result->mods)); - result->settings = flib_calloc(flib_meta.settingCount, sizeof(*result->settings)); - - if(!result->mods || !result->settings || !result->name) { - flib_scheme_destroy(result); - return NULL; - } - - for(int i=0; isettings[i] = flib_meta.settings[i].def; - } - return result; -} - -flib_scheme *flib_scheme_copy(const flib_scheme *scheme) { - flib_scheme *result = NULL; - if(scheme) { - result = flib_scheme_create(scheme->name); - if(result) { - memcpy(result->mods, scheme->mods, flib_meta.modCount * sizeof(*scheme->mods)); - memcpy(result->settings, scheme->settings, flib_meta.settingCount * sizeof(*scheme->settings)); - } - } - return result; -} - -void flib_scheme_destroy(flib_scheme* scheme) { - if(scheme) { - free(scheme->mods); - free(scheme->settings); - free(scheme->name); - free(scheme); - } -} - -bool flib_scheme_get_mod(const flib_scheme *scheme, const char *name) { - if(!log_badargs_if2(scheme==NULL, name==NULL)) { - for(int i=0; imods[i]; - } - } - flib_log_e("Unable to find game mod %s", name); - } - return false; -} - -int flib_scheme_get_setting(const flib_scheme *scheme, const char *name, int def) { - if(!log_badargs_if2(scheme==NULL, name==NULL)) { - for(int i=0; isettings[i]; - } - } - flib_log_e("Unable to find game setting %s", name); - } - return def; -} +/* + * Hedgewars, a free turn based strategy game + * Copyright (C) 2012 Simeon Maxein + * + * This program 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 Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include "scheme.h" + +#include "../util/inihelper.h" +#include "../util/logging.h" +#include "../util/util.h" + +#include +#include +#include +#include + +flib_scheme *flib_scheme_create(const char *schemeName) { + flib_scheme *result = flib_calloc(1, sizeof(flib_scheme)); + if(log_badargs_if(schemeName==NULL) || result==NULL) { + return NULL; + } + + result->name = flib_strdupnull(schemeName); + result->mods = flib_calloc(flib_meta.modCount, sizeof(*result->mods)); + result->settings = flib_calloc(flib_meta.settingCount, sizeof(*result->settings)); + + if(!result->mods || !result->settings || !result->name) { + flib_scheme_destroy(result); + return NULL; + } + + for(int i=0; isettings[i] = flib_meta.settings[i].def; + } + return result; +} + +flib_scheme *flib_scheme_copy(const flib_scheme *scheme) { + flib_scheme *result = NULL; + if(scheme) { + result = flib_scheme_create(scheme->name); + if(result) { + memcpy(result->mods, scheme->mods, flib_meta.modCount * sizeof(*scheme->mods)); + memcpy(result->settings, scheme->settings, flib_meta.settingCount * sizeof(*scheme->settings)); + } + } + return result; +} + +void flib_scheme_destroy(flib_scheme* scheme) { + if(scheme) { + free(scheme->mods); + free(scheme->settings); + free(scheme->name); + free(scheme); + } +} + +bool flib_scheme_get_mod(const flib_scheme *scheme, const char *name) { + if(!log_badargs_if2(scheme==NULL, name==NULL)) { + for(int i=0; imods[i]; + } + } + flib_log_e("Unable to find game mod %s", name); + } + return false; +} + +int flib_scheme_get_setting(const flib_scheme *scheme, const char *name, int def) { + if(!log_badargs_if2(scheme==NULL, name==NULL)) { + for(int i=0; isettings[i]; + } + } + flib_log_e("Unable to find game setting %s", name); + } + return def; +}