/usr/lib/ats2-postiats-0.2.6/libats/DATS/SHARE/linheap.hats is in ats2-lang 0.2.6-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 | (***********************************************************************)
(* *)
(* Applied Type System *)
(* *)
(***********************************************************************)
(*
** ATS/Postiats - Unleashing the Potential of Types!
** Copyright (C) 2011-2013 Hongwei Xi, ATS Trustful Software, Inc.
** All rights reserved
**
** ATS is free software; you can redistribute it and/or modify it under
** the terms of the GNU GENERAL PUBLIC LICENSE (GPL) as published by the
** Free Software Foundation; either version 3, or (at your option) any
** later version.
**
** ATS 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 General Public License
** for more details.
**
** You should have received a copy of the GNU General Public License
** along with ATS; see the file COPYING. If not, please write to the
** Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
** 02110-1301, USA.
*)
(* ****** ****** *)
(* Author: Hongwei Xi *)
(* Authoremail: hwxi AT cs DOT bu DOT edu *)
(* Start time: December, 2012 *)
(* ****** ****** *)
implement{a}
compare_elt_elt = gcompare_ref_ref<a>
(* ****** ****** *)
implement{a}
linheap_getmin
(hp0, res) = let
//
val cp = linheap_getmin_ref (hp0)
//
in
//
if isneqz(cp) then let
val
(
pf, fpf | p
) = $UN.cptr_vtake{a}(cp)
val () = res := !p
prval () = fpf (pf)
prval () = opt_some{a}(res) in true
end else let
prval () = opt_none{a}(res) in false
end // end of [if]
//
end // end of [linheap_getmin]
(* ****** ****** *)
implement{a}
linheap_getmin_opt
(hp0) = let
//
var res: a? // unintialized
val ans = linheap_getmin (hp0, res)
(*
val () = println! ("linheap_getmin_opt: ans = ", ans)
*)
in
//
if ans then let
prval () = opt_unsome{a}(res) in Some_vt{a}(res)
end else let
prval () = opt_unnone{a}(res) in None_vt{a}((*void*))
end // end of [if]
//
end // end of [linheap_getmin_opt]
(* ****** ****** *)
implement{a}
linheap_delmin_opt
(hp0) = let
//
var res: a? // unintialized
val ans = linheap_delmin (hp0, res)
//
in
//
if ans then let
prval () = opt_unsome{a}(res) in Some_vt{a}(res)
end else let
prval () = opt_unnone{a}(res) in None_vt{a}((*void*))
end // end of [if]
//
end // end of [linheap_delmin_opt]
(* ****** ****** *)
implement
{a}(*tmp*)
linheap_free (hp) = let
//
implement
linheap_freelin$clear<a> (x) = ()
//
in
linheap_freelin<a> (hp)
end // end of [linheap_free]
(* ****** ****** *)
(* end of [linheap.hats] *)
|