summaryrefslogtreecommitdiff
path: root/src/config.hh
blob: 5262e9111aa4f151e89b82fe1be37af422295fd3 (plain)
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
// -*- mode: c++; c-basic-offset: 2; -*-

#ifndef CONFIG_HH
#define CONFIG_HH

#include <string>

class Config {
public:
  virtual ~Config() { }

  static Config* create();

  virtual bool load_name(std::string const& name) = 0;
  virtual bool load_file(std::string const& filename) = 0;

  virtual bool good() const = 0;
  virtual std::string const& last_error() const = 0;

  virtual std::string const& get(std::string const& key,
                                 std::string const& fallback) = 0;
  virtual char const* get(std::string const& key, char const* fallback) = 0;
  virtual bool get(std::string const& key, bool fallback) = 0;
  virtual bool is_set(std::string const& key) = 0;

  virtual void set(std::string const& key, std::string const& value) = 0;

protected:
  Config() { }
  Config(Config const&) = delete;
};

#endif  // CONFIG_HH