Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 2014 Attila Szegedi, Daniel Dekany, Jonathan Revusky
   * 
   * 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 freemarker.core;
 
A class that represents a Range between two integers.
 
 final class Range extends Expression {
 
     static final int END_INCLUSIVE = 0; 
     static final int END_EXCLUSIVE = 1; 
     static final int END_UNBOUND = 2; 
     static final int END_SIZE_LIMITED = 3; 
     
     final Expression lho;
     final Expression rho;
     final int endType;
 
     Range(Expression lhoExpression rhoint endType) {
         this. = lho;
         this. = rho;
         this. = endType;
     }
     
     int getEndType() {
         return ;
     }
 
     TemplateModel _eval(Environment envthrows TemplateException {
         final int begin = .evalToNumber(env).intValue();
         if ( != ) {
             final int lhoValue = .evalToNumber(env).intValue();
             return new BoundedRangeModel(
                     begin !=  ? lhoValue : begin + lhoValue,
                      ==  == ); 
         } else {
             return _TemplateAPI.getTemplateLanguageVersionAsInt(this) >= .
                     ? (RangeModelnew ListableRightUnboundedRangeModel(begin)
                     : (RangeModelnew NonListableRightUnboundedRangeModel(begin);
         }
     }
     
     // Surely this way we can tell that it won't be a boolean without evaluating the range, but why was this important?
     boolean evalToBoolean(Environment envthrows TemplateException {
         throw new NonBooleanException(thisnew BoundedRangeModel(0, 0, falsefalse), env);
     }
 
     public String getCanonicalForm() {
         String rhs =  != null ? .getCanonicalForm() : "";
         return .getCanonicalForm() + getNodeTypeSymbol() + rhs;
     }
     
     String getNodeTypeSymbol() {
         switch () {
         case return "..<";
         case return "..";
         case return "..";
         case return "..*";
         defaultthrow new BugException();
         }
     }
     
     boolean isLiteral() {
         boolean rightIsLiteral =  == null || .isLiteral();
         return  != null || (.isLiteral() && rightIsLiteral);
     }
     
             String replacedIdentifierExpression replacementReplacemenetState replacementState) {
         return new Range(
                 .deepCloneWithIdentifierReplaced(replacedIdentifierreplacementreplacementState),
                 .deepCloneWithIdentifierReplaced(replacedIdentifierreplacementreplacementState),
                 );
     }
     
     int getParameterCount() {
         return 2;
     }
 
     Object getParameterValue(int idx) {
         switch (idx) {
        case 0: return ;
        case 1: return ;
        defaultthrow new IndexOutOfBoundsException();
        }
    }
    ParameterRole getParameterRole(int idx) {
        return ParameterRole.forBinaryOperatorOperand(idx);
    }
    
New to GrepCode? Check out our FAQ X