// // Created by mfritzsc on 7/11/17. // #ifndef TMCAGLWM_APP_HPP #define TMCAGLWM_APP_HPP #include #include namespace wm { using std::experimental::optional; using std::experimental::nullopt; template struct result { optional e; optional t; bool is_ok() const { return this->t != nullopt; } bool is_err() const { return this->e != nullopt; } T unwrap() { return this->t.value(); } }; template struct result Err(E e) { return result{e, nullopt}; } template struct result Ok(T t) { return result{nullopt, t}; } using json = nlohmann::json; struct App { struct API { struct App *app; result debug_status() const; result debug_layers() const; result debug_surfaces() const; result register_surface(uint32_t appid, uint32_t surfid); }; struct API api; App(); }; } // namespace wm #endif //TMCAGLWM_APP_HPP