[Bf-blender-cvs] [7df89986a56] functions: Merge branch 'functions-in-train' into functions

Jacques Lucke noreply at git.blender.org
Sun Feb 17 21:57:34 CET 2019


Commit: 7df89986a56bf01067649da7b90257bf9792e594
Author: Jacques Lucke
Date:   Sun Feb 17 21:17:11 2019 +0100
Branches: functions
https://developer.blender.org/rB7df89986a56bf01067649da7b90257bf9792e594

Merge branch 'functions-in-train' into functions

===================================================================



===================================================================

diff --cc source/blender/blenlib/CMakeLists.txt
index a99aabe57cc,ccd17c30d19..0e8f87db992
--- a/source/blender/blenlib/CMakeLists.txt
+++ b/source/blender/blenlib/CMakeLists.txt
@@@ -226,7 -226,8 +226,9 @@@ set(SR
  	PIL_time_utildefines.h
  
  	BLI_composition.hpp
+ 	BLI_lazy_init.hpp
 +	BLI_listbase_wrapper.hpp
+ 	BLI_mempool.hpp
  	BLI_shared.hpp
  	BLI_small_vector.hpp
  	BLI_small_map.hpp
diff --cc source/blender/functions/c_wrapper.cpp
index 6c734b8e0a5,361203c3023..d3b921b1647
--- a/source/blender/functions/c_wrapper.cpp
+++ b/source/blender/functions/c_wrapper.cpp
@@@ -204,26 -206,50 +206,67 @@@ FnFunction FN_get_generated_function(
  	return wrap(fn_ref);
  }
  
 -void FN_testing(bNodeTree *bnodetree)
 +FnFunction FN_testing(bNodeTree *bnodetree)
  {
  	FN::FunctionNodes::FunctionNodeTree tree(bnodetree);
 -	auto graph = tree.to_data_flow_graph();
 -	std::cout << graph->to_dot() << std::endl;
 +	auto fgraph = tree.to_function_graph();
 +	//std::cout << fgraph.graph()->to_dot() << std::endl;
 +
 +	auto fn = FN::SharedFunction::New("Function from Node Tree", fgraph.signature());
 +	fn->add_body(FN::function_graph_to_callable(fgraph));
 +
 +	BLI::RefCounted<FN::Function> *fn_ref = fn.refcounter();
 +	fn_ref->incref();
 +	return wrap(fn_ref);
 +}
 +
 +void FN_function_update_dependencies(
 +	FnFunction fn,
 +	struct DepsNodeHandle *deps_node)
 +{
 +	BLI::RefCounted<FN::Function> *fn_ref = unwrap(fn);
 +	FN::Dependencies dependencies;
 +	fn_ref->ptr()->body<FN::TupleCallBody>()->dependencies(dependencies);
 +	dependencies.update_depsgraph(deps_node);
+ }
+ 
+ void FN_test_inferencer()
+ {
+ 	FN::SharedType &float_ty = FN::Types::get_float_type();
+ 	FN::SharedType &int32_ty = FN::Types::get_int32_type();
+ 	FN::SharedType &fvec3_ty = FN::Types::get_fvec3_type();
+ 	FN::SharedType &float_list_ty = FN::Types::get_float_list_type();
+ 
+ 	{
+ 		FN::Inferencer inferencer;
+ 		inferencer.insert_final_type(0, float_ty);
+ 		inferencer.insert_final_type(1, int32_ty);
+ 		inferencer.insert_final_type(2, fvec3_ty);
+ 		inferencer.insert_equality_relation({6, 7});
+ 		inferencer.insert_equality_relation({0, 5, 6});
+ 		inferencer.insert_equality_relation({1, 4});
+ 
+ 		BLI_assert(inferencer.inference());
+ 
+ 		BLI_assert(inferencer.get_final_type(5) == float_ty);
+ 		BLI_assert(inferencer.get_final_type(6) == float_ty);
+ 		BLI_assert(inferencer.get_final_type(7) == float_ty);
+ 		BLI_assert(inferencer.get_final_type(4) == int32_ty);
+ 	}
+ 	{
+ 		FN::Inferencer inferencer;
+ 		inferencer.insert_final_type(0, float_ty);
+ 		inferencer.insert_final_type(1, int32_ty);
+ 		inferencer.insert_equality_relation({0, 2});
+ 		inferencer.insert_equality_relation({1, 2});
+ 
+ 		BLI_assert(!inferencer.inference());
+ 	}
+ 	{
+ 		FN::Inferencer inferencer;
+ 		inferencer.insert_final_type(0, float_ty);
+ 		inferencer.insert_list_relation({1}, {0});
+ 
+ 		BLI_assert(inferencer.inference());
+ 	}
  }



More information about the Bf-blender-cvs mailing list