MED fichier
include
MEDlogicalOp.hxx
Aller à la documentation de ce fichier.
1
/* This file is part of MED.
2
*
3
* COPYRIGHT (C) 1999 - 2023 EDF R&D, CEA/DEN
4
* MED is free software: you can redistribute it and/or modify
5
* it under the terms of the GNU Lesser General Public License as published by
6
* the Free Software Foundation, either version 3 of the License, or
7
* (at your option) any later version.
8
*
9
* MED is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
* GNU Lesser General Public License for more details.
13
*
14
* You should have received a copy of the GNU Lesser General Public License
15
* along with MED. If not, see <http://www.gnu.org/licenses/>.
16
*/
17
#ifndef MED_LOGICAL_OP_HXX
18
#define MED_LOGICAL_OP_HXX
19
20
/* Pour tester la présence d'une entité */
21
template
<
typename
T>
inline
int
MEDtestBits
(
const
T & int_type,
const
int
offset) {
22
T mask = 1 << offset;
23
return
(int_type & mask);
24
}
25
26
/* Counting bits set, Brian Kernighan's way */
27
template
<
typename
T>
inline
T
MEDnSetBits
(
const
T & int_type) {
28
29
/*unsigned*/
30
T v=int_type;
// count the number of bits set in v
31
/*unsigned*/
32
T c;
// c accumulates the total bits set in v
33
for
(c = 0; v; c++)
34
{
35
v &= v - 1;
// clear the least significant bit set
36
}
37
return
(c);
38
}
39
40
/* setBit() returns an integer with the bit at 'offset' set to 1. */
41
template
<
typename
T>
inline
T&
MEDsetBits
(T& int_type,
const
int
offset) {
42
T mask = 1 << offset;
43
int_type = int_type | mask;
44
return
(int_type);
45
}
46
47
#endif
MEDsetBits
T & MEDsetBits(T &int_type, const int offset)
Definition:
MEDlogicalOp.hxx:41
MEDnSetBits
T MEDnSetBits(const T &int_type)
Definition:
MEDlogicalOp.hxx:27
MEDtestBits
int MEDtestBits(const T &int_type, const int offset)
Definition:
MEDlogicalOp.hxx:21
Généré le Mardi 6 Juin 2023 16:57:42 pour MED fichier par
1.8.16