1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495(******************************************************************************
* OxCaml *
* Greta Yorsh, Jane Street *
* -------------------------------------------------------------------------- *
* MIT License *
* *
* Copyright (c) 2024 Jane Street Group LLC *
* opensource-contacts@janestreet.com *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the "Software"), *
* to deal in the Software without restriction, including without limitation *
* the rights to use, copy, modify, merge, publish, distribute, sublicense, *
* and/or sell copies of the Software, and to permit persons to whom the *
* Software is furnished to do so, subject to the following conditions: *
* *
* The above copyright notice and this permission notice shall be included *
* in all copies or substantial portions of the Software. *
* *
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR *
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER *
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *
* DEALINGS IN THE SOFTWARE. *
******************************************************************************)moduleCheck=structtypet=|Check_default|Check_all|Check_opt_only|No_checkletall=[Check_default;Check_all;Check_opt_only;No_check]letto_string=function|Check_default->"default"|Check_all->"all"|Check_opt_only->"opt"|No_check->"none"letequalt1t2=matcht1,t2with|Check_default,Check_default->true|Check_all,Check_all->true|No_check,No_check->true|Check_opt_only,Check_opt_only->true|(Check_default|Check_all|Check_opt_only|No_check),_->falseletof_stringv=letft=ifString.equal(to_stringt)vthenSometelseNoneinList.find_mapfallletdoc="\n\
\ The argument specifies which annotations to check: \n\
\ \"opt\" means attributes with \"opt\" payload and is intended for \
debugging;\n\
\ \"default\" means attributes without \"opt\" payload; \n\
\ \"all\" covers both \"opt\" and \"default\" and is intended for \
optimized builds."endmoduleAssert=structtypet=|Assert_default|Assert_all|Assert_all_optletall=[Assert_default;Assert_all;Assert_all_opt]letto_string=function|Assert_default->"default"|Assert_all->"all"|Assert_all_opt->"all_opt"letequalt1t2=matcht1,t2with|Assert_default,Assert_default->true|Assert_all,Assert_all->true|Assert_all_opt,Assert_all_opt->true|(Assert_default|Assert_all|Assert_all_opt),_->falseletof_stringv=letft=ifString.equal(to_stringt)vthenSometelseNoneinList.find_mapfallletdoc="\n\
\ The argument specifies which annotations to use: \n\
\ \"all\" is equivalent to adding [@@@zero_alloc all]\n\
\ \"all_opt\" is equivalent to adding [@@@zero_alloc all_opt]\n\
\ \"default\" does not add any attributes."end