22 #ifndef NDN_CXX_NAME_HPP
23 #define NDN_CXX_NAME_HPP
87 Name(
const char* uri);
93 Name(std::string uri);
119 template<encoding::Tag TAG>
167 get(ssize_t i)
const noexcept
170 i +=
static_cast<ssize_t
>(
size());
207 getSubName(ssize_t iStartComponent,
size_t nComponents =
npos)
const;
305 append(uint32_t type, span<const uint8_t> value)
325 [[deprecated(
"use the overload that takes a span<>")]]
327 append(uint32_t type,
const uint8_t* value,
size_t count)
329 return append(type, make_span(value, count));
337 [[deprecated(
"use the overload that takes a span<>")]]
339 append(
const uint8_t* value,
size_t count)
341 return append(make_span(value, count));
352 template<
class Iterator>
354 append(uint32_t type, Iterator first, Iterator last)
366 template<
class Iterator>
460 appendTimestamp(
const optional<time::system_clock::time_point>& timestamp = nullopt);
539 std::char_traits<char>::length(keyword)}));
649 compare(
size_t pos1,
size_t count1,
650 const Name& other,
size_t pos2 = 0,
size_t count2 =
npos)
const;
659 return lhs.equals(rhs);
665 return !lhs.equals(rhs);
710 mutable Block m_wire;
#define NDN_CXX_NODISCARD
Represents a TLV element of the NDN packet format.
size_t elements_size() const noexcept
Equivalent to elements().size().
const element_container & elements() const noexcept
Get container of sub-elements.
bool hasWire() const noexcept
Check if the Block contains a fully encoded wire representation.
void push_back(const Block &element)
Append a sub-element.
Represents an absolute name.
bool equals(const Name &other) const noexcept
Check if this name equals another name.
friend bool operator<(const Name &lhs, const Name &rhs)
Name & appendKeyword(span< const uint8_t > keyword)
Append a keyword component.
Name & append(const uint8_t *value, size_t count)
Append a GenericNameComponent, copying count bytes at value as TLV-VALUE.
const_reverse_iterator rend() const noexcept
Reverse end iterator.
Name & appendByteOffset(uint64_t offset)
Append a byte offset component.
Name & append(span< const uint8_t > value)
Append a GenericNameComponent, copying the TLV-VALUE from value.
Name & appendParametersSha256Digest(span< const uint8_t > digestBytes)
Append a ParametersSha256Digest component.
friend bool operator>=(const Name &lhs, const Name &rhs)
name::Component Component
Name & set(ssize_t i, const Component &component)
Replace the component at the specified index.
Name & appendSequenceNumber(uint64_t seqNo)
Append a sequence number component.
Name getSuccessor() const
Get the successor of a name.
Name & appendNumber(uint64_t number)
Append a component with a NonNegativeInteger.
Name & append(uint32_t type, Iterator first, Iterator last)
Append a NameComponent of TLV-TYPE type, copying TLV-VALUE from a range.
PartialName getPrefix(ssize_t nComponents) const
Returns a prefix of the name.
friend bool operator<=(const Name &lhs, const Name &rhs)
std::reverse_iterator< iterator > reverse_iterator
Name & append(Iterator first, Iterator last)
Append a GenericNameComponent, copying TLV-VALUE from a range.
Name & append(uint32_t type, const uint8_t *value, size_t count)
Append a NameComponent of TLV-TYPE type, copying count bytes at value as TLV-VALUE.
Name & appendTimestamp(const optional< time::system_clock::time_point > ×tamp=nullopt)
Append a timestamp component.
friend bool operator!=(const Name &lhs, const Name &rhs) noexcept
int compare(const Name &other) const
Compare this to the other Name using NDN canonical ordering.
Name & appendKeyword(const char *keyword)
Append a keyword component.
Name & appendSegment(uint64_t segmentNo)
Append a segment number (sequential) component.
const Component & operator[](ssize_t i) const noexcept
Equivalent to get().
Name & appendNumberWithMarker(uint8_t marker, uint64_t number)
Append a component with a marked number.
const_reverse_iterator rbegin() const noexcept
Reverse begin iterator.
Name & appendParametersSha256DigestPlaceholder()
Append a placeholder for a ParametersSha256Digest component.
size_t size() const noexcept
Returns the number of components.
const_iterator begin() const noexcept
Begin iterator.
friend std::ostream & operator<<(std::ostream &os, const Name &name)
Print the URI representation of a name.
Name & appendImplicitSha256Digest(ConstBufferPtr digest)
Append an ImplicitSha256Digest component.
Name & appendVersion(const optional< uint64_t > &version=nullopt)
Append a version component.
bool hasWire() const noexcept
Check if this instance already has wire encoding.
bool empty() const noexcept
Checks if the name is empty, i.e., has no components.
Name & append(uint32_t type, span< const uint8_t > value)
Append a NameComponent of TLV-TYPE type, copying the TLV-VALUE from value.
void clear()
Remove all components.
component_container::size_type size_type
Name & appendImplicitSha256Digest(span< const uint8_t > digestBytes)
Append an ImplicitSha256Digest component.
Name & append(const Component &component)
Append a name component.
Name()
Create an empty name.
friend bool operator==(const Name &lhs, const Name &rhs) noexcept
const_iterator end() const noexcept
End iterator.
Name & appendParametersSha256Digest(ConstBufferPtr digest)
Append a ParametersSha256Digest component.
const Component & at(ssize_t i) const
Returns an immutable reference to the component at the specified index, with bounds checking.
static const size_t npos
Indicates "until the end" in getSubName() and compare().
Name deepCopy() const
Make a deep copy of the name, reallocating the underlying memory buffer.
const Block & wireEncode() const
Perform wire encoding, or return existing wire encoding.
Name & append(Component &&component)
Append a name component.
std::reverse_iterator< const_iterator > const_reverse_iterator
Name & append(const char *str)
Append a GenericNameComponent, copying TLV-VALUE from a null-terminated string.
PartialName getSubName(ssize_t iStartComponent, size_t nComponents=npos) const
Extracts some components as a sub-name (PartialName).
friend bool operator>(const Name &lhs, const Name &rhs)
void erase(ssize_t i)
Erase the component at the specified index.
std::vector< Component > component_container
const Component * const_iterator
void push_back(const T &component)
Append a name component.
void toUri(std::ostream &os, name::UriFormat format=name::UriFormat::DEFAULT) const
Write URI representation of the name to the output stream.
bool isPrefixOf(const Name &other) const noexcept
Check if this name is a prefix of another name.
void wireDecode(const Block &wire)
Decode name from wire encoding.
const Component & get(ssize_t i) const noexcept
Returns an immutable reference to the component at the specified index.
component_container::difference_type difference_type
Represents a name component.
static Component fromSegment(uint64_t segmentNo)
Create a segment number component using NDN naming conventions.
static Component fromNumber(uint64_t number, uint32_t type=tlv::GenericNameComponent)
Create a component encoded as NonNegativeInteger.
static Component fromSequenceNumber(uint64_t seqNo)
Create a sequence number component using NDN naming conventions.
static Component fromByteOffset(uint64_t offset)
Create a byte offset component using NDN naming conventions.
static Component fromNumberWithMarker(uint8_t marker, uint64_t number)
Create a component encoded as NameComponentWithMarker.
#define NDN_CXX_DECLARE_WIRE_ENCODE_INSTANTIATIONS(ClassName)
UriFormat
Format used for the URI representation of a name.
@ DEFAULT
Use the library's default format; currently equivalent to UriFormat::ENV_OR_ALTERNATE.
@ ParametersSha256DigestComponent
@ ImplicitSha256DigestComponent
shared_ptr< const Buffer > ConstBufferPtr
std::istream & operator>>(std::istream &is, Name &name)
Parse URI from stream as Name.