/usr/lib/ats-anairiats-0.2.11/libats/CATS/linbitvec.cats 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 75 76 77 78 79 80 | /************************************************************************/
/* */
/* Applied Type System */
/* */
/* Hongwei Xi */
/* */
/************************************************************************/
/*
** ATS - Unleashing the Potential of Types!
** Copyright (C) 2002-2010 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.
*/
/* ****** ****** */
/*
**
** Author: Hongwei Xi (hwxi AT cs DOT bu DOT edu)
**
*/
/* ****** ****** */
#ifndef ATS_LIBATS_LINBITVEC_CATS
#define ATS_LIBATS_LINBITVEC_CATS
/* ****** ****** */
//
// HX: these functions need to be inlined for efficiency!
//
/* ****** ****** */
static inline
ats_int_type
atslib_linbitvec_bitvec_get_at (
ats_ptr_type p_vec, ats_size_type i
) {
size_t q, r ;
q = i >> NBIT_PER_WORD_LOG ; r = i & (NBIT_PER_WORD - 1) ;
return (((uintptr_t*)p_vec)[q] >> r) & 0x1 ;
} // end of [atslib_linbitvec_bitvec_get_at]
static inline
ats_void_type
atslib_linbitvec_bitvec_set_at (
ats_ptr_type p_vec, ats_size_type i, ats_int_type b
) {
size_t q, r ;
q = i >> NBIT_PER_WORD_LOG ; r = i & (NBIT_PER_WORD - 1) ;
if (b) {
((uintptr_t*)p_vec)[q] |= ((uintptr_t)1 << r) ;
} else {
((uintptr_t*)p_vec)[q] &= ~((uintptr_t)1 << r) ;
} ;
return ;
} // end of [linbitvec_bitvec_set_at]
/* ****** ****** */
#endif // end of [#ifndef ATS_CONTRIB_LINBITVEC_CATS]
/* ****** ****** */
/* end of [linbitvec.cats] */
|