[Bf-blender-cvs] [64d07ffcc32] master: Cleanup: move methods out of field classes
Jacques Lucke
noreply at git.blender.org
Sun Oct 3 16:48:05 CEST 2021
Commit: 64d07ffcc32258c2a39800f1b930f7d262508d0d
Author: Jacques Lucke
Date: Sun Oct 3 16:47:54 2021 +0200
Branches: master
https://developer.blender.org/rB64d07ffcc32258c2a39800f1b930f7d262508d0d
Cleanup: move methods out of field classes
This makes it easier to scan through the classes and simplifies
testing the compile time impact of having these methods in the header.
===================================================================
M source/blender/functions/FN_field.hh
===================================================================
diff --git a/source/blender/functions/FN_field.hh b/source/blender/functions/FN_field.hh
index 3ce0993da59..eeb97946029 100644
--- a/source/blender/functions/FN_field.hh
+++ b/source/blender/functions/FN_field.hh
@@ -77,29 +77,15 @@ class FieldNode {
bool depends_on_input_;
public:
- FieldNode(bool is_input, bool depends_on_input)
- : is_input_(is_input), depends_on_input_(depends_on_input)
- {
- }
+ FieldNode(bool is_input, bool depends_on_input);
virtual ~FieldNode() = default;
virtual const CPPType &output_cpp_type(int output_index) const = 0;
- bool is_input() const
- {
- return is_input_;
- }
-
- bool is_operation() const
- {
- return !is_input_;
- }
-
- bool depends_on_input() const
- {
- return depends_on_input_;
- }
+ bool is_input() const;
+ bool is_operation() const;
+ bool depends_on_input() const;
/**
* Invoke callback for every field input. It might be called multiple times for the same input.
@@ -107,25 +93,8 @@ class FieldNode {
*/
virtual void foreach_field_input(FunctionRef<void(const FieldInput &)> foreach_fn) const = 0;
- virtual uint64_t hash() const
- {
- return get_default_hash(this);
- }
-
- friend bool operator==(const FieldNode &a, const FieldNode &b)
- {
- return a.is_equal_to(b);
- }
-
- friend bool operator!=(const FieldNode &a, const FieldNode &b)
- {
- return !(a == b);
- }
-
- virtual bool is_equal_to(const FieldNode &other) const
- {
- return this == &other;
- }
+ virtual uint64_t hash() const;
+ virtual bool is_equal_to(const FieldNode &other) const;
};
/**
@@ -245,32 +214,10 @@ class FieldOperation : public FieldNode {
FieldOperation(std::unique_ptr<const MultiFunction> function, Vector<GField> inputs = {});
FieldOperation(const MultiFunction &function, Vector<GField> inputs = {});
- Span<GField> inputs() const
- {
- return inputs_;
- }
-
- const MultiFunction &multi_function() const
- {
- return *function_;
- }
-
- const CPPType &output_cpp_type(int output_index) const override
- {
- int output_counter = 0;
- for (const int param_index : function_->param_indices()) {
- MFParamType param_type = function_->param_type(param_index);
- if (param_type.is_output()) {
- if (output_counter == output_index) {
- return param_type.data_type().single_type();
- }
- output_counter++;
- }
- }
- BLI_assert_unreachable();
- return CPPType::get<float>();
- }
+ Span<GField> inputs() const;
+ const MultiFunction &multi_function() const;
+ const CPPType &output_cpp_type(int output_index) const override;
void foreach_field_input(FunctionRef<void(const FieldInput &)> foreach_fn) const override;
};
@@ -295,28 +242,11 @@ class FieldInput : public FieldNode {
IndexMask mask,
ResourceScope &scope) const = 0;
- virtual std::string socket_inspection_name() const
- {
- return debug_name_;
- }
-
- blender::StringRef debug_name() const
- {
- return debug_name_;
- }
-
- const CPPType &cpp_type() const
- {
- return *type_;
- }
-
- const CPPType &output_cpp_type(int output_index) const override
- {
- BLI_assert(output_index == 0);
- UNUSED_VARS_NDEBUG(output_index);
- return *type_;
- }
+ virtual std::string socket_inspection_name() const;
+ blender::StringRef debug_name() const;
+ const CPPType &cpp_type() const;
+ const CPPType &output_cpp_type(int output_index) const override;
void foreach_field_input(FunctionRef<void(const FieldInput &)> foreach_fn) const override;
};
@@ -493,4 +423,104 @@ class IndexFieldInput final : public FieldInput {
ResourceScope &scope) const final;
};
+/* --------------------------------------------------------------------
+ * #FieldNode inline methods.
+ */
+
+inline FieldNode::FieldNode(bool is_input, bool depends_on_input)
+ : is_input_(is_input), depends_on_input_(depends_on_input)
+{
+}
+
+inline bool FieldNode::is_input() const
+{
+ return is_input_;
+}
+
+inline bool FieldNode::is_operation() const
+{
+ return !is_input_;
+}
+
+inline bool FieldNode::depends_on_input() const
+{
+ return depends_on_input_;
+}
+
+inline uint64_t FieldNode::hash() const
+{
+ return get_default_hash(this);
+}
+
+inline bool FieldNode::is_equal_to(const FieldNode &other) const
+{
+ return this == &other;
+}
+
+inline bool operator==(const FieldNode &a, const FieldNode &b)
+{
+ return a.is_equal_to(b);
+}
+
+inline bool operator!=(const FieldNode &a, const FieldNode &b)
+{
+ return !(a == b);
+}
+
+/* --------------------------------------------------------------------
+ * #FieldOperation inline methods.
+ */
+
+inline Span<GField> FieldOperation::inputs() const
+{
+ return inputs_;
+}
+
+inline const MultiFunction &FieldOperation::multi_function() const
+{
+ return *function_;
+}
+
+inline const CPPType &FieldOperation::output_cpp_type(int output_index) const
+{
+ int output_counter = 0;
+ for (const int param_index : function_->param_indices()) {
+ MFParamType param_type = function_->param_type(param_index);
+ if (param_type.is_output()) {
+ if (output_counter == output_index) {
+ return param_type.data_type().single_type();
+ }
+ output_counter++;
+ }
+ }
+ BLI_assert_unreachable();
+ return CPPType::get<float>();
+}
+
+/* --------------------------------------------------------------------
+ * #FieldInput inline methods.
+ */
+
+inline std::string FieldInput::socket_inspection_name() const
+{
+ return debug_name_;
+}
+
+inline StringRef FieldInput::debug_name() const
+{
+ return debug_name_;
+}
+
+inline const CPPType &FieldInput::cpp_type() const
+{
+ return *type_;
+}
+
+inline const CPPType &FieldInput::output_cpp_type(int output_index) const
+{
+ BLI_assert(output_index == 0);
+ UNUSED_VARS_NDEBUG(output_index);
+ return *type_;
+}
+
} // namespace blender::fn
More information about the Bf-blender-cvs
mailing list