/usr/lib/ats-anairiats-0.2.11/libats/SATS/refcount.sats is in ats-lang-anairiats 0.2.11-1build1.
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 | (***********************************************************************)
(* *)
(* Applied Type System *)
(* *)
(* Hongwei Xi *)
(* *)
(***********************************************************************)
(*
** ATS - Unleashing the Potential of Types!
** Copyright (C) 2002-2011 Hongwei Xi, Boston University
** All rights reserved
**
** ATS is free software; you can redistribute it and/or modify it under
** the terms of the GNU General Public License as published by the Free
** Software Foundation; either version 2.1, 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, write to the Free
** Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
** 02110-1301, USA.
*)
(* ****** ****** *)
absviewtype
nref_viewt0ype_viewtype (a:viewt@ype) = ptr // non-reentrant
stadef nref = nref_viewt0ype_viewtype
(* ****** ****** *)
fun{a:viewt@ype}
refcount_make (x: a):<> nref (a)
fun{a:viewt@ype}
refcount_ref (r: !nref a):<!ref> nref a
fun{a:viewt@ype}
refcount_unref (
r: nref a, x: &a? >> opt (a, b)
) :<!ref> #[b: bool] bool(b) // end of [fun]
fun{a:viewt@ype}
refcount_unref_fun
(r: nref a, f: (&a >> a?) -<fun> void):<!ref> void
// end of [refcount_unref_fun]
fun{a:viewt@ype}
refcount_get_count (r: !nref a):<!ref> uint
(* ****** ****** *)
absviewtype
nrefout (a:viewt@ype, l:addr) = nref (a)
prfun refcount_addback
{a:viewt@ype} {l:addr}
(pf: a @ l | r: !nrefout (a, l) >> nref (a)): void
// end of [refcount_addback]
fun{a:viewt@ype}
refcount_takeout
(r: !nref a >> nrefout (a, l)):<!ref> #[l:addr] (a @ l | ptr l)
// end of [refcount_takeout]
(* ****** ****** *)
(* end of [refcount.sats] *)
|