PtrListDetailI.H
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration |
5  \\ / A nd | www.openfoam.com
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8  Copyright (C) 2018-2021 OpenCFD Ltd.
9 -------------------------------------------------------------------------------
10 License
11  This file is part of OpenFOAM.
12 
13  OpenFOAM is free software: you can redistribute it and/or modify it
14  under the terms of the GNU General Public License as published by
15  the Free Software Foundation, either version 3 of the License, or
16  (at your option) any later version.
17 
18  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
19  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
20  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
21  for more details.
22 
23  You should have received a copy of the GNU General Public License
24  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
25 
26 \*---------------------------------------------------------------------------*/
27 
28 // * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * * //
29 
30 template<class T>
32 :
33  List<T*>()
34 {}
35 
36 
37 template<class T>
39 :
40  List<T*>(len, reinterpret_cast<T*>(0))
41 {}
42 
43 
44 template<class T>
46 (
47  const UList<T*>& list
48 )
49 :
50  List<T*>(list)
51 {}
52 
53 
54 template<class T>
56 (
57  const PtrListDetail<T>& list
58 )
59 :
60  List<T*>(list)
61 {}
62 
63 
64 template<class T>
66 (
67  PtrListDetail<T>&& list
68 )
69 :
70  List<T*>(std::move(list))
71 {}
72 
73 
74 template<class T>
76 (
77  PtrListDetail<T>& list,
78  bool reuse
79 )
80 :
81  List<T*>(list, reuse)
82 {}
83 
84 
85 // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
86 
87 template<class T>
89 (
90  const label n
91 ) noexcept
92 {
94 }
95 
96 
97 template<class T>
98 inline void Foam::Detail::PtrListDetail<T>::resize(const label newLen)
99 {
100  if (newLen <= 0)
101  {
102  List<T*>::clear();
103  }
104  else if (newLen != List<T*>::size())
105  {
106  // Truncate or extend. Any new elements are initialized to nullptr.
107  List<T*>::resize(newLen, reinterpret_cast<T*>(0));
108  }
109 }
110 
111 
112 // * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * //
113 
114 template<class T>
116 (
117  const PtrListDetail<T>& list
118 )
119 {
120  List<T*>::operator=(list); // shallow copy
121 }
122 
123 
124 template<class T>
126 (
127  PtrListDetail<T>&& list
128 )
129 {
130  List<T*>::transfer(list);
131 }
132 
133 
134 // ************************************************************************* //
Foam::Detail::PtrListDetail::PtrListDetail
constexpr PtrListDetail() noexcept
Default construct.
Definition: PtrListDetailI.H:31
n
label n
Definition: TABSMDCalcMethod2.H:31
resize
patchWriters resize(patchIds.size())
Foam::Detail::PtrListDetail::setAddressableSize
void setAddressableSize(const label n) noexcept
Set addressed size to be inconsistent with allocated storage.
Definition: PtrListDetailI.H:89
T
const volScalarField & T
Definition: createFieldRefs.H:2
clear
patchWriters clear()
Foam::List
A 1D array of objects of type <T>, where the size of the vector is known and used for subscript bound...
Definition: BitOps.H:63
Foam::UList
A 1D vector of objects of type <T>, where the size of the vector is known and can be used for subscri...
Definition: HashTable.H:103
Foam::Detail::PtrListDetail::resize
void resize(const label newLen)
Reset size of list.
Definition: PtrListDetailI.H:98
Foam::Detail::PtrListDetail
A rudimentary list of pointers used for PtrList, UPtrList, etc. This class is considered implementati...
Definition: PtrListDetail.H:61