# HG changeset patch # User Matti Hamalainen # Date 1425783576 -7200 # Node ID 8f3c5d3ea25a385ff5931f5303c24599663e2f5f # Parent 8ba1da42b219c48edc8dda8ce0873e1485e7555e Add value translation helper functions. diff -r 8ba1da42b219 -r 8f3c5d3ea25a materials/parsematerial.pl --- a/materials/parsematerial.pl Sun Mar 08 02:55:46 2015 +0200 +++ b/materials/parsematerial.pl Sun Mar 08 04:59:36 2015 +0200 @@ -281,6 +281,8 @@ }, ); +my %revTransTable = (); + my @fieldInfo = ( { "i" => 1, "f" => "name", "w" => 15, "l" => "Name", "s" => "Name" }, { "i" => 2, "f" => "weight", "w" => 10, "l" => "Weight", "s" => "Weight" }, @@ -307,6 +309,41 @@ ); +sub ptranslate($$) +{ + if (defined($revTransTable{$_[0]}{$_[1]})) + { + return $revTransTable{$_[0]}{$_[1]}; + } + else + { + die("$0: Unknown REVERSE translation table type ".$_[0]." : ".$_[1]."\n"); + } +} + +sub pt($$) +{ + return ptranslate($_[1], $_[0]{$_[1]}) +} + +sub pta($$) +{ + return map { ptranslate($_[1], $_) } @{$_[0]{$_[1]}}; +} + +sub mtranslate($$) +{ + if (defined($transTable{$_[0]}{$_[1]})) + { + return $transTable{$_[0]}{$_[1]}; + } + else + { + die("$0: Unknown translation table type ".$_[0]." : ".$_[1]."\n"); + } +} + + ### ### Check options ### @@ -428,6 +465,15 @@ # Create list of known types my @matTypes = sort { $a cmp $b } keys %matByType; +# Create reverse translation table +foreach my $mid (keys %transTable) +{ + foreach my $mkey (keys %{$transTable{$mid}}) + { + $revTransTable{$mid}{$transTable{$mid}{$mkey}} = $mkey; + } +} + ### ### Output functionality begins here