in meta/parse.pl [1425:1532]
sub ProcessType
{
my ($attr, $type) = @_;
if (not defined $type)
{
LogError "type is not defined for $attr";
return "";
}
if ($type =~ /^sai_acl_field_data_t (bool|sai_\w+_t)$/)
{
my $prefix = "SAI_ATTR_VALUE_TYPE_ACL_FIELD_DATA";
return "${prefix}_BOOL" if $1 eq "bool";
return "${prefix}_$ACL_FIELD_TYPES_TO_VT{$1}" if defined $ACL_FIELD_TYPES_TO_VT{$1};
if (not defined $SAI_ENUMS{$1})
{
LogError "invalid enum specified acl field '$type' on $attr";
return "";
}
return "${prefix}_INT32";
}
if ($type =~ /^sai_acl_field_data_mask_t (bool|sai_\w+_t)$/)
{
# TODO this is temporary solution, since mask should have it's own attribute type
# and not reuseing existing ones from aclfield, this provides confusion
my $prefix = "SAI_ATTR_VALUE_TYPE_ACL_FIELD_DATA";
return "${prefix}_BOOL" if $1 eq "bool";
return "${prefix}_$ACL_FIELD_TYPES_TO_VT{$1}" if defined $ACL_FIELD_TYPES_TO_VT{$1};
if (not defined $SAI_ENUMS{$1})
{
LogError "invalid enum specified acl field '$type' on $attr";
return "";
}
return "${prefix}_INT32";
}
if ($type =~ /^sai_acl_action_data_t (bool|sai_\w+_t)$/)
{
my $prefix = "SAI_ATTR_VALUE_TYPE_ACL_ACTION_DATA";
return "${prefix}_BOOL" if $1 eq "bool";
return "${prefix}_$ACL_ACTION_TYPES_TO_VT{$1}" if defined $ACL_ACTION_TYPES_TO_VT{$1};
if (not defined $SAI_ENUMS{$1})
{
LogError "invalid enum specified acl action '$type' on $attr";
return "";
}
return "${prefix}_INT32";
}
if ($type =~ /^sai_s32_list_t (sai_\w+_t)$/)
{
if (not defined $SAI_ENUMS{$1})
{
LogError "invalid enum list specified '$type' on $attr";
return "";
}
return "SAI_ATTR_VALUE_TYPE_INT32_LIST";
}
if ($type =~ /^(sai_\w+_t)$/)
{
my $prefix = "SAI_ATTR_VALUE_TYPE";
return "${prefix}_$VALUE_TYPES_TO_VT{$1}" if defined $VALUE_TYPES_TO_VT{$1};
if (not defined $SAI_ENUMS{$1})
{
LogError "invalid enum specified '$type' on $attr";
return "";
}
return "${prefix}_INT32";
}
if ($type eq "bool")
{
return "SAI_ATTR_VALUE_TYPE_BOOL";
}
if ($type eq "char")
{
return "SAI_ATTR_VALUE_TYPE_CHARDATA";
}
if ($type =~ /^sai_pointer_t sai_\w+_fn$/)
{
return "SAI_ATTR_VALUE_TYPE_POINTER";
}
LogError "invalid type '$type' for $attr";
return "";
}