package idna

  1. Overview
  2. Docs
Internationalized Domain Names for OCaml (IDNA 2008 and UTS #46)

Install

dune-project
 Dependency

Authors

Maintainers

Sources

v0.4.0.tar.gz
md5=d5160b5ecb3d2fb81bd466920579f783
sha512=05e7c370be7ba6be2e4c3d9d4c76e6853e3c4ac08034c3d21efba819139cf309bf4faaab89e4e4a80653d7144576fdb38fbcfa037dfbba620294cb035b3b8732

doc/src/idna.intranges/intranges.ml.html

Source file intranges.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
(** 64-bit packed ranges: each int = start lsl 32 lor end_exclusive. *)

type t = int array

let contains cp ranges =
  let len = Array.length ranges in
  if len = 0 then false
  else
    let lo = ref 0 in
    let hi = ref (len - 1) in
    while !lo <= !hi do
      let mid = !lo + (!hi - !lo) / 2 in
      let mid_start = ranges.(mid) lsr 32 in
      if mid_start <= cp then lo := mid + 1
      else hi := mid - 1
    done;
    if !hi >= 0 then
      let start = ranges.(!hi) lsr 32 in
      let end_ = ranges.(!hi) land 0xFFFFFFFF in
      start <= cp && cp < end_
    else false