@Override protected StatelessHash createCacheable(CrcParameters params, EnumSet<HashSupport> required) { final int bitWidth = params.bitWidth(); if (bitWidth > 32 || (required.contains(HashSupport.LONG_SIZED) && bitWidth >= 8)) { if (required.contains(HashSupport.INT_SIZED)) throw new UnsupportedOperationException(); if (params.reflected()) return new ReflectedLongCrc(params.algorithm(), bitWidth, params.polynomial(), params.initial(), params.xorOut()); else return new NormalLongCrc(params.algorithm(), bitWidth, params.polynomial(), params.initial(), params.xorOut()); } else { if (params.reflected()) return new ReflectedIntCrc(params.algorithm(), bitWidth, (int) params.polynomial(), (int) params.initial(), (int) params.xorOut()); else if (bitWidth > 8) return new NormalIntCrc(params.algorithm(), bitWidth, (int) params.polynomial(), (int) params.initial(), (int) params.xorOut()); return new NormalByteCrc(params.algorithm(), bitWidth, (int) params.polynomial(), (int) params.initial(), (int) params.xorOut()); } } }
@Override protected StatelessHash createCacheable(CrcParameters params, EnumSet<HashSupport> required) { final int bitWidth = params.bitWidth(); if (bitWidth > 32 || (required.contains(HashSupport.LONG_SIZED) && bitWidth >= 8)) { if (required.contains(HashSupport.INT_SIZED)) throw new UnsupportedOperationException(); if (params.reflected()) return new ReflectedLongCrc(params.algorithm(), bitWidth, params.polynomial(), params.initial(), params.xorOut()); else return new NormalLongCrc(params.algorithm(), bitWidth, params.polynomial(), params.initial(), params.xorOut()); } else { if (params.reflected()) return new ReflectedIntCrc(params.algorithm(), bitWidth, (int) params.polynomial(), (int) params.initial(), (int) params.xorOut()); else if (bitWidth > 8) return new NormalIntCrc(params.algorithm(), bitWidth, (int) params.polynomial(), (int) params.initial(), (int) params.xorOut()); return new NormalByteCrc(params.algorithm(), bitWidth, (int) params.polynomial(), (int) params.initial(), (int) params.xorOut()); } } }
@Override protected StatelessHash createCacheable(CrcParameters params, EnumSet<HashSupport> required) { final int bitWidth = params.bitWidth(); if (bitWidth > 32 || (required.contains(HashSupport.LONG_SIZED) && bitWidth >= 8)) { if (required.contains(HashSupport.INT_SIZED)) throw new UnsupportedOperationException(); if (params.reflected()) return new ReflectedLongCrc(params.algorithm(), bitWidth, params.polynomial(), params.initial(), params.xorOut()); else return new NormalLongCrc(params.algorithm(), bitWidth, params.polynomial(), params.initial(), params.xorOut()); } else { if (params.reflected()) return new ReflectedIntCrc(params.algorithm(), bitWidth, (int) params.polynomial(), (int) params.initial(), (int) params.xorOut()); else if (bitWidth > 8) return new NormalIntCrc(params.algorithm(), bitWidth, (int) params.polynomial(), (int) params.initial(), (int) params.xorOut()); return new NormalByteCrc(params.algorithm(), bitWidth, (int) params.polynomial(), (int) params.initial(), (int) params.xorOut()); } } }