Changeset View
Changeset View
Standalone View
Standalone View
source/blender/functions/FN_field_cpp_type.hh
| /* SPDX-License-Identifier: GPL-2.0-or-later */ | /* SPDX-License-Identifier: GPL-2.0-or-later */ | ||||
| #pragma once | #pragma once | ||||
| /** \file | /** \file | ||||
| * \ingroup fn | * \ingroup fn | ||||
| */ | */ | ||||
| #include "FN_cpp_type_make.hh" | #include "BLI_cpp_type_make.hh" | ||||
| #include "FN_field.hh" | #include "FN_field.hh" | ||||
| namespace blender::fn { | namespace blender::fn { | ||||
| template<typename T> struct FieldCPPTypeParam { | template<typename T> struct FieldCPPTypeParam { | ||||
| }; | }; | ||||
| class FieldCPPType : public CPPType { | class FieldCPPType : public CPPType { | ||||
| ▲ Show 20 Lines • Show All 104 Lines • ▼ Show 20 Lines | public: | ||||
| { | { | ||||
| return as_field_(value_or_field); | return as_field_(value_or_field); | ||||
| } | } | ||||
| }; | }; | ||||
| } // namespace blender::fn | } // namespace blender::fn | ||||
| #define MAKE_FIELD_CPP_TYPE(DEBUG_NAME, FIELD_TYPE) \ | #define MAKE_FIELD_CPP_TYPE(DEBUG_NAME, FIELD_TYPE) \ | ||||
| template<> \ | template<> const blender::CPPType &blender::CPPType::get_impl<blender::fn::Field<FIELD_TYPE>>() \ | ||||
| const blender::fn::CPPType &blender::fn::CPPType::get_impl<blender::fn::Field<FIELD_TYPE>>() \ | |||||
| { \ | { \ | ||||
| static blender::fn::FieldCPPType cpp_type{ \ | static blender::fn::FieldCPPType cpp_type{ \ | ||||
| blender::fn::FieldCPPTypeParam<blender::fn::Field<FIELD_TYPE>>(), STRINGIFY(DEBUG_NAME)}; \ | blender::fn::FieldCPPTypeParam<blender::fn::Field<FIELD_TYPE>>(), STRINGIFY(DEBUG_NAME)}; \ | ||||
| return cpp_type; \ | return cpp_type; \ | ||||
| } \ | } \ | ||||
| template<> \ | template<> \ | ||||
| const blender::fn::CPPType & \ | const blender::CPPType &blender::CPPType::get_impl<blender::fn::ValueOrField<FIELD_TYPE>>() \ | ||||
| blender::fn::CPPType::get_impl<blender::fn::ValueOrField<FIELD_TYPE>>() \ | |||||
| { \ | { \ | ||||
| static blender::fn::ValueOrFieldCPPType cpp_type{ \ | static blender::fn::ValueOrFieldCPPType cpp_type{ \ | ||||
| blender::fn::FieldCPPTypeParam<blender::fn::ValueOrField<FIELD_TYPE>>(), \ | blender::fn::FieldCPPTypeParam<blender::fn::ValueOrField<FIELD_TYPE>>(), \ | ||||
| STRINGIFY(DEBUG_NAME##OrValue)}; \ | STRINGIFY(DEBUG_NAME##OrValue)}; \ | ||||
| return cpp_type; \ | return cpp_type; \ | ||||
| } | } | ||||