2011-11-21 00:38:05 +01:00
|
|
|
#ifndef _OPTIONS_H_
|
|
|
|
#define _OPTIONS_H_
|
|
|
|
|
|
|
|
#include "list.h"
|
|
|
|
|
2012-02-10 10:04:40 +01:00
|
|
|
class Option {
|
|
|
|
|
|
|
|
public:
|
|
|
|
Option(char *key, char *value);
|
|
|
|
Option(char *key, int value);
|
|
|
|
Option(char *key, double value);
|
|
|
|
Option(char *key, bool value);
|
|
|
|
|
|
|
|
virtual ~Option();
|
|
|
|
|
2012-03-12 01:20:04 +01:00
|
|
|
operator char *();
|
2012-02-10 10:04:40 +01:00
|
|
|
operator int();
|
|
|
|
operator double();
|
|
|
|
operator bool();
|
|
|
|
|
|
|
|
protected:
|
|
|
|
Option(char *key);
|
|
|
|
|
2011-11-21 00:38:05 +01:00
|
|
|
char *key;
|
2012-02-10 10:04:40 +01:00
|
|
|
|
|
|
|
union {
|
|
|
|
const char *string;
|
|
|
|
int integer;
|
|
|
|
double floating;
|
|
|
|
int boolean:1;
|
|
|
|
} value;
|
|
|
|
|
|
|
|
/* subset of json_type's */
|
|
|
|
enum {
|
|
|
|
type_boolean = 1,
|
|
|
|
type_double,
|
|
|
|
type_int,
|
|
|
|
type_string = 6
|
|
|
|
} type;
|
2012-03-12 01:20:04 +01:00
|
|
|
};
|
2012-02-10 10:04:40 +01:00
|
|
|
|
|
|
|
class OptionList : public List<Option> {
|
|
|
|
|
|
|
|
public:
|
|
|
|
Option& lookup(char *key);
|
|
|
|
void parse();
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
2012-03-12 01:20:04 +01:00
|
|
|
};
|
2011-11-21 00:38:05 +01:00
|
|
|
|
|
|
|
#endif /* _OPTIONS_H_ */
|