33 template<
unsigned W
idth>
42 template<
unsigned W
idth>
49 os << token::BEGIN_LIST <<
nl;
51 const label nblocks = debugOutput ? blocks_.size() : num_blocks(size());
52 for (label blocki = 0; blocki < nblocks; ++blocki)
57 os << token::END_LIST <<
nl;
63 template<
unsigned W
idth>
75 is.
fatalCheck(
"PackedList::readList(Istream&) : reading first token");
84 if (is.
format() == IOstreamOption::BINARY)
95 "PackedList::readList(Istream&) : " 96 "reading the binary block" 107 if (delimiter == token::BEGIN_LIST)
109 for (label i=0; i<len; ++i)
115 "PackedList::readList(Istream&) : " 127 "PackedList::readList(Istream&) : " 128 "reading the single entry" 142 while (!tok.isPunctuation(token::END_LIST))
151 else if (tok.isPunctuation(token::BEGIN_BLOCK))
156 while (!tok.isPunctuation(token::END_BLOCK))
168 <<
"incorrect first token, expected <int>, '(' or '{', found " 177 template<
unsigned W
idth>
185 const label len = list.
size();
187 if (
os.format() == IOstreamOption::BINARY)
199 else if (len > 1 && list.
uniform())
202 os << len << token::BEGIN_BLOCK << list[0] << token::END_BLOCK;
204 else if (!shortLen || len <= shortLen)
209 os << len << token::BEGIN_LIST;
212 for (label i=0; i < len; ++i)
214 if (i)
os << token::SPACE;
215 os << label(list.
get(i));
219 os << token::END_LIST;
226 os <<
nl << len <<
nl << token::BEGIN_LIST <<
nl;
229 for (label i=0; i < len; ++i)
231 os << label(list.
get(i)) <<
nl;
235 os << token::END_LIST <<
nl;
242 template<
unsigned W
idth>
251 os.writeKeyword(keyword);
260 template<
unsigned W
idth>
263 return list.readList(is);
267 template<
unsigned W
idth>
271 const InfoProxy<PackedList<Width>>& iproxy
274 const auto& list = *iproxy;
276 os <<
"PackedList<" << Width
277 <<
"> size=" << list.size() <<
"/" << list.capacity()
278 <<
" (limits: max=" << PackedList<Width>::max_value
279 <<
", elem_per_block=" << PackedList<Width>::elem_per_block
bool isPunctuation() const noexcept
Token is PUNCTUATION.
errorManipArg< error, int > exit(error &err, const int errNo=1)
const char * cdata_bytes() const noexcept
A const pointer to the raw storage, reinterpreted as byte data.
char readEndList(const char *funcName)
End read of list data, ends with ')' or '}'.
Ostream & print(Ostream &os, UIntType value, char off='0', char on='1')
Print 0/1 bits in the (unsigned) integral type.
An Istream is an abstract base class for all input systems (streams, files, token lists etc)...
constexpr char nl
The newline '\n' character (0x0a)
std::streamsize size_bytes() const noexcept
The number of bytes used in the raw storage including any unused padding.
A token holds an item read from Istream.
Ostream & writeList(Ostream &os, const label shortLen=0) const
Write List, with line-breaks in ASCII when length exceeds shortLen.
void setPair(Istream &is)
Read an index/value pair and set accordingly.
bool uniform() const
True if all entries have identical values (and list is non-empty)
void resize(const label numElem, const unsigned int val=0u)
Reset addressable list size, does not shrink the allocated size.
Useful combination of include files which define Sin, Sout and Serr and the use of IO streams general...
void putBack(const token &tok)
Put back a token (copy). Only a single put back is permitted.
void writeEntry(Ostream &os) const
Write as a dictionary entry.
virtual Istream & read(token &)=0
Return next token from stream.
A dynamic list of packed unsigned integers, with the number of bits per item specified by the <Width>...
A class for handling words, derived from Foam::string.
Istream & operator>>(Istream &, directionInfo &)
static unsigned int readValue(Istream &is)
Read a list entry (allows for specialization)
char readBeginList(const char *funcName)
Begin read of list data, starts with '(' or '{'.
bool set(const label i, unsigned int val=~0u)
Set value at index i, default value set is the max_value.
void clear()
Clear the list, i.e. set addressable size to zero.
An Ostream is an abstract base class for all output systems (streams, files, token lists...
OBJstream os(runTime.globalPath()/outputName)
char * data_bytes() noexcept
A pointer to the raw storage, reinterpreted as byte data.
bool fatalCheck(const char *operation) const
Check IOstream status for given operation.
#define FatalIOErrorInFunction(ios)
Report an error message using Foam::FatalIOError.
label labelToken() const
Return label value.
bool isLabel() const noexcept
Token is LABEL.
void push_back(const unsigned int val)
Append a value at the end of the list.
Istream & readList(Istream &is)
Clear list and read from stream.
unsigned int get(const label i) const
Get value at index i or 0 for out-of-range.
Ostream & printBits(Ostream &os, bool debugOutput=false) const
Print bit patterns, optionally with extra debug.
streamFormat format() const noexcept
Get the current stream format.
label size() const noexcept
Number of entries.
IOerror FatalIOError
Error stream (stdout output on all processes), with additional 'FOAM FATAL IO ERROR' header text and ...