FieldLookup.hx 722 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. package java.internal;
  2. @:native('haxe.lang.FieldLookup')
  3. @:keep
  4. @:static private class FieldLookup
  5. {
  6. @:functionBody('
  7. return s.hashCode();
  8. ')
  9. public static function hash(s:String):Int
  10. {
  11. return 0;
  12. }
  13. public static function findHash(hash:String, hashs:Array<String>):Int
  14. {
  15. var min = 0;
  16. var max = hashs.length;
  17. while (min < max)
  18. {
  19. var mid = Std.int((max + min) / 2); //overflow safe
  20. var classify = untyped hash.compareTo(hashs[mid]);
  21. if (classify < 0)
  22. {
  23. max = mid;
  24. } else if (classify > 0) {
  25. min = mid + 1;
  26. } else {
  27. return mid;
  28. }
  29. }
  30. //if not found, return a negative value of where it should be inserted
  31. return ~min;
  32. }
  33. }