File: libc.sml

package info (click to toggle)
smlsharp 4.1.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 123,732 kB
  • sloc: ansic: 16,725; sh: 4,347; makefile: 2,191; java: 742; haskell: 493; ruby: 305; cpp: 284; pascal: 256; ml: 255; lisp: 141; asm: 97; sql: 74
file content (38 lines) | stat: -rw-r--r-- 891 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
(**
 * libc.sml
 *
 * @copyright (C) 2021 SML# Development Team.
 * @author UENO Katsuhiro
 * @version $Id: libc.sml,v 1.2 2007/03/29 17:00:08 katsu Exp $
 *)


structure Libc =
struct

  type c_file = unit ptr

  (* ANSI *)
  val fopen   = _import "fopen" : (string, string) -> c_file
  val fclose  = _import "fclose" : (c_file) -> ()
  fun fread (a,len,c_file) =
      _ffiapply _import "fread"
        (a:'a array, _sizeof('a), len:int, c_file:c_file) : int

  fun memcpy (dst,src,len) =
      _ffiapply _import "memcpy"
        (dst:unit ptr, src:'a array, _sizeof('a) * len) : ()

  (* POSIX.1 *)
  val fdopen  = _import "fdopen" : (int, string) -> c_file

  (* BSD *)
  val usleep  = _import "usleep" : (int) -> int

  (*
   * Note for Windows users:
   * - msvcrt.dll has "_fdopen" but it is broken. Please use fopen instead of fdopen.
   * - Windows does not have usleep.
   *)

end