mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-15 02:59:33 +07:00
151 lines
3.7 KiB
Plaintext
151 lines
3.7 KiB
Plaintext
public int hashCode() {
|
|
#if (!$superHasHashCode && $fields.size() == 1)
|
|
#set($field = $fields.get(0))
|
|
#if ($field.primitive)
|
|
#addTempForOneField($field)
|
|
return #addPrimitiveFieldHashCode($field);
|
|
#else
|
|
return #addFieldHashCode($field, false);
|
|
#end
|
|
#elseif ($fields.size() > 0)
|
|
#set($resultName = $helper.getUniqueLocalVarName("result", $fields, $settings))
|
|
int $resultName ##
|
|
#set($resultAssigned = false)
|
|
#set($resultDeclarationCompleted = false)
|
|
#if ($superHasHashCode)
|
|
= #addSuperHashCode();
|
|
#set($resultAssigned = true)
|
|
#set($resultDeclarationCompleted = true)
|
|
#end
|
|
#addTempDeclaration($resultDeclarationCompleted)
|
|
#set($tempName = "#addTempDeclaration($resultDeclarationCompleted)")
|
|
#foreach($field in $fields)
|
|
#addTempAssignment($field)
|
|
#if ($resultDeclarationCompleted)
|
|
$resultName ##
|
|
#end
|
|
= ##
|
|
#if ($resultAssigned)
|
|
31 * $resultName + ##
|
|
#end
|
|
#if ($field.primitive)
|
|
#addPrimitiveFieldHashCode($field)##
|
|
#else
|
|
#addFieldHashCode($field, $resultAssigned)##
|
|
#end
|
|
;
|
|
#set($resultAssigned = true)
|
|
#set($resultDeclarationCompleted = true)
|
|
#end
|
|
return $resultName;
|
|
#else
|
|
return 0;
|
|
#end
|
|
}
|
|
##
|
|
#macro (addPrimitiveFieldHashCode $field)
|
|
#set ($fName = $field.accessor)
|
|
#if ($field.byte || $field.short || $field.char)
|
|
$fName##
|
|
#elseif ($field.long)
|
|
#if ($java_version < 8)
|
|
(int)($fName ^ ($fName >>> 32))##
|
|
#else
|
|
java.lang.Long.hashCode($fName)##
|
|
#end
|
|
#elseif ($field.boolean)
|
|
#if ($java_version < 8)
|
|
($fName ? 1 : 0)##
|
|
#else
|
|
java.lang.Boolean.hashCode($fName)##
|
|
#end
|
|
#elseif ($field.float)
|
|
#if ($java_version < 8)
|
|
java.lang.Float.floatToIntBits($fName)##
|
|
#else
|
|
java.lang.Float.hashCode($fName)##
|
|
#end
|
|
#elseif ($field.double)
|
|
#if ($java_version < 8)
|
|
#set($tempName = "#getTempVarName()")
|
|
(int) ($tempName ^ ($tempName >>> 32))##
|
|
#else
|
|
java.lang.Double.hashCode($fName)##
|
|
#end
|
|
#elseif ($field.void)
|
|
0##
|
|
#else
|
|
$fName##
|
|
#end
|
|
#end
|
|
##
|
|
#macro(getTempVarName)
|
|
$helper.getUniqueLocalVarName("temp", $fields, $settings)##
|
|
#end
|
|
##
|
|
#macro(addTempForOneField $field)
|
|
#if ($field.double && $java_version < 8)
|
|
#if ($settings.generateFinalLocals)
|
|
final ##
|
|
#end
|
|
#set($tempName = "#getTempVarName()")
|
|
long $tempName = java.lang.Double.doubleToLongBits($field.accessor);
|
|
#end
|
|
#end
|
|
##
|
|
#macro(adjustHashCodeToArrays $field)
|
|
#if ($field.array && $java_version > 4)
|
|
#if ($field.nestedArray)
|
|
java.util.Arrays.deepHashCode($field.accessor)##
|
|
#else
|
|
java.util.Arrays.hashCode($field.accessor)##
|
|
#end
|
|
#else
|
|
${field.accessor}.hashCode()##
|
|
#end
|
|
#end
|
|
##
|
|
#macro(addSuperHashCode)
|
|
#if ($superHasHashCode)
|
|
super.hashCode()##
|
|
#else
|
|
0##
|
|
#end
|
|
#end
|
|
##
|
|
#macro(addTempDeclaration $resultDeclarationCompleted)
|
|
#foreach($field in $fields)
|
|
#if ($field.double && $java_version < 8)
|
|
#if (!$resultDeclarationCompleted)
|
|
;
|
|
#end
|
|
#set($tempName = "#getTempVarName()")
|
|
long $tempName;
|
|
#set($resultDeclarationCompleted = true)
|
|
#break
|
|
#end
|
|
#end
|
|
#end
|
|
##
|
|
#macro(addTempAssignment $field)
|
|
#if ($field.double && $java_version < 8)
|
|
#set($tempName = "#getTempVarName()")
|
|
$tempName = java.lang.Double.doubleToLongBits($field.accessor);
|
|
#end
|
|
#end
|
|
##
|
|
#macro(addFieldHashCode $field $brace)
|
|
#set($name = $field.accessor)
|
|
#if ($field.notNull)#adjustHashCodeToArrays($field)
|
|
#elseif ($field.array && $java_version > 4)#adjustHashCodeToArrays($field)
|
|
#elseif ($java_version >= 7)
|
|
java.util.Objects.hashCode($field.accessor) ##
|
|
#else
|
|
#if ($brace)(##
|
|
#end
|
|
$name != null ? #adjustHashCodeToArrays($field) : 0##
|
|
#if ($brace))##
|
|
#end
|
|
#end
|
|
#end
|