[Bf-blender-cvs] [39af860] object_nodes: Cleanup: Moved value class into own file, away from pure type declarations.
Lukas Tönne
noreply at git.blender.org
Thu Mar 10 08:49:37 CET 2016
Commit: 39af860e6dfadde3b27c5b49cb602bd065e6451e
Author: Lukas Tönne
Date: Wed Mar 9 17:25:58 2016 +0100
Branches: object_nodes
https://developer.blender.org/rB39af860e6dfadde3b27c5b49cb602bd065e6451e
Cleanup: Moved value class into own file, away from pure type declarations.
===================================================================
M source/blender/blenvm/compile/CMakeLists.txt
M source/blender/blenvm/compile/bvm_nodegraph.h
M source/blender/blenvm/compile/bvm_typedesc.cc
M source/blender/blenvm/compile/bvm_typedesc.h
A source/blender/blenvm/compile/bvm_value.cc
A source/blender/blenvm/compile/bvm_value.h
===================================================================
diff --git a/source/blender/blenvm/compile/CMakeLists.txt b/source/blender/blenvm/compile/CMakeLists.txt
index a2b5890..72bc55f 100644
--- a/source/blender/blenvm/compile/CMakeLists.txt
+++ b/source/blender/blenvm/compile/CMakeLists.txt
@@ -48,6 +48,8 @@ set(SRC
bvm_nodegraph.h
bvm_typedesc.cc
bvm_typedesc.h
+ bvm_value.cc
+ bvm_value.h
)
TEST_UNORDERED_MAP_SUPPORT()
diff --git a/source/blender/blenvm/compile/bvm_nodegraph.h b/source/blender/blenvm/compile/bvm_nodegraph.h
index 1e97151..601e8c5 100644
--- a/source/blender/blenvm/compile/bvm_nodegraph.h
+++ b/source/blender/blenvm/compile/bvm_nodegraph.h
@@ -52,6 +52,7 @@ extern "C" {
#include "bvm_opcode.h"
#include "bvm_typedesc.h"
+#include "bvm_value.h"
#include "bvm_util_string.h"
namespace bvm {
diff --git a/source/blender/blenvm/compile/bvm_typedesc.cc b/source/blender/blenvm/compile/bvm_typedesc.cc
index ec5a634..e696417 100644
--- a/source/blender/blenvm/compile/bvm_typedesc.cc
+++ b/source/blender/blenvm/compile/bvm_typedesc.cc
@@ -30,6 +30,7 @@
*/
#include "bvm_typedesc.h"
+#include "bvm_value.h"
namespace bvm {
diff --git a/source/blender/blenvm/compile/bvm_typedesc.h b/source/blender/blenvm/compile/bvm_typedesc.h
index ed34217..b8b0902 100644
--- a/source/blender/blenvm/compile/bvm_typedesc.h
+++ b/source/blender/blenvm/compile/bvm_typedesc.h
@@ -162,133 +162,6 @@ struct BaseTypeTraits<BVM_DUPLIS> {
/* ------------------------------------------------------------------------- */
-template <BVMType type>
-struct const_array {
- typedef BaseTypeTraits<type> traits;
- typedef typename traits::POD POD;
-
- const_array(const POD *data, size_t size) :
- m_data(data),
- m_size(size)
- {}
-
- ~const_array()
- {}
-
- const POD *data() const { return m_data; }
-
- const POD& operator [] (size_t index) const
- {
- return m_data[index];
- }
-
-private:
- POD *m_data;
- size_t m_size;
-};
-
-template <BVMType type>
-struct array {
- typedef BaseTypeTraits<type> traits;
- typedef typename traits::POD POD;
-
- array() :
- m_data(NULL),
- m_size(0)
- {}
-
- array(POD *data, size_t size) :
- m_data(data),
- m_size(size)
- {}
-
- ~array()
- {}
-
- operator const_array<type>() const
- {
- return const_array<type>(m_data, m_size);
- }
-
- POD *data() const { return m_data; }
-
- POD& operator [] (size_t index)
- {
- return m_data[index];
- }
-
-private:
- POD *m_data;
- size_t m_size;
-};
-
-template <BVMType type>
-struct const_image {
- typedef BaseTypeTraits<type> traits;
- typedef typename traits::POD POD;
-
- const_image(const POD *data, size_t width, size_t height) :
- m_data(data),
- m_width(width),
- m_height(height)
- {}
-
- ~const_image()
- {}
-
- const POD *data() const { return m_data; }
-
- const POD& get(size_t x, size_t y) const
- {
- return m_data[x + y * m_width];
- }
-
-private:
- POD *m_data;
- size_t m_width;
- size_t m_height;
-};
-
-template <BVMType type>
-struct image {
- typedef BaseTypeTraits<type> traits;
- typedef typename traits::POD POD;
-
- image() :
- m_data(NULL),
- m_width(0),
- m_height(0)
- {}
-
- image(const POD *data, size_t width, size_t height) :
- m_data(data),
- m_width(width),
- m_height(height)
- {}
-
- ~image()
- {}
-
- operator const_image<type>() const
- {
- return const_image<type>(m_data, m_width, m_height);
- }
-
- POD *data() const { return m_data; }
-
- POD& get(size_t x, size_t y)
- {
- return m_data[x + y * m_width];
- }
-
-private:
- POD *m_data;
- size_t m_width;
- size_t m_height;
-};
-
-/* ------------------------------------------------------------------------- */
-
struct StructSpec;
struct TypeDesc {
@@ -351,271 +224,6 @@ private:
FieldList m_fields;
};
-/* ------------------------------------------------------------------------- */
-
-struct Value {
- template <typename T>
- static Value *create(const TypeDesc &typedesc, T *data, size_t size);
- template <typename T>
- static Value *create(const TypeDesc &typedesc, T data);
-
- virtual ~Value()
- {}
-
- const TypeDesc &typedesc() const { return m_typedesc; }
-
- template <BVMType type>
- bool get(array<type> *data) const;
-
- template <typename T>
- bool get(T *data) const;
-
- virtual Value *copy() const = 0;
-
-protected:
- Value(const TypeDesc &typedesc) :
- m_typedesc(typedesc)
- {}
-
- TypeDesc m_typedesc;
-};
-
-template <BVMType type>
-struct SingleValue : public Value {
- typedef BaseTypeTraits<type> traits;
- typedef typename traits::POD POD;
-
- SingleValue(typename traits::POD data) :
- Value(TypeDesc(type)),
- m_data(data)
- {}
-
- template <typename T>
- SingleValue(T data) :
- Value(TypeDesc(type))
- { (void)data; }
-
- const POD &data() const { return m_data; }
-
- bool get(POD *data) const
- {
- *data = m_data;
- return true;
- }
-
- template <typename T>
- bool get(T *data) const
- {
- assert(!"Data type mismatch");
- (void)data;
- return false;
- }
-
- Value *copy() const
- {
- return new SingleValue<type>(m_data);
- }
-
-private:
- POD m_data;
-};
-
-template <BVMType type>
-struct ArrayValue : public Value {
- typedef BaseTypeTraits<type> traits;
- typedef typename traits::POD POD;
- typedef array<type> array_t;
- typedef const_array<type> const_array_t;
-
- ArrayValue(const array_t &data) :
- Value(TypeDesc(type, BVM_BUFFER_ARRAY)),
- m_data(data)
- {}
-
- ArrayValue(POD *data, size_t size) :
- Value(TypeDesc(type, BVM_BUFFER_ARRAY)),
- m_data(array_t(data, size))
- {}
-
- template <typename T>
- ArrayValue(T data) :
- Value(TypeDesc(type, BVM_BUFFER_ARRAY))
- { (void)data; }
-
- template <typename T>
- ArrayValue(T *data, size_t size) :
- Value(TypeDesc(type, BVM_BUFFER_ARRAY))
- { (void)data; (void)size; }
-
- const array_t &data() const { return m_data; }
-
- bool get(array_t *data) const
- {
- *data = m_data;
- return true;
- }
-
- template <typename T>
- bool get(T *data) const
- {
- assert(!"Data type mismatch");
- (void)data;
- return false;
- }
-
- Value *copy() const
- {
- return new ArrayValue<type>(m_data);
- }
-
-private:
- array_t m_data;
-};
-
-template <BVMType type>
-struct ImageValue : public Value {
- typedef BaseTypeTraits<type> traits;
- typedef typename traits::POD POD;
- typedef image<type> image_t;
- typedef const_image<type> const_image_t;
-
- ImageValue(const image_t &data) :
- Value(TypeDesc(type, BVM_BUFFER_ARRAY)),
- m_data(data)
- {}
-
- ImageValue(POD *data, size_t width, size_t height) :
- Value(TypeDesc(type, BVM_BUFFER_ARRAY)),
- m_data(image_t(data, width, height))
- {}
-
- template <typename T>
- ImageValue(T data) :
- Value(TypeDesc(type, BVM_BUFFER_ARRAY))
- { (void)data; }
-
- template <typename T>
- ImageValue(T *data, size_t width, size_t height) :
- Value(TypeDesc(type, BVM_BUFFER_ARRAY))
- { (void)data; (void)width; (void)height; }
-
- const image_t &data() const { return m_data; }
-
- bool get(image_t *data) const
- {
- *data = m_data;
- return true;
- }
-
- template <typename T>
- bool get(T *data) const
- {
- assert(!"Data type mismatch");
- (void)data;
- return false;
- }
-
- Value *copy() const
- {
- return new ImageValue<type>(m_data);
- }
-
-private:
- image_t m_data;
-};
-
-/* ========================================================================= */
-
-template <typename T>
-static Value *create(const TypeDesc &typedesc, T *data, size_t size)
-{
- if (typedesc.buffer_type() == BVM_BUFFER_ARRAY) {
- switch (typedesc.base_type()) {
- case BVM_FLOAT: return new ArrayValue<BVM_FLOAT>(data, size);
- case BVM_FLOAT3: return new ArrayValue<BVM_FLOAT3>(data, size);
- case BVM_FLOAT4: return new ArrayValue<BVM_FLOAT4>(data, size);
- case BVM_INT: return new ArrayValue<BVM_INT>(data, size);
- case BVM_MATRIX44: return new ArrayValue<BVM_MATRIX44>(data, size);
- case BVM_STRING: return new ArrayValue<BVM_STRING>(data, size);
- case BVM_RNAPOINTER: return new ArrayValue<BVM_RNAPOINTER>(data, size);
- case BVM_MESH: return new ArrayValue<BVM_MESH>(data, size);
- case BVM_DUPLIS: return new ArrayValue<BVM_DUPLIS>(data, size);
- }
- }
- return NULL;
-}
-
-template <typename T>
-Value *Value::create(const TypeDesc &typedesc, T data)
-{
- if (typedesc.buffer_type() == BVM_BUFFER_SINGLE) {
- switch (typedesc.base_type()) {
- case BVM_FLOAT: return new SingleValue<BVM_FLOAT>(data);
- case BVM_FLOAT3: return new SingleValue<BVM_FLOAT3>(data);
- case BVM_FLOAT4: return new SingleValue<BVM_FLOAT4>(data);
- case BVM_INT: return new SingleValue<BVM_INT>(data);
- case BVM_MATRIX44: return new SingleValue<BVM_MATRIX44>(data);
- case BVM_STRING: return new SingleValue<BVM_STRING>(data);
- case BVM_RNAPOINTER: return new SingleValue<BVM_RNAPOINTER>(data);
- case BVM_MESH: return new SingleValue<BVM_MESH>(data);
- case BVM_DUPLIS: return new SingleValue<BVM_DUPLIS>(data);
- }
- }
- else if (typedesc.buffer_type() == BVM_BUFFER_ARRAY) {
- switch (typedesc.base_type()) {
- case BVM_FLOAT: return new ArrayValue<BVM_FLOAT>(data);
- case BVM_FLOAT3: return new ArrayValue<BVM_FLOAT3>(data);
- case BVM_FLOAT4: return new ArrayValue<BVM_FLOAT4>(data);
- case BVM_INT: return new ArrayValue<BVM_INT>(data);
- case BVM_MATRIX44: return new ArrayValue<BVM_MATRIX44>(data);
- case BVM_STRING: return new ArrayValue<BVM_STRING>(data);
- case BVM_RNAPOINTER: return new ArrayValue<BVM_RNAPOINTER>(data);
- case BVM_MESH: return new ArrayValue<BVM_MESH>(data);
- case BVM_DUPLIS: return new ArrayValue<BVM_DUPLIS>(data);
- }
- }
- return NULL;
-}
-
-
-template <BVMType type>
-bool Value::get(array<type> *data) const
-{
- if (m_typedesc.buffer_type() == BVM_BUFFER_ARRAY) {
- switch (m_typedesc.base_type()) {
- case BVM_FLOAT: return static_cast< const ArrayValue<BVM_FLOAT>* >(this)->get(data);
- case BVM_FLOAT3: return static_cast< const ArrayValue<BVM_FLOAT3>* >(this)->get(data);
- case BVM_FLOAT4: return static_cast< const ArrayValue<BVM_FLOAT4>* >(this)->get(data);
- case BVM_INT: return static_cast< const ArrayValue<BVM_INT>* >(this)->get(data);
- case BVM_MATRIX44: return static_cast< const ArrayValue<BVM_MATRIX44>* >(this)->get(data);
- case BVM_STRING:
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list