blob: 6cc602a29fa28bd309612feb970dd8fdd2e8113c (
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 TURNS_ADW_HELPERS_PROPERTIES_HPP
#define TURNS_ADW_HELPERS_PROPERTIES_HPP
#include <glibmm/propertyproxy.h>
#include <glibmm/ustring.h>
#include <type_traits>
namespace turns::adw::helpers
{
template<typename ProxiedType, typename ObjectType>
struct deduced_property_proxy
{
using type = Glib::PropertyProxy<ProxiedType>;
};
template<typename ProxiedType, typename ObjectType>
struct deduced_property_proxy<ProxiedType, ObjectType const>
{
using type = Glib::PropertyProxy_ReadOnly<ProxiedType>;
};
template<typename ProxiedType, typename ObjectType>
using deduced_property_proxy_t = typename deduced_property_proxy<ProxiedType, ObjectType>::type;
template<typename ProxiedType, typename ObjectType>
auto make_property_proxy(ObjectType && object, char const * property)
{
return deduced_property_proxy_t<ProxiedType, std::remove_reference_t<ObjectType>>{&object, property};
}
} // namespace turns::adw::helpers
#endif
|