metagen/util.inc.php

41 lines
792 B
PHP

<?php
function mtg_get_all_fields(mtgMetaStruct $struct)
{
$fields = $struct->getFields();
$parent = $struct->getParent();
if($parent)
//NOTE: order is important, parent fields must come first
$fields = array_merge(mtg_get_all_fields($parent), $fields);
return $fields;
}
function mtg_find_field_owner(mtgMetaStruct $struct, $name)
{
$tmp = $struct;
while($tmp)
{
$fields = $tmp->getFields();
if(isset($fields[$name]))
return $tmp;
$tmp = $tmp->getParent();
}
return null;
}
function mtg_try_get_token_in_hierarchy(mtgMetaStruct $struct, $name, &$value)
{
$tmp = $struct;
while($tmp)
{
if($tmp->hasToken($name))
{
$value = $tmp->getToken($name);
return true;
}
$tmp = $tmp->getParent();
}
return false;
}