#2 "stdlib/sys.mlp" (**************************************************************************) (* *) (* OCaml *) (* *) (* Xavier Leroy, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1996 Institut National de Recherche en Informatique et *) (* en Automatique. *) (* *) (* All rights reserved. This file is distributed under the terms of *) (* the GNU Lesser General Public License version 2.1, with the *) (* special exception on linking described in the file LICENSE. *) (* *) (**************************************************************************) (* WARNING: sys.ml is generated from sys.mlp. DO NOT EDIT sys.ml or your changes will be lost. *) type backend_type = | Native | Bytecode | Other of string (* System interface *) external get_config: unit -> string * int * bool = "caml_sys_get_config" external get_executable_name : unit -> string = "caml_sys_executable_name" external argv : string array = "%sys_argv" external big_endian : unit -> bool = "%big_endian" external word_size : unit -> int = "%word_size" external int_size : unit -> int = "%int_size" external max_wosize : unit -> int = "%max_wosize" external unix : unit -> bool = "%ostype_unix" external win32 : unit -> bool = "%ostype_win32" external cygwin : unit -> bool = "%ostype_cygwin" external get_backend_type : unit -> backend_type = "%backend_type" let executable_name = get_executable_name() let (os_type, _, _) = get_config() let backend_type = get_backend_type () let big_endian = big_endian () let word_size = word_size () let int_size = int_size () let unix = unix () let win32 = win32 () let cygwin = cygwin () let max_array_length = max_wosize () let max_floatarray_length = max_array_length / (64 / word_size) let max_string_length = word_size / 8 * max_array_length - 1 external runtime_variant : unit -> string = "caml_runtime_variant" external runtime_parameters : unit -> string = "caml_runtime_parameters" external file_exists: string -> bool = "caml_sys_file_exists" external is_directory : string -> bool = "caml_sys_is_directory" external remove: string -> unit = "caml_sys_remove" external rename : string -> string -> unit = "caml_sys_rename" external getenv: string -> string = "caml_sys_getenv" let getenv_opt s = (* TODO: expose a non-raising primitive directly. *) try Some (getenv s) with Not_found -> None external command: string -> int = "caml_sys_system_command" external time: unit -> (float [@unboxed]) = "caml_sys_time" "caml_sys_time_unboxed" [@@noalloc] external chdir: string -> unit = "caml_sys_chdir" external getcwd: unit -> string = "caml_sys_getcwd" external readdir : string -> string array = "caml_sys_read_directory" let interactive = ref false type signal_behavior = Signal_default | Signal_ignore | Signal_handle of (int -> unit) external signal : int -> signal_behavior -> signal_behavior = "caml_install_signal_handler" let set_signal sig_num sig_beh = ignore(signal sig_num sig_beh) let sigabrt = -1 let sigalrm = -2 let sigfpe = -3 let sighup = -4 let sigill = -5 let sigint = -6 let sigkill = -7 let sigpipe = -8 let sigquit = -9 let sigsegv = -10 let sigterm = -11 let sigusr1 = -12 let sigusr2 = -13 let sigchld = -14 let sigcont = -15 let sigstop = -16 let sigtstp = -17 let sigttin = -18 let sigttou = -19 let sigvtalrm = -20 let sigprof = -21 let sigbus = -22 let sigpoll = -23 let sigsys = -24 let sigtrap = -25 let sigurg = -26 let sigxcpu = -27 let sigxfsz = -28 exception Break let catch_break on = if on then set_signal sigint (Signal_handle(fun _ -> raise Break)) else set_signal sigint Signal_default external enable_runtime_warnings: bool -> unit = "caml_ml_enable_runtime_warnings" external runtime_warnings_enabled: unit -> bool = "caml_ml_runtime_warnings_enabled" (* The version string is found in file ../VERSION *) let ocaml_version = "%%VERSION%%" (* Optimization *) external opaque_identity : 'a -> 'a = "%opaque" module Immediate64 = struct module type Non_immediate = sig type t end module type Immediate = sig type t [@@immediate] end module Make(Immediate : Immediate)(Non_immediate : Non_immediate) = struct type t [@@immediate64] type 'a repr = | Immediate : Immediate.t repr | Non_immediate : Non_immediate.t repr external magic : _ repr -> t repr = "%identity" let repr = if word_size = 64 then magic Immediate else magic Non_immediate end end