123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657(**************************************************************************)(* This file is part of BINSEC. *)(* *)(* Copyright (C) 2016-2026 *)(* CEA (Commissariat à l'énergie atomique et aux énergies *)(* alternatives) *)(* *)(* you can redistribute it and/or modify it under the terms of the GNU *)(* Lesser General Public License as published by the Free Software *)(* Foundation, version 2.1. *)(* *)(* It is distributed in the hope that it will be useful, *)(* but WITHOUT ANY WARRANTY; without even the implied warranty of *)(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *)(* GNU Lesser General Public License for more details. *)(* *)(* See the GNU Lesser General Public License version 2.1 *)(* for more details (enclosed in the file licenses/LGPLv2.1). *)(* *)(**************************************************************************)typeformat=Bin|Dec|Hex|Asciitype('var,'expr)t=|Model|Formula|Sliceof('expr*string)list|Valueofformat*'expr|Streamof'var|Stringof{array:stringoption;offset:'expr;size:'exproption}letformat_str=function|Bin->"bin"|Dec->"dec"|Hex->"hexa"|Ascii->"ascii"letpppp_varpp_exprppf=function|Model->Format.pp_print_stringppf"model"|Formula->Format.pp_print_stringppf"formula"|Slicedefs->Format.fprintfppf"formula for %a"(Format.pp_print_list~pp_sep:(funppf()->Format.pp_print_stringppf", ")(funppf(expr,name)->Format.fprintfppf"%a as %s"pp_exprexprname))defs|Value(fmt,e)->Format.fprintfppf"%s %a"(format_strfmt)pp_expre|Streamvar->Format.fprintfppf"ascii stream %a"pp_varvar|String{array;offset;size}->Format.fprintfppf"C string %s[%a, %a]"(Option.value~default:"@"array)pp_exproffset(funppf->function|None->Format.pp_print_charppf'*'|Somesize->pp_exprppfsize)size