Name abstraction to represent an absolute name. More...
#include <name.hpp>
Data Structures | |
class | Error |
Error that can be thrown from Name. More... | |
Public Types | |
typedef name::Component | Component |
typedef std::vector< Component > | component_container |
typedef Component | value_type |
typedef void | allocator_type |
typedef Component & | reference |
typedef const Component | const_reference |
typedef Component * | pointer |
typedef const Component * | const_pointer |
typedef Component * | iterator |
typedef const Component * | const_iterator |
typedef boost::reverse_iterator< iterator > | reverse_iterator |
typedef boost::reverse_iterator< const_iterator > | const_reverse_iterator |
typedef component_container::difference_type | difference_type |
typedef component_container::size_type | size_type |
Public Member Functions | |
Name () | |
Create a new Name with no components. More... | |
Name (const Block &wire) | |
Create Name object from wire block. More... | |
Name (const char *uri) | |
Create name from uri (NDN URI scheme) More... | |
Name (std::string uri) | |
Create name from uri (NDN URI scheme) More... | |
Name | deepCopy () const |
Make a deep copy of the name, reallocating the underlying memory buffer. More... | |
template<encoding::Tag TAG> | |
size_t | wireEncode (EncodingImpl< TAG > &encoder) const |
Fast encoding or block size estimation. More... | |
const Block & | wireEncode () const |
void | wireDecode (const Block &wire) |
bool | hasWire () const |
Check if already has wire. More... | |
Name & | append (const uint8_t *value, size_t valueLength) |
Append a new component, copying from value of length valueLength. More... | |
template<class Iterator > | |
Name & | append (Iterator first, Iterator last) |
Append a new component, copying from value frome the range [first , last ) of bytes. More... | |
Name & | append (const Component &value) |
Append component value . More... | |
Name & | append (const char *value) |
Append name component that represented as a string. More... | |
Name & | append (const Block &value) |
Name & | append (const PartialName &name) |
append a PartialName to this Name. More... | |
void | clear () |
Clear all the components. More... | |
PartialName | getSubName (ssize_t iStartComponent, size_t nComponents=npos) const |
Extract a sub-name (PartialName) of nComponents components starting from iStartComponent . More... | |
PartialName | getPrefix (ssize_t nComponents) const |
Extract a prefix (PartialName) of the name, containing first nComponents components. More... | |
std::string | toUri () const |
Encode this name as a URI. More... | |
Name & | appendNumber (uint64_t number) |
Append a component with the number encoded as nonNegativeInteger. More... | |
Name & | appendNumberWithMarker (uint8_t marker, uint64_t number) |
Create a component encoded as NameComponentWithMarker. More... | |
Name & | appendVersion (uint64_t version) |
Append version using NDN naming conventions. More... | |
Name & | appendVersion () |
Append version using NDN naming conventions based on current UNIX timestamp in milliseconds. More... | |
Name & | appendSegment (uint64_t segmentNo) |
Append segment number (sequential) using NDN naming conventions. More... | |
Name & | appendSegmentOffset (uint64_t offset) |
Append segment byte offset using NDN naming conventions. More... | |
Name & | appendTimestamp (const time::system_clock::TimePoint &timePoint=time::system_clock::now()) |
Append timestamp using NDN naming conventions. More... | |
Name & | appendSequenceNumber (uint64_t seqNo) |
Append sequence number using NDN naming conventions. More... | |
Name & | appendImplicitSha256Digest (const ConstBufferPtr &digest) |
Append ImplicitSha256Digest. More... | |
Name & | appendImplicitSha256Digest (const uint8_t *digest, size_t digestSize) |
Append ImplicitSha256Digest. More... | |
Name | getSuccessor () const |
Get the successor of a name. More... | |
bool | equals (const Name &name) const |
Check if this name has the same component count and components as the given name. More... | |
bool | isPrefixOf (const Name &name) const |
Check if the N components of this name are the same as the first N components of the given name. More... | |
bool | empty () const |
Check if name is emtpy. More... | |
size_t | size () const |
Get the number of components. More... | |
const Component & | get (ssize_t i) const |
Get the component at the given index. More... | |
const Component & | operator[] (ssize_t i) const |
const Component & | at (ssize_t i) const |
Get component at the specified index. More... | |
int | compare (const Name &other) const |
Compare this to the other Name using NDN canonical ordering. More... | |
int | compare (size_t pos1, size_t count1, const Name &other, size_t pos2=0, size_t count2=npos) const |
compares [pos1, pos1+count1) components in this Name to [pos2, pos2+count2) components in other More... | |
template<class T > | |
void | push_back (const T &component) |
Append the component. More... | |
bool | operator== (const Name &name) const |
Check if this name has the same component count and components as the given name. More... | |
bool | operator!= (const Name &name) const |
Check if this name has the same component count and components as the given name. More... | |
bool | operator<= (const Name &other) const |
Return true if this is less than or equal to the other Name in the NDN canonical ordering. More... | |
bool | operator< (const Name &other) const |
Return true if this is less than the other Name in the NDN canonical ordering. More... | |
bool | operator>= (const Name &other) const |
Return true if this is less than or equal to the other Name in the NDN canonical ordering. More... | |
bool | operator> (const Name &other) const |
Return true if this is greater than the other Name in the NDN canonical ordering. More... | |
const_iterator | begin () const |
Begin iterator (const). More... | |
const_iterator | end () const |
End iterator (const). More... | |
const_reverse_iterator | rbegin () const |
Reverse begin iterator (const). More... | |
const_reverse_iterator | rend () const |
Reverse end iterator (const). More... | |
Static Public Attributes | |
static const size_t | npos = std::numeric_limits<size_t>::max() |
indicates "until the end" in getSubName and compare More... | |
typedef void ndn::Name::allocator_type |
typedef name::Component ndn::Name::Component |
typedef std::vector<Component> ndn::Name::component_container |
typedef const Component* ndn::Name::const_iterator |
typedef const Component* ndn::Name::const_pointer |
typedef const Component ndn::Name::const_reference |
typedef boost::reverse_iterator<const_iterator> ndn::Name::const_reverse_iterator |
typedef component_container::difference_type ndn::Name::difference_type |
typedef Component* ndn::Name::iterator |
typedef Component* ndn::Name::pointer |
typedef Component& ndn::Name::reference |
typedef boost::reverse_iterator<iterator> ndn::Name::reverse_iterator |
typedef component_container::size_type ndn::Name::size_type |
typedef Component ndn::Name::value_type |
|
explicit |
ndn::Name::Name | ( | const char * | uri | ) |
ndn::Name::Name | ( | std::string | uri | ) |
|
inline |
|
inline |
Append a new component, copying from value frome the range [first
, last
) of bytes.
first | Iterator pointing to the beginning of the buffer |
last | Iterator pointing to the ending of the buffer |
Iterator | iterator type satisfying at least InputIterator concept. Implementation is more optimal when the iterator type satisfies RandomAccessIterator concept. It is required that sizeof(std::iterator_traits<Iterator>::value_type) == 1. |
|
inline |
Name & ndn::Name::append | ( | const PartialName & | name | ) |
Name & ndn::Name::appendImplicitSha256Digest | ( | const ConstBufferPtr & | digest | ) |
Name & ndn::Name::appendImplicitSha256Digest | ( | const uint8_t * | digest, |
size_t | digestSize | ||
) |
Name & ndn::Name::appendNumber | ( | uint64_t | number | ) |
Append a component with the number encoded as nonNegativeInteger.
number | The non-negative number |
Name & ndn::Name::appendNumberWithMarker | ( | uint8_t | marker, |
uint64_t | number | ||
) |
Create a component encoded as NameComponentWithMarker.
marker | 1-byte marker octet |
number | The non-negative number |
Name & ndn::Name::appendSegment | ( | uint64_t | segmentNo | ) |
Append segment number (sequential) using NDN naming conventions.
Name & ndn::Name::appendSegmentOffset | ( | uint64_t | offset | ) |
Append segment byte offset using NDN naming conventions.
Name & ndn::Name::appendSequenceNumber | ( | uint64_t | seqNo | ) |
Append sequence number using NDN naming conventions.
Name & ndn::Name::appendTimestamp | ( | const time::system_clock::TimePoint & | timePoint = time::system_clock::now() | ) |
Append timestamp using NDN naming conventions.
Name & ndn::Name::appendVersion | ( | uint64_t | version | ) |
Append version using NDN naming conventions.
Name & ndn::Name::appendVersion | ( | ) |
Append version using NDN naming conventions based on current UNIX timestamp in milliseconds.
|
inline |
Get component at the specified index.
Unlike get() and operator[] methods, at() checks for out of bounds and will throw Name::Error when it happens
Name::Error | if index out of bounds |
|
inline |
|
inline |
Compare this to the other Name using NDN canonical ordering.
If the first components of each name are not equal, this returns a negative value if the first comes before the second using the NDN canonical ordering for name components, or a positive value if it comes after. If they are equal, this compares the second components of each name, etc. If both names are the same up to the size of the shorter name, this returns a negative value if the first name is shorter than the second or a positive value if it is longer. For example, if you std::sort gives: /a/b/d /a/b/cc /c /c/a /bb . This is intuitive because all names with the prefix /a are next to each other. But it may be also be counter-intuitive because /c comes before /bb according to NDN canonical ordering since it is shorter.
other | The other Name to compare with. |
negative | this comes before other in canonical ordering |
zero | this equals other |
positive | this comes after other in canonical ordering |
Name ndn::Name::deepCopy | ( | ) | const |
|
inline |
|
inline |
bool ndn::Name::equals | ( | const Name & | name | ) | const |
|
inline |
|
inline |
Extract a prefix (PartialName) of the name, containing first nComponents
components.
nComponents | The number of prefix components. If nComponents is -N then return the prefix up to name.size() - N. For example getPrefix(-1) returns the name without the final component. |
PartialName ndn::Name::getSubName | ( | ssize_t | iStartComponent, |
size_t | nComponents = npos |
||
) | const |
Extract a sub-name (PartialName) of nComponents
components starting from iStartComponent
.
iStartComponent | index of the first component; if iStartComponent is negative, size()+iStartComponent is used instead |
nComponents | The number of components starting at iStartComponent. Use npos to get the Partial Name until the end of this Name. |
If iStartComponent is out of bounds and is negative, returns the components starting from the beginning of the Name. If iStartComponent is out of bounds and is positive, returns the component "/". If nComponents is out of bounds, returns the components until the end of this Name
Name ndn::Name::getSuccessor | ( | ) | const |
Get the successor of a name.
The successor of a name is defined as follows:
N represents the set of NDN Names, and X,Y ∈ N. Operator < is defined by canonical order on N. Y is the successor of X, if (a) X < Y, and (b) ∄ Z ∈ N s.t. X < Z < Y.
In plain words, successor of a name is the same name, but with its last component advanced to a next possible value.
Examples:
|
inline |
bool ndn::Name::isPrefixOf | ( | const Name & | name | ) | const |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
std::string ndn::Name::toUri | ( | ) | const |
size_t ndn::Name::wireEncode | ( | EncodingImpl< TAG > & | encoder | ) | const |