Simplified @is_comparer

This commit is contained in:
Christoffer Lerno
2024-07-02 00:36:05 +02:00
parent 91ad3ee0a2
commit 326fc501e2
2 changed files with 8 additions and 27 deletions

View File

@@ -13,26 +13,10 @@ macro usz @len_from_list(&list)
macro bool @is_comparer(#cmp, #list)
{
var $Type = $typeof(#cmp);
$if $and($Type.kindof == FUNC, $Type.returns.kindof == SIGNED_INT):
var $params = $Type.params;
$if $params.len != 2:
return false;
$else
$if $params[0] != $params[1]:
return false;
$else
var $element = @typeid(#list[0]);
$switch
$case $element == $params[0]:
return true;
$case $and($params[0].kindof == POINTER, $params[0].inner == $element):
return true;
$default:
return false;
$endswitch
$endif
$endif
$else
return false;
$endif
$switch
$case $or($Type.kindof != FUNC, $Type.returns.kindof != SIGNED_INT): return false;
$case $defined(#cmp(#list[0], #list[0])): return true;
$case $defined(#cmp(&&(#list[0]), &&(#list[0]))): return true;
$default: return false;
$endswitch
}