[Bf-blender-cvs] [80efd2fed82] functions: split core into multiple files
Jacques Lucke
noreply at git.blender.org
Fri Mar 1 17:20:03 CET 2019
Commit: 80efd2fed822d6eaeaeb8e954f8550f2fb6dc546
Author: Jacques Lucke
Date: Fri Mar 1 17:19:36 2019 +0100
Branches: functions
https://developer.blender.org/rB80efd2fed822d6eaeaeb8e954f8550f2fb6dc546
split core into multiple files
===================================================================
M source/blender/functions/CMakeLists.txt
M source/blender/functions/FN_core.hpp
M source/blender/functions/backends/dependencies/dependencies.hpp
D source/blender/functions/core/core.hpp
M source/blender/functions/core/data_flow_graph.hpp
A source/blender/functions/core/function.cpp
A source/blender/functions/core/function.hpp
A source/blender/functions/core/parameter.cpp
A source/blender/functions/core/parameter.hpp
R078 source/blender/functions/core/core.cpp source/blender/functions/core/signature.cpp
A source/blender/functions/core/signature.hpp
A source/blender/functions/core/type.hpp
M source/blender/functions/core/type_inferencing.hpp
M source/blender/functions/core/type_relations.hpp
===================================================================
diff --git a/source/blender/functions/CMakeLists.txt b/source/blender/functions/CMakeLists.txt
index 266326d9256..58552c06882 100644
--- a/source/blender/functions/CMakeLists.txt
+++ b/source/blender/functions/CMakeLists.txt
@@ -20,8 +20,13 @@ set(SRC
c_wrapper.cpp
- core/core.hpp
- core/core.cpp
+ core/type.hpp
+ core/parameter.hpp
+ core/parameter.cpp
+ core/signature.hpp
+ core/signature.cpp
+ core/function.hpp
+ core/function.cpp
core/data_flow_graph.hpp
core/data_flow_graph.cpp
core/dot_export.cpp
diff --git a/source/blender/functions/FN_core.hpp b/source/blender/functions/FN_core.hpp
index 45a481584d0..eec539caab9 100644
--- a/source/blender/functions/FN_core.hpp
+++ b/source/blender/functions/FN_core.hpp
@@ -1,6 +1,9 @@
#pragma once
-#include "core/core.hpp"
+#include "core/type.hpp"
+#include "core/parameter.hpp"
+#include "core/signature.hpp"
+#include "core/function.hpp"
#include "core/data_flow_graph.hpp"
#include "core/type_relations.hpp"
#include "core/type_inferencing.hpp"
\ No newline at end of file
diff --git a/source/blender/functions/backends/dependencies/dependencies.hpp b/source/blender/functions/backends/dependencies/dependencies.hpp
index 98e15db5a75..ed18aff0c10 100644
--- a/source/blender/functions/backends/dependencies/dependencies.hpp
+++ b/source/blender/functions/backends/dependencies/dependencies.hpp
@@ -29,6 +29,7 @@ namespace FN {
static const char *identifier_in_composition();
static void free_self(void *value);
+ virtual ~DependenciesBody() {}
virtual void dependencies(Dependencies &deps) const = 0;
};
diff --git a/source/blender/functions/core/core.hpp b/source/blender/functions/core/core.hpp
deleted file mode 100644
index a8b7fefc3bb..00000000000
--- a/source/blender/functions/core/core.hpp
+++ /dev/null
@@ -1,165 +0,0 @@
-#pragma once
-
-#include <string>
-#include <iostream>
-
-#include "BLI_composition.hpp"
-#include "BLI_small_vector.hpp"
-#include "BLI_small_map.hpp"
-#include "BLI_shared.hpp"
-
-namespace FN {
-
- using namespace BLI;
-
- class Type;
- class Signature;
- class Function;
-
- using SharedType = Shared<Type>;
- using SharedFunction = Shared<Function>;
- using SmallTypeVector = SmallVector<SharedType>;
-
- class Type final {
- public:
- Type() = delete;
- Type(const std::string &name)
- : m_name(name) {}
-
- const std::string &name() const
- {
- return m_name;
- }
-
- template<typename T>
- inline T *extension() const
- {
- return m_extensions.get<T>();
- }
-
- template<typename T>
- void extend(T *extension)
- {
- BLI_assert(m_extensions.get<T>() == nullptr);
- m_extensions.add(extension);
- }
-
- private:
- std::string m_name;
- Composition m_extensions;
- };
-
- class Parameter {
- public:
- Parameter(const std::string &name, const SharedType &type)
- : m_name(name), m_type(type) {}
-
- const std::string &name() const
- {
- return m_name;
- }
-
- const SharedType &type() const
- {
- return m_type;
- }
-
- void print() const;
-
- private:
- const std::string m_name;
- const SharedType m_type;
- };
-
- class InputParameter final : public Parameter {
- public:
- InputParameter(const std::string &name, const SharedType &type)
- : Parameter(name, type) {}
- };
-
- class OutputParameter final : public Parameter {
- public:
- OutputParameter(const std::string &name, const SharedType &type)
- : Parameter(name, type) {}
- };
-
- using InputParameters = SmallVector<InputParameter>;
- using OutputParameters = SmallVector<OutputParameter>;
-
- class Signature {
- public:
- Signature() = default;
- ~Signature() = default;
-
- Signature(const InputParameters &inputs, const OutputParameters &outputs)
- : m_inputs(inputs), m_outputs(outputs) {}
-
- inline const InputParameters &inputs() const
- {
- return m_inputs;
- }
-
- inline const OutputParameters &outputs() const
- {
- return m_outputs;
- }
-
- SmallTypeVector input_types() const;
- SmallTypeVector output_types() const;
-
- bool has_interface(
- const SmallTypeVector &inputs,
- const SmallTypeVector &outputs) const;
-
- bool has_interface(
- const Signature &other) const;
-
- void print(std::string indent = "") const;
-
- private:
- const InputParameters m_inputs;
- const OutputParameters m_outputs;
- };
-
- class Function final {
- public:
- Function(const std::string &name, const Signature &signature)
- : m_name(name), m_signature(signature) {}
-
- Function(const Signature &signature)
- : Function("Function", signature) {}
-
- ~Function() = default;
-
- const std::string &name() const
- {
- return m_name;
- }
-
- inline const Signature &signature() const
- {
- return m_signature;
- }
-
- template<typename T>
- inline const T *body() const
- {
- return m_bodies.get<T>();
- }
-
- template<typename T>
- void add_body(const T *body)
- {
- BLI_assert(m_bodies.get<T>() == nullptr);
- m_bodies.add(body);
- }
-
- void print() const;
-
- private:
- const std::string m_name;
- const Signature m_signature;
- Composition m_bodies;
- };
-
-} /* namespace FN */
\ No newline at end of file
diff --git a/source/blender/functions/core/data_flow_graph.hpp b/source/blender/functions/core/data_flow_graph.hpp
index d23a47e1e2b..6709df54bb6 100644
--- a/source/blender/functions/core/data_flow_graph.hpp
+++ b/source/blender/functions/core/data_flow_graph.hpp
@@ -1,6 +1,6 @@
#pragma once
-#include "core.hpp"
+#include "function.hpp"
#include "BLI_small_set.hpp"
#include "BLI_small_set_vector.hpp"
diff --git a/source/blender/functions/core/function.cpp b/source/blender/functions/core/function.cpp
new file mode 100644
index 00000000000..7a5b7683c66
--- /dev/null
+++ b/source/blender/functions/core/function.cpp
@@ -0,0 +1,11 @@
+#include "function.hpp"
+
+namespace FN {
+
+ void Function::print() const
+ {
+ std::cout << "Function: " << this->name() << std::endl;
+ this->signature().print(" ");
+ }
+
+} /* namespace FN */
\ No newline at end of file
diff --git a/source/blender/functions/core/function.hpp b/source/blender/functions/core/function.hpp
new file mode 100644
index 00000000000..b3d012f46a1
--- /dev/null
+++ b/source/blender/functions/core/function.hpp
@@ -0,0 +1,50 @@
+#pragma once
+
+#include "signature.hpp"
+
+namespace FN {
+
+ class Function final {
+ public:
+ Function(const std::string &name, const Signature &signature)
+ : m_name(name), m_signature(signature) {}
+
+ Function(const Signature &signature)
+ : Function("Function", signature) {}
+
+ ~Function() = default;
+
+ const std::string &name() const
+ {
+ return m_name;
+ }
+
+ inline const Signature &signature() const
+ {
+ return m_signature;
+ }
+
+ template<typename T>
+ inline const T *body() const
+ {
+ return m_bodies.get<T>();
+ }
+
+ template<typename T>
+ void add_body(const T *body)
+ {
+ BLI_assert(m_bodies.get<T>() == nullptr);
+ m_bodies.add(body);
+ }
+
+ void print() const;
+
+ private:
+ const std::string m_name;
+ const Signature m_signature;
+ Composition m_bodies;
+ };
+
+ using SharedFunction = Shared<Function>;
+
+} /* namespace FN */
\ No newline at end of file
diff --git a/source/blender/functions/core/parameter.cpp b/source/blender/functions/core/parameter.cpp
new file mode 100644
index 00000000000..8f2b0ec5df3
--- /dev/null
+++ b/source/blender/functions/core/parameter.cpp
@@ -0,0 +1,10 @@
+#include "parameter.hpp"
+
+namespace FN {
+
+ void Parameter::print() const
+ {
+ std::cout << this->type()->name() << " - " << this->name();
+ }
+
+} /* namespace FN */
\ No newline at end of file
diff --git a/source/blender/functions/core/parameter.hpp b/source/blender/functions/core/parameter.hpp
new file mode 100644
index 00000000000..0b86af2a29d
--- /dev/null
+++ b/source/blender/functions/core/parameter.hpp
@@ -0,0 +1,44 @@
+#pragma once
+
+#include "type.hpp"
+
+namespace FN {
+
+ class Parameter {
+ public:
+ Parameter(const std::string &name, const SharedType &type)
+ : m_name(name), m_type(type) {}
+
+ const std::string &name() const
+ {
+ return m_name;
+ }
+
+ const SharedType &type() const
+ {
+ return m_type;
+ }
+
+ void print() const;
+
+ private:
+ const std::string m_name;
+ const SharedType m_type;
+ };
+
+ class InputParameter final : public Parameter {
+ public:
+ InputParameter(const std::string &name, const SharedType &type)
+ : Parameter(name, type) {}
+ };
+
+ class OutputParameter final : public Parameter {
+ public:
+ OutputParameter(const std::string &name, const SharedType &type)
+ : Parameter(name, type) {}
+ };
+
+ using InputParameters = SmallVector<InputParameter>;
+ using OutputParameters = SmallVector<OutputParameter>;
+
+} /* namespace FN */
\ No newline at end of file
diff --git a/source/blender/functions/core/core.cpp b/source/blender/functions/core/signature.cpp
similarity index 78%
rename from source/blender/functions/core/core.cpp
rename to source/blender/functions/core/signature.cpp
index 447c3ece824..ec0d49da696 100644
--- a/source/blender/functions/core/core.cpp
+++ b/source/blender/functions/core/signature.cpp
@@ -1,4 +1,4 @@
-#include "core.hpp"
+#include "signature.hpp"
namespace FN {
@@ -35,15 +35,6 @@ namespace FN {
return this->has_interface(other.input_types(), other.output_types());
}
-
- /* Printing
- ***************************************/
-
- void Parameter::print() const
- {
- std::cout << this->type()->name() << " - " << this->name();
- }
-
void Signature::print(std::string indent) const
{
std::cout << indent << "Inputs:" << std::endl;
@@ -60,10 +51,4 @@ namespace FN {
}
}
- void Function::print() const
- {
- std::cout << "Function: " << this->name() << std::endl;
- this->signature().print(" ");
- }
-
} /* namespace FN */
\ No newline at end of file
diff --git a/source/blender/functions/core/signature.hpp b/source/blender/functions/core/signature.hpp
new file mode 100644
index 00000000000..2128aa99896
--- /dev/null
+++ b/source/blender/functions/core/signature.hpp
@@ -0,0 +1,42 @@
+#pragma once
+
+#include "parameter.hpp"
+
+namespace FN {
+
+ class Signature {
+ public:
+ Signature() = default;
+ ~Signature() = default;
+
+ Signature(const InputParameters &inputs, const OutputParameters &out
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list