vtkWrapRemoting: Improve Setter selection
This commit allows the vtkRemotingWrapper to generate code that can distiguish
between signatures of setters with the same name and number of arguments based
on the type of the arguments. If none of the signatures matches a parent class
will eventually return false
along with a warning.
Fixes #17 (closed)
Example of generated code:
if (method == "SetInputArrayToProcess" && args.size() == 5)
{
vtkRLogF("vtkAlgorithm(%p)::SetInputArrayToProcess", object);
if ( vtk::variant_is_compatible<int32_t>(args[0]) &&
vtk::variant_is_compatible<int32_t>(args[1]) &&
vtk::variant_is_compatible<int32_t>(args[2]) &&
vtk::variant_is_compatible<int32_t>(args[3]) &&
vtk::variant_is_compatible<int32_t>(args[4]) )
{
auto temp9 = vtk::variant_cast<int32_t>(args[0]);
auto value0 = static_cast<int>(temp9);
auto temp10 = vtk::variant_cast<int32_t>(args[1]);
auto value1 = static_cast<int>(temp10);
auto temp11 = vtk::variant_cast<int32_t>(args[2]);
auto value2 = static_cast<int>(temp11);
auto temp12 = vtk::variant_cast<int32_t>(args[3]);
auto value3 = static_cast<int>(temp12);
auto temp13 = vtk::variant_cast<int32_t>(args[4]);
auto value4 = static_cast<int>(temp13);
target->SetInputArrayToProcess(value0, value1, value2, value3, value4);
return true;
}
}
if (method == "SetInputArrayToProcess" && args.size() == 5)
{
vtkRLogF("vtkAlgorithm(%p)::SetInputArrayToProcess", object);
if ( vtk::variant_is_compatible<int32_t>(args[0]) &&
vtk::variant_is_compatible<int32_t>(args[1]) &&
vtk::variant_is_compatible<int32_t>(args[2]) &&
vtk::variant_is_compatible<std::string>(args[3]) &&
vtk::variant_is_compatible<std::string>(args[4]) )
{
auto temp15 = vtk::variant_cast<int32_t>(args[0]);
auto value0 = static_cast<int>(temp15);
auto temp16 = vtk::variant_cast<int32_t>(args[1]);
auto value1 = static_cast<int>(temp16);
auto temp17 = vtk::variant_cast<int32_t>(args[2]);
auto value2 = static_cast<int>(temp17);
std::string temp18 = vtk::variant_cast<std::string>(args[3]);
const char* value3 = temp18.c_str();
std::string temp19 = vtk::variant_cast<std::string>(args[4]);
const char* value4 = temp19.c_str();
target->SetInputArrayToProcess(value0, value1, value2, value3, value4);
return true;
}
}