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.operator.scalar;
 
 
 import java.util.Map;
 
 import static com.facebook.presto.metadata.Signature.comparableTypeParameter;
 import static com.facebook.presto.spi.type.TypeSignature.parseTypeSignature;
 import static com.facebook.presto.type.TypeUtils.createBlock;
 import static com.facebook.presto.type.TypeUtils.parameterizedTypeName;
 import static com.facebook.presto.type.TypeUtils.readStructuralBlock;
 import static com.facebook.presto.util.Reflection.methodHandle;
 
 public final class ArrayContains
         extends ParametricScalar
 {
     public static final ArrayContains ARRAY_CONTAINS = new ArrayContains();
     private static final TypeSignature RETURN_TYPE = parseTypeSignature(.);
     private static final String FUNCTION_NAME = "contains";
     private static final Signature SIGNATURE = new Signature(, ImmutableList.of(comparableTypeParameter("T")), ., ImmutableList.of("array<T>""T"), falsefalse);
 
     @Override
     public Signature getSignature()
     {
         return ;
     }
 
     @Override
     public boolean isHidden()
     {
         return false;
     }
 
     @Override
     public boolean isDeterministic()
     {
         return true;
     }
 
     @Override
     public String getDescription()
     {
         return "Determines whether given value exists in the array";
     }
 
     @Override
     public FunctionInfo specialize(Map<StringTypetypesint arityTypeManager typeManagerFunctionRegistry functionRegistry)
     {
         Type type = types.get("T");
         TypeSignature valueType = type.getTypeSignature();
         TypeSignature arrayType = parameterizedTypeName(.valueType);
         MethodHandle methodHandle = methodHandle(ArrayContains.class"contains"Type.classSlice.classtype.getJavaType());
         Signature signature = new Signature(arrayTypevalueType);
 
         return new FunctionInfo(signaturegetDescription(), isHidden(), methodHandle.bindTo(type), isDeterministic(), false, ImmutableList.of(falsefalse));
     }
 
     public static boolean contains(Type typeSlice sliceSlice value)
     {
         Block arrayBlock = readStructuralBlock(slice);
         Block valueBlock = createBlock(typevalue);
         for (int i = 0; i < arrayBlock.getPositionCount(); i++) {
             if (type.equalTo(arrayBlockivalueBlock, 0)) {
                 return true;
             }
         }
         return false;
     }
 
     public static boolean contains(Type typeSlice slicelong value)
     {
         Block arrayBlock = readStructuralBlock(slice);
         Block valueBlock = createBlock(typevalue);
         for (int i = 0; i < arrayBlock.getPositionCount(); i++) {
             if (type.equalTo(arrayBlockivalueBlock, 0)) {
                return true;
            }
        }
        return false;
    }
    public static boolean contains(Type typeSlice sliceboolean value)
    {
        Block arrayBlock = readStructuralBlock(slice);
        Block valueBlock = createBlock(typevalue);
        for (int i = 0; i < arrayBlock.getPositionCount(); i++) {
            if (type.equalTo(arrayBlockivalueBlock, 0)) {
                return true;
            }
        }
        return false;
    }
    public static boolean contains(Type typeSlice slicedouble value)
    {
        Block arrayBlock = readStructuralBlock(slice);
        Block valueBlock = createBlock(typevalue);
        for (int i = 0; i < arrayBlock.getPositionCount(); i++) {
            if (type.equalTo(arrayBlockivalueBlock, 0)) {
                return true;
            }
        }
        return false;
    }
New to GrepCode? Check out our FAQ X