123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213[@@@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,"STDERR_FILENO"->2|Ctypes_static.PrimitiveCstubs_internals.Int,"STDOUT_FILENO"->1|Ctypes_static.PrimitiveCstubs_internals.Int,"STDIN_FILENO"->0|Ctypes_static.PrimitiveCstubs_internals.Int,"F_OK"->0|Ctypes_static.PrimitiveCstubs_internals.Int,"X_OK"->1|Ctypes_static.PrimitiveCstubs_internals.Int,"W_OK"->2|Ctypes_static.PrimitiveCstubs_internals.Int,"R_OK"->4|Ctypes_static.PrimitiveCstubs_internals.Int,"SEEK_END"->2|Ctypes_static.PrimitiveCstubs_internals.Int,"SEEK_CUR"->1|Ctypes_static.PrimitiveCstubs_internals.Int,"SEEK_SET"->0|Ctypes_static.PrimitiveCstubs_internals.Int,"_CS_PATH"->0|Ctypes_static.PrimitiveCstubs_internals.Int,"F_TEST"->3|Ctypes_static.PrimitiveCstubs_internals.Int,"F_TLOCK"->2|Ctypes_static.PrimitiveCstubs_internals.Int,"F_LOCK"->1|Ctypes_static.PrimitiveCstubs_internals.Int,"F_ULOCK"->0|Ctypes_static.PrimitiveCstubs_internals.Int,"_PC_SYMLINK_MAX"->19|Ctypes_static.PrimitiveCstubs_internals.Int,"_PC_2_SYMLINKS"->20|Ctypes_static.PrimitiveCstubs_internals.Int,"_PC_FILESIZEBITS"->13|Ctypes_static.PrimitiveCstubs_internals.Int,"_PC_SYNC_IO"->9|Ctypes_static.PrimitiveCstubs_internals.Int,"_PC_PRIO_IO"->11|Ctypes_static.PrimitiveCstubs_internals.Int,"_PC_ASYNC_IO"->10|Ctypes_static.PrimitiveCstubs_internals.Int,"_PC_CHOWN_RESTRICTED"->6|Ctypes_static.PrimitiveCstubs_internals.Int,"_PC_VDISABLE"->8|Ctypes_static.PrimitiveCstubs_internals.Int,"_PC_NO_TRUNC"->7|Ctypes_static.PrimitiveCstubs_internals.Int,"_PC_PIPE_BUF"->5|Ctypes_static.PrimitiveCstubs_internals.Int,"_PC_PATH_MAX"->4|Ctypes_static.PrimitiveCstubs_internals.Int,"_PC_NAME_MAX"->3|Ctypes_static.PrimitiveCstubs_internals.Int,"_PC_MAX_INPUT"->2|Ctypes_static.PrimitiveCstubs_internals.Int,"_PC_MAX_CANON"->1|Ctypes_static.PrimitiveCstubs_internals.Int,"_PC_LINK_MAX"->0|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_XOPEN_UNIX"->91|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_XOPEN_SHM"->94|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_XOPEN_ENH_I18N"->93|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_XOPEN_CRYPT"->92|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_XOPEN_VERSION"->89|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_EXPR_NEST_MAX"->42|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_COLL_WEIGHTS_MAX"->40|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_BC_STRING_MAX"->39|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_BC_SCALE_MAX"->38|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_BC_DIM_MAX"->37|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_BC_BASE_MAX"->36|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_2_C_DEV"->48|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_2_C_BIND"->47|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_2_VERSION"->46|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_THREAD_PROCESS_SHARED"->82|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_THREAD_PRIO_PROTECT"->81|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_THREAD_PRIO_INHERIT"->80|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_THREAD_PRIORITY_SCHEDULING"->79|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_THREAD_ATTR_STACKSIZE"->78|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_THREAD_ATTR_STACKADDR"->77|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_THREAD_SAFE_FUNCTIONS"->68|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_THREADS"->67|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_MESSAGE_PASSING"->20|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_SHARED_MEMORY_OBJECTS"->22|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_SEMAPHORES"->21|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_REALTIME_SIGNALS"->9|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_PRIORITIZED_IO"->13|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_ASYNCHRONOUS_IO"->12|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_TIMERS"->11|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_SYNCHRONIZED_IO"->14|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_PRIORITY_SCHEDULING"->10|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_MEMORY_PROTECTION"->19|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_MEMLOCK_RANGE"->18|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_MEMLOCK"->17|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_MAPPED_FILES"->16|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_FSYNC"->15|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_SAVED_IDS"->8|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_JOB_CONTROL"->7|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_SYMLOOP_MAX"->173|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_RE_DUP_MAX"->44|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_NGROUPS_MAX"->3|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_GETPW_R_SIZE_MAX"->70|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_GETGR_R_SIZE_MAX"->69|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_LINE_MAX"->43|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_HOST_NAME_MAX"->180|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_TTY_NAME_MAX"->72|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_LOGIN_NAME_MAX"->71|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_ATEXIT_MAX"->87|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_VERSION"->29|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_TZNAME_MAX"->6|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_STREAM_MAX"->5|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_PHYS_PAGES"->85|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_NPROCESSORS_CONF"->83|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_NPROCESSORS_ONLN"->84|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_PAGE_SIZE"->30|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_PAGESIZE"->30|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_OPEN_MAX"->4|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_CLK_TCK"->2|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_CHILD_MAX"->1|Ctypes_static.PrimitiveCstubs_internals.Int,"_SC_ARG_MAX"->0|Ctypes_static.PrimitiveCstubs_internals.Int,"LOGIN_NAME_MAX"->256|Ctypes_static.PrimitiveCstubs_internals.Int,"HOST_NAME_MAX"->64|_,s->failwith("unmatched constant: "^s)letenum(typea)name?typedef?unexpected(alist:(a*int64)list)=matchnamewith|s->failwith("unmatched enum: "^s)