about summary refs log blame commit diff stats
path: root/src/utils/map.nim
blob: 526b915434afe35204840d8b69f27e0806c7940b (plain) (tree)




















                                                               
import algorithm

func searchInMap*[U, T](a: openarray[(U, T)], u: U): int =
  when not (typeof(u) is U):
    if c > cast[typeof(c)](high(U)):
      return -1
  binarySearch(a, u, proc(x: (U, T), y: U): int = cmp(x[0], y))

func isInMap*[U, T](a: openarray[(U, T)], u: U): bool =
  a.searchInMap(u) != -1

func isInRange*[U](a: openarray[(U, U)], u: U): bool =
  let res = binarySearch(a, u, proc(x: (U, U), y: U): int =
    if x[0] < y:
      -1
    elif x[1] > y:
      1
    else:
      0
  )
  return res != -1