Added new functions

pull/79/head
parent 28b68d96c2
commit 8a827f476b

@ -56,11 +56,9 @@ char *yon_char_force_append_element(char *source,char *target, char *divider){
if (!source) return yon_char_new(target);
int size;
config_str parsed = yon_char_parse(source,&size,divider);
if (yon_char_parsed_check_exist(parsed,size,target)==-1){
yon_char_parsed_add_or_create_if_exists(parsed,&size,target);
return yon_char_parsed_to_string_full(parsed,size,divider);
}
}
return yon_char_new(source);
}

@ -480,7 +480,7 @@ int yon_config_load_config(YON_CONFIG_TYPE config_type, ...){
int cur_ignore = yon_config_check_ignore(parameter);
if (config_type==YON_CONFIG_DEFAULT){
yon_config_register_default(parameter, get_command,NULL);
yon_config_register_default(parameter, get_command,value);
}
if ((cur_ignore&&value)||(!cur_ignore)){
yon_config_register(parameter,get_command,value);
@ -498,57 +498,6 @@ int yon_config_load_config(YON_CONFIG_TYPE config_type, ...){
return 1;
}
// int yon_config_load_config(YON_CONFIG_TYPE config_type, ...){
// if (config_type!=YON_CONFIG_BOTH){
// va_list args;
// va_start(args,config_type);
// char *current = NULL;
// int command_size=0;
// config_str command=NULL;
// while ((current=va_arg(args,char*))){
// yon_config_command_prepare(&command,&command_size,current);
// }
// yon_config_set_last_command(yon_char_parsed_to_string(command,command_size,";"));
// for (int i=0;i<command_size;i++){
// int parsed_size;
// config_str parsed = yon_config_load(command[i],&parsed_size);
// int command_parsed_size=0;
// config_str command_parsed = yon_char_parse(command[i],&command_parsed_size," ");
// if (config_type==YON_CONFIG_DEFAULT&&!strstr(command_parsed[5],"[*]")){
// if (config_type==YON_CONFIG_DEFAULT)
// yon_config_register_default(command_parsed[5], command[i],NULL);
// }
// yon_char_parsed_free(command_parsed,command_parsed_size);
// if (parsed_size>0){
// for (int j=0;j<parsed_size;j++){
// if (!yon_char_is_empty(parsed[j])&&strcmp(parsed[j],"(null)\n")){
// if (parsed[j][strlen(parsed[j])-1]=='\n') parsed[j][strlen(parsed[j])-1]='\0';
// char *current_value = yon_char_new(parsed[j]);
// char *key = yon_char_divide_search(current_value,"=",-1);
// yon_char_remove_brackets(current_value);
// char *current_command = yon_char_new(command[i]);
// current_command = yon_config_replace_parameter(current_command,key,0);
// char *cur_data = config(key);
// int cur_ignore = yon_config_check_ignore(key);
// if ((cur_ignore&&current_value)||(!cur_ignore))
// yon_config_register(key,current_command,current_value);
// if (config_type==YON_CONFIG_DEFAULT){
// yon_config_set_ignore(key);
// yon_config_set_status(key,-2);
// } else {
// yon_config_default_remove(key);
// yon_config_set_status(key,0);
// }
// }
// }
// }
// yon_char_parsed_free(parsed,parsed_size);
// }
// }
// }
int yon_config_load_register(YON_CONFIG_TYPE config_type,char *section,char *parameter, ...){
if (config_type!=YON_CONFIG_BOTH){
if (__yon__config__strings){
@ -740,6 +689,28 @@ void *yon_config_get_by_key(char *key){
return NULL;
}
char *yon_config_default_get_by_key(char *key){
check_config{
dictionary *dict = NULL;
for_dictionaries(dict, (dictionary*)__yon__config__default__strings){
if (strcmp(dict->key,key)==0&&((yon_config_parameter*)dict)->flag1!=-1){
return dict->data;
}
}
}
return NULL;
}
char *yon_config_get(char *key){
check_config{
char *final = yon_config_get_by_key(key);
if (!final)
final = yon_config_default_get_by_key(key);
return final;
}
return NULL;
}
char *yon_config_get_section_for_key(char *key){
check_config{
for_config{

@ -1336,70 +1336,94 @@ int yon_config_remove_by_key(char *key);
*/
int yon_config_clear_by_key(const char *key);
/**yon_config_remove_element(char *key, char *deleted)
* [EN]
*
* [RU]
* Удаляет элемент [deleted] из массива параметров с ключом [key]
*/
int yon_config_remove_element(char *key, char *delete_target, char *divider);
int yon_config_append_element(char *key, char *append, char *divider);
int yon_config_force_append_element(char *key, char *append, char *divider);
/// @brief Remove substring from registeredparameter value string
/// @param key parameter key
/// @param delete_target substring to delete
/// @param separator string, separating elements within parameter's value
/// @return 1 if element was successfully removed, 0 otherwise
int yon_config_remove_element(char *key, char *delete_target, char *separator);
/// @brief Append registered parameter value string
/// @param key parameter key
/// @param append string to append
/// @param separator string, separating elements within parameter's value
/// @return 1 if element was successfully added, 0 otherwise
int yon_config_append_element(char *key, char *append, char *separator);
/// @brief Append parameter value string event if appended string already exists in parameter value or empty
/// @param key parameter key
/// @param append string to append
/// @param separator string, separating elements within parameter's value
/// @return 1 if element was successfully added, 0 otherwise
int yon_config_force_append_element(char *key, char *append, char *separator);
/// @brief Set status for registered configuration parameter
/// @param key parameter key
/// @param status Status to set. -1 for deletion; 0 for unchanged; 1 for created/changed
/// @return 1 if parameter's status was successfully set, 0 otherwise
int yon_config_set_status(char *key, int status);
/// @brief Set status for whole list of configuration parameters exist
/// @param status Status to set. -1 for deletion; 0 for unchanged; 1 for created/changed
void yon_config_set_status_full(int status);
/**yon_config_get_key_by_key(char *data)
* [EN]
*
* [RU]
* Возвращает значение параметра конфига с ключом [key].
* Если параметр с таким значением не найден, возвращается NULL
*/
/// @brief Get value of specific registered parameter
/// @param key parameter key
/// @return parameter value or NULL if parameter doesn't exist
void *yon_config_get_by_key(char *key);
/// @brief Get value of specific registered parameter from default list
/// @param key parameter key
/// @return parameter value or NULL if parameter doesn't exist
char *yon_config_default_get_by_key(char *key);
/// @brief Get value of specific registered parameter from both registered and default lists
/// @param key parameter key
/// @return parameter value or NULL if parameter doesn't exist
char *yon_config_get(char *key);
/// @brief Get configuration section for registered parameter
/// @param key parameter key
/// @return A newly allocated string with configuration section or NULL
char *yon_config_get_section_for_key(char *key);
/// @brief Get all registered parameter keys for specific configuration section
/// @param section_name section name
/// @param size Pointer to size of string array
/// @return A newly allocated string array containing parameter keys
config_str yon_config_get_parameters_for_section(const char *section_name, int *size);
config_str yon_config_get_parameters_for_all_sections(int *size);
config_str yon_config_get_parameters_for_all_sections_saved(int *size);
config_str yon_config_get_parameters_for_all_sections_removed(int *size);
// config_str yon_config_get_parameters_for_all_sections(int *size);
// config_str yon_config_get_parameters_for_all_sections_saved(int *size);
// config_str yon_config_get_parameters_for_all_sections_removed(int *size);
/**yon_config_get_all_by_key(char *data)
* [EN]
*
* [RU]
* Возвращает значение всех параметров конфига с ключом включающем строку [key].
* Если параметр с таким значением не найден, возвращается NULL
*/
/// @brief Find all parameters from the configuration by string
/// @param key the search string
/// @param size Size of the returned parameter list
/// @return A newly allocated list of all found parameters or NULL
void *yon_config_get_all_by_key(char *key, int *size);
/**yon_config_get_selection_by_key(int *size, ...)
* [EN]
*
* [RU]
* Возвращает значения всех найденных параметров в порядке указания, заменяя ненайденные параметры значением NULL
*/
/// @brief Find all parameters from the configuration by string, excluding ignored parameters
/// @param key the search string
/// @param size Size of the returned parameter list
/// @return A newly allocated list of all found parameters or NULL
void *yon_config_get_all_by_key_no_ignored(char *key, int *size);
/// @brief Get all requested configuration parameters in the order requested
/// @param size Size of the returned parameter list
/// @param ... List of parameter keys, ending with NULL
/// @return A newly allocated list of all found parameters or NULL if nothing were found
config_str yon_config_get_selection_by_key(int *size, ...);
config_str yon_config_get_selection_by_key_no_ignored(int *size, ...);
/**yon_config_get_all_by_key(char *data)
* [EN]
*
* [RU]
* Возвращает значение всех параметров конфига с ключом включающем строку [key] не включая игнорируемые параметры.
* Если параметр с таким значением не найден, возвращается NULL
*/
void *yon_config_get_all_by_key_no_ignored(char *key, int *size);
/// @brief Get all requested configuration parameters in the order requested, but exclude ignored parameters
/// @param size Size of the returned parameter list
/// @param ... List of parameter keys, ending with NULL
/// @return A newly allocated list of all found parameters or NULL if nothing were found
config_str yon_config_get_selection_by_key_no_ignored(int *size, ...);
/**yon_config_get_all_keys(int *size)
* [EN]
*
* [RU]
* Возвращает массив с ключами всех параметров внутреннего конфига
*/
/// @brief Get a list of all parameter keys
/// @param size Size of the returned list
/// @return A newly allocated list of all parameter keys or NULL if configuration is empty
config_str yon_config_get_all_keys(int *size);
config_str yon_config_get_all_keys_no_ignored(int *size);
@ -1424,14 +1448,13 @@ int yon_config_set_mask_pattern(const char *key, const char *mask_pattern);
/// @return newly allocated string of regex pattern or NULL
char *yon_config_get_mask_pattern(const char *key);
/**yon_config_clean()
* [EN]
* Erase all parameters from config;
* [RU]
* Удаляет все параметры из конфига;
*/
/// @brief Clear configuration parameters
/// @return 1 if any parameters were removed, 0 if configuratino was empty
int yon_config_clean();
/// @brief Remove 'default' flag from parameter
/// @param key parameter key
/// @return 1 if 'default' flag were removed, 0 if parameter wasn't found
int yon_config_default_remove(char *key);
enum YON_CONFIG_SAVED_TYPE{
@ -1443,19 +1466,24 @@ enum YON_CONFIG_SAVED_TYPE{
YON_CONFIG_SAVED_ERROR
};
/**yon_config_register(char *key, void *data)
* [EN]
*
* [RU]
* Регистрирует новый параметр конфига.
* [key] - ключ параметра;
* [data] - значение параметра;
*/
/// @brief Register new or change existing parameter inside configuration system
/// @param key key for new or existing parameter
/// @param config_load command to load a parameter from the system configuration
/// @param data parameter value
/// @return the type of action performed by the configuration system with the parameter
enum YON_CONFIG_SAVED_TYPE yon_config_register(char *key,char *config_load, char *data);
// void yon_config_register(char *key, char* config_section, void *data);
/// @brief Register new or change existing parameter inside configuration system into default parameters list.
/// @param key key for new or existing parameter
/// @param config_load command to load a parameter from the system configuration
/// @param data parameter value
/// @return the type of action performed by the configuration system with the parameter
enum YON_CONFIG_SAVED_TYPE yon_config_register_default(char *key,char *config_load, char *data);
/// @brief
/// @param target
/// @param path
/// @return
char *yon_config_save_simple(YON_CONFIG_TYPE target, char *path);
/**int yon_config_force_save_registered(char *path, char *section)

Loading…
Cancel
Save