123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325[@@@warning"-9-27"]includeCtypesletliftx=xopenCtypes_staticletrecfield:typeta.ttyp->string->atyp->(a,t)field=funsfnameftype->matchs,fnamewith|View{ty;_},_->let{ftype;foffset;fname}=fieldtyfnameftypein{ftype;foffset;fname}|_->failwith("Unexpected field "^fname)letrecseal:typea.atyp->unit=function|Struct{tag;spec=Complete_;_}->raise(ModifyingSealedTypetag)|Union{utag;uspec=Some_;_}->raise(ModifyingSealedTypeutag)|View{ty;_}->sealty|_->raise(Unsupported"Sealing a non-structured type")type'aconst='aletconstant(typet)name(t:ttyp):t=matcht,namewith|Ctypes_static.PrimitiveCstubs_internals.Int,"EDEADLOCK"->35|Ctypes_static.PrimitiveCstubs_internals.Int,"EWOULDBLOCK"->11|Ctypes_static.PrimitiveCstubs_internals.Int,"EOTHER"->10000|Ctypes_static.PrimitiveCstubs_internals.Int,"ESHLIBVERS"->10087|Ctypes_static.PrimitiveCstubs_internals.Int,"EPWROFF"->10082|Ctypes_static.PrimitiveCstubs_internals.Int,"ENOPOLICY"->10103|Ctypes_static.PrimitiveCstubs_internals.Int,"ENOATTR"->10093|Ctypes_static.PrimitiveCstubs_internals.Int,"EDEVERR"->10083|Ctypes_static.PrimitiveCstubs_internals.Int,"EBADMACHO"->10088|Ctypes_static.PrimitiveCstubs_internals.Int,"EBADEXEC"->10085|Ctypes_static.PrimitiveCstubs_internals.Int,"EBADARCH"->10086|Ctypes_static.PrimitiveCstubs_internals.Int,"EATTR"->10093|Ctypes_static.PrimitiveCstubs_internals.Int,"ERPCMISMATCH"->10073|Ctypes_static.PrimitiveCstubs_internals.Int,"EPROGUNAVAIL"->10074|Ctypes_static.PrimitiveCstubs_internals.Int,"EPROGMISMATCH"->10075|Ctypes_static.PrimitiveCstubs_internals.Int,"EPROCUNAVAIL"->10076|Ctypes_static.PrimitiveCstubs_internals.Int,"EPROCLIM"->10067|Ctypes_static.PrimitiveCstubs_internals.Int,"ENOCSI"->50|Ctypes_static.PrimitiveCstubs_internals.Int,"ENEEDAUTH"->10081|Ctypes_static.PrimitiveCstubs_internals.Int,"EFTYPE"->10079|Ctypes_static.PrimitiveCstubs_internals.Int,"EBADRPC"->10072|Ctypes_static.PrimitiveCstubs_internals.Int,"EAUTH"->10080|Ctypes_static.PrimitiveCstubs_internals.Int,"EXFULL"->54|Ctypes_static.PrimitiveCstubs_internals.Int,"EUNATCH"->49|Ctypes_static.PrimitiveCstubs_internals.Int,"EUCLEAN"->117|Ctypes_static.PrimitiveCstubs_internals.Int,"ETOOBIG"->200|Ctypes_static.PrimitiveCstubs_internals.Int,"ESTRPIPE"->86|Ctypes_static.PrimitiveCstubs_internals.Int,"ERFKILL"->132|Ctypes_static.PrimitiveCstubs_internals.Int,"ERESTART"->85|Ctypes_static.PrimitiveCstubs_internals.Int,"EREMOTEIO"->121|Ctypes_static.PrimitiveCstubs_internals.Int,"EREMCHG"->78|Ctypes_static.PrimitiveCstubs_internals.Int,"ENOTUNIQ"->76|Ctypes_static.PrimitiveCstubs_internals.Int,"ENOPKG"->65|Ctypes_static.PrimitiveCstubs_internals.Int,"ENONET"->64|Ctypes_static.PrimitiveCstubs_internals.Int,"ENOMEDIUM"->123|Ctypes_static.PrimitiveCstubs_internals.Int,"ENOKEY"->126|Ctypes_static.PrimitiveCstubs_internals.Int,"ENOANO"->55|Ctypes_static.PrimitiveCstubs_internals.Int,"EMEDIUMTYPE"->124|Ctypes_static.PrimitiveCstubs_internals.Int,"ELNRNG"->48|Ctypes_static.PrimitiveCstubs_internals.Int,"ELIBSCN"->81|Ctypes_static.PrimitiveCstubs_internals.Int,"ELIBMAX"->82|Ctypes_static.PrimitiveCstubs_internals.Int,"ELIBEXEC"->83|Ctypes_static.PrimitiveCstubs_internals.Int,"ELIBBAD"->80|Ctypes_static.PrimitiveCstubs_internals.Int,"ELIBACC"->79|Ctypes_static.PrimitiveCstubs_internals.Int,"EL3RST"->47|Ctypes_static.PrimitiveCstubs_internals.Int,"EL3HLT"->46|Ctypes_static.PrimitiveCstubs_internals.Int,"EL2NSYNC"->45|Ctypes_static.PrimitiveCstubs_internals.Int,"EL2HLT"->51|Ctypes_static.PrimitiveCstubs_internals.Int,"EKEYREVOKED"->128|Ctypes_static.PrimitiveCstubs_internals.Int,"EKEYREJECTED"->129|Ctypes_static.PrimitiveCstubs_internals.Int,"EKEYEXPIRED"->127|Ctypes_static.PrimitiveCstubs_internals.Int,"EISNAM"->120|Ctypes_static.PrimitiveCstubs_internals.Int,"EHWPOISON"->133|Ctypes_static.PrimitiveCstubs_internals.Int,"ECOMM"->70|Ctypes_static.PrimitiveCstubs_internals.Int,"ECHRNG"->44|Ctypes_static.PrimitiveCstubs_internals.Int,"EBADSLT"->57|Ctypes_static.PrimitiveCstubs_internals.Int,"EBADRQC"->56|Ctypes_static.PrimitiveCstubs_internals.Int,"EBADR"->53|Ctypes_static.PrimitiveCstubs_internals.Int,"EBADFD"->77|Ctypes_static.PrimitiveCstubs_internals.Int,"EBADE"->52|Ctypes_static.PrimitiveCstubs_internals.Int,"EUSERS"->87|Ctypes_static.PrimitiveCstubs_internals.Int,"ETOOMANYREFS"->109|Ctypes_static.PrimitiveCstubs_internals.Int,"ETIMEDOUT"->110|Ctypes_static.PrimitiveCstubs_internals.Int,"ETIME"->62|Ctypes_static.PrimitiveCstubs_internals.Int,"ESTALE"->116|Ctypes_static.PrimitiveCstubs_internals.Int,"ESOCKTNOSUPPORT"->94|Ctypes_static.PrimitiveCstubs_internals.Int,"ESHUTDOWN"->108|Ctypes_static.PrimitiveCstubs_internals.Int,"EREMOTE"->66|Ctypes_static.PrimitiveCstubs_internals.Int,"EPROTOTYPE"->91|Ctypes_static.PrimitiveCstubs_internals.Int,"EPROTONOSUPPORT"->93|Ctypes_static.PrimitiveCstubs_internals.Int,"EPROTO"->71|Ctypes_static.PrimitiveCstubs_internals.Int,"EPFNOSUPPORT"->96|Ctypes_static.PrimitiveCstubs_internals.Int,"EOWNERDEAD"->130|Ctypes_static.PrimitiveCstubs_internals.Int,"EOVERFLOW"->75|Ctypes_static.PrimitiveCstubs_internals.Int,"EOPNOTSUPP"->95|Ctypes_static.PrimitiveCstubs_internals.Int,"ENOTSUP"->95|Ctypes_static.PrimitiveCstubs_internals.Int,"ENOTSOCK"->88|Ctypes_static.PrimitiveCstubs_internals.Int,"ENOTRECOVERABLE"->131|Ctypes_static.PrimitiveCstubs_internals.Int,"ENOTEMPTY"->39|Ctypes_static.PrimitiveCstubs_internals.Int,"ENOTCONN"->107|Ctypes_static.PrimitiveCstubs_internals.Int,"ENOSYS"->38|Ctypes_static.PrimitiveCstubs_internals.Int,"ENOSTR"->60|Ctypes_static.PrimitiveCstubs_internals.Int,"ENOSR"->63|Ctypes_static.PrimitiveCstubs_internals.Int,"ENOPROTOOPT"->92|Ctypes_static.PrimitiveCstubs_internals.Int,"ENOMSG"->42|Ctypes_static.PrimitiveCstubs_internals.Int,"ENOLINK"->67|Ctypes_static.PrimitiveCstubs_internals.Int,"ENOLCK"->37|Ctypes_static.PrimitiveCstubs_internals.Int,"ENODATA"->61|Ctypes_static.PrimitiveCstubs_internals.Int,"ENOBUFS"->105|Ctypes_static.PrimitiveCstubs_internals.Int,"ENETUNREACH"->101|Ctypes_static.PrimitiveCstubs_internals.Int,"ENETRESET"->102|Ctypes_static.PrimitiveCstubs_internals.Int,"ENETDOWN"->100|Ctypes_static.PrimitiveCstubs_internals.Int,"ENAMETOOLONG"->36|Ctypes_static.PrimitiveCstubs_internals.Int,"EMULTIHOP"->72|Ctypes_static.PrimitiveCstubs_internals.Int,"EMSGSIZE"->90|Ctypes_static.PrimitiveCstubs_internals.Int,"ELOOP"->40|Ctypes_static.PrimitiveCstubs_internals.Int,"EISCONN"->106|Ctypes_static.PrimitiveCstubs_internals.Int,"EINPROGRESS"->115|Ctypes_static.PrimitiveCstubs_internals.Int,"EILSEQ"->84|Ctypes_static.PrimitiveCstubs_internals.Int,"EIDRM"->43|Ctypes_static.PrimitiveCstubs_internals.Int,"EHOSTUNREACH"->113|Ctypes_static.PrimitiveCstubs_internals.Int,"EHOSTDOWN"->112|Ctypes_static.PrimitiveCstubs_internals.Int,"EDQUOT"->122|Ctypes_static.PrimitiveCstubs_internals.Int,"EDESTADDRREQ"->89|Ctypes_static.PrimitiveCstubs_internals.Int,"EDEADLK"->35|Ctypes_static.PrimitiveCstubs_internals.Int,"ECONNRESET"->104|Ctypes_static.PrimitiveCstubs_internals.Int,"ECONNREFUSED"->111|Ctypes_static.PrimitiveCstubs_internals.Int,"ECONNABORTED"->103|Ctypes_static.PrimitiveCstubs_internals.Int,"ECANCELED"->125|Ctypes_static.PrimitiveCstubs_internals.Int,"EBADMSG"->74|Ctypes_static.PrimitiveCstubs_internals.Int,"EALREADY"->114|Ctypes_static.PrimitiveCstubs_internals.Int,"EAGAIN"->11|Ctypes_static.PrimitiveCstubs_internals.Int,"EAFNOSUPPORT"->97|Ctypes_static.PrimitiveCstubs_internals.Int,"EADDRNOTAVAIL"->99|Ctypes_static.PrimitiveCstubs_internals.Int,"EADDRINUSE"->98|Ctypes_static.PrimitiveCstubs_internals.Int,"ETXTBSY"->26|Ctypes_static.PrimitiveCstubs_internals.Int,"ENOTBLK"->15|Ctypes_static.PrimitiveCstubs_internals.Int,"EXDEV"->18|Ctypes_static.PrimitiveCstubs_internals.Int,"ESRCH"->3|Ctypes_static.PrimitiveCstubs_internals.Int,"ESPIPE"->29|Ctypes_static.PrimitiveCstubs_internals.Int,"EROFS"->30|Ctypes_static.PrimitiveCstubs_internals.Int,"ERANGE"->34|Ctypes_static.PrimitiveCstubs_internals.Int,"EPIPE"->32|Ctypes_static.PrimitiveCstubs_internals.Int,"EPERM"->1|Ctypes_static.PrimitiveCstubs_internals.Int,"ENXIO"->6|Ctypes_static.PrimitiveCstubs_internals.Int,"ENOTTY"->25|Ctypes_static.PrimitiveCstubs_internals.Int,"ENOTDIR"->20|Ctypes_static.PrimitiveCstubs_internals.Int,"ENOSPC"->28|Ctypes_static.PrimitiveCstubs_internals.Int,"ENOMEM"->12|Ctypes_static.PrimitiveCstubs_internals.Int,"ENOEXEC"->8|Ctypes_static.PrimitiveCstubs_internals.Int,"ENOENT"->2|Ctypes_static.PrimitiveCstubs_internals.Int,"ENODEV"->19|Ctypes_static.PrimitiveCstubs_internals.Int,"ENFILE"->23|Ctypes_static.PrimitiveCstubs_internals.Int,"EMLINK"->31|Ctypes_static.PrimitiveCstubs_internals.Int,"EMFILE"->24|Ctypes_static.PrimitiveCstubs_internals.Int,"EISDIR"->21|Ctypes_static.PrimitiveCstubs_internals.Int,"EIO"->5|Ctypes_static.PrimitiveCstubs_internals.Int,"EINVAL"->22|Ctypes_static.PrimitiveCstubs_internals.Int,"EINTR"->4|Ctypes_static.PrimitiveCstubs_internals.Int,"EFBIG"->27|Ctypes_static.PrimitiveCstubs_internals.Int,"EFAULT"->14|Ctypes_static.PrimitiveCstubs_internals.Int,"EEXIST"->17|Ctypes_static.PrimitiveCstubs_internals.Int,"EDOM"->33|Ctypes_static.PrimitiveCstubs_internals.Int,"ECHILD"->10|Ctypes_static.PrimitiveCstubs_internals.Int,"EBUSY"->16|Ctypes_static.PrimitiveCstubs_internals.Int,"EBADF"->9|Ctypes_static.PrimitiveCstubs_internals.Int,"EACCES"->13|Ctypes_static.PrimitiveCstubs_internals.Int,"E2BIG"->7|_,s->failwith("unmatched constant: "^s)letenum(typea)name?typedef?unexpected(alist:(a*int64)list)=matchnamewith|s->failwith("unmatched enum: "^s)