34 namespace TableReaders
45 <<
"No column " <<
component(columns_.second(), 0) <<
" in "
60 <<
"No column " <<
component(columns_.second(), 0) <<
" in "
74 for (
label i = 0; i < pTraits<Type>::nComponents; i++)
79 <<
"No column " <<
component(columns_.second(), i) <<
" in "
104 List<Tuple2<scalar, Type>>& data
107 DynamicList<Tuple2<scalar, Type>> values;
110 for (
label i = 0; i < nHeaderLine_; i++)
116 const label nEntries =
max(columns_.first(),
cmptMax(columns_.second()));
126 DynamicList<string> split;
128 if (mergeSeparators_)
130 std::size_t nPos = 0;
132 while ((
pos != std::string::npos) && (
n <= nEntries))
137 nPos = line.find(separator_,
pos);
139 if ((nPos != std::string::npos) && (nPos -
pos == 0))
149 nPos = line.find(separator_,
pos);
151 if (nPos == std::string::npos)
153 split.append(line.substr(
pos));
159 split.append(line.substr(
pos, nPos -
pos));
167 while ((
pos != std::string::npos) && (
n <= nEntries))
169 std::size_t nPos = line.find(separator_,
pos);
171 if (nPos == std::string::npos)
173 split.append(line.substr(
pos));
179 split.append(line.substr(
pos, nPos -
pos));
186 if (split.size() <= 1)
191 scalar
x =
readScalar(IStringStream(split[columns_.first()])());
192 Type value = readValue(split);
194 values.append(Tuple2<scalar, Type>(
x, value));
197 data.transfer(values);
212 nHeaderLine_(
dict.lookup<
label>(
"nHeaderLine")),
230 mergeSeparators_(
readBool(
dict.lookup(
"mergeSeparators")))
255 writeEntry(os,
"separator",
string(separator_));
256 writeEntry(os,
"mergeSeparators", mergeSeparators_);
Input from memory buffer stream.
void size(const label)
Override size to be inconsistent with allocated storage.
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
Base class to read table data for tables.
virtual void write(Ostream &os, const Function1s::unitConversions &units, const List< Tuple2< scalar, Type >> &table) const
Write additional information.
Reads an interpolation table from a file in CSV-format. Entries govern the layout of the CSV file....
Csv(const word &name, const Function1s::unitConversions &units, const dictionary &dict)
Construct from name and dictionary.
virtual ~Csv()
Destructor.
virtual void write(Ostream &os, const Function1s::unitConversions &units, const List< Tuple2< scalar, Type >> &table) const
Write settings and values.
A 2-tuple for storing two objects of different types.
A list of keyword definitions, which are a keyword followed by any number of values (e....
A class for handling character strings derived from std::string.
A class for handling words, derived from string.
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
errorManipArg< error, int > exit(error &err, const int errNo=1)
dimensionedScalar pos(const dimensionedScalar &ds)
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
Ostream & endl(Ostream &os)
Add newline and flush stream.
word name(const bool)
Return a word representation of a bool.
void component(FieldField< Field, typename FieldField< Field, Type >::cmptType > &sf, const FieldField< Field, Type > &f, const direction d)
const HashTable< unitConversion > & units()
Get the table of unit conversions.
void writeEntry(Ostream &os, const HashTable< T, Key, Hash > &ht)
bool readScalar(const char *buf, doubleScalar &s)
Read whole of buf as a scalar. Return true if successful.
layerAndWeight max(const layerAndWeight &a, const layerAndWeight &b)
void cmptMax(FieldField< Field, typename FieldField< Field, Type >::cmptType > &cf, const FieldField< Field, Type > &f)
label readLabel(Istream &is)