lnk commit front code

This commit is contained in:
lnk
2025-01-16 16:17:01 +08:00
commit 1776a2bf0d
587 changed files with 257079 additions and 0 deletions

298
include/initools.h Normal file
View File

@@ -0,0 +1,298 @@
/**
* @file: $RCSfile: initools.h,v $
* @brief: $parsing ini files
*
* @version: $Revision: 1.1 $
* @date: $Date: 2018/11/24 06:54:49 $
* @author: $Author: lizhongming $
* @state: $State: Exp $
*
* @latest: $Id: initools.h,v 1.1 2018/11/24 06:54:49 lizhongming Exp $
*/
/****
Examples 1:
inifile_t *Hp;
char values[15];
ini_section_t *sec;
ini_Parser_Create("c:\\1.ini",&Hp);
printf("---MAPI=%d--\n",ini_GetKeyIntValueWithDefault(Hp,"Mail","MAPI",999));
printf("---CMCDLLNAME32=%d--\n",ini_GetKeyIntValueWithDefault(Hp,"Mail","CMCDLLNAME32",999));
ini_GetKeyValue(Hp,"Mail","CMCDLLNAME32",values,15);
printf("---CMCDLLNAME32=%s--\n",values);
sec=ini_GetSection(Hp,"Mail");
printf("---MAPIX=%d--\n",ini_GetKeyIntValueByHandleWithDefault(sec,"MAPIX",999));
sec=ini_GetSection(Hp,"MCI Extensions.BAK");
ini_GetKeyValueByHandle(sec,"wm",values,15);
printf("---MAPIX=%s--\n",values);
ini_Parser_Destory(Hp);
Example 2: <20><><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>INI<4E>ļ<EFBFBD>
int ini_test()
{
inifile_t *Parser;
apr_status_t rv;
char contents[10240];
strcpy(contents,"");
rv = ini_Parser_Create_By_Memory_file(contents,sizeof(contents),&Parser);
if (rv) return rv;
rv = ini_AppendSectionM(Parser,"SectionA");
if (rv) return rv;
rv = ini_AppendKeyM(Parser,"SectionA","Item1","1");
if (rv) return rv;
rv = ini_AppendKeyM(Parser,"SectionA","Item2","2");
if (rv) return rv;
rv = ini_AppendKeyM(Parser,"SectionA","Item3","3");
if (rv) return rv;
rv = ini_Dump(Parser);
printf ("%s",contents);
return rv;
}
****/
#ifndef INITOOLS_H_HBJYUGGVYUGYGU
#define INITOOLS_H_HBJYUGGVYUGYGU
#include "apr.h"
#include "apr_errno.h"
#include "apr_pools.h"
#define INI_MAX_CHARS_A_LINE (1024)
typedef struct inifile_t inifile_t;
typedef struct ini_section_t ini_section_t;
typedef struct ini_item_t ini_item_t;
typedef enum token_name token_name;
typedef enum parse_token parse_token;
typedef enum char_event char_event;
#define INI_COMMON_FILE (0) /**< INI<4E>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD> */
#define INI_MEMORY_FILE (1) /**< INI<4E>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD> */
//<2F><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>ļ<EFBFBD>
typedef int(* CALLBACK_CONTENT_FILTER) (const char* content,int line_no,void *user_data);
typedef int(* CALLBACK_CONTENT_OPERATION)(const char* org_content,char *changed_content,size_t buffer_len,void * user_data);
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>հ<EFBFBD>INI<4E>ļ<EFBFBD>
APR_DECLARE(apr_status_t) ini_Create_BlankFile (const char *path,const char *filename);
/**
* @brief INI<4E>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param filename Ҫ<><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
* @param parse_handle<6C><65><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return <20>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>APR_SUCCESS
*/
APR_DECLARE(apr_status_t) ini_Parser_Create (const char *filename,inifile_t **parse_handle);
/**
* @brief INI<4E>ڴ<EFBFBD><DAB4>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param str_buffer Ҫ<><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
* @param parse_handle<6C><65><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return <20>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>APR_SUCCESS
*/
APR_DECLARE(apr_status_t) ini_Parser_Create_By_Memory_file (char * str_buffer ,size_t len , inifile_t **parse_handle);
/**
* @brief INI<4E>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
APR_DECLARE(void) ini_Parser_Destory (inifile_t *parse_handle);
/**
* @brief <20><>ȡһ<C8A1><D2BB>ini <20>ļ<EFBFBD><C4BC>е<EFBFBD><D0B5><EFBFBD><EFBFBD>ж<EFBFBD>
* @param ini_parse_handle <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param szBuffer <20><><EFBFBD>ظ<EFBFBD>ʽ 'AAA\0BBB\0...\0\0'
* @return <20>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>APR_SUCCESSszBuffer is not large enough to hold whole sections return APR_ENOMEM .
* @note szBuffer should be large enough
*/
APR_DECLARE(apr_status_t) ini_GetSectionNames(inifile_t *ini_parse_handle ,char* szBuffer, int nlen);
//
//szBuffer <20><>С 'AAA\0BBB\0...\0\0'
//return APR_ENOMEM .
/**
* @brief <20><>ȡһ<C8A1><D2BB>ini <20>ļ<EFBFBD><C4BC>е<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD>,szBuffer should be large enough
* @param ini_parse_handle <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param szBuffer <20><><EFBFBD>ظ<EFBFBD>ʽ 'AAA\0BBB\0...\0\0'
* @return <20>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>APR_SUCCESS, return APR_ENOMEM if szBuffer is not large enough to hold whole item lists
* @note szBuffer should be large enough
*/
APR_DECLARE(apr_status_t) ini_GetItemNames(ini_section_t *sec,char* szBuffer, int nlen);
/**
* @brief <20><>ȡָ<C8A1><D6B8><EFBFBD>ξ<EFBFBD><CEBE><EFBFBD>
* @param ini_parse_handle <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param Section ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return <20><><EFBFBD>ض<EFBFBD><D8B6>ξ<EFBFBD><CEBE><EFBFBD>,<2C>Ҳ<EFBFBD><D2B2><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>η<EFBFBD><CEB7><EFBFBD>NULL
*/
APR_DECLARE(ini_section_t*) ini_GetSection (const inifile_t *ini_parse_handle , const char* Section);
/**
* @brief <20><>ȡָ<C8A1><D6B8>section<6F>е<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ,Ч<>ʽϸ߽<CFB8><DFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param sec <20>ξ<EFBFBD><CEBE><EFBFBD>
* @param Key ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param nDefault <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵΪ<D6B5><CEAA>ʱ<EFBFBD><CAB1><EFBFBD>ص<EFBFBD>ȱʡֵ
* @return <20><><EFBFBD>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
*/
APR_DECLARE(int) ini_GetKeyIntValueByHandleWithDefault(ini_section_t *sec ,const char* Key,int nDefault);
/**
* @brief <20><>ȡָ<C8A1><D6B8>section<6F>е<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ,Ч<>ʽϸ߽<CFB8><DFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param sec <20>ξ<EFBFBD><CEBE><EFBFBD>
* @param Key ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param Value <20><><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
* @return <20>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>APR_SUCCESS
*/
APR_DECLARE(apr_status_t) ini_GetKeyIntValueByHandle(ini_section_t *sec ,const char* Key, int *Value);
/**
* @brief <20><>ȡָ<C8A1><D6B8>section<6F>е<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>ֵ,Ч<>ʽϸ߽<CFB8><DFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param sec <20>ξ<EFBFBD><CEBE><EFBFBD>
* @param Key ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param szValue <20><><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param nlen <20><><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
* @return <20><><EFBFBD>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>ֵ
*/
APR_DECLARE(apr_status_t) ini_GetKeyValueByHandle(ini_section_t *sec ,const char* Key,
char* szValue, int nlen);
/**
* @brief <20><>ȡָ<C8A1><D6B8>section<6F>е<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>ֵ,Ч<>ʽϸ߽<CFB8><DFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param ini_parse_handle <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param Section ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param Key ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param nDefault <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵΪ<D6B5><CEAA>ʱ<EFBFBD><CAB1><EFBFBD>ص<EFBFBD>ȱʡֵ
* @return <20><><EFBFBD>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
*/
APR_DECLARE(int) ini_GetKeyIntValueWithDefault(inifile_t *ini_parse_handle ,const char* Section,
const char* Key,int nDefault);
/**
* @brief <20><>ȡָ<C8A1><D6B8>section<6F>е<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
* @param ini_parse_handle <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param Section ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param Key ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param szValue <20><><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param nlen <20><><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
* @return <20>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>APR_SUCCESS
*/
APR_DECLARE(apr_status_t) ini_GetKeyIntValue(inifile_t *ini_parse_handle ,const char* Section,
const char* Key,int *value);
/**
* @brief <20><>ȡָ<C8A1><D6B8>section<6F>е<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>ֵ
* @param ini_parse_handle <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param Section ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param Key ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param szValue <20><><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param nlen <20><><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
* @return <20>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>APR_SUCCESS
*/
APR_DECLARE(apr_status_t) ini_GetKeyValue(inifile_t *ini_parse_handle ,
const char* Section,const char* Key,
char* szValue, int nlen);
/**
* @brief <20>趨ָ<E8B6A8><D6B8>section<6F>е<EFBFBD>ijһ<C4B3><D2BB><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>ֵ
* @param ini_parse_handle <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param Section ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param Key ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param szValue <20><>ֵ<EFBFBD><D6B5><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return <20>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>APR_SUCCESS
* @mark <20><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>INI<4E>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><C3B4>д<EFBFBD><D0B4>֮ǰӦ<C7B0>ó<EFBFBD><C3B3><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>ͷž<CDB7><C5BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD≯<EFBFBD><CCB8><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>е<EFBFBD>ֵ<EFBFBD><D6B5>Ȼ<EFBFBD><C8BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>Ӧ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
*/
APR_DECLARE(apr_status_t) ini_SetKeyValue(inifile_t *ini_parse_handle ,const char* Section,const char* Key,
char* szValue);
/**
* @brief <20>趨ָ<E8B6A8><D6B8>section<6F>е<EFBFBD>ijһ<C4B3><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
* @param ini_parse_handle <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param Section ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param Key ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param szValue <20><>ֵ<EFBFBD><D6B5><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return <20>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>APR_SUCCESS
* @mark <20><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>INI<4E>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><C3B4>д<EFBFBD><D0B4>֮ǰӦ<C7B0>ó<EFBFBD><C3B3><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>ͷž<CDB7><C5BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD≯<EFBFBD><CCB8><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>е<EFBFBD>ֵ<EFBFBD><D6B5>Ȼ<EFBFBD><C8BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>Ӧ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
*/
APR_DECLARE(apr_status_t) ini_SetKeyIntValue(inifile_t *ini_parse_handle ,const char* Section_Name,const char* Key,int value);
/**
* @brief ָ<><D6B8><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB> Section<6F><6E>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>,<2C><>ini_Dump<6D><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>)
* @param ini_parse_handle <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return <20>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>APR_SUCCESS
*/
APR_DECLARE(apr_status_t) ini_AppendSectionM(inifile_t *ini_parse_handle,const char* Section_Name);
/**
* @brief ɾ<><C9BE>һ<EFBFBD><D2BB>Section<6F><6E>
* @param ini_parse_handle <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param Section ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return <20><>ԭINI<4E>ļ<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>򲻴<EFBFBD><F2B2BBB4><EFBFBD> <20><> <20>ɹ<EFBFBD>ɾ<EFBFBD><C9BE>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>APR_SUCCESS
* @mark <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD>[Section Name]ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Щ<EFBFBD><D0A9><EFBFBD><EFBFBD>
*/
APR_DECLARE(apr_status_t) ini_DeleteSection(inifile_t *ini_parse_handle,const char* Section);
/**
* @brief <20><>һ<EFBFBD><D2BB><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD>ڵ<EFBFBD>Section<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>KEY(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>)
* @param ini_parse_handle <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param Section ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(Ϊ""<22><>ʾ <20><>SECTION,Ҳ<><D2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Щ<EFBFBD><D0A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[XX]<5D>µIJ<C2B5><C4B2><EFBFBD>,<2C><><EFBFBD>Ƽ<EFBFBD>)
* @return <20><>ԭINI<4E>ļ<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>򲻴<EFBFBD><F2B2BBB4><EFBFBD> <20><> <20>ɹ<EFBFBD>ɾ<EFBFBD><C9BE>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>APR_SUCCESS
* @mark <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD>[Section Name]ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Щ<EFBFBD><D0A9><EFBFBD><EFBFBD>
*/
APR_DECLARE(apr_status_t) ini_AppendKeyM (inifile_t *ini_parse_handle ,const char* Section,const char* Key,const char * value);
/**
* @brief ɾ<><C9BE>һ<EFBFBD><D2BB>Section<6F><6E>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>)
* @param ini_parse_handle <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param Section ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return <20><>ԭINI<4E>ļ<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>򲻴<EFBFBD><F2B2BBB4><EFBFBD> <20><> <20>ɹ<EFBFBD>ɾ<EFBFBD><C9BE>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>APR_SUCCESS
* @mark <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD>[Section Name]ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Щ<EFBFBD><D0A9><EFBFBD><EFBFBD>
*/
APR_DECLARE(apr_status_t) ini_DeleteSectionM(inifile_t *ini_parse_handle,const char* Section_Name);
/**
* @brief <20><>һ<EFBFBD><D2BB><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD>ڵ<EFBFBD>Section<6F><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>KEY(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>)
* @param ini_parse_handle <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param sec <20>ξ<EFBFBD><CEBE><EFBFBD>
* @return <20><>ԭINI<4E>ļ<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>򲻴<EFBFBD><F2B2BBB4><EFBFBD> <20><> <20>ɹ<EFBFBD>ɾ<EFBFBD><C9BE>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>APR_SUCCESS
* @mark <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD>[Section Name]ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Щ<EFBFBD><D0A9><EFBFBD><EFBFBD>
*/
APR_DECLARE(apr_status_t) ini_AppendKeyMByHandle (inifile_t *ini_parse_handle ,ini_section_t *sec,const char* Key,const char * value);
/**
* @brief <20><>һ<EFBFBD><D2BB><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD>ڵ<EFBFBD>Section<6F><6E><EFBFBD>¸<EFBFBD><C2B8>¼<EFBFBD>ֵ(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>)
* @param ini_parse_handle <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param sec <20>ξ<EFBFBD><CEBE><EFBFBD>
* @return <20><>ԭINI<4E>ļ<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>򲻴<EFBFBD><F2B2BBB4><EFBFBD> <20><> <20>ɹ<EFBFBD>ɾ<EFBFBD><C9BE>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>APR_SUCCESS
* @mark <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD>[Section Name]ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Щ<EFBFBD><D0A9><EFBFBD><EFBFBD>
*/
APR_DECLARE(apr_status_t) ini_UpdateKeyMByHandle (inifile_t *ini_parse_handle ,ini_section_t *sec,const char* Key,const char * value);
/**
* @brief <20><><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0>INI<4E>ڴ澵<DAB4><E6BEB5><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
*/
APR_DECLARE(apr_status_t) ini_Dump(inifile_t *ini_parse_handle);
#ifdef __cplusplus
}
#endif
#endif /* GENERAL_DEQUE_H */