summaryrefslogblamecommitdiff
path: root/src/common/raconf.h
blob: 242c585bb5e10644b29d885b1dc360b56e0a5516 (plain) (tree)
1
2
3
4
5
6
7
8
9








                                                                           
  



                                                        




                              
   
                                     
  



                                             
                                            

 
   



                                            
                                  

 

                                                                             

   



                                                                                                  

   
                                                                                                  





                                                                                                                            
                                                                                                                                  



      
// 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