package cstruct

  1. Overview
  2. Docs
access C structures via a camlp4 extension

Install

Dune Dependency

Authors

Maintainers

Sources

v2.4.1.tar.gz
sha256=f3c1600e85eb93a58c052e2e9575b48d4dd02784d9b2615dadf861860afa1ee7
md5=e058a3db193f5fd4706db62a19ed3b98

Description

Cstruct is a library and syntax extension to make it easier to access C-like structures directly from OCaml. It supports both reading and writing to these structures, and they are accessed via the Bigarray module.

An example pcap description using PPX extension points is:

[%%cstruct
type pcap_header = {
  magic_number: uint32_t;   (* magic number *)
  version_major: uint16_t;  (* major version number *)
  version_minor: uint16_t;  (* minor version number *)
  thiszone: uint32_t;       (* GMT to local correction *)
  sigfigs: uint32_t;        (* accuracy of timestamps *)
  snaplen: uint32_t;        (* max length of captured packets, in octets *)
  network: uint32_t;        (* data link type *)
} [@@little_endian]]

For Camlp4 support, please use a version of Cstruct that is <=1.9.0

Dependencies (9)

  1. conf-time
  2. ppx_tools_versioned >= "5.0beta"
  3. ocaml-migrate-parsetree < "2.0.0"
  4. base-bytes
  5. sexplib
  6. ocplib-endian
  7. ocamlbuild build & != "0.9.0"
  8. ocamlfind build
  9. ocaml >= "4.02.3" & < "4.08.0"

