123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119[@@@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,"GLP_PP_ALL"->2|Ctypes_static.PrimitiveCstubs_internals.Int,"GLP_PP_ROOT"->1|Ctypes_static.PrimitiveCstubs_internals.Int,"GLP_PP_NONE"->0|Ctypes_static.PrimitiveCstubs_internals.Int,"GLP_BT_BPH"->4|Ctypes_static.PrimitiveCstubs_internals.Int,"GLP_BT_BLB"->3|Ctypes_static.PrimitiveCstubs_internals.Int,"GLP_BT_BFS"->2|Ctypes_static.PrimitiveCstubs_internals.Int,"GLP_BT_DFS"->1|Ctypes_static.PrimitiveCstubs_internals.Int,"GLP_BR_PCH"->5|Ctypes_static.PrimitiveCstubs_internals.Int,"GLP_BR_DTH"->4|Ctypes_static.PrimitiveCstubs_internals.Int,"GLP_BR_MFV"->3|Ctypes_static.PrimitiveCstubs_internals.Int,"GLP_BR_LFV"->2|Ctypes_static.PrimitiveCstubs_internals.Int,"GLP_BR_FFV"->1|Ctypes_static.PrimitiveCstubs_internals.Int,"GLP_USE_NT"->2|Ctypes_static.PrimitiveCstubs_internals.Int,"GLP_USE_AT"->1|Ctypes_static.PrimitiveCstubs_internals.Int,"GLP_RT_FLIP"->51|Ctypes_static.PrimitiveCstubs_internals.Int,"GLP_RT_HAR"->34|Ctypes_static.PrimitiveCstubs_internals.Int,"GLP_RT_STD"->17|Ctypes_static.PrimitiveCstubs_internals.Int,"GLP_PT_PSE"->34|Ctypes_static.PrimitiveCstubs_internals.Int,"GLP_PT_STD"->17|Ctypes_static.PrimitiveCstubs_internals.Int,"GLP_DUAL"->3|Ctypes_static.PrimitiveCstubs_internals.Int,"GLP_DUALP"->2|Ctypes_static.PrimitiveCstubs_internals.Int,"GLP_PRIMAL"->1|Ctypes_static.PrimitiveCstubs_internals.Int,"GLP_MSG_DBG"->4|Ctypes_static.PrimitiveCstubs_internals.Int,"GLP_MSG_ALL"->3|Ctypes_static.PrimitiveCstubs_internals.Int,"GLP_MSG_ON"->2|Ctypes_static.PrimitiveCstubs_internals.Int,"GLP_MSG_ERR"->1|Ctypes_static.PrimitiveCstubs_internals.Int,"GLP_MSG_OFF"->0|Ctypes_static.PrimitiveCstubs_internals.Int,"GLP_UNBND"->6|Ctypes_static.PrimitiveCstubs_internals.Int,"GLP_OPT"->5|Ctypes_static.PrimitiveCstubs_internals.Int,"GLP_NOFEAS"->4|Ctypes_static.PrimitiveCstubs_internals.Int,"GLP_INFEAS"->3|Ctypes_static.PrimitiveCstubs_internals.Int,"GLP_FEAS"->2|Ctypes_static.PrimitiveCstubs_internals.Int,"GLP_UNDEF"->1|Ctypes_static.PrimitiveCstubs_internals.Int,"GLP_FX"->5|Ctypes_static.PrimitiveCstubs_internals.Int,"GLP_DB"->4|Ctypes_static.PrimitiveCstubs_internals.Int,"GLP_UP"->3|Ctypes_static.PrimitiveCstubs_internals.Int,"GLP_LO"->2|Ctypes_static.PrimitiveCstubs_internals.Int,"GLP_FR"->1|Ctypes_static.PrimitiveCstubs_internals.Int,"GLP_BV"->3|Ctypes_static.PrimitiveCstubs_internals.Int,"GLP_IV"->2|Ctypes_static.PrimitiveCstubs_internals.Int,"GLP_CV"->1|Ctypes_static.PrimitiveCstubs_internals.Int,"GLP_MAX"->2|Ctypes_static.PrimitiveCstubs_internals.Int,"GLP_MIN"->1|Ctypes_static.PrimitiveCstubs_internals.Int,"GLP_OFF"->0|Ctypes_static.PrimitiveCstubs_internals.Int,"GLP_ON"->1|_,s->failwith("unmatched constant: "^s)letenum(typea)name?typedef?unexpected(alist:(a*int64)list)=matchnamewith|s->failwith("unmatched enum: "^s)