allegro配置(ALLEGRO_CONFIG)基础方法的使用

配置常用函数

  • al_create_config
  • al_destroy_config
  • al_load_config_file
  • al_load_config_file_f
  • al_save_config_file
  • al_save_config_file_f
  • al_add_config_section
  • al_add_config_comment
  • al_get_config_value
  • al_set_config_value
  • al_get_first_config_section
  • al_get_next_config_section
  • al_get_first_config_entry
  • al_get_next_config_entry
  • al_merge_config
  • al_merge_config_into

以下操作皆基于ALLEGRO_CONFIG这个结构体。

函数功能、入参、返回介绍

/**
* 创建一个ALLEGRO_CONFIG结构体指针
* @return 返回一个ALLEGRO_CONFIG结构体的指针
*/
ALLEGRO_CONFIG* al_create_config();

/**
* 销毁一个ALLEGRO_CONFIG指针指向的内存,释放内存资源
* @param config ALLEGRO_CONFIG结构体的指针
*/
void al_destroy_config(ALLEGRO_CONFIG* config);

/**
* 加载一个配置文件数据,并将配置文件中的数据转换成一个ALLEGRO_CONFIG
* @param filename 配置文件的路径
* @return 返回配置文件数据所代表的ALLEGRO_CONFIG的指针
*/
ALLEGRO_CONFIG* al_load_config_file(const char* filename);

/**
* 该函数暂不介绍
*/
ALLEGRO_CONFIG* al_load_config_file(ALLEGRO_FILE* file);


/**
* 将一个ALLEGRO_CONFIG持久化到磁盘
* @param filename 持久化磁盘的文件路径
* @param config ALLEGRO_CONFIG的指针
* @return 持久化是否成功,成功,返回true,否则,返回false
*/
bool al_save_config_file(const char* filename, const ALLEGRO_CONFIG* config);


/**
* 该函数暂不介绍
*/
bool al_save_config_file_f(const char* filename, const ALLEGRO_CONFIG* config);

/**
* 向配置中增加一个小节,如果该小节已存在,则什么都不做
* 结果示例:[root]
* @param config 配置结构指针
* @param name 小节的名称
*/
void al_add_config_section(ALLEGRO_CONFIG* config, const char* name);

/**
* 向配置的某个小节中添加注释,如果该名称的小节不存在,创建叫这
* 个名称的小节,注释的内容任意换行符会被替换成空格
* @param config 配置结构体指针
* @param section 小节的名称
* @param comment 注释字符串
*/
void al_add_config_comment(ALLEGRO_CONFIG* config, const char* section, const char* comment);

/**
* 获取配置中某个小节中对应键的值
* @param config 配置结构体指针
* @param section 小节名称
* @param key 小节中的键名
* @return 返回配置中对应小节对应键的值,如果对应小节或键不存在,返回NULL
*/
const char* al_get_config_value(const ALLEGRO_CONFIG* config, const char* section, const char* key);

/**
* 设置配置中对应小节对应键的值,如果节点或者键不存在,节点或键会被创建
* @param config 配置结构体指针
* @param section 小节名称
* @param key 键名
* @param value 值
*/
void al_set_config_value(ALLEGRO_CONFIG* config, const char* section, const char* key, const char* value);

/**
* 获取第一个小节及小节的迭代器,不能对配置进行修改,修改后该函数返回的字符串和迭代器无效
* @param config 配置结构体指针
* @param iterator 配置小节迭代器指针的指针
* @return 第一个小节的名称
*/
char const* al_get_first_config_section(ALLEGRO_CONFIG const * config,ALLEGRO_CONFIG_SECTION** iterator);

/**
* 获取迭代器的下一个小节的名称
* @param iterator 小节迭代器指针的指针
* @return 下一个小节的名称
*/
char const* al_get_next_config_section(ALLEGRO_CONFIG_SECTION** iterator);

/**
* 获取配置对应小节的第一个键的名称和键的迭代器
* @param config 配置结构体指针
* @param section 小节名称
* @param iterator 键迭代器
* @return 返回配置对应小节的第一个键的名称
*/
char const* al_get_first_config_entry(ALLEGRO_CONFIG const* config, char const * section, ALLEGRO_CONFIG_ENTRY** iterator);

/**
* 获取配置中某个小节的键迭代器的下一个键的名称
* @param iterator 配置的某个小节的键迭代器
* @return 返回下一个键的名称
*/
char const* al_get_next_config_entry(ALLEGRO_CONFIG_ENTRY** iterator);

/**
* 将配置1和配置2融合,形成新的配置3,配置3包含配置1和配置2独有的小节或键;
* 配置1和配置2都包含的小节的键,使用配置2的值替换掉配置1的值;
* 保留配置1的注释,丢弃配置2的注释
* @param cfg1 配置1指针
* @param cfg2 配置2指针
* @param 返回配置3
*/
ALLEGRO_CONFIG* al_merge_config(const ALLEGRO_CONFIG* cfg1, const ALLEGRO_CONFIG* cfg2);

/**
* 将配置(add)融合到配置(master),配置(master)包含配置(master)和配置(add)独有的小节或键;
* 配置(master)和配置(add)都包含的小节的键,使用配置(add)的值替换掉配置(master)的值;
* 保留配置(master)的注释,丢弃配置(add)的注释
* @param master 配置master指针
* @param add 配置add指针
*/
void al_merge_config_into(const ALLEGRO_CONFIG* master, const ALLEGRO_CONFIG* add);

下面代码演示了以上几个方法的使用:

#include 
#include 
#include 

/**
* 打印ALLEGRO_CONFIG中的数据(遍历小节、遍历键、获取键值)
* @param config ALLEGRO_CONFIG指针
*/
void printf_allegro_config(ALLEGRO_CONFIG* config)
{
	ALLEGRO_CONFIG_SECTION* section_It = nullptr;
	const char* sectionName = al_get_first_config_section(config, §ion_It);
	while(sectionName != nullptr)
	{
		std::cout << sectionName<

代码中config保存后文件内容如图:
allegro配置(ALLEGRO_CONFIG)基础方法的使用_第1张图片
代码中config1保存后文件内容如图:
allegro配置(ALLEGRO_CONFIG)基础方法的使用_第2张图片
代码中config2保存后文件内容如图:
allegro配置(ALLEGRO_CONFIG)基础方法的使用_第3张图片
代码运行输出的结果:
allegro配置(ALLEGRO_CONFIG)基础方法的使用_第4张图片

你可能感兴趣的:(c++)