20 #ifndef BYTE_TAG_LIST_H 21 #define BYTE_TAG_LIST_H 23 #define __STDC_LIMIT_MACROS 25 #include "ns3/type-id.h" 30 struct ByteTagListData;
131 Iterator (uint8_t *
start, uint8_t *end, int32_t offsetStart, int32_t offsetEnd, int32_t adjustment);
214 inline void Adjust (int32_t adjustment);
223 void AddAtEnd (int32_t appendOffset);
246 uint32_t
Serialize (uint32_t* buffer, uint32_t maxSize)
const;
255 uint32_t
Deserialize (
const uint32_t* buffer, uint32_t size);
uint32_t Deserialize(const uint32_t *buffer, uint32_t size)
Deserialize tag list from the provided buffer.
ByteTagList & operator=(const ByteTagList &o)
Assignment operator, deallocates current data and assigns value of passed in ByteTagList.
struct ByteTagListData * m_data
the ByteTagListData structure
uint32_t GetSerializedSize(void) const
Returns number of bytes required for packet serialization.
keep track of the byte tags stored in a packet.
TagBuffer Add(TypeId tid, uint32_t bufferSize, int32_t start, int32_t end)
void Adjust(int32_t adjustment)
Adjust the offsets stored internally by the adjustment delta.
uint32_t m_nextTid
TypeId of the next tag.
void Deallocate(struct ByteTagListData *data)
Deallocates a ByteTagListData.
uint8_t * m_current
Current tag.
int32_t m_offsetEnd
Offset to the end of the tag from the virtual byte buffer.
void AddAtEnd(int32_t appendOffset)
Make sure that all offsets are smaller than appendOffset which represents the location where new byte...
void PrepareForNext(void)
Prepare the iterator for the next tag.
void RemoveAll(void)
Removes all of the tags from the ByteTagList.
ByteTagList::Iterator Begin(int32_t offsetStart, int32_t offsetEnd) const
Internal representation of the byte tags stored in a packet.
uint32_t m_nextSize
Size of the next tag.
int32_t start
offset to the start of the tag from the virtual byte buffer
struct ByteTagList::Iterator::Item Next(void)
Returns the next Item from the ByteTagList.
struct ByteTagListData * Allocate(uint32_t size)
Allocate the memory for the ByteTagListData.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
Iterator(uint8_t *start, uint8_t *end, int32_t offsetStart, int32_t offsetEnd, int32_t adjustment)
Constructor.
int32_t m_minStart
minimal start offset
int32_t m_nextStart
Start of the next tag.
int32_t end
offset to the end of the tag from the virtual byte buffer
ByteTagList::Iterator BeginAll(void) const
Returns an iterator pointing to the very first tag in this list.
uint32_t m_used
the number of used bytes in the buffer
int32_t m_offsetStart
Offset to the start of the tag from the virtual byte buffer.
TypeId tid
type of the tag
uint32_t size
size of tag data
int32_t m_adjustment
adjustment to byte tag offsets
TagBuffer buf
the data for the tag as generated by Tag::Serialize
An iterator for iterating through a byte tag list.
int32_t m_nextEnd
End of the next tag.
void AddAtStart(int32_t prependOffset)
Make sure that all offsets are bigger than prependOffset which represents the location where new byte...
int32_t m_maxEnd
maximal end offset
Item(TagBuffer buf)
Constructs an item with the given TagBuffer.
uint32_t GetOffsetStart(void) const
Returns the offset from the start of the virtual byte buffer to the ByteTagList.
uint32_t Serialize(uint32_t *buffer, uint32_t maxSize) const
Serialize the tag list into a byte buffer.
a unique identifier for an interface.
int32_t m_adjustment
Adjustment to byte tag offsets.
bool HasNext(void) const
Used to determine if the iterator is at the end of the byteTagList.
An item specifies an individual tag within a byte buffer.