summaryrefslogtreecommitdiff
path: root/src/xcb_resources.hh
blob: 5e04e26f5a8a5c93cfafeae049d385267d7a3cb5 (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
34
35
#ifndef XCB_RESOURCES_HH
#define XCB_RESOURCES_HH

#include "xcb_connection.hh"

#include <memory>
#include <optional>
#include <string>

namespace xcb {

class Resources {
public:
  virtual ~Resources() = default;

  virtual std::optional<std::string> get_string(std::string const& name,
                                                std::string const& clazz) = 0;

  virtual std::optional<long> get_long(std::string const& name,
                                       std::string const& clazz) = 0;

  virtual std::optional<bool> get_bool(std::string const& name,
                                       std::string const& clazz) = 0;

  static std::unique_ptr<Resources> create(shared_conn conn);

protected:
  Resources() = default;
  Resources(Resources const&) = delete;
  Resources& operator=(Resources const&) = delete;
};

}  // namespace xcb

#endif  // XCB_RESOURCES_HH