OpenFOAM
8
The OpenFOAM Foundation
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Pages
ListLoopM.H
Go to the documentation of this file.
1
/*---------------------------------------------------------------------------*\
2
========= |
3
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4
\\ / O peration | Website: https://openfoam.org
5
\\ / A nd | Copyright (C) 2011-2018 OpenFOAM Foundation
6
\\/ M anipulation |
7
-------------------------------------------------------------------------------
8
License
9
This file is part of OpenFOAM.
10
11
OpenFOAM is free software: you can redistribute it and/or modify it
12
under the terms of the GNU General Public License as published by
13
the Free Software Foundation, either version 3 of the License, or
14
(at your option) any later version.
15
16
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
19
for more details.
20
21
You should have received a copy of the GNU General Public License
22
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
23
24
Description
25
List<T> is a 1D vector of objects of type T, where the size of the
26
vector is known and used for subscript bounds checking, etc.
27
28
\*---------------------------------------------------------------------------*/
29
30
#ifndef ListLoopM_H
31
#define ListLoopM_H
32
33
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
34
35
#ifdef vectorMachine
36
37
// Element access looping using [] for vector machines
38
39
#define List_FOR_ALL(f, i) \
40
const label _n##i = (f).size();\
41
for (label i=0; i<_n##i; i++) \
42
{
43
44
#define List_END_FOR_ALL }
45
46
// Provide current element
47
#define List_CELEM(f, fp, i) (fp[i])
48
49
// Provide current element
50
#define List_ELEM(f, fp, i) (fp[i])
51
52
#define List_ACCESS(type, f, fp) \
53
type* const __restrict__ fp = (f).begin()
54
55
#define List_CONST_ACCESS(type, f, fp) \
56
const type* const __restrict__ fp = (f).begin()
57
58
#else
59
60
// Pointer looping for scalar machines
61
62
#define List_FOR_ALL(f, i) \
63
label i = (f).size(); \
64
while (i--) \
65
{ \
66
67
#define List_END_FOR_ALL }
68
69
// Provide current element without incrementing pointer
70
#define List_CELEM(f, fp, i) (*fp)
71
72
// Provide current element and increment pointer
73
#define List_ELEM(f, fp, i) (*fp++)
74
75
#define List_ACCESS(type, f, fp) \
76
type* __restrict__ fp = (f).begin()
77
78
#define List_CONST_ACCESS(type, f, fp) \
79
const type* __restrict__ fp = (f).begin()
80
81
#endif
82
83
84
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
85
86
#endif
87
88
// ************************************************************************* //
src
OpenFOAM
containers
Lists
List
ListLoopM.H
Generated by
1.8.13