2
0
mirror of https://github.com/rehlds/metamod-r.git synced 2025-01-01 01:25:53 +03:00
metamod-r/metamod/src/conf_meta.h

50 lines
1.1 KiB
C
Raw Normal View History

2016-07-26 19:31:47 +03:00
#pragma once
2016-07-26 03:22:47 +03:00
2016-07-26 19:31:47 +03:00
#include "types_meta.h"
2016-07-26 03:22:47 +03:00
// Max length of line in config file.
#define MAX_CONF_LEN 1024
// Supported config value-types.
2016-07-26 19:31:47 +03:00
enum cf_type_t
{
CF_NONE = 0,
2016-07-26 03:22:47 +03:00
CF_INT,
CF_BOOL,
CF_STR,
CF_PATH,
2016-07-26 19:31:47 +03:00
};
2016-07-26 03:22:47 +03:00
2016-07-26 19:31:47 +03:00
struct option_t
{
char *name; // option name
cf_type_t type; // option type
void *dest; // addr of destination variable, or handler function
char *init; // initial value, as a string, just as config file would
};
class MConfig {
2016-07-26 19:31:47 +03:00
public:
MConfig();
int debuglevel; // to use for meta_debug
char *plugins_file; // ie metamod.ini, plugins.ini
char *exec_cfg; // ie metaexec.cfg, exec.cfg
void init(option_t *global_options);
2016-07-30 02:03:01 +03:00
bool load(const char *filename);
bool set(const char *key, const char *value) const;
2016-07-26 19:31:47 +03:00
void show() const;
private:
option_t *list;
char *filename;
option_t *find(const char *lookup) const;
2016-07-30 02:03:01 +03:00
static bool set(option_t *setp, const char *value);
2016-07-26 19:31:47 +03:00
// Private; to satisfy -Weffc++ "has pointer data members but does
// not override" copy/assignment constructor.
void operator=(const MConfig &src);
MConfig(const MConfig &src);
2016-07-26 03:22:47 +03:00
};