AUI Framework  develop
Cross-platform base for C++ UI apps
Loading...
Searching...
No Matches
PropertyModifier.h
    1// AUI Framework - Declarative UI toolkit for modern C++20
    2// Copyright (C) 2020-2025 Alex2772 and Contributors
    3//
    4// SPDX-License-Identifier: MPL-2.0
    5//
    6// This Source Code Form is subject to the terms of the Mozilla Public
    7// License, v. 2.0. If a copy of the MPL was not distributed with this
    8// file, You can obtain one at http://mozilla.org/MPL/2.0/.
    9
   10#pragma once
   11
   12#include <AUI/Traits/concepts.h>
   13
   14namespace aui {
   25template<typename Property>
   27}
   28
   29template<typename T>
   30inline decltype(auto) operator*(aui::PropertyModifier<T>&& t) {
   31    return t.value();
   32}
   33
   34template<typename T>
   35inline decltype(auto) operator*(const aui::PropertyModifier<T>& t) {
   36    return t.value();
   37}
   38
   39#define AUI_DETAIL_BINARY_OP(op)                                                                                   \
   40template<typename T, typename Rhs>                                                                                 \
   41inline decltype(auto) operator op (const aui::PropertyModifier<T>& lhs, Rhs&& rhs) {/* writeScope forwarding op */ \
   42    return *lhs op std::forward<Rhs>(rhs);                                                                         \
   43}                                                                                                                  \
   44
   45// keep in sync with detail/property.h
   46
   47// comparison
   48AUI_DETAIL_BINARY_OP(==)
   49AUI_DETAIL_BINARY_OP(!=)
   50AUI_DETAIL_BINARY_OP(<=)
   51AUI_DETAIL_BINARY_OP(>=)
   52AUI_DETAIL_BINARY_OP(<)
   53AUI_DETAIL_BINARY_OP(>)
   54
   55// arithmetic/logical
   56AUI_DETAIL_BINARY_OP(+)
   57AUI_DETAIL_BINARY_OP(-)
   58AUI_DETAIL_BINARY_OP(*)
   59AUI_DETAIL_BINARY_OP(/)
   60AUI_DETAIL_BINARY_OP(&)
   61AUI_DETAIL_BINARY_OP(&&)
   62AUI_DETAIL_BINARY_OP(|)
   63AUI_DETAIL_BINARY_OP(||)
   64AUI_DETAIL_BINARY_OP(<<)
   65AUI_DETAIL_BINARY_OP(>>)
   66
   67// assignment
   68AUI_DETAIL_BINARY_OP(+=)
   69AUI_DETAIL_BINARY_OP(-=)
   70AUI_DETAIL_BINARY_OP(*=)
   71AUI_DETAIL_BINARY_OP(/=)
   72AUI_DETAIL_BINARY_OP(&=)
   73AUI_DETAIL_BINARY_OP(|=)
   74AUI_DETAIL_BINARY_OP(<<=)
   75AUI_DETAIL_BINARY_OP(>>=)
   76
   77#undef AUI_DETAIL_BINARY_OP
Temporary transparent object that gains write access to underlying property's value,...
Definition PropertyModifier.h:26