summaryrefslogtreecommitdiffstats
path: root/stdlib/string.ml
diff options
context:
space:
mode:
authorXavier Leroy <xavier.leroy@inria.fr>1995-07-10 09:48:27 +0000
committerXavier Leroy <xavier.leroy@inria.fr>1995-07-10 09:48:27 +0000
commitc226d5efeb43f25c7086e89733ec8073262aa2e0 (patch)
tree481cda5fe83465c0acf991782d8848ec867bd946 /stdlib/string.ml
parentbbbf6d016497de98d776934e20fbac905d48d6a1 (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.ml28
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