summaryrefslogtreecommitdiff
path: root/src/common/raconf.h
blob: 242c585bb5e10644b29d885b1dc360b56e0a5516 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
// Copyright (c) rAthena Project (www.rathena.org) - Licensed under GNU GPL
// For more information, see LICENCE in the main folder

#ifndef _rA_CONF_H_
#define _rA_CONF_H_

#include "../common/cbasetypes.h"

// rAthena generic configuration file parser
//
//  Config file Syntax is athena style
//  extended with ini style support (including sections)
//
//  Comments are started with // or ; (ini style)
//

typedef struct raconf *raconf;


/**
 * Parses a rAthna Configuration file
 *
 * @param file_name path to the file to parse
 *
 * @returns not NULL incase of success
 */
raconf  raconf_parse(const char *file_name);


/**
 * Frees a Handle received from raconf_parse
 *
 * @param rc - the handle to free
 */
void    raconf_destroy(raconf rc);


/**
 * Gets the value for Section / Key pair, if key not exists returns _default!
 *
 */
bool        raconf_getbool(raconf rc, const char *section, const char *key, bool _default);
float       raconf_getfloat(raconf rc,const char *section, const char *key, float _default);
int64       raconf_getint(raconf rc,  const char *section, const char *key, int64 _default);
const char *raconf_getstr(raconf rc,  const char *section, const char *key, const char *_default);

/**
 * Gets the value for Section / Key pair, but has fallback section option if not found in section,
 * if not found in both - default gets returned.
 *
 */
bool        raconf_getboolEx(raconf rc, const char *section, const char *fallback_section, const char *key, bool _default);
float       raconf_getfloatEx(raconf rc,const char *section, const char *fallback_section, const char *key, float _default);
int64       raconf_getintEx(raconf rc,  const char *section, const char *fallback_section, const char *key, int64 _default);
const char *raconf_getstrEx(raconf rc,  const char *section, const char *fallback_section, const char *key, const char *_default);



#endif