summaryrefslogtreecommitdiff
path: root/stdlib/string.ml
diff options
context:
space:
mode:
authorNo author <no_author@ocaml.org>1995-06-15 16:08:54 +0000
committerNo author <no_author@ocaml.org>1995-06-15 16:08:54 +0000
commit77b1c8b89fd8940a63b17c41eb37161e5d159831 (patch)
tree43dbfb3982d9166b717199cb8faa97bdce30add7 /stdlib/string.ml
parentba79d4bd1f01a70b892c69f6a5e6e86714a023d6 (diff)
downloadocaml-unlabeled-1.2.2.tar.gz
This commit was manufactured by cvs2svn to create branchunlabeled-1.2.2
'unlabeled-1.2.2'. git-svn-id: http://caml.inria.fr/svn/ocaml/branches/unlabeled-1.2.2@37 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Diffstat (limited to 'stdlib/string.ml')
-rw-r--r--stdlib/string.ml113
1 files changed, 0 insertions, 113 deletions
diff --git a/stdlib/string.ml b/stdlib/string.ml
deleted file mode 100644
index d26ff55a55..0000000000
--- a/stdlib/string.ml
+++ /dev/null
@@ -1,113 +0,0 @@
-(* String operations *)
-
-external length : string -> int = "ml_string_length"
-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;
- s
-
-let copy s =
- let len = length s in
- let r = create len in
- unsafe_blit s 0 r 0 len;
- r
-
-let sub s ofs len =
- if ofs < 0 or len < 0 or ofs + len > length s
- then invalid_arg "String.sub"
- else begin
- let r = create len in
- unsafe_blit s ofs r 0 len;
- r
- end
-
-let fill s ofs len c =
- if ofs < 0 or len < 0 or ofs + len > length s
- then invalid_arg "String.fill"
- else unsafe_fill s ofs len c
-
-let blit s1 ofs1 s2 ofs2 len =
- if len < 0 or ofs1 < 0 or ofs1 + len > length s1
- or ofs2 < 0 or ofs2 + len > length s2
- then invalid_arg "String.blit"
- else unsafe_blit s1 ofs1 s2 ofs2 len
-
-let concat sep l =
- match l with
- [] -> ""
- | hd :: tl ->
- let num = ref 0 and len = ref 0 in
- List.iter (fun s -> incr num; len := !len + length s) l;
- let r = create (!len + length sep * (!num - 1)) in
- unsafe_blit hd 0 r 0 (length hd);
- let pos = ref(length hd) in
- List.iter
- (fun s ->
- unsafe_blit sep 0 r !pos (length sep);
- pos := !pos + length sep;
- unsafe_blit s 0 r !pos (length s);
- pos := !pos + length s)
- tl;
- r
-
-external is_printable: char -> bool = "is_printable"
-
-let escaped s =
- let n = ref 0 in
- for i = 0 to length s - 1 do
- n := !n +
- (match unsafe_get s i with
- '"' | '\\' | '\n' | '\t' -> 2
- | c -> if is_printable c then 1 else 4)
- done;
- if !n = length s then s else begin
- let s' = create !n in
- n := 0;
- for i = 0 to length s - 1 do
- begin
- match unsafe_get s i with
- ('"' | '\\') as c ->
- unsafe_set s' !n '\\'; incr n; unsafe_set s' !n c
- | '\n' ->
- unsafe_set s' !n '\\'; incr n; unsafe_set s' !n 'n'
- | '\t' ->
- unsafe_set s' !n '\\'; incr n; unsafe_set s' !n 't'
- | c ->
- if is_printable c then
- unsafe_set s' !n c
- else begin
- let a = Char.code c in
- unsafe_set s' !n '\\';
- incr n;
- unsafe_set s' !n (Char.unsafe_chr (48 + a / 100));
- incr n;
- unsafe_set s' !n (Char.unsafe_chr (48 + (a / 10) mod 10));
- incr n;
- unsafe_set s' !n (Char.unsafe_chr (48 + a mod 10))
- end
- end;
- incr n
- done;
- s'
- end