[Bf-blender-cvs] [ac02c2daf22] functions: cleanup C wrapper
Jacques Lucke
noreply at git.blender.org
Sun Mar 10 13:14:27 CET 2019
Commit: ac02c2daf22f1a9a742e786bc8e201eed79f3b20
Author: Jacques Lucke
Date: Sun Mar 10 10:44:20 2019 +0100
Branches: functions
https://developer.blender.org/rBac02c2daf22f1a9a742e786bc8e201eed79f3b20
cleanup C wrapper
===================================================================
M source/blender/blenkernel/intern/fcurve.c
M source/blender/functions/FN-C.h
M source/blender/functions/c_wrapper.cpp
M source/blender/modifiers/intern/MOD_displace.c
M source/blender/modifiers/intern/MOD_functiondeform.c
===================================================================
diff --git a/source/blender/blenkernel/intern/fcurve.c b/source/blender/blenkernel/intern/fcurve.c
index 6eeba6c9efd..3cc2e3e5247 100644
--- a/source/blender/blenkernel/intern/fcurve.c
+++ b/source/blender/blenkernel/intern/fcurve.c
@@ -1621,12 +1621,13 @@ static float dvar_eval_function(ChannelDriver *UNUSED(driver), DriverVar *dvar)
return 0.0f;
}
- FnTuple fn_in = FN_tuple_for_input(fn);
- FnTuple fn_out = FN_tuple_for_output(fn);
+ FnTupleCallBody body = FN_tuple_call_get(fn);
+
+ FnTuple fn_in = FN_tuple_for_input(body);
+ FnTuple fn_out = FN_tuple_for_output(body);
FN_tuple_set_int32(fn_in, 0, (int64_t)dvar);
- FnTupleCallBody callable = FN_function_get_callable(fn);
- FN_function_call(callable, fn_in, fn_out);
+ FN_tuple_call_invoke(body, fn_in, fn_out);
float result = FN_tuple_get_float(fn_out, 0);
FN_tuple_free(fn_in);
diff --git a/source/blender/functions/FN-C.h b/source/blender/functions/FN-C.h
index b34ea72914f..8e33109b5d4 100644
--- a/source/blender/functions/FN-C.h
+++ b/source/blender/functions/FN-C.h
@@ -15,8 +15,8 @@ typedef struct OpaqueFnType *FnType;
typedef struct OpaqueFnTuple *FnTuple;
typedef struct OpaqueFnTupleCallBody *FnTupleCallBody;
-FnTupleCallBody FN_function_get_callable(FnFunction fn);
-void FN_function_call(FnTupleCallBody call, FnTuple fn_in, FnTuple fn_out);
+/************** Core *************/
+
void FN_function_free(FnFunction fn);
bool FN_function_has_signature(FnFunction, FnType *inputs, FnType *outputs);
@@ -27,17 +27,8 @@ bool FN_output_has_type(FnFunction fn, uint index, FnType type);
void FN_function_print(FnFunction fn);
-FnTuple FN_tuple_for_input(FnFunction fn);
-FnTuple FN_tuple_for_output(FnFunction fn);
-
-void FN_tuple_free(FnTuple tuple);
-void FN_tuple_set_float(FnTuple tuple, uint index, float value);
-void FN_tuple_set_int32(FnTuple tuple, uint index, int32_t value);
-void FN_tuple_set_float_vector_3(FnTuple tuple, uint index, float vector[3]);
-float FN_tuple_get_float(FnTuple tuple, uint index);
-int32_t FN_tuple_get_int32(FnTuple tuple, uint index);
-void FN_tuple_get_float_vector_3(FnTuple tuple, uint index, float dst[3]);
+/************** Types *************/
const char *FN_type_name(FnType type);
void FN_type_free(FnType type);
@@ -50,15 +41,39 @@ FnType FN_type_borrow_float(void);
FnType FN_type_borrow_int32(void);
FnType FN_type_borrow_fvec3(void);
-FnFunction FN_tree_to_function(bNodeTree *bnodetree);
-FnFunction FN_function_get_with_signature(
- bNodeTree *btree, FnType *inputs, FnType *outputs);
+
+/*************** Tuple Call ****************/
+
+FnTupleCallBody FN_tuple_call_get(FnFunction fn);
+void FN_tuple_call_invoke(FnTupleCallBody body, FnTuple fn_in, FnTuple fn_out);
+FnTuple FN_tuple_for_input(FnTupleCallBody body);
+FnTuple FN_tuple_for_output(FnTupleCallBody body);
+
+void FN_tuple_free(FnTuple tuple);
+
+void FN_tuple_set_float(FnTuple tuple, uint index, float value);
+void FN_tuple_set_int32(FnTuple tuple, uint index, int32_t value);
+void FN_tuple_set_float_vector_3(FnTuple tuple, uint index, float vector[3]);
+float FN_tuple_get_float(FnTuple tuple, uint index);
+int32_t FN_tuple_get_int32(FnTuple tuple, uint index);
+void FN_tuple_get_float_vector_3(FnTuple tuple, uint index, float dst[3]);
+
+
+/*************** Dependencies ****************/
struct DepsNodeHandle;
void FN_function_update_dependencies(
FnFunction fn,
struct DepsNodeHandle *deps_node);
+
+/************ Data Flow Nodes ****************/
+
+FnFunction FN_tree_to_function(bNodeTree *bnodetree);
+FnFunction FN_function_get_with_signature(
+ bNodeTree *btree, FnType *inputs, FnType *outputs);
+
+
#ifdef __cplusplus
}
#endif
diff --git a/source/blender/functions/c_wrapper.cpp b/source/blender/functions/c_wrapper.cpp
index 15a2a942f8f..687d7867993 100644
--- a/source/blender/functions/c_wrapper.cpp
+++ b/source/blender/functions/c_wrapper.cpp
@@ -19,7 +19,7 @@ using namespace FN::DataFlowNodes;
WRAPPERS(Function *, FnFunction);
WRAPPERS(Type *, FnType);
WRAPPERS(Tuple *, FnTuple);
-WRAPPERS(const TupleCallBody *, FnTupleCallBody);
+WRAPPERS(TupleCallBody *, FnTupleCallBody);
static void playground()
{
@@ -50,7 +50,7 @@ void FN_initialize()
playground();
}
-void FN_function_call(FnTupleCallBody fn_call, FnTuple fn_in, FnTuple fn_out)
+void FN_tuple_call_invoke(FnTupleCallBody fn_call, FnTuple fn_in, FnTuple fn_out)
{
Tuple &fn_in_ = *unwrap(fn_in);
Tuple &fn_out_ = *unwrap(fn_out);
@@ -60,7 +60,7 @@ void FN_function_call(FnTupleCallBody fn_call, FnTuple fn_in, FnTuple fn_out)
BLI_assert(fn_out_.all_initialized());
}
-FnTupleCallBody FN_function_get_callable(FnFunction fn)
+FnTupleCallBody FN_tuple_call_get(FnFunction fn)
{
return wrap(unwrap(fn)->body<TupleCallBody>());
}
@@ -121,15 +121,15 @@ void FN_function_print(FnFunction fn)
}
-FnTuple FN_tuple_for_input(FnFunction fn)
+FnTuple FN_tuple_for_input(FnTupleCallBody body)
{
- auto tuple = new Tuple(unwrap(fn)->signature().input_types());
+ auto tuple = new Tuple(unwrap(body)->meta_in());
return wrap(tuple);
}
-FnTuple FN_tuple_for_output(FnFunction fn)
+FnTuple FN_tuple_for_output(FnTupleCallBody body)
{
- auto tuple = new Tuple(unwrap(fn)->signature().output_types());
+ auto tuple = new Tuple(unwrap(body)->meta_out());
return wrap(tuple);
}
diff --git a/source/blender/modifiers/intern/MOD_displace.c b/source/blender/modifiers/intern/MOD_displace.c
index 44589cfb7dc..0df669a8f6d 100644
--- a/source/blender/modifiers/intern/MOD_displace.c
+++ b/source/blender/modifiers/intern/MOD_displace.c
@@ -220,13 +220,17 @@ static void displaceModifier_do_task(
float local_vec[3];
if (data->calc_weight_func) {
- FnTuple fn_in = FN_tuple_for_input(data->calc_weight_func);
- FnTuple fn_out = FN_tuple_for_output(data->calc_weight_func);
+ FnTupleCallBody body = FN_tuple_call_get(data->calc_weight_func);
+ FnTuple fn_in = FN_tuple_for_input(body);
+ FnTuple fn_out = FN_tuple_for_output(body);
+
FN_tuple_set_float_vector_3(fn_in, 0, vertexCos[iter]);
FN_tuple_set_int32(fn_in, 1, iter);
- FnTupleCallBody callable = FN_function_get_callable(data->calc_weight_func);
- FN_function_call(callable, fn_in, fn_out);
+
+ FN_tuple_call_invoke(body, fn_in, fn_out);
+
weight = FN_tuple_get_float(fn_out, 0);
+
FN_tuple_free(fn_in);
FN_tuple_free(fn_out);
}
diff --git a/source/blender/modifiers/intern/MOD_functiondeform.c b/source/blender/modifiers/intern/MOD_functiondeform.c
index 0aeb072185e..832e2e74689 100644
--- a/source/blender/modifiers/intern/MOD_functiondeform.c
+++ b/source/blender/modifiers/intern/MOD_functiondeform.c
@@ -77,11 +77,11 @@ static void do_deformation(
return;
}
- FnTupleCallBody fn_call = FN_function_get_callable(fn);
- BLI_assert(fn_call);
+ FnTupleCallBody body = FN_tuple_call_get(fn);
+ BLI_assert(body);
- FnTuple fn_in = FN_tuple_for_input(fn);
- FnTuple fn_out = FN_tuple_for_output(fn);
+ FnTuple fn_in = FN_tuple_for_input(body);
+ FnTuple fn_out = FN_tuple_for_output(body);
clock_t start = clock();
@@ -89,7 +89,9 @@ static void do_deformation(
FN_tuple_set_float_vector_3(fn_in, 0, vertexCos[i]);
FN_tuple_set_int32(fn_in, 1, i);
FN_tuple_set_float(fn_in, 2, fdmd->control1);
- FN_function_call(fn_call, fn_in, fn_out);
+
+ FN_tuple_call_invoke(body, fn_in, fn_out);
+
FN_tuple_get_float_vector_3(fn_out, 0, vertexCos[i]);
}
More information about the Bf-blender-cvs
mailing list