1234567891011121314151617181920212223242526272829303132333435363738394041424344454647(*
* OSDP (OCaml SDP) is an OCaml frontend library to semi-definite
* programming (SDP) solvers.
* Copyright (C) 2012, 2014 P. Roux and P.L. Garoche
*
* This program is free software; 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; either version 3 of the License, or
* (at your option) any later version.
*
* This program 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.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*)typet=inttypeident=tletname_hash:(string,bool)Hashtbl.t=Hashtbl.create31letid_hash:(int,string)Hashtbl.t=Hashtbl.create31letcreate=letcpt=ref(-1)inletreccreatenamenb=letname_nb=ifnb<0thennameelsename^string_of_intnbinifHashtbl.memname_hashname_nbthencreatename(nb+1)elsebeginincrcpt;Hashtbl.addid_hash!cptname_nb;Hashtbl.addname_hashname_nbtrue;!cptendinfunname->create(ifname=""then"x"elsename)(-1)letcompare=compareletppfmtid=Format.fprintffmt"%s"(Hashtbl.findid_hashid)moduleSet=Set.Make(structtypet=identletcompare=compareend)moduleMap=Map.Make(structtypet=identletcompare=compareend)