Import Upstream version 20180207
[hcoop/debian/mlton.git] / lib / mlton / basic / substring.sml
1 (* Copyright (C) 1999-2006 Henry Cejtin, Matthew Fluet, Suresh
2 * Jagannathan, and Stephen Weeks.
3 *
4 * MLton is released under a BSD-style license.
5 * See the file MLton-LICENSE for details.
6 *)
7
8 structure Substring: SUBSTRING =
9 struct
10 open Pervasive.Substring
11
12 type t = substring
13
14 val length = size
15
16 val substring =
17 fn (s, {start, length}) => substring (s, start, length)
18
19 val base =
20 fn ss => let val (s, start, length) = base ss
21 in (s, {start = start, length = length})
22 end
23
24 val toString = string
25
26 val layout = String1.layout o toString
27
28 fun endOf ss =
29 let
30 val (_, {start, length}) = base ss
31 in
32 start + length
33 end
34 end