Passage de {Array,String}.{get,set} en primitives C.
Renommage %array_get -> %array_unsafe_get, etc. git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@31 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02master
parent
00f1ca9d88
commit
9ef4bd08d1
|
@ -1,10 +1,13 @@
|
|||
(* Array operations *)
|
||||
|
||||
external length : 'a array -> int = "%array_length"
|
||||
external unsafe_get: 'a array -> int -> 'a = "%array_get"
|
||||
external unsafe_set: 'a array -> int -> 'a -> unit = "%array_set"
|
||||
external unsafe_get: 'a array -> int -> 'a = "%array_unsafe_get"
|
||||
external unsafe_set: 'a array -> int -> 'a -> unit = "%array_unsafe_set"
|
||||
external new: int -> 'a -> 'a array = "make_vect"
|
||||
external get: 'a array -> int -> 'a = "array_get"
|
||||
external set: 'a array -> int -> 'a -> unit = "array_set"
|
||||
|
||||
(*****
|
||||
let get a n =
|
||||
if n < 0 or n >= length a
|
||||
then invalid_arg "Array.get"
|
||||
|
@ -14,6 +17,7 @@ let set a n v =
|
|||
if n < 0 or n >= length a
|
||||
then invalid_arg "Array.set"
|
||||
else unsafe_set a n v
|
||||
*****)
|
||||
|
||||
let new_matrix sx sy init =
|
||||
let res = new sx [||] in
|
||||
|
@ -37,7 +41,7 @@ let append a1 a2 =
|
|||
if l1 = 0 & l2 = 0 then [||] else begin
|
||||
let r = new (l1 + l2) (unsafe_get (if l1 > 0 then a1 else a2) 0) in
|
||||
for i = 0 to l1 - 1 do unsafe_set r i (unsafe_get a1 i) done;
|
||||
for i = 0 to l2 - 1 do unsafe_set r (i + l1) (unsafe_get a1 i) done;
|
||||
for i = 0 to l2 - 1 do unsafe_set r (i + l1) (unsafe_get a2 i) done;
|
||||
r
|
||||
end
|
||||
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
|
||||
external length : 'a array -> int = "%array_length"
|
||||
|
||||
val get: 'a array -> int -> 'a
|
||||
val set: 'a array -> int -> 'a -> unit
|
||||
external get: 'a array -> int -> 'a = "array_get"
|
||||
external set: 'a array -> int -> 'a -> unit = "array_set"
|
||||
external new: int -> 'a -> 'a array = "make_vect"
|
||||
val new_matrix: int -> int -> 'a -> 'a array array
|
||||
val append: 'a array -> 'a array -> 'a array
|
||||
|
@ -17,6 +17,6 @@ val map: ('a -> 'b) -> 'a array -> 'b array
|
|||
val to_list: 'a array -> 'a list
|
||||
val of_list: 'a list -> 'a array
|
||||
|
||||
external unsafe_get: 'a array -> int -> 'a = "%array_get"
|
||||
external unsafe_set: 'a array -> int -> 'a -> unit = "%array_set"
|
||||
external unsafe_get: 'a array -> int -> 'a = "%array_unsafe_get"
|
||||
external unsafe_set: 'a array -> int -> 'a -> unit = "%array_unsafe_set"
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@ external magic : 'a -> 'b = "%identity"
|
|||
external is_block : t -> bool = "obj_is_block"
|
||||
external tag : t -> int = "%tagof"
|
||||
external size : t -> int = "%array_length"
|
||||
external field : t -> int -> t = "%array_get"
|
||||
external set_field : t -> int -> t -> unit = "%array_set"
|
||||
external field : t -> int -> t = "%array_unsafe_get"
|
||||
external set_field : t -> int -> t -> unit = "%array_unsafe_set"
|
||||
external new_block : int -> int -> t = "obj_block"
|
||||
external update : t -> t -> unit = "%update"
|
||||
|
|
|
@ -7,7 +7,7 @@ external magic : 'a -> 'b = "%identity"
|
|||
external is_block : t -> bool = "obj_is_block"
|
||||
external tag : t -> int = "%tagof"
|
||||
external size : t -> int = "%array_length"
|
||||
external field : t -> int -> t = "%array_get"
|
||||
external set_field : t -> int -> t -> unit = "%array_set"
|
||||
external field : t -> int -> t = "%array_unsafe_get"
|
||||
external set_field : t -> int -> t -> unit = "%array_unsafe_set"
|
||||
external new_block : int -> int -> t = "obj_block"
|
||||
external update : t -> t -> unit = "%update"
|
||||
|
|
|
@ -2,12 +2,15 @@
|
|||
|
||||
external length : string -> int = "ml_string_length"
|
||||
external create: int -> string = "create_string"
|
||||
external unsafe_get : string -> int -> char = "%string_get"
|
||||
external unsafe_set : string -> int -> char -> unit = "%string_set"
|
||||
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"
|
||||
|
@ -17,6 +20,7 @@ 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
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
|
||||
external length : string -> int = "ml_string_length"
|
||||
|
||||
val get : string -> int -> char
|
||||
val set : string -> int -> char -> unit
|
||||
external get : string -> int -> char = "string_get"
|
||||
external set : string -> int -> char -> unit = "string_set"
|
||||
|
||||
external create : int -> string = "create_string"
|
||||
val make : int -> char -> string
|
||||
|
@ -17,8 +17,8 @@ val concat : string -> string list -> string
|
|||
|
||||
val escaped: string -> string
|
||||
|
||||
external unsafe_get : string -> int -> char = "%string_get"
|
||||
external unsafe_set : string -> int -> char -> unit = "%string_set"
|
||||
external unsafe_get : string -> int -> char = "%string_unsafe_get"
|
||||
external unsafe_set : string -> int -> char -> unit = "%string_unsafe_set"
|
||||
external unsafe_blit : string -> int -> string -> int -> int -> unit
|
||||
= "blit_string"
|
||||
external unsafe_fill : string -> int -> int -> char -> unit = "fill_string"
|
||||
|
|
Loading…
Reference in New Issue