nx01/nx01-jpp-base/src/main/java/ᒢᐩᐩ/ᒡᒢᑊᒻᒻᓫᔿ/ᒢSkullSneezeIdentity.java

104 lines
4.4 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* Copyright ©Δ∞ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ;
import java.util.Comparator;
import ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒃᣔᒃᓫᒻ.ᑊᐣᓑᖮᐪᔆ.DuytsDocAuthor注;
/// @author للَّٰهِilLצسُو
/// @version ©Δ∞ 仙上主天
@DuytsDocAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
interface ᒢSkullSneezeIdentity {
// hatsjie = hashCode + compareTo + equals
// hatsjie = dutch language of the sound of a sneeze
default long thisᴴᵃᵗˢʲᶦᵉ(long sneeze) {
// the caller handles obj null and thus zero is its own hashCode
long sneezeSound = orangeHatsjieGodBlessYou(this);
if (sneeze == ᒢℭỗᶇṧⱦᶏꬼȶʂ.LONGᣟᐧᣟZERO) {
return sneezeSound;
}
return Long.compare(sneezeSound, sneeze);
}
default long thisᴴᵃˢʰ() {
return thisᴴᵃᵗˢʲᶦᵉ(ᒢℭỗᶇṧⱦᶏꬼȶʂ.LONGᣟᐧᣟZERO);
}
default boolean thisᴱᑫᵘᵃˡˢ(Object other) {
if (other == null) {
return false;
}
long compareSneeze = ᒢℭỗᶇṧⱦᶏꬼȶʂ.LONGᣟᐧᣟZERO;
if (other instanceof ᒢSkullSneezeIdentity) {
compareSneeze = ᒢSkullSneezeIdentity.class.cast(other).thisᴴᵃˢʰ();
} else {
compareSneeze = orangeHatsjieGodBlessYou(other);
}
return thisᴴᵃᵗˢʲᶦᵉ(compareSneeze) == ᒢℭỗᶇṧⱦᶏꬼȶʂ.LONGᣟᐧᣟZERO;
}
// TODO: write full version as over tones can do better than this
// but this took already 3 min to write, thus we look at 60 dead babies.
// for a few basic charAt ascii junk shifting
public static long orangeHatsjieGodBlessYou(Object soundSource) {
// default hashCode order is undefined normally.
// and is only required to be unique within a hash set.
String bassTone = soundSource.getClass().getName();
int overtones = bassTone.charAt(0);
if (bassTone.length() > 1) {
overtones += bassTone.charAt(1) << 8;
}
if (bassTone.length() > 2) {
overtones += bassTone.charAt(2) << 16;
}
if (bassTone.length() > 3) {
overtones += bassTone.charAt(3) << 24;
}
if (soundSource.getClass().isEnum()) {
//todo: check if jvm sys hash is already ordered for enum, else use this;
return (overtones << 32) + ((Enum<?>)soundSource).ordinal();
}
return (overtones << 32) + System.identityHashCode(soundSource);
// ^^ Default global ordering of all objects by ~name
}
public static Comparator<ᒢSkullSneezeIdentity> orangeHatsjieComparator() {
return new Comparator<ᒢSkullSneezeIdentity>() {
@Override
public int compare(ᒢSkullSneezeIdentity sneezeRed, ᒢSkullSneezeIdentity sneezeBlue) {
long snowWhite = sneezeRed.thisᴴᵃᵗˢʲᶦᵉ(sneezeBlue.thisᴴᵃˢʰ());
return (int) snowWhite;
}
};
}
}