123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171[@@@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,"PL_VERSION_BUILT_IN"->7|Ctypes_static.PrimitiveCstubs_internals.Int,"PL_VERSION_VM"->6|Ctypes_static.PrimitiveCstubs_internals.Int,"PL_VERSION_QLF_LOAD"->5|Ctypes_static.PrimitiveCstubs_internals.Int,"PL_VERSION_QLF"->4|Ctypes_static.PrimitiveCstubs_internals.Int,"PL_VERSION_REC"->3|Ctypes_static.PrimitiveCstubs_internals.Int,"PL_VERSION_FLI"->2|Ctypes_static.PrimitiveCstubs_internals.Int,"PL_VERSION_SYSTEM"->1|Ctypes_static.PrimitiveCstubs_internals.Int,"PL_GMP_SET_ALLOC_FUNCTIONS"->12|Ctypes_static.PrimitiveCstubs_internals.Int,"PL_ACTION_ATTACH_CONSOLE"->11|Ctypes_static.PrimitiveCstubs_internals.Int,"PL_ACTION_FLUSH"->9|Ctypes_static.PrimitiveCstubs_internals.Int,"PL_ACTION_WRITE"->8|Ctypes_static.PrimitiveCstubs_internals.Int,"PL_ACTION_TRADITIONAL"->13|Ctypes_static.PrimitiveCstubs_internals.Int,"PL_ACTION_GUIAPP"->10|Ctypes_static.PrimitiveCstubs_internals.Int,"PL_ACTION_BREAK"->4|Ctypes_static.PrimitiveCstubs_internals.Int,"PL_ACTION_ABORT"->6|Ctypes_static.PrimitiveCstubs_internals.Int,"PL_ACTION_HALT"->5|Ctypes_static.PrimitiveCstubs_internals.Int,"PL_ACTION_BACKTRACE"->3|Ctypes_static.PrimitiveCstubs_internals.Int,"PL_ACTION_DEBUG"->2|Ctypes_static.PrimitiveCstubs_internals.Int,"PL_ACTION_TRACE"->1|Ctypes_static.PrimitiveCstubs_internals.Int,"PL_FILE_NOERRORS"->128|Ctypes_static.PrimitiveCstubs_internals.Int,"PL_FILE_EXECUTE"->64|Ctypes_static.PrimitiveCstubs_internals.Int,"PL_FILE_WRITE"->32|Ctypes_static.PrimitiveCstubs_internals.Int,"PL_FILE_READ"->16|Ctypes_static.PrimitiveCstubs_internals.Int,"PL_FILE_EXIST"->8|Ctypes_static.PrimitiveCstubs_internals.Int,"PL_FILE_SEARCH"->4|Ctypes_static.PrimitiveCstubs_internals.Int,"PL_FILE_OSPATH"->2|Ctypes_static.PrimitiveCstubs_internals.Int,"PL_FILE_ABSOLUTE"->1|Ctypes_static.PrimitiveCstubs_internals.Int,"PL_CREATE_INCREMENTAL"->32|Ctypes_static.PrimitiveCstubs_internals.Int,"PL_CREATE_THREAD_LOCAL"->16|Ctypes_static.PrimitiveCstubs_internals.Int,"PL_ASSERTA"->1|Ctypes_static.PrimitiveCstubs_internals.Int,"PL_ASSERTZ"->0|Ctypes_static.PrimitiveCstubs_internals.Int,"PL_S_LAST"->2|Ctypes_static.PrimitiveCstubs_internals.Int,"PL_S_TRUE"->1|Ctypes_static.PrimitiveCstubs_internals.Int,"PL_S_FALSE"->0|Ctypes_static.PrimitiveCstubs_internals.Int,"PL_S_EXCEPTION"->-1|Ctypes_static.PrimitiveCstubs_internals.Int,"PL_Q_EXT_STATUS"->64|Ctypes_static.PrimitiveCstubs_internals.Int,"PL_Q_ALLOW_YIELD"->32|Ctypes_static.PrimitiveCstubs_internals.Int,"PL_Q_PASS_EXCEPTION"->16|Ctypes_static.PrimitiveCstubs_internals.Int,"PL_Q_CATCH_EXCEPTION"->8|Ctypes_static.PrimitiveCstubs_internals.Int,"PL_Q_NODEBUG"->4|Ctypes_static.PrimitiveCstubs_internals.Int,"PL_Q_NORMAL"->2|Ctypes_static.PrimitiveCstubs_internals.Int,"REP_MB"->2097152|Ctypes_static.PrimitiveCstubs_internals.Int,"REP_UTF8"->1048576|Ctypes_static.PrimitiveCstubs_internals.Int,"BUF_MALLOC"->131072|Ctypes_static.PrimitiveCstubs_internals.Int,"BUF_STACK"->65536|Ctypes_static.PrimitiveCstubs_internals.Int,"BUF_DISCARDABLE"->0|Ctypes_static.PrimitiveCstubs_internals.Int,"CVT_EXCEPTION"->4096|Ctypes_static.PrimitiveCstubs_internals.Int,"CVT_ALL"->55|Ctypes_static.PrimitiveCstubs_internals.Int,"CVT_WRITEQ"->512|Ctypes_static.PrimitiveCstubs_internals.Int,"CVT_WRITE_CANONICAL"->256|Ctypes_static.PrimitiveCstubs_internals.Int,"CVT_WRITE"->128|Ctypes_static.PrimitiveCstubs_internals.Int,"CVT_VARIABLE"->64|Ctypes_static.PrimitiveCstubs_internals.Int,"CVT_ATOMIC"->51|Ctypes_static.PrimitiveCstubs_internals.Int,"CVT_NUMBER"->48|Ctypes_static.PrimitiveCstubs_internals.Int,"CVT_FLOAT"->32|Ctypes_static.PrimitiveCstubs_internals.Int,"CVT_INTEGER"->8|Ctypes_static.PrimitiveCstubs_internals.Int,"CVT_LIST"->4|Ctypes_static.PrimitiveCstubs_internals.Int,"CVT_STRING"->2|Ctypes_static.PrimitiveCstubs_internals.Int,"CVT_ATOM"->1|Ctypes_static.PrimitiveCstubs_internals.Int,"PL_DICT"->44|Ctypes_static.PrimitiveCstubs_internals.Int,"PL_LIST_PAIR"->10|Ctypes_static.PrimitiveCstubs_internals.Int,"PL_TERM"->7|Ctypes_static.PrimitiveCstubs_internals.Int,"PL_FLOAT"->5|Ctypes_static.PrimitiveCstubs_internals.Int,"PL_RATIONAL"->4|Ctypes_static.PrimitiveCstubs_internals.Int,"PL_INTEGER"->3|Ctypes_static.PrimitiveCstubs_internals.Int,"PL_STRING"->6|Ctypes_static.PrimitiveCstubs_internals.Int,"PL_BLOB"->9|Ctypes_static.PrimitiveCstubs_internals.Int,"PL_NIL"->8|Ctypes_static.PrimitiveCstubs_internals.Int,"PL_ATOM"->2|Ctypes_static.PrimitiveCstubs_internals.Int,"PL_BOOL"->17|Ctypes_static.PrimitiveCstubs_internals.Int,"PL_VARIABLE"->1|_,s->failwith("unmatched constant: "^s)letenum(typea)name?typedef?unexpected(alist:(a*int64)list)=matchnamewith|s->failwith("unmatched enum: "^s)