// Copyright (C) 2024 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only #ifndef PROTOBUFFIELDPRESENCECHECKER_P_H #define PROTOBUFFIELDPRESENCECHECKER_P_H // // W A R N I N G // ------------- // // This file is not part of the Qt API. It exists purely as an // implementation detail. This header file may change from version to // version without notice, or even be removed. // // We mean it. // #include #include #include #include QT_BEGIN_NAMESPACE namespace ProtobufFieldPresenceChecker { template using HasIsEmpty = decltype(&T::isEmpty); template using has_is_empty_method = qxp::is_detected; template constexpr inline bool IsProtobufTrivialScalarValueType = false; template <> constexpr inline bool IsProtobufTrivialScalarValueType = true; template <> constexpr inline bool IsProtobufTrivialScalarValueType = true; template <> constexpr inline bool IsProtobufTrivialScalarValueType = true; template <> constexpr inline bool IsProtobufTrivialScalarValueType = true; template <> constexpr inline bool IsProtobufTrivialScalarValueType = true; template <> constexpr inline bool IsProtobufTrivialScalarValueType = true; template <> constexpr inline bool IsProtobufTrivialScalarValueType = true; template <> constexpr inline bool IsProtobufTrivialScalarValueType = true; template <> constexpr inline bool IsProtobufTrivialScalarValueType = true; template <> constexpr inline bool IsProtobufTrivialScalarValueType = true; template <> constexpr inline bool IsProtobufTrivialScalarValueType = true; template <> constexpr inline bool IsProtobufTrivialScalarValueType = true; template <> constexpr inline bool IsProtobufTrivialScalarValueType = true; using Function = bool (*)(const QVariant &); template , bool> = true> static bool isPresent(const QVariant &value) { return value.value() != T{}; } template ::value, bool> = true> static bool isPresent(const QVariant &value) { return !value.value().isEmpty(); } } QT_END_NAMESPACE #endif // PROTOBUFFIELDPRESENCECHECKER_P_H