diff options
author | Xavier Leroy <xavier.leroy@inria.fr> | 1995-07-10 09:48:27 +0000 |
---|---|---|
committer | Xavier Leroy <xavier.leroy@inria.fr> | 1995-07-10 09:48:27 +0000 |
commit | c226d5efeb43f25c7086e89733ec8073262aa2e0 (patch) | |
tree | 481cda5fe83465c0acf991782d8848ec867bd946 /stdlib/string.ml | |
parent | bbbf6d016497de98d776934e20fbac905d48d6a1 (diff) |
Branchement du GC de la version bytecode sur le compilateur natif
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@72 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Diffstat (limited to 'stdlib/string.ml')
-rw-r--r-- | stdlib/string.ml | 28 |
1 files changed, 9 insertions, 19 deletions
diff --git a/stdlib/string.ml b/stdlib/string.ml index d26ff55a5..77ed8a7bb 100644 --- a/stdlib/string.ml +++ b/stdlib/string.ml @@ -1,27 +1,15 @@ (* String operations *) -external length : string -> int = "ml_string_length" +external length : string -> int = "%string_length" +external get : string -> int -> char = "%string_safe_get" +external set : string -> int -> char -> unit = "%string_safe_set" external create: int -> string = "create_string" external unsafe_get : string -> int -> char = "%string_unsafe_get" external unsafe_set : string -> int -> char -> unit = "%string_unsafe_set" -external get : string -> int -> char = "string_get" -external set : string -> int -> char -> unit = "string_set" external unsafe_blit : string -> int -> string -> int -> int -> unit = "blit_string" external unsafe_fill : string -> int -> int -> char -> unit = "fill_string" -(****** -let get s n = - if n < 0 or n >= length s - then invalid_arg "String.get" - else unsafe_get s n - -let set s n c = - if n < 0 or n >= length s - then invalid_arg "String.set" - else unsafe_set s n c -*******) - let make n c = let s = create n in unsafe_fill s 0 n c; @@ -72,6 +60,8 @@ let concat sep l = r external is_printable: char -> bool = "is_printable" +external char_code: char -> int = "%identity" +external char_chr: int -> char = "%identity" let escaped s = let n = ref 0 in @@ -97,14 +87,14 @@ let escaped s = if is_printable c then unsafe_set s' !n c else begin - let a = Char.code c in + let a = char_code c in unsafe_set s' !n '\\'; incr n; - unsafe_set s' !n (Char.unsafe_chr (48 + a / 100)); + unsafe_set s' !n (char_chr (48 + a / 100)); incr n; - unsafe_set s' !n (Char.unsafe_chr (48 + (a / 10) mod 10)); + unsafe_set s' !n (char_chr (48 + (a / 10) mod 10)); incr n; - unsafe_set s' !n (Char.unsafe_chr (48 + a mod 10)) + unsafe_set s' !n (char_chr (48 + a mod 10)) end end; incr n |