Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Development
openfoam
Commits
6ce8e7d0
Commit
6ce8e7d0
authored
Apr 22, 2009
by
Mark Olesen
Browse files
added List::append() methods
parent
35adfbf5
Changes
3
Hide whitespace changes
Inline
Side-by-side
applications/test/List/ListTest.C
View file @
6ce8e7d0
...
...
@@ -43,31 +43,33 @@ using namespace Foam;
int
main
(
int
argc
,
char
*
argv
[])
{
List
<
vector
>
list
(
IStringStream
(
"1 ((0 1 2))"
)());
Info
<<
list
<<
endl
;
List
<
vector
>
list
1
(
IStringStream
(
"1 ((0 1 2))"
)());
Info
<<
"
list
1: "
<<
list1
<<
endl
;
List
<
vector
>
list2
(
IStringStream
(
"((0 1 2) (3 4 5) (6 7 8))"
)());
Info
<<
list2
<<
endl
;
Info
<<
"list2: "
<<
list2
<<
endl
;
list1
.
append
(
list2
);
Info
<<
"list1.append(list2): "
<<
list1
<<
endl
;
Info
<<
findIndex
(
list2
,
vector
(
3
,
4
,
5
))
<<
endl
;
list2
.
setSize
(
10
,
vector
(
1
,
2
,
3
));
Info
<<
list2
<<
endl
;
Info
<<
"list2: "
<<
list2
<<
endl
;
List
<
vector
>
list3
(
list2
.
xfer
());
Info
<<
"Transferred via the xfer() method"
<<
endl
;
Info
<<
list2
<<
nl
<<
list3
<<
endl
;
Info
<<
"list2: "
<<
list2
<<
nl
<<
"list3: "
<<
list3
<<
endl
;
// Subset
const
labelList
map
(
IStringStream
(
"2 (0 2)"
)());
List
<
vector
>
subList3
(
list3
,
map
);
Info
<<
"Elements "
<<
map
<<
" out of "
<<
list3
<<
"
:
"
<<
subList3
<<
endl
;
<<
"
=>
"
<<
subList3
<<
endl
;
return
0
;
}
// ************************************************************************* //
src/OpenFOAM/containers/Lists/List/List.C
View file @
6ce8e7d0
...
...
@@ -404,6 +404,61 @@ void Foam::List<T>::clear()
}
template
<
class
T
>
void
Foam
::
List
<
T
>::
append
(
const
UList
<
T
>&
lst
)
{
if
(
this
==
&
lst
)
{
FatalErrorIn
(
"List<T>::append(const UList<T>&)"
)
<<
"attempted appending to self"
<<
abort
(
FatalError
);
}
label
nextFree
=
this
->
size_
;
setSize
(
nextFree
+
lst
.
size
());
forAll
(
lst
,
elemI
)
{
this
->
operator
[](
nextFree
++
)
=
lst
[
elemI
];
}
}
template
<
class
T
>
void
Foam
::
List
<
T
>::
append
(
const
UIndirectList
<
T
>&
lst
)
{
label
nextFree
=
this
->
size_
;
setSize
(
nextFree
+
lst
.
size
());
forAll
(
lst
,
elemI
)
{
this
->
operator
[](
nextFree
++
)
=
lst
[
elemI
];
}
}
template
<
class
T
>
void
Foam
::
List
<
T
>::
append
(
const
SLList
<
T
>&
lst
)
{
if
(
lst
.
size
())
{
label
nextFree
=
this
->
size_
;
setSize
(
nextFree
+
lst
.
size
());
for
(
typename
SLList
<
T
>::
const_iterator
iter
=
lst
.
begin
();
iter
!=
lst
.
end
();
++
iter
)
{
this
->
operator
[](
nextFree
++
)
=
iter
();
}
}
}
// Transfer the contents of the argument List into this List
// and anull the argument list
template
<
class
T
>
...
...
@@ -559,12 +614,9 @@ void Foam::List<T>::operator=(const IndirectList<T>& lst)
if
(
this
->
size_
)
this
->
v_
=
new
T
[
this
->
size_
];
}
if
(
this
->
size_
)
forAll
(
*
this
,
i
)
{
forAll
(
*
this
,
i
)
{
this
->
operator
[](
i
)
=
lst
[
i
];
}
this
->
operator
[](
i
)
=
lst
[
i
];
}
}
...
...
@@ -581,12 +633,9 @@ void Foam::List<T>::operator=(const UIndirectList<T>& lst)
if
(
this
->
size_
)
this
->
v_
=
new
T
[
this
->
size_
];
}
if
(
this
->
size_
)
forAll
(
*
this
,
i
)
{
forAll
(
*
this
,
i
)
{
this
->
operator
[](
i
)
=
lst
[
i
];
}
this
->
operator
[](
i
)
=
lst
[
i
];
}
}
...
...
@@ -603,12 +652,9 @@ void Foam::List<T>::operator=(const BiIndirectList<T>& lst)
if
(
this
->
size_
)
this
->
v_
=
new
T
[
this
->
size_
];
}
if
(
this
->
size_
)
forAll
(
*
this
,
i
)
{
forAll
(
*
this
,
i
)
{
this
->
operator
[](
i
)
=
lst
[
i
];
}
this
->
operator
[](
i
)
=
lst
[
i
];
}
}
...
...
src/OpenFOAM/containers/Lists/List/List.H
View file @
6ce8e7d0
...
...
@@ -109,7 +109,7 @@ public:
List
(
const
List
<
T
>&
);
//- Construct by transferring the parameter contents
List
(
const
Xfer
<
List
<
T
>
>&
);
List
(
const
Xfer
<
List
<
T
>
>&
);
//- Construct as copy or re-use as specified.
List
(
List
<
T
>&
,
bool
reUse
);
...
...
@@ -181,6 +181,15 @@ public:
//- Clear the list, i.e. set size to zero.
void
clear
();
//- Append a List at the end of this list
void
append
(
const
UList
<
T
>&
);
//- Append a UIndirectList at the end of this list
void
append
(
const
UIndirectList
<
T
>&
);
//- Append a SLList at the end of this list
void
append
(
const
SLList
<
T
>&
);
//- Transfer the contents of the argument List into this List
// and annull the argument list.
void
transfer
(
List
<
T
>&
);
...
...
@@ -195,7 +204,7 @@ public:
void
transfer
(
SortableList
<
T
>&
);
//- Transfer contents to the Xfer container
inline
Xfer
<
List
<
T
>
>
xfer
();
inline
Xfer
<
List
<
T
>
>
xfer
();
//- Return subscript-checked element of UList.
inline
T
&
newElmt
(
const
label
);
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment