OpenFOAM: API Guide
v2112
The open source CFD toolbox
CStringListTemplates.C
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) 2016-2017 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
#include "
SubStrings.H
"
29
30
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
31
32
template
<
class
ListType>
33
int
Foam::CStringList::resetContent
34
(
35
const
ListType&
input
36
)
37
{
38
clear
();
39
40
if
(
input
.empty())
41
{
42
// Special handling of an empty list
43
argv_ =
new
char
*[1];
44
argv_[0] =
nullptr
;
// Final nullptr terminator
45
return
0;
46
}
47
48
// Count overall required string length, including each trailing nul char
49
for
(
const
auto
& str :
input
)
50
{
51
len_ += str.length() + 1;
52
}
53
--len_;
// No final nul in overall count
54
55
argv_ =
new
char
*[
input
.size()+1];
// Extra +1 for terminating nullptr
56
data_ =
new
char
[len_+1];
// Extra +1 for terminating nul char
57
58
argv_[0] = data_;
// Starts here
59
60
for
(
const
auto
& str :
input
)
61
{
62
char
*next = stringCopy(argv_[argc_], str);
63
argv_[++argc_] = next;
// The start of next string
64
}
65
66
argv_[argc_] =
nullptr
;
// Final nullptr terminator
67
68
return
argc_;
69
}
70
71
72
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
73
74
template
<
class
StringType>
75
Foam::List<StringType>
76
Foam::CStringList::asList
(
int
argc,
const
char
*
const
argv[])
77
{
78
List<StringType>
lst(argc);
79
80
for
(
int
i=0; i < argc; ++i)
81
{
82
lst[i] = argv[i];
83
}
84
85
return
lst;
86
}
87
88
89
template
<
class
StringType>
90
Foam::List<StringType>
91
Foam::CStringList::asList
(
const
char
*
const
argv[])
92
{
93
return
asList<StringType>(
count
(argv), argv);
94
}
95
96
97
// ************************************************************************* //
SubStrings.H
Foam::BitOps::count
unsigned int count(const UList< bool > &bools, const bool val=true)
Count number of 'true' entries.
Definition:
BitOps.H:77
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::CStringList::asList
static List< StringType > asList(int argc, const char *const argv[])
Create a list from argc/argv parameters.
Foam::input
static Istream & input(Istream &is, IntRange< T > &range)
Definition:
IntRanges.C:55
Foam::CStringList::clear
void clear()
Clear contents and free memory.
Definition:
CStringListI.H:98
src
OpenFOAM
primitives
strings
lists
CStringListTemplates.C
Generated by
1.8.17
OPENFOAM® is a registered
trademark
of OpenCFD Ltd.