From b4563ab2dfe1e553bfe48d50592823ff13a49692 Mon Sep 17 00:00:00 2001 From: Jacques Lucke Date: Fri, 4 Feb 2022 17:18:41 +0100 Subject: Cleanup: avoid generating some functions in all translation units Every translation unit that included the modified headers generated some extra code, even though it was not used. This adds unnecessary compile time overhead and is annoying when investigating the generated assembly. --- source/blender/functions/FN_field.hh | 5 +++-- source/blender/functions/intern/field.cc | 13 +++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) (limited to 'source/blender/functions') diff --git a/source/blender/functions/FN_field.hh b/source/blender/functions/FN_field.hh index e869927c33b..e42feac1644 100644 --- a/source/blender/functions/FN_field.hh +++ b/source/blender/functions/FN_field.hh @@ -87,8 +87,7 @@ class FieldNode { public: FieldNode(FieldNodeType node_type); - - virtual ~FieldNode() = default; + virtual ~FieldNode(); virtual const CPPType &output_cpp_type(int output_index) const = 0; @@ -230,6 +229,7 @@ class FieldOperation : public FieldNode { public: FieldOperation(std::shared_ptr function, Vector inputs = {}); FieldOperation(const MultiFunction &function, Vector inputs = {}); + ~FieldOperation(); Span inputs() const; const MultiFunction &multi_function() const; @@ -259,6 +259,7 @@ class FieldInput : public FieldNode { public: FieldInput(const CPPType &type, std::string debug_name = ""); + ~FieldInput(); /** * Get the value of this specific input based on the given context. The returned virtual array, diff --git a/source/blender/functions/intern/field.cc b/source/blender/functions/intern/field.cc index d6b83c42294..fe3041b8602 100644 --- a/source/blender/functions/intern/field.cc +++ b/source/blender/functions/intern/field.cc @@ -570,6 +570,13 @@ bool IndexFieldInput::is_equal_to(const fn::FieldNode &other) const return dynamic_cast(&other) != nullptr; } +/* -------------------------------------------------------------------- + * FieldNode. + */ + +/* Avoid generating the destructor in every translation unit. */ +FieldNode::~FieldNode() = default; + /* -------------------------------------------------------------------- * FieldOperation. */ @@ -581,6 +588,9 @@ FieldOperation::FieldOperation(std::shared_ptr function, owned_function_ = std::move(function); } +/* Avoid generating the destructor in every translation unit. */ +FieldOperation::~FieldOperation() = default; + /** * Returns the field inputs used by all the provided fields. * This tries to reuse an existing #FieldInputs whenever possible to avoid copying it. @@ -655,6 +665,9 @@ FieldInput::FieldInput(const CPPType &type, std::string debug_name) field_inputs_ = std::move(field_inputs); } +/* Avoid generating the destructor in every translation unit. */ +FieldInput::~FieldInput() = default; + /* -------------------------------------------------------------------- * FieldConstant. */ -- cgit v1.2.3