package cstruct

  1. Overview
  2. Docs

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"
  39. fat-filesystem >= "0.10.0" & < "0.12.1"
  40. frenetic < "2.0.0" | >= "3.2.0" & < "5.0.5"
  41. git >= "1.4.3" & < "1.6.0" | >= "2.0.0" & < "3.0.0"
  42. git-http < "1.11.0"
  43. git-mirage = "1.11.0"
  44. github-hooks >= "0.2.0"
  45. gluten-mirage < "0.3.0"
  46. gpt
  47. h2-mirage
  48. hacl-star >= "0.7.0"
  49. hex >= "0.2.0"
  50. hkdf < "1.0.3"
  51. hvsock < "3.0.0"
  52. io-page
  53. io-page-unix
  54. io-page-xen
  55. ipaddr-cstruct < "5.2.0"
  56. irmin >= "0.9.0" & < "2.0.0"
  57. irmin-git >= "2.3.0"
  58. irmin-indexeddb >= "0.3"
  59. key-parsers >= "0.5.0" & < "1.2.1"
  60. launchd
  61. letsencrypt = "0.2.5"
  62. letsencrypt-app < "0.4.0"
  63. macaddr-cstruct < "5.2.0"
  64. metrics-mirage
  65. mirage >= "0.7.2" & < "0.9.0" | >= "0.10.0" & < "2.4.0"
  66. mirage-block < "1.0.0"
  67. mirage-block-ccm < "1.1.0"
  68. mirage-block-combinators < "3.0.0"
  69. mirage-block-lwt
  70. mirage-block-ramdisk
  71. mirage-block-solo5 < "0.6.2"
  72. mirage-block-unix < "2.8.3"
  73. mirage-block-xen >= "1.4.0" & < "2.1.1"
  74. mirage-btrees
  75. mirage-channel-lwt
  76. mirage-clock-unix < "1.0.0"
  77. mirage-clock-xen < "1.0.0"
  78. mirage-conduit = "2.3.1"
  79. mirage-console-lwt
  80. mirage-console-solo5 >= "0.2.0"
  81. mirage-console-unix < "2.3.3"
  82. mirage-console-xen = "4.0.0"
  83. mirage-console-xen-backend >= "2.3.2" & < "2.3.4" | = "4.0.0"
  84. mirage-console-xen-cli
  85. mirage-dns != "2.6.0" & < "2.7.0"
  86. mirage-entropy < "0.5.0"
  87. mirage-entropy-unix
  88. mirage-entropy-xen
  89. mirage-flow < "1.2.0"
  90. mirage-flow-lwt
  91. mirage-flow-rawlink >= "1.1.0"
  92. mirage-flow-unix < "1.5.0"
  93. mirage-fs >= "0.4.0" & < "1.0.0"
  94. mirage-fs-lwt
  95. mirage-fs-mem
  96. mirage-fs-unix < "1.4.1"
  97. mirage-kv-lwt
  98. mirage-nat < "2.2.4"
  99. mirage-net = "0.5.2"
  100. mirage-net-fd < "0.2.1"
  101. mirage-net-lwt
  102. mirage-net-macosx
  103. mirage-net-solo5
  104. mirage-net-unix < "2.1.0" | >= "2.2.1" & != "2.4.1"
  105. mirage-net-xen != "1.4.2" & < "1.7.1"
  106. mirage-profile = "0.7.0"
  107. mirage-protocols-lwt
  108. mirage-qubes != "0.2" & < "0.9.2"
  109. mirage-qubes-ipv4 < "0.9.3"
  110. mirage-random < "2.0.0"
  111. mirage-random-stdlib
  112. mirage-random-test
  113. mirage-solo5
  114. mirage-stack-lwt
  115. mirage-tc
  116. mirage-tcpip-unix
  117. mirage-tcpip-xen
  118. mirage-types-lwt < "3.4.0"
  119. mirage-unix < "0.9.4" | >= "2.5.0" & < "3.0.8"
  120. mirage-vnetif < "0.6.0"
  121. mirage-www < "0.4.0" | >= "1.1.0"
  122. mirage-xen < "2.0.0" | >= "2.6.0"
  123. monorobot
  124. mrt-format
  125. mstruct
  126. nbd >= "2.1.0" & < "4.0.3"
  127. nocrypto < "0.5.4-1"
  128. noise
  129. openflow < "0.2.0"
  130. otr >= "0.3.1" & < "0.3.9"
  131. ox < "1.1.1"
  132. pbkdf < "0.3.0" | = "1.1.0"
  133. pcap-format >= "0.4.0"
  134. ppx_cstruct < "3.0.1"
  135. protocol-9p < "0.5.1" | >= "0.6.0" & < "0.11.2"
  136. protocol-9p-tool = "0.12.0" | >= "2.0.0" & < "2.0.2"
  137. protocol-9p-unix < "0.11.2"
  138. qcow < "0.11.0"
  139. qcow-format
  140. qcow-tool
  141. randomconv < "0.2.0"
  142. rawlink >= "0.4" & < "0.6"
  143. resp-mirage = "0.10.0"
  144. rfc6287 >= "1.0.2" & < "1.0.4"
  145. salsa20 < "1.1.0"
  146. salsa20-core < "1.0.0"
  147. scrypt-kdf < "1.1.0"
  148. sendmail >= "0.4.1" & < "0.5.0"
  149. shared-block-ring < "2.4.0"
  150. shared-memory-ring >= "1.2.0" & < "3.1.1"
  151. shared-memory-ring-lwt
  152. slack
  153. ssh-agent
  154. tar < "2.0.0"
  155. tar-format >= "0.5.0"
  156. tar-mirage
  157. tar-unix < "2.0.0"
  158. tcpip < "2.3.0" | >= "2.7.0" & < "3.2.0"
  159. tls >= "0.7.1" & < "0.9.0"
  160. u2f = "0.1.1"
  161. vchan >= "2.1.0" & != "3.0.0" & < "6.0.1"
  162. vchan-unix >= "4.0.0"
  163. vchan-xen >= "4.0.0"
  164. vhd-format >= "0.8.0"
  165. vhd-format-lwt
  166. vhd-tool
  167. vmnet >= "1.1.0"
  168. websocket = "2.2"
  169. x509 < "0.6.3"
  170. xapi-rrd-transport
  171. xe
  172. xen-api-client >= "0.9.6"
  173. xen-block-driver >= "0.2.5"
  174. xen-gnt
  175. xenstore >= "1.3.0" & < "2.0.0"

Conflicts (1)

  1. async >= "v0.10.0"