Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 package com.facebook.presto.byteCode;
 
 
 import java.util.List;
 import java.util.Map;
 
 import static com.facebook.presto.byteCode.ParameterizedType.type;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkState;
 import static java.util.Objects.requireNonNull;
 
 public class Scope
 {
     private final Map<StringVariablevariables = new TreeMap<>();
     private final List<VariableallVariables = new ArrayList<>();
 
     private final Variable thisVariable;
 
     private int nextTempVariableId;
 
     // This can only be constructed by a method definition
     Scope(Optional<ParameterizedTypethisTypeIterable<Parameterparameters)
     {
         if (thisType.isPresent()) {
              = new Variable("this"thisType.get());
             .put("this");
             .add();
         }
         else {
              = null;
         }
 
         for (Parameter parameter : parameters) {
             .put(parameter.getName(), parameter);
             .add(parameter);
         }
     }
 
     public List<VariablegetVariables()
     {
         return ImmutableList.copyOf();
     }
 
     public Variable createTempVariable(Class<?> type)
     {
         // reserve a slot for this variable
         Variable variable = new Variable("temp_" + type(type));
          += Type.getType(type(type).getType()).getSize();
 
         .add(variable);
 
         return variable;
     }
 
     public Variable getThis()
     {
         checkState( != null"Static methods do not have a 'this' variable");
         return ;
     }
 
     public Variable getVariable(String name)
     {
         Variable variable = .get(name);
         checkArgument(variable != null"Variable %s not defined"name);
         return variable;
     }
 
     public Variable declareVariable(Class<?> typeString variableName)
     {
         return declareVariable(type(type), variableName);
     }
 
     public Variable declareVariable(ParameterizedType typeString variableName)
     {
         requireNonNull(type"type is null");
         requireNonNull(variableName"variableName is null");
         checkArgument(!.containsKey(variableName), "There is already a variable named %s"variableName);
         checkArgument(!variableName.equals("this"), "The 'this' variable can not be declared");
 
         Variable variable = new Variable(variableNametype);
 
        .put(variableNamevariable);
        .add(variable);
        return variable;
    }
New to GrepCode? Check out our FAQ X