content: // context for simple expression
  // context means:
  // - the local variables
  // - the local variable names
  // - the lookup-input variables
  
  package btools.expressions;
  
  import btools.codec.TagValueValidator;
  
  public final class BExpressionContextWay extends BExpressionContext implements TagValueValidator {
    private boolean decodeForbidden = true;
  
    private static String[] buildInVariables =
      {"costfactor", "turncost", "uphillcostfactor", "downhillcostfactor", "initialcost", "nodeaccessgranted", "initialclassifier", "trafficsourcedensity", "istrafficbackbone", "priorityclassifier", "classifiermask", "maxspeed", "uphillcost", "downhillcost", "uphillcutoff", "downhillcutoff", "uphillmaxslope", "downhillmaxslope", "uphillmaxslopecost", "downhillmaxslopecost"};
  
    protected String[] getBuildInVariableNames() {
      return buildInVariables;
    }
  
    public float getCostfactor() {
      return getBuildInVariable(0);
    }
  
    public float getTurncost() {
      return getBuildInVariable(1);
    }
  
    public float getUphillCostfactor() {
      return getBuildInVariable(2);
    }
  
    public float getDownhillCostfactor() {
      return getBuildInVariable(3);
    }
  
    public float getInitialcost() {
      return getBuildInVariable(4);
    }
  
    public float getNodeAccessGranted() {
      return getBuildInVariable(5);
    }
  
    public float getInitialClassifier() {
      return getBuildInVariable(6);
    }
  
    public float getTrafficSourceDensity() {
      return getBuildInVariable(7);
    }
  
    public float getIsTrafficBackbone() {
      return getBuildInVariable(8);
    }
  
    public float getPriorityClassifier() {
      return getBuildInVariable(9);
    }
  
    public float getClassifierMask() {
      return getBuildInVariable(10);
    }
  
    public float getMaxspeed() {
      return getBuildInVariable(11);
    }
  
    public float getUphillcost() {
      return getBuildInVariable(12);
    }
  
    public float getDownhillcost() {
      return getBuildInVariable(13);
    }
  
    public float getUphillcutoff() {
      return getBuildInVariable(14);
    }
  
    public float getDownhillcutoff() {
      return getBuildInVariable(15);
    }
  
    public float getUphillmaxslope() {
      return getBuildInVariable(16);
    }
  
    public float getDownhillmaxslope() {
      return getBuildInVariable(17);
    }
  
    public float getUphillmaxslopecost() {
      return getBuildInVariable(18);
    }
  
    public float getDownhillmaxslopecost() {
      return getBuildInVariable(19);
    }
  
    public BExpressionContextWay(BExpressionMetaData meta) {
      super("way", meta);
    }
  
    /**
     * Create an Expression-Context for way context
     *
     * @param hashSize size of hashmap for result caching
     */
    public BExpressionContextWay(int hashSize, BExpressionMetaData meta) {
      super("way", hashSize, meta);
    }
  
    @Override
    public int accessType(byte[] description) {
      evaluate(false, description);
      float minCostFactor = getCostfactor();
      if (minCostFactor >= 9999.f) {
        setInverseVars();
        float reverseCostFactor = getCostfactor();
        if (reverseCostFactor < minCostFactor) {
          minCostFactor = reverseCostFactor;
        }
      }
      return minCostFactor < 9999.f ? 2 : decodeForbidden ? (minCostFactor < 10000.f ? 1 : 0) : 0;
    }
  
    @Override
    public void setDecodeForbidden(boolean decodeForbidden) {
      this.decodeForbidden = decodeForbidden;
    }
  
  
  }
  