|
INET Framework for OMNeT++/OMNEST
|
This class represents data with an ordered list of consecutive chunks. More...
#include <SequenceChunk.h>
Public Member Functions | |
Constructors, destructors and duplication related functions | |
| SequenceChunk () | |
| SequenceChunk (const SequenceChunk &other) | |
| SequenceChunk (const std::deque< Ptr< const Chunk >> &chunks) | |
| virtual SequenceChunk * | dup () const override |
| virtual const Ptr< Chunk > | dupShared () const override |
| Returns a mutable copy of this chunk in a shared pointer. More... | |
| virtual void | parsimPack (cCommBuffer *buffer) const override |
| virtual void | parsimUnpack (cCommBuffer *buffer) override |
| virtual void | forEachChild (cVisitor *v) override |
| virtual bool | containsSameData (const Chunk &other) const override |
| Returns true if the two chunks represent the same binary data. More... | |
Field accessor functions | |
| const std::deque< Ptr< const Chunk > > & | getChunks () const |
| void | setChunks (const std::deque< Ptr< const Chunk >> &chunks) |
Overridden flag functions | |
| virtual bool | isComplete () const override |
| virtual bool | isIncomplete () const override |
| virtual bool | isCorrect () const override |
| virtual bool | isIncorrect () const override |
| virtual bool | isProperlyRepresented () const override |
| virtual bool | isImproperlyRepresented () const override |
Iteration related functions | |
| virtual void | moveIterator (Iterator &iterator, b length) const override |
| virtual void | seekIterator (Iterator &iterator, b offset) const override |
Filling with data related functions | |
| virtual bool | canInsertAtFront (const Ptr< const Chunk > &chunk) const override |
| Returns true if this chunk is capable of representing the result. More... | |
| virtual bool | canInsertAtBack (const Ptr< const Chunk > &chunk) const override |
| Returns true if this chunk is capable of representing the result. More... | |
Removing data related functions | |
| virtual bool | canRemoveAtFront (b length) const override |
| Returns true if this chunk is capable of representing the result. More... | |
| virtual bool | canRemoveAtBack (b length) const override |
| Returns true if this chunk is capable of representing the result. More... | |
Querying data related functions | |
| virtual ChunkType | getChunkType () const override |
| Returns the type of this chunk as an enum member. More... | |
| virtual b | getChunkLength () const override |
| Returns the length of data represented by this chunk. More... | |
| virtual bool | isEmpty () const override |
| Returns true if this chunk contains no data. More... | |
| virtual std::ostream & | printToStream (std::ostream &stream, int level, int evFlags=0) const override |
| Prints an optinally formatted human readable string representation of the data present in this chunk to the given stream. More... | |
Public Member Functions inherited from inet::Chunk | |
| Chunk () | |
| Chunk (const Chunk &other) | |
| virtual bool | isMutable () const |
| virtual bool | isImmutable () const |
| virtual void | markImmutable () |
| void | markMutableIfExclusivelyOwned () |
| virtual void | markIncomplete () |
| virtual void | markIncorrect () |
| virtual void | markImproperlyRepresented () |
| virtual bool | canInsertAt (const Ptr< const Chunk > &chunk, b offset) const |
| Returns true if this chunk is capable of representing the result. More... | |
| void | insertAtFront (const Ptr< const Chunk > &chunk) |
| Inserts the provided chunk at the beginning of this chunk. More... | |
| void | insertAtBack (const Ptr< const Chunk > &chunk) |
| Inserts the provided chunk at the end of this chunk. More... | |
| void | insertAt (const Ptr< const Chunk > &chunk, b offset) |
| Inserts the provided chunk into this chunk. More... | |
| virtual bool | canRemoveAt (b offset, b length) const |
| Returns true if this chunk is capable of representing the result. More... | |
| void | removeAtFront (b length) |
| Removes the requested part from the beginning of this chunk. More... | |
| void | removeAtBack (b length) |
| Removes the requested part from the end of this chunk. More... | |
| void | removeAt (b offset, b length) |
| Removes the requested part from this chunk. More... | |
| int | getChunkId () const |
| Returns the sequentially assigned id. More... | |
| const Ptr< Chunk > | simplify () const |
| Returns the simplified representation of this chunk eliminating all potential redundancies. More... | |
| const Ptr< Chunk > | peek (const Iterator &iterator, b length=unspecifiedLength, int flags=0) const |
| Returns the designated part of the data represented by this chunk in its default representation. More... | |
| template<typename T > | |
| bool | has (const Iterator &iterator, b length=unspecifiedLength) const |
| Returns whether if the designated part of the data is available in the requested representation. More... | |
| template<typename T > | |
| const Ptr< T > | peek (const Iterator &iterator, b length=unspecifiedLength, int flags=0) const |
| Returns the designated part of the data represented by this chunk in the requested representation. More... | |
| virtual SharingRegionTagSet & | getRegionTags () override |
| Returns all region tags. More... | |
| int | getNumTags () const |
| Returns the number of chunk tags. More... | |
| const Ptr< const TagBase > | getTag (int index) const |
| Returns the chunk tag at the given index. More... | |
| void | clearTags (b offset=b(0), b length=b(-1)) |
| Clears the set of chunk tags in the given region. More... | |
| void | copyTags (const Chunk &source, b sourceOffset=b(0), b offset=b(0), b length=b(-1)) |
| Copies the set of chunk tags from the source region to the provided region. More... | |
| template<typename T > | |
| const Ptr< const T > | findTag (b offset=b(0), b length=b(-1)) const |
| Returns the chunk tag for the provided type and range, or returns nullptr if no such chunk tag is found. More... | |
| template<typename T > | |
| const Ptr< const T > | getTag (b offset=b(0), b length=b(-1)) const |
| Returns the chunk tag for the provided type and range, or throws an exception if no such chunk tag is found. More... | |
| template<typename T > | |
| void | mapAllTags (b offset, b length, std::function< void(b, b, const Ptr< const T > &)> f) const |
| Maps all tags in the provided range to to the function. More... | |
| template<typename T > | |
| void | mapAllTagsForUpdate (b offset, b length, std::function< void(b, b, const Ptr< T > &)> f) |
| Maps all tags in the provided range to to the function. More... | |
| template<typename T > | |
| std::vector< SharingRegionTagSet::RegionTag< const T > > | getAllTags (b offset=b(0), b length=b(-1)) const |
| Returns all chunk tags for the provided type and range in a detached vector of region tags. More... | |
| template<typename T > | |
| std::vector< SharingRegionTagSet::RegionTag< T > > | getAllTagsForUpdate (b offset=b(0), b length=b(-1)) |
| Returns all chunk tags for the provided type and range in a detached vector of region tags. More... | |
| template<typename T > | |
| const Ptr< T > | addTag (b offset=b(0), b length=b(-1)) |
| Returns a newly added chunk tag for the provided type and range, or throws an exception if such a chunk tag is already present. More... | |
| template<typename T > | |
| const Ptr< T > | addTagIfAbsent (b offset=b(0), b length=b(-1)) |
| Returns a newly added chunk tag for the provided type and range if absent, or returns the chunk tag that is already present. More... | |
| template<typename T > | |
| std::vector< SharingRegionTagSet::RegionTag< T > > | addTagsWhereAbsent (b offset=b(0), b length=b(-1)) |
| Returns the newly added chunk tags for the provided type and range where the tag is absent. More... | |
| template<typename T > | |
| const Ptr< T > | removeTag (b offset, b length) |
| Removes the chunk tag for the provided type and range, or throws an exception if no such chunk tag is found. More... | |
| template<typename T > | |
| const Ptr< T > | removeTagIfPresent (b offset, b length) |
| Removes the chunk tag for the provided type and range if present, or returns nullptr if no such chunk tag is found. More... | |
| template<typename T > | |
| std::vector< SharingRegionTagSet::RegionTag< T > > | removeTagsWherePresent (b offset, b length) |
| Removes and returns all chunk tags for the provided type and range. More... | |
| virtual std::ostream & | printFieldsToStream (std::ostream &stream, int level, int evFlags=0) const |
| Prints an optinally formatted human readable string representation of the feilds of this chunk to the given stream. More... | |
| virtual std::string | str () const override |
| Returns a human readable string representation of the data present in this chunk. More... | |
Public Member Functions inherited from inet::IPrintableObject | |
| virtual | ~IPrintableObject () |
| virtual std::string | printToString () const |
| virtual std::string | printToString (int level, int evFlags=0) const |
| virtual std::string | getInfoStringRepresentation (int evFlags=0) const |
| virtual std::string | getDetailStringRepresentation (int evFlags=0) const |
| virtual std::string | getDebugStringRepresentation (int evFlags=0) const |
| virtual std::string | getTraceStringRepresentation (int evFlags=0) const |
| virtual std::string | getCompleteStringRepresentation (int evFlags=0) const |
Protected Member Functions | |
| int | getNumChunks () const |
| const Chunk * | getChunk (int i) const |
| int | getElementIndex (bool isForward, int index) const |
| const Ptr< const Chunk > & | getElementChunk (const Iterator &iterator) const |
| void | doInsertChunkAtFront (const Ptr< const Chunk > &chunk) |
| void | doInsertSliceChunkAtFront (const Ptr< const SliceChunk > &chunk) |
| void | doInsertSequenceChunkAtFront (const Ptr< const SequenceChunk > &chunk) |
| void | doInsertChunkAtBack (const Ptr< const Chunk > &chunk) |
| void | doInsertSliceChunkAtBack (const Ptr< const SliceChunk > &chunk) |
| void | doInsertSequenceChunkAtBack (const Ptr< const SequenceChunk > &chunk) |
| std::deque< Ptr< const Chunk > > | dupChunks () const |
| virtual const Ptr< Chunk > | peekUnchecked (PeekPredicate predicate, PeekConverter converter, const Iterator &iterator, b length, int flags) const override |
| virtual void | doInsertAtFront (const Ptr< const Chunk > &chunk) override |
| virtual void | doInsertAtBack (const Ptr< const Chunk > &chunk) override |
| virtual void | doRemoveAtFront (b length) override |
| virtual void | doRemoveAtBack (b length) override |
Protected Member Functions inherited from inet::Chunk | |
| int | getBinDumpNumLines () const |
| int | getHexDumpNumLines () const |
| const char * | getBinDumpLine (int index) |
| const char * | getHexDumpLine (int index) |
| const SharingRegionTagSet::RegionTag< TagBase > & | _getTag (int index) const |
| void | checkMutable () const |
| virtual void | handleChange () |
| virtual void | doInsertAt (const Ptr< const Chunk > &chunk, b offset) |
| virtual void | doRemoveAt (b offset, b length) |
| template<typename T > | |
| const Ptr< T > | peekConverted (const Iterator &iterator, b length, int flags) const |
| template<typename T > | |
| const Ptr< T > | checkPeekResult (const Ptr< T > &chunk, int flags) const |
Static Protected Member Functions | |
| static const Ptr< Chunk > | convertChunk (const std::type_info &typeInfo, const Ptr< Chunk > &chunk, b offset, b length, int flags) |
Static Protected Member Functions inherited from inet::Chunk | |
| static const Ptr< Chunk > | convertChunk (const std::type_info &typeInfo, const Ptr< Chunk > &chunk, b offset, b length, int flags) |
| Creates a new chunk of the given type that represents the designated part of the provided chunk. More... | |
Protected Attributes | |
| std::deque< Ptr< const Chunk > > | chunks |
| The list of chunks that make up this chunk. More... | |
Protected Attributes inherited from inet::Chunk | |
| int | id |
| The id is automatically assigned sequentially during construction. More... | |
| int | flags |
| The boolean chunk flags are merged into a single integer. More... | |
| SharingRegionTagSet | regionTags |
| The set of region tags attached to the data represented by this chunk. More... | |
| const typedef Ptr< Chunk >(* | PeekConverter )(const Ptr< Chunk > &chunk, const Chunk::Iterator &iterator, b length, int flags) |
Friends | |
| class | Chunk |
| class | SequenceChunkDescriptor |
Additional Inherited Members | |
Public Types inherited from inet::Chunk | |
| enum | ChunkType { CT_EMPTY, CT_BITCOUNT, CT_BITS, CT_BYTECOUNT, CT_BYTES, CT_SLICE, CT_ENCRYPTED, CT_CPACKET, CT_SEQUENCE, CT_FIELDS } |
| This enum is used to avoid std::dynamic_cast and dynamicPtrCast. More... | |
| enum | PeekFlag { PF_ALLOW_NULLPTR = (1 << 0), PF_ALLOW_EMPTY = (1 << 1), PF_ALLOW_INCOMPLETE = (1 << 2), PF_ALLOW_INCORRECT = (1 << 3), PF_ALLOW_IMPROPERLY_REPRESENTED = (1 << 4), PF_ALLOW_SERIALIZATION = (1 << 5), PF_ALLOW_ALL = -1 } |
| This enum specifies bitmasks for the flags argument of various peek functions. More... | |
Public Types inherited from inet::IPrintableObject | |
| enum | PrintLevel { PRINT_LEVEL_TRACE, PRINT_LEVEL_DEBUG, PRINT_LEVEL_DETAIL, PRINT_LEVEL_INFO, PRINT_LEVEL_COMPLETE = INT_MIN } |
| enum | PrintFlag { PRINT_FLAG_FORMATTED = (1 << 0), PRINT_FLAG_MULTILINE = (1 << 1) } |
Static Public Member Functions inherited from inet::Chunk | |
| static void | serialize (MemoryOutputStream &stream, const Ptr< const Chunk > &chunk, b offset=b(0), b length=b(-1)) |
| Serializes a chunk into the given stream. More... | |
| static const Ptr< Chunk > | deserialize (MemoryInputStream &stream, const std::type_info &typeInfo) |
| Deserializes a chunk from the given stream. More... | |
Static Public Attributes inherited from inet::Chunk | |
| static const b | unspecifiedLength = b(-std::numeric_limits<int64_t>::max()) |
| static bool | enableImplicitChunkSerialization = false |
| Peeking some part into a chunk that requires automatic serialization will throw an exception when implicit chunk serialization is disabled. More... | |
| static int | nextId = 0 |
Protected Types inherited from inet::Chunk | |
| enum | ChunkFlag { CF_IMMUTABLE = (1 << 0), CF_INCOMPLETE = (1 << 1), CF_INCORRECT = (1 << 2), CF_IMPROPERLY_REPRESENTED = (1 << 3) } |
| This enum specifies bitmasks for the flags field of Chunk. More... | |
| typedef bool(* | PeekPredicate) (const Ptr< Chunk > &) |
This class represents data with an ordered list of consecutive chunks.
It's used by the Chunk API implementation internally to manage compound data. User code should not directly instantiate this class.
| inet::SequenceChunk::SequenceChunk | ( | ) |
| inet::SequenceChunk::SequenceChunk | ( | const SequenceChunk & | other | ) |
| inet::SequenceChunk::SequenceChunk | ( | const std::deque< Ptr< const Chunk >> & | chunks | ) |
|
inlineoverridevirtual |
Returns true if this chunk is capable of representing the result.
Reimplemented from inet::Chunk.
|
inlineoverridevirtual |
Returns true if this chunk is capable of representing the result.
Reimplemented from inet::Chunk.
|
inlineoverridevirtual |
Returns true if this chunk is capable of representing the result.
Reimplemented from inet::Chunk.
|
inlineoverridevirtual |
Returns true if this chunk is capable of representing the result.
Reimplemented from inet::Chunk.
|
overridevirtual |
Returns true if the two chunks represent the same binary data.
The two chunks are compared without serialization, and the method is allowed to return false if the result cannot be determined correctly. Tags and other metadata are ignored in the comparison.
Reimplemented from inet::Chunk.
|
staticprotected |
|
overrideprotectedvirtual |
Reimplemented from inet::Chunk.
|
overrideprotectedvirtual |
Reimplemented from inet::Chunk.
|
protected |
Referenced by doInsertAtBack(), doInsertSequenceChunkAtBack(), and doInsertSliceChunkAtBack().
|
protected |
Referenced by doInsertAtFront(), doInsertSequenceChunkAtFront(), and doInsertSliceChunkAtFront().
|
protected |
Referenced by doInsertAtBack().
|
protected |
Referenced by doInsertAtFront().
|
protected |
Referenced by doInsertAtBack().
|
protected |
Referenced by doInsertAtFront().
|
overrideprotectedvirtual |
Reimplemented from inet::Chunk.
|
overrideprotectedvirtual |
Reimplemented from inet::Chunk.
|
inlineoverridevirtual |
|
protected |
|
inlineoverridevirtual |
Returns a mutable copy of this chunk in a shared pointer.
Reimplemented from inet::Chunk.
|
overridevirtual |
Reimplemented from inet::Chunk.
|
inlineprotected |
|
overridevirtual |
Returns the length of data represented by this chunk.
Implements inet::Chunk.
Referenced by moveIterator(), peekUnchecked(), and seekIterator().
|
inline |
|
inlineoverridevirtual |
Returns the type of this chunk as an enum member.
This can be used to avoid expensive std::dynamic_cast and dynamicPtrCast operators.
Implements inet::Chunk.
|
inlineprotected |
Referenced by moveIterator(), and peekUnchecked().
|
inlineprotected |
Referenced by peekUnchecked(), and seekIterator().
|
inlineprotected |
|
inlineoverridevirtual |
Reimplemented from inet::Chunk.
|
inlineoverridevirtual |
Reimplemented from inet::Chunk.
|
inlineoverridevirtual |
|
overridevirtual |
Reimplemented from inet::Chunk.
|
overridevirtual |
Reimplemented from inet::Chunk.
|
overridevirtual |
Reimplemented from inet::Chunk.
|
inlineoverridevirtual |
Reimplemented from inet::Chunk.
Reimplemented from inet::Chunk.
|
overridevirtual |
Reimplemented from inet::Chunk.
|
overridevirtual |
Reimplemented from inet::Chunk.
|
overrideprotectedvirtual |
Implements inet::Chunk.
|
overridevirtual |
Prints an optinally formatted human readable string representation of the data present in this chunk to the given stream.
Reimplemented from inet::Chunk.
Reimplemented from inet::Chunk.
| void inet::SequenceChunk::setChunks | ( | const std::deque< Ptr< const Chunk >> & | chunks | ) |
|
friend |
|
friend |
|
protected |
The list of chunks that make up this chunk.
Referenced by containsSameData(), doInsertChunkAtBack(), doInsertChunkAtFront(), doRemoveAtBack(), doRemoveAtFront(), dupChunks(), forEachChild(), getChunkLength(), isImproperlyRepresented(), isIncomplete(), isIncorrect(), moveIterator(), parsimPack(), parsimUnpack(), peekUnchecked(), printToStream(), seekIterator(), and setChunks().