changeset 258:8f3c5d3ea25a misc

Add value translation helper functions.
author Matti Hamalainen <ccr@tnsp.org>
date Sun, 08 Mar 2015 04:59:36 +0200
parents 8ba1da42b219
children acc3adbd65aa
files materials/parsematerial.pl
diffstat 1 files changed, 46 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- 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