Type inspection

The SPL code generation APIs include various type inspection functions, which are supplied by the SPL::CodeGen::Type module.

These functions work on the type names that are returned by the getSPLType methods that are provided by objects accessible from the $model variable that represents the operator instance model. Some examples include functions for querying traits of a type, such as isOrdered, isNumeric, isFloatingpoint, and isOptional; checking the exact value of a type, such as isBoolean, isInt16, and isRString; and accessing information about subtypes within a composite type, such as getElementType, getKeyType, getAttributeTypes, and getUnderlyingType. The following is an example that finds all floating point attribute names in a tuple type for a port.

<%
 my $inputPort = $model->getInputPortAt(0);
 my $tupleType = $inputPort->getSPLTupleType();
 my @names = SPL::CodeGen::Type::getAttributeNames($tupleType);
 my @types = SPL::CodeGen::Type::getAttributeTypes($tupleType);
 my @floatingPointAttributes;
 for (my $i = 0; $i < scalar(@names); ++$i) {
  if(SPL::CodeGen::Type::isFloatingpoint($types[$i])) {
   push @floatingPointAttributes, $names[$i];
  }
 }
%>