Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright (C) 2011 The Guava Authors
   *
   * 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.google.common.hash;
 
An abstract composition of multiple hash functions. newHasher() delegates to the Hasher objects of the delegate hash functions, and in the end, they are used by makeHash(com.google.common.hash.Hasher[]) that constructs the final HashCode.

Author(s):
Dimitris Andreou
 
   final HashFunction[] functions;
 
     this. = functions;
   }

  
Constructs a HashCode from the Hasher objects of the functions. Each of them has consumed the entire input and they are ready to output a HashCode. The order of the hashers are the same order as the functions given to the constructor.
 
   // this could be cleaner if it passed HashCode[], but that would create yet another array...
   /* protected */ abstract HashCode makeHash(Hasher[] hashers);
 
   @Override
   public Hasher newHasher() {
     final Hasher[] hashers = new Hasher[.];
     for (int i = 0; i < hashers.lengthi++) {
       hashers[i] = [i].newHasher();
     }
     return new Hasher() {
       @Override public Hasher putByte(byte b) {
         for (Hasher hasher : hashers) {
           hasher.putByte(b);
         }
         return this;
       }
 
       @Override public Hasher putBytes(byte[] bytes) {
         for (Hasher hasher : hashers) {
           hasher.putBytes(bytes);
         }
         return this;
       }
 
       @Override public Hasher putBytes(byte[] bytesint offint len) {
         for (Hasher hasher : hashers) {
           hasher.putBytes(bytesofflen);
         }
         return this;
       }
 
       @Override public Hasher putShort(short s) {
         for (Hasher hasher : hashers) {
           hasher.putShort(s);
         }
         return this;
       }
 
       @Override public Hasher putInt(int i) {
         for (Hasher hasher : hashers) {
           hasher.putInt(i);
         }
         return this;
       }
 
       @Override public Hasher putLong(long l) {
         for (Hasher hasher : hashers) {
           hasher.putLong(l);
         }
         return this;
       }
 
       @Override public Hasher putFloat(float f) {
         for (Hasher hasher : hashers) {
           hasher.putFloat(f);
         }
         return this;
       }
 
       @Override public Hasher putDouble(double d) {
        for (Hasher hasher : hashers) {
          hasher.putDouble(d);
        }
        return this;
      }
      @Override public Hasher putBoolean(boolean b) {
        for (Hasher hasher : hashers) {
          hasher.putBoolean(b);
        }
        return this;
      }
      @Override public Hasher putChar(char c) {
        for (Hasher hasher : hashers) {
          hasher.putChar(c);
        }
        return this;
      }
      @Override public Hasher putString(CharSequence chars) {
        for (Hasher hasher : hashers) {
          hasher.putString(chars);
        }
        return this;
      }
      @Override public Hasher putString(CharSequence charsCharset charset) {
        for (Hasher hasher : hashers) {
          hasher.putString(charscharset);
        }
        return this;
      }
      @Override public <T> Hasher putObject(T instanceFunnel<? super T> funnel) {
        for (Hasher hasher : hashers) {
          hasher.putObject(instancefunnel);
        }
        return this;
      }
      @Override public HashCode hash() {
        return makeHash(hashers);
      }
    };
  }
  private static final long serialVersionUID = 0L;
New to GrepCode? Check out our FAQ X