package idna

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

Install

dune-project
 Dependency

Authors

Maintainers

Sources

v0.3.0.tar.gz
md5=6fbed9dfec6402c9e382b79ffccc9abb
sha512=8b10a51d2ee2729af17f9f58751bfa9d0c032804566504af96a61f246e00e55682ab2b5443e65b2467fe93db22b15facfff2d17e9686a7ba65fd229dc50cc0dd

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