Dev Dependencies (1)

  1. ounit with-test

  1. albatross < "1.3.0"
  2. angstrom < "0.7.0"
  3. arakoon >= "1.8.6" & < "1.8.12"
  4. arp < "3.0.0"
  5. arp-mirage
  6. asn1-combinators >= "0.1.2" & != "0.2.0-1" & < "0.2.6"
  7. awa-mirage < "0.0.2"
  8. balancer
  9. buffer-pool
  10. capnp-rpc-net >= "1.1" & < "1.2.1"
  11. channel
  12. charrua-client < "0.9"
  13. charrua-core >= "0.3" & < "0.8"
  14. charrua-unix = "0.6"
  15. cohttp >= "0.9.7" & < "0.10.0"
  16. conduit >= "0.6.0" & < "0.15.2"
  17. conduit-async = "3.0.0"
  18. conduit-lwt = "3.0.0"
  19. conex < "0.10.0"
  20. conex-mirage-crypto
  21. conex-nocrypto
  22. cowabloga >= "0.0.5"
  23. crc
  24. crunch >= "2.0.0" & < "3.0.0"
  25. cstruct-lwt < "3.0.0"
  26. cstruct-unix < "3.0.0"
  27. datakit
  28. datakit-ci >= "0.10.0" & < "0.12.4"
  29. datakit-client
  30. datakit-client-9p
  31. datakit-server
  32. depyt
  33. dns >= "0.18.0" & < "1.0.0"
  34. dns-forward < "0.9.0"
  35. dnssd
  36. dream < "1.0.0~alpha2"
  37. duff < "0.3"
  38. eqaf >= "0.8" & < "0.10"
  39. eqaf-cstruct
  40. fat-filesystem >= "0.10.0" & < "0.12.1"
  41. frenetic < "2.0.0" | >= "3.2.0" & < "5.0.5"
  42. git >= "1.4.3" & < "1.6.0" | >= "2.0.0" & < "3.0.0"
  43. git-http < "1.11.0"
  44. git-mirage = "1.11.0"
  45. github-hooks >= "0.2.0"
  46. gluten-mirage < "0.3.0"
  47. gpt
  48. h2-mirage
  49. hacl-star >= "0.7.0"
  50. hex >= "0.2.0"
  51. hkdf < "1.0.3"
  52. httpun-mirage
  53. httpun-ws-mirage
  54. hvsock < "3.0.0"
  55. io-page
  56. io-page-unix
  57. io-page-xen
  58. ipaddr-cstruct < "5.2.0"
  59. irmin >= "0.9.0" & < "2.0.0"
  60. irmin-git >= "2.3.0"
  61. irmin-indexeddb >= "0.3"
  62. key-parsers >= "0.5.0" & < "1.2.1"
  63. launchd
  64. letsencrypt = "0.2.5"
  65. letsencrypt-app < "0.4.0"
  66. macaddr-cstruct < "5.2.0"
  67. metrics-mirage
  68. mirage >= "0.7.2" & < "0.9.0" | >= "0.10.0" & < "2.4.0"
  69. mirage-block < "1.0.0"
  70. mirage-block-ccm < "1.1.0"
  71. mirage-block-combinators < "3.0.0"
  72. mirage-block-lwt
  73. mirage-block-ramdisk
  74. mirage-block-solo5 < "0.6.2"
  75. mirage-block-unix < "2.8.3"
  76. mirage-block-xen >= "1.4.0" & < "2.1.1"
  77. mirage-btrees
  78. mirage-channel-lwt
  79. mirage-clock-unix < "1.0.0"
  80. mirage-clock-xen < "1.0.0"
  81. mirage-conduit = "2.3.1"
  82. mirage-console-lwt
  83. mirage-console-solo5 >= "0.2.0"
  84. mirage-console-unix < "2.3.3"
  85. mirage-console-xen = "4.0.0"
  86. mirage-console-xen-backend >= "2.3.2" & < "2.3.4" | = "4.0.0"
  87. mirage-console-xen-cli
  88. mirage-dns != "2.6.0" & < "2.7.0"
  89. mirage-entropy < "0.5.0"
  90. mirage-entropy-unix
  91. mirage-entropy-xen
  92. mirage-flow < "1.2.0"
  93. mirage-flow-lwt
  94. mirage-flow-rawlink >= "1.1.0"
  95. mirage-flow-unix < "1.5.0"
  96. mirage-fs >= "0.4.0" & < "1.0.0"
  97. mirage-fs-lwt
  98. mirage-fs-mem
  99. mirage-fs-unix < "1.4.1"
  100. mirage-kv-lwt
  101. mirage-nat < "2.2.4"
  102. mirage-net = "0.5.2"
  103. mirage-net-fd < "0.2.1"
  104. mirage-net-lwt
  105. mirage-net-macosx
  106. mirage-net-solo5
  107. mirage-net-unix < "2.1.0" | >= "2.2.1" & != "2.4.1"
  108. mirage-net-xen != "1.4.2" & < "1.7.1"
  109. mirage-profile = "0.7.0"
  110. mirage-protocols-lwt
  111. mirage-qubes != "0.2" & < "0.9.2"
  112. mirage-qubes-ipv4 < "0.9.3"
  113. mirage-random < "2.0.0"
  114. mirage-random-stdlib
  115. mirage-random-test
  116. mirage-solo5 < "0.9.4"
  117. mirage-stack-lwt
  118. mirage-tc
  119. mirage-tcpip-unix
  120. mirage-tcpip-xen
  121. mirage-types-lwt < "3.4.0"
  122. mirage-unix < "0.9.4" | >= "2.5.0" & < "3.0.8"
  123. mirage-vnetif < "0.6.0"
  124. mirage-www < "0.4.0" | >= "1.1.0"
  125. mirage-xen < "2.0.0" | >= "2.6.0"
  126. monorobot
  127. mrt-format
  128. mstruct
  129. nbd >= "2.1.0" & < "4.0.3"
  130. nocrypto < "0.5.4-1"
  131. noise
  132. openflow < "0.2.0"
  133. otr >= "0.3.1" & < "0.3.9"
  134. ox < "1.1.1"
  135. pbkdf < "0.3.0" | = "1.1.0"
  136. pcap-format >= "0.4.0"
  137. ppx_cstruct < "3.0.1"
  138. protocol-9p < "0.5.1" | >= "0.6.0" & < "0.11.2"
  139. protocol-9p-tool = "0.12.0" | >= "2.0.0" & < "2.0.2"
  140. protocol-9p-unix < "0.11.2"
  141. qcow < "0.11.0"
  142. qcow-format
  143. qcow-tool
  144. randomconv < "0.2.0"
  145. rawlink >= "0.4" & < "0.6"
  146. resp-mirage = "0.10.0"
  147. rfc6287 >= "1.0.2" & < "1.0.4"
  148. salsa20 < "1.1.0"
  149. salsa20-core < "1.0.0"
  150. scrypt-kdf < "1.1.0"
  151. sendmail >= "0.4.1" & < "0.5.0"
  152. shared-block-ring < "2.4.0"
  153. shared-memory-ring >= "1.2.0" & < "3.1.1"
  154. shared-memory-ring-lwt
  155. slack
  156. ssh-agent
  157. tar < "2.0.0"
  158. tar-format >= "0.5.0"
  159. tar-mirage < "3.0.0"
  160. tar-unix < "2.0.0"
  161. tcpip < "2.3.0" | >= "2.7.0" & < "3.2.0"
  162. tls >= "0.7.1" & < "0.9.0"
  163. u2f = "0.1.1"
  164. vchan >= "2.1.0" & != "3.0.0" & < "6.0.1"
  165. vchan-unix >= "4.0.0"
  166. vchan-xen >= "4.0.0"
  167. vhd-format >= "0.8.0"
  168. vhd-format-lwt
  169. vhd-tool
  170. vmnet >= "1.1.0"
  171. websocket = "2.2"
  172. x509 < "0.6.3"
  173. xapi-rrd-transport
  174. xe
  175. xen-api-client >= "0.9.6"
  176. xen-block-driver >= "0.2.5"
  177. xen-gnt
  178. xenstore >= "1.3.0" & < "2.0.0"

Conflicts (1)

  1. async >= "v0.10.0"
OCaml

Innovation. Community. Security.