From 7a2e20caac9db6f789a7b3fab344b9758af45335 Mon Sep 17 00:00:00 2001 From: Harvey Harrison Date: Sun, 19 Apr 2015 21:02:06 -0700 Subject: j3dcore: flatten the directory structure a bit Signed-off-by: Harvey Harrison --- src/javax/media/j3d/J3dHash.java | 44 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 src/javax/media/j3d/J3dHash.java (limited to 'src/javax/media/j3d/J3dHash.java') diff --git a/src/javax/media/j3d/J3dHash.java b/src/javax/media/j3d/J3dHash.java new file mode 100644 index 0000000..5db0437 --- /dev/null +++ b/src/javax/media/j3d/J3dHash.java @@ -0,0 +1,44 @@ +/* + * Copyright 2013 Harvey Harrison + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Sun designates this + * particular file as subject to the "Classpath" exception as provided + * by Sun in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + */ +package javax.media.j3d; + +/** + * A Utility class wrapping the approach used to hash double values in Java3D + */ +class J3dHash { + +// prevent an instance from actually being created +private J3dHash() {} + +/** + * Mix the given double into the provided long hash. + */ +static final long mixDoubleBits(long hash, double d) { + hash *= 31L; + // Treat 0.0d and -0.0d the same (all zero bits) + if (d == 0.0d) + return hash; + + return hash + Double.doubleToLongBits(d); +} + +/** + * Return an integer hash from a long by mixing it with itself. + */ +static final int finish(long hash) { + return (int)(hash ^ (hash >> 32)); +} +} -- cgit v1.2.3