X-Git-Url: http://nitlanguage.org diff --git a/lib/perfect_hashing.nit b/lib/perfect_hashing.nit index 38808cb..d8ab3cb 100644 --- a/lib/perfect_hashing.nit +++ b/lib/perfect_hashing.nit @@ -52,11 +52,11 @@ class Perfecthashing var orMask = 0 var andMask = 0 for i in ids do - orMask = orMask.bin_or(i) - andMask = andMask.bin_and(i) + orMask |= i + andMask &= i end - mask = orMask.bin_xor(andMask) + mask = orMask ^ andMask # Re-initialize the hashtable with null values for i in [0..(mask+1)] do tempht[i] = null @@ -66,7 +66,7 @@ class Perfecthashing var i = mask.highest_bit while i != 0 do if mask.getbit(i) == 1 then - newmask = mask.bin_xor(1 << i) + newmask = mask ^ (1 << i) # If there is no collision, replace the old mask if phandp(ids, newmask) then @@ -85,7 +85,7 @@ class Perfecthashing fun phandp(ids: Array[Int], mask: Int): Bool do for i in ids do - var hv = i.bin_and(mask) + var hv = i & mask if tempht[hv] == mask then return false else @@ -156,7 +156,7 @@ class Perfecthashing var i = inter.item.first.as(not null) while i != inter.item.second and not found do # Tests if this id is free for this mask - var hv = i.bin_and(mask) + var hv = i & mask # If the hashtable if full, push an empty item if hv >= tempht.length then