CPLIB_UTILS_GRIDUTILS = 1
dij4 = [(0, 1), (-1, 0), (0, -1), (1, 0)]
dij4_str = "RULD"
dij8 = [(0, 1), (-1, 1), (-1, 0), (-1, -1), (0, -1), (1, -1), (1, 0), (1, 1)]
proc getid(grid: openArray[string]; i, j: int): int {....raises: [], tags: [].}
proc getid[T](grid: openArray[seq[T]]; i, j: int): int
proc gridfind(grid: openArray[string]; value: char): (int, int) {....raises: [], tags: [].}
proc gridfind[T](grid: openArray[seq[T]]; value: T): (int, int)
proc gridfinds(grid: openArray[string]; value: char): seq[(int, int)] {. ...raises: [], tags: [].}
proc gridfinds[T](grid: openArray[seq[T]]; value: T): seq[(int, int)]
proc height(grid: openArray[string]): int {.inline, ...raises: [], tags: [].}
proc height[T](grid: openArray[seq[T]]): int {.inline.}
proc to_pos(grid: openArray[string]; id: int): (int, int) {....raises: [], tags: [].}
proc to_pos[T](grid: openArray[seq[T]]; id: int): (int, int)
proc width(grid: openArray[string]): int {.inline, ...raises: [], tags: [].}
proc width[T](grid: openArray[seq[T]]): int {.inline.}
iterator griditer(i, j, H, W: int; dij: openArray[(int, int)] = dij4): (int, int) {. ...raises: [], tags: [].}