File: functions.ml

package info (click to toggle)
ocaml-ctypes 0.24.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 2,180 kB
  • sloc: ml: 13,406; ansic: 3,316; makefile: 72
file content (79 lines) | stat: -rw-r--r-- 2,121 bytes parent folder | download | duplicates (4)
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
(*
 * Copyright (c) 2014 Jeremy Yallop.
 *
 * This file is distributed under the terms of the MIT License.
 * See the file LICENSE for details.
 *)

(* Foreign function bindings for the pointer tests. *)

open Ctypes

module Stubs (F: Ctypes.FOREIGN) =
struct
  open F

  let accept_pointers = foreign "accept_pointers"
    (ptr float @->
     ptr double @->
     ptr short @->
     ptr int @->
     ptr long @->
     ptr llong @->
     ptr nativeint @->
     ptr int8_t @->
     ptr int16_t @->
     ptr int32_t @->
     ptr int64_t @->
     ptr uint8_t @->
     ptr uint16_t @->
     ptr uint32_t @->
     ptr uint64_t @->
     ptr size_t @->
     ptr ushort @->
     ptr uint @->
     ptr ulong @->
     ptr ullong @->
     returning int)

  let accept_pointers_to_pointers = foreign "accept_pointers_to_pointers"
    (ptr int @->
     ptr (ptr int) @->
     ptr (ptr (ptr int)) @->
     ptr (ptr (ptr (ptr int))) @->
     returning int)

  let malloc = foreign "malloc"
    (size_t @-> returning (ptr void))

  let realloc = foreign "realloc"
    (ptr void @-> size_t @-> returning (ptr void))

  let free = foreign "free"
    (ptr void @-> returning void)

  let return_global_address = foreign "return_global_address"
    (void @-> returning (ptr int))

  let pass_pointer_through = foreign "pass_pointer_through"
    (ptr int @-> ptr int @-> int @-> returning (ptr int))

  let passing_pointers_to_callback = foreign "passing_pointers_to_callback"
      (Foreign.funptr Ctypes.(ptr int @-> ptr int @-> returning int) @->
       returning int)

  let accepting_pointer_from_callback =
    foreign "accepting_pointer_from_callback"
      (Foreign.funptr Ctypes.(int @-> int @-> returning (ptr int)) @->
       returning int)

  let accepting_pointer_to_function_pointer =
    foreign "accepting_pointer_to_function_pointer"
      (ptr (Foreign.funptr Ctypes.(int @-> int @-> returning int)) @->
       returning int)

  let returning_pointer_to_function_pointer =
    foreign "returning_pointer_to_function_pointer"
      (void @->
       returning (ptr (Foreign.funptr Ctypes.(int @-> int @-> returning int))))
end