33template<
unsigned W
idth>
42template<
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)
54 BitOps::print(
os, blocks_[blocki],
'.') <<
nl;
57 os << token::END_LIST <<
nl;
63template<
unsigned W
idth>
75 is.
fatalCheck(
"PackedList::readList(Istream&) : reading first token");
84 if (is.
format() == IOstream::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))
156 while (!tok.isPunctuation(token::END_BLOCK))
168 <<
"incorrect first token, expected <int>, '(' or '{', found "
177template<
unsigned W
idth>
185 const label len = list.
size();
187 if (
os.format() == IOstream::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;
242template<
unsigned W
idth>
251 os.writeKeyword(keyword);
254 os << token::END_STATEMENT <<
endl;
260template<
unsigned W
idth>
267template<
unsigned W
idth>
271 const InfoProxy<PackedList<Width>>& iproxy
274 const PackedList<Width>& list = iproxy.t_;
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
Useful combination of include files which define Sin, Sout and Serr and the use of IO streams general...
streamFormat format() const noexcept
Get the current stream format.
bool fatalCheck(const char *operation) const
Check IOstream status for given operation.
An Istream is an abstract base class for all input systems (streams, files, token lists etc)....
char readEndList(const char *funcName)
End read of list data, ends with ')' or '}'.
char readBeginList(const char *funcName)
Begin read of list data, starts with '(' or '{'.
void putBack(const token &tok)
Put back a token. Only a single put back is permitted.
virtual Istream & read(token &)=0
Return next token from stream.
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
A dynamic list of packed unsigned integers, with the number of bits per item specified by the <Width>...
static unsigned int readValue(Istream &is)
Read a list entry (allows for specialization)
char * data_bytes() noexcept
A pointer to the raw storage, reinterpreted as byte data.
void resize(const label numElem, const unsigned int val=0u)
Reset addressable list size, does not shrink the allocated size.
Ostream & printBits(Ostream &os, bool debugOutput=false) const
Print bit patterns, optionally with extra debug.
label size() const noexcept
Number of entries.
bool set(const label i, unsigned int val=~0u)
Set value at index i, default value set is the max_value.
bool uniform() const
True if all entries have identical values, and list is non-empty.
unsigned int get(const label i) const
Get value at index i or 0 for out-of-range.
PackedList< Width > & append(const unsigned int val)
Append a value at the end of the list.
const char * cdata_bytes() const noexcept
A const pointer to the raw storage, reinterpreted as byte data.
void writeEntry(Ostream &os) const
Write as a dictionary entry.
void setPair(Istream &is)
Read an index/value pair and set accordingly.
Ostream & writeList(Ostream &os, const label shortLen=0) const
Write List, with line-breaks in ASCII when length exceeds shortLen.
void clear()
Clear the list, i.e. set addressable size to zero.
Istream & readList(Istream &is)
Clear list and read from stream.
std::streamsize size_bytes() const noexcept
A token holds an item read from Istream.
bool isPunctuation() const noexcept
Token is PUNCTUATION.
bool isLabel() const noexcept
Token is LABEL.
label labelToken() const
Return label value.
InfoProxy< token > info() const
Return info proxy for printing token information to a stream.
A class for handling words, derived from Foam::string.
#define FatalIOErrorInFunction(ios)
Report an error message using Foam::FatalIOError.
OBJstream os(runTime.globalPath()/outputName)
Ostream & endl(Ostream &os)
Add newline and flush stream.
Istream & operator>>(Istream &, directionInfo &)
errorManipArg< error, int > exit(error &err, const int errNo=1)
constexpr char nl
The newline '\n' character (0x0a)