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.aggregation;
 
 
 import static com.facebook.presto.type.TypeUtils.buildStructuralSlice;
 import static com.facebook.presto.type.TypeUtils.expectedValueSize;
 import static com.google.common.base.Preconditions.checkNotNull;
 
 public class KeyValuePairs
 {
     private static final int INSTANCE_SIZE = ClassLayout.parseClass(KeyValuePairs.class).instanceSize();
     private static final int EXPECTED_ENTRIES = 10;
     private static final int EXPECTED_ENTRY_SIZE = 16;
 
     private final TypedSet keySet;
     private final BlockBuilder keyBlockBuilder;
     private final Type keyType;
 
     private final BlockBuilder valueBlockBuilder;
     private final Type valueType;
 
     public KeyValuePairs(Type keyTypeType valueType)
     {
         checkNotNull(keyType"keyType is null");
         checkNotNull(valueType"valueType is null");
 
         this. = keyType;
         this. = valueType;
         this. = new SimpleTypedSet(keyType);
     }
 
     public KeyValuePairs(Slice serializedType keyTypeType valueType)
     {
         this(keyTypevalueType);
         checkNotNull(serialized"serialized is null");
         deserialize(serialized);
     }
 
     public Block getKeys()
     {
         return .build();
     }
 
     public Block getValues()
     {
         return .build();
     }
 
     private void deserialize(Slice serialized)
     {
         Block block = TypeUtils.readStructuralBlock(serialized);
         for (int i = 0; i < block.getPositionCount(); i += 2) {
             add(blockblockii + 1);
         }
     }
 
     public Slice serialize()
     {
         Block values = .build();
         Block keys = .build();
         BlockBuilder blockBuilder = new VariableWidthBlockBuilder(new BlockBuilderStatus(), keys.getSizeInBytes() + values.getSizeInBytes());
         for (int i = 0; i < keys.getPositionCount(); i++) {
             .appendTo(keysiblockBuilder);
             .appendTo(valuesiblockBuilder);
         }
         return buildStructuralSlice(blockBuilder);
     }
 
     public long estimatedInMemorySize()
     {
         long size = ;
         size += .getRetainedSizeInBytes();
         size += .getRetainedSizeInBytes();
         size += .getEstimatedSize();
         return size;
     }
 
    public void add(Block keyBlock valueint keyPositionint valuePosition)
    {
        if (!.contains(keykeyPosition)) {
            .add(keykeyPosition);
            .appendTo(keykeyPosition);
            if (value.isNull(valuePosition)) {
                .appendNull();
            }
            else {
                .appendTo(valuevaluePosition);
            }
        }
    }
New to GrepCode? Check out our FAQ X