Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  // Copyright 2011 Google Inc. All Rights Reserved.
  
  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):
andreou@google.com (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