1(* 2 Title: Standard Basis Library: String Signatures 3 Copyright David Matthews 1999, 2005, 2016 4 5 This library is free software; you can redistribute it and/or 6 modify it under the terms of the GNU Lesser General Public 7 License version 2.1 as published by the Free Software Foundation. 8 9 This library is distributed in the hope that it will be useful, 10 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 Lesser General Public License for more details. 13 14 You should have received a copy of the GNU Lesser General Public 15 License along with this library; if not, write to the Free Software 16 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 17*) 18 19signature CHAR = 20sig 21 eqtype char 22 eqtype string 23 24 val minChar : char 25 val maxChar : char 26 val maxOrd : int 27 28 val ord : char -> int 29 val chr : int -> char 30 val succ : char -> char 31 val pred : char -> char 32 33 val < : (char * char) -> bool 34 val <= : (char * char) -> bool 35 val > : (char * char) -> bool 36 val >= : (char * char) -> bool 37 38 val compare : (char * char) -> General.order 39 40 val contains : string -> char -> bool 41 val notContains : string -> char -> bool 42 43 val toLower : char -> char 44 val toUpper : char -> char 45 val isAlpha : char -> bool 46 val isAlphaNum : char -> bool 47 val isAscii : char -> bool 48 val isCntrl : char -> bool 49 val isDigit : char -> bool 50 val isGraph : char -> bool 51 val isHexDigit : char -> bool 52 val isLower : char -> bool 53 val isPrint : char -> bool 54 val isSpace : char -> bool 55 val isPunct : char -> bool 56 val isUpper : char -> bool 57 58 val fromString : String.string -> char option 59 (* The argument to scan should be the global *) 60 val scan : (Char.char, 'a) StringCvt.reader -> (char, 'a) StringCvt.reader 61 val toString : char -> String.string 62 val fromCString : String.string -> char option 63 val toCString : char -> String.string 64end; 65 66 67signature STRING = 68sig 69 eqtype string 70 eqtype char 71 72 val maxSize : int 73 val size : string -> int 74 val sub : (string * int) -> char 75 val extract : (string * int * int option) -> string 76 val substring : (string * int * int) -> string 77 val concat : string list -> string 78 val concatWith: string -> string list -> string 79 val ^ : (string * string) -> string 80 val str : char -> string 81 val implode : char list -> string 82 val explode : string -> char list 83 val map : (char -> char) -> string -> string 84 val translate : (char -> string) -> string -> string 85 val tokens : (char -> bool) -> string -> string list 86 val fields : (char -> bool) -> string -> string list 87 val isPrefix : string -> string -> bool 88 val isSubstring : string -> string -> bool 89 val isSuffix : string -> string -> bool 90 91 92 val compare : (string * string) -> General.order 93 val collate : ((char * char) -> General.order) -> 94 (string * string) -> General.order 95 val < : (string * string) -> bool 96 val <= : (string * string) -> bool 97 val > : (string * string) -> bool 98 val >= : (string * string) -> bool 99 100 val toString : string -> String.string 101 val scan: (Char.char, 'a) StringCvt.reader -> (string, 'a) StringCvt.reader 102 val fromString : String.string -> string option 103 val toCString : string -> String.string 104 val fromCString : String.string -> string option 105end; 106 107signature SUBSTRING = 108sig 109 type substring 110 eqtype char 111 eqtype string 112 val size : substring -> int 113 val base : substring -> (string * int * int) 114 val isEmpty : substring -> bool 115 116 val sub : (substring * int) -> char 117 val getc : substring -> (char * substring) option 118 val first : substring -> char option 119 120 val extract : (string * int * int option) -> substring 121 val substring : (string * int * int) -> substring 122 val slice : (substring * int * int option) -> substring 123 val full: string -> substring 124 val string : substring -> string 125 126 val concat: substring list ->string 127 val concatWith: string -> substring list ->string 128 129 val explode : substring -> char list 130 val translate : (char -> string) -> substring -> string 131 val app : (char -> unit) -> substring -> unit 132 val foldl : ((char * 'a) -> 'a) -> 'a -> substring -> 'a 133 val foldr : ((char * 'a) -> 'a) -> 'a -> substring -> 'a 134 val tokens : (char -> bool) -> substring -> substring list 135 val fields : (char -> bool) -> substring -> substring list 136 val isPrefix: string -> substring -> bool 137 val isSubstring: string -> substring -> bool 138 val isSuffix: string -> substring -> bool 139 140 val compare : (substring * substring) -> General.order 141 val collate : ((char * char) -> General.order) -> 142 (substring * substring) -> General.order 143 144 val triml : int -> substring -> substring 145 val trimr : int -> substring -> substring 146 val splitl : (char -> bool) -> substring -> (substring * substring) 147 val splitr : (char -> bool) -> substring -> (substring * substring) 148 val splitAt : (substring * int) -> (substring * substring) 149 val dropl : (char -> bool) -> substring -> substring 150 val dropr : (char -> bool) -> substring -> substring 151 val takel : (char -> bool) -> substring -> substring 152 val taker : (char -> bool) -> substring -> substring 153 val position : string -> substring -> (substring * substring) 154 val span : (substring * substring) -> substring 155end; 156 157signature STRING_CVT = 158sig 159 datatype radix = BIN | OCT | DEC | HEX 160 161 datatype realfmt 162 = SCI of int option 163 | FIX of int option 164 | GEN of int option 165 | EXACT 166 167 type ('a, 'b) reader = 'b -> ('a * 'b) option 168 169 val padLeft : char -> int -> string -> string 170 val padRight : char -> int -> string -> string 171 val splitl : (char -> bool) -> (char, 'a) reader ->'a -> (string * 'a) 172 val takel : (char -> bool) -> (char, 'a) reader ->'a -> string 173 val dropl : (char -> bool) -> (char, 'a) reader ->'a -> 'a 174 val skipWS : (char, 'a) reader -> 'a -> 'a 175 type cs 176 val scanString : ((char, cs) reader -> ('a, cs) reader) -> string -> 'a option 177 178end; 179