blob: fad99d64a1aaad1985366967199897d46b17b967 (
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 LIBADWAITAMM_HELPERS_PROPERTIES_HPP
#define LIBADWAITAMM_HELPERS_PROPERTIES_HPP
#include <glibmm/propertyproxy.h>
#include <glibmm/ustring.h>
#include <type_traits>
namespace Adwaita::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 Adwaita::helpers
#endif
|