project_files/frontlib/model/schemelist.c
changeset 7316 f7b49b2c5d84
parent 7314 6171f0bad318
child 7320 e704706008d4
equal deleted inserted replaced
7314:6171f0bad318 7316:f7b49b2c5d84
   101 	flib_schemelist_destroy(result);
   101 	flib_schemelist_destroy(result);
   102 	return NULL;
   102 	return NULL;
   103 }
   103 }
   104 
   104 
   105 flib_schemelist *flib_schemelist_from_ini(flib_cfg_meta *meta, const char *filename) {
   105 flib_schemelist *flib_schemelist_from_ini(flib_cfg_meta *meta, const char *filename) {
       
   106 	if(log_badargs_if2(meta==NULL, filename==NULL)) {
       
   107 		return NULL;
       
   108 	}
       
   109 
   106 	flib_schemelist *list = NULL;
   110 	flib_schemelist *list = NULL;
   107 	if(!meta || !filename) {
       
   108 		flib_log_e("null parameter in flib_schemelist_from_ini");
       
   109 		return NULL;
       
   110 	}
       
   111 	flib_ini *ini = flib_ini_load(filename);
   111 	flib_ini *ini = flib_ini_load(filename);
   112 	if(!ini || flib_ini_enter_section(ini, "schemes")) {
   112 	if(!ini || flib_ini_enter_section(ini, "schemes")) {
   113 		flib_log_e("Missing file or missing section \"schemes\" in file %s.", filename);
   113 		flib_log_e("Missing file or missing section \"schemes\" in file %s.", filename);
   114 		return fromIniHandleError(list, ini);
   114 		return fromIniHandleError(list, ini);
   115 	}
   115 	}
   162 	return error;
   162 	return error;
   163 }
   163 }
   164 
   164 
   165 int flib_schemelist_to_ini(const char *filename, const flib_schemelist *schemes) {
   165 int flib_schemelist_to_ini(const char *filename, const flib_schemelist *schemes) {
   166 	int result = -1;
   166 	int result = -1;
   167 	if(!filename || !schemes) {
   167 	if(!log_badargs_if2(filename==NULL, schemes==NULL)) {
   168 		flib_log_e("null parameter in flib_schemelist_to_ini");
       
   169 	} else {
       
   170 		flib_ini *ini = flib_ini_create(NULL);
   168 		flib_ini *ini = flib_ini_create(NULL);
   171 		if(ini && !flib_ini_create_section(ini, "schemes")) {
   169 		if(ini && !flib_ini_create_section(ini, "schemes")) {
   172 			bool error = false;
   170 			bool error = false;
   173 			error |= flib_ini_set_int(ini, "size", schemes->schemeCount);
   171 			error |= flib_ini_set_int(ini, "size", schemes->schemeCount);
   174 			for(int i=0; i<schemes->schemeCount && !error; i++) {
   172 			for(int i=0; i<schemes->schemeCount && !error; i++) {
   200 		flib_schemelist_destroy(list);
   198 		flib_schemelist_destroy(list);
   201 	}
   199 	}
   202 }
   200 }
   203 
   201 
   204 flib_cfg *flib_schemelist_find(flib_schemelist *list, const char *name) {
   202 flib_cfg *flib_schemelist_find(flib_schemelist *list, const char *name) {
   205 	if(list && name) {
   203 	if(!log_badargs_if2(list==NULL, name==NULL)) {
   206 		for(int i=0; i<list->schemeCount; i++) {
   204 		for(int i=0; i<list->schemeCount; i++) {
   207 			if(!strcmp(name, list->schemes[i]->name)) {
   205 			if(!strcmp(name, list->schemes[i]->name)) {
   208 				return list->schemes[i];
   206 				return list->schemes[i];
   209 			}
   207 			}
   210 		}
   208 		}
   214 
   212 
   215 GENERATE_STATIC_LIST_INSERT(insertScheme, flib_cfg*)
   213 GENERATE_STATIC_LIST_INSERT(insertScheme, flib_cfg*)
   216 GENERATE_STATIC_LIST_DELETE(deleteScheme, flib_cfg*)
   214 GENERATE_STATIC_LIST_DELETE(deleteScheme, flib_cfg*)
   217 
   215 
   218 int flib_schemelist_insert(flib_schemelist *list, flib_cfg *cfg, int pos) {
   216 int flib_schemelist_insert(flib_schemelist *list, flib_cfg *cfg, int pos) {
   219 	if(!list) {
   217 	if(!log_badargs_if2(list==NULL, cfg==NULL)
   220 		flib_log_e("Invalid parameter in flib_schemelist_insert");
   218 			&& !insertScheme(&list->schemes, &list->schemeCount, cfg, pos)) {
   221 	} else if(!insertScheme(&list->schemes, &list->schemeCount, cfg, pos)) {
       
   222 		flib_cfg_retain(cfg);
   219 		flib_cfg_retain(cfg);
   223 		return 0;
   220 		return 0;
   224 	}
   221 	}
   225 	return -1;
   222 	return -1;
   226 }
   223 }
   227 
   224 
   228 int flib_schemelist_delete(flib_schemelist *list, int pos) {
   225 int flib_schemelist_delete(flib_schemelist *list, int pos) {
   229 	if(!list) {
   226 	if(!log_badargs_if(list==NULL)) {
   230 		flib_log_e("Invalid parameter in flib_schemelist_delete");
       
   231 	} else {
       
   232 		flib_cfg *elem = list->schemes[pos];
   227 		flib_cfg *elem = list->schemes[pos];
   233 		if(!deleteScheme(&list->schemes, &list->schemeCount, pos)) {
   228 		if(!deleteScheme(&list->schemes, &list->schemeCount, pos)) {
   234 			flib_cfg_release(elem);
   229 			flib_cfg_release(elem);
   235 			return 0;
   230 			return 0;
   236 		}
   231 		}