Project

General

Profile

Feature #4570

Updated by Junxiao Shi about 3 years ago

`Name::getSuccessor` returns the "successor" of a name. 
 As of ndn-cxx 0.6.1, this is defined as: 

 ``` 
    *    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: 
    * 
    *    - successor for / is /%00 
    *    - successor for /%00%01/%01%02 is /%00%01/%01%03 
    *    - successor for /%00%01/%01%FF is /%00%01/%02%00 
    *    - successor for /%00%01/%FF%FF is /%00%01/%00%00%00 
 ``` 

 With ImplicitSha256DigestComponent and typed name components (#4526) in [[nfd:Packet03Transition]], [[Packet03Transition]], the implementation and examples no longer match the definition. 
 According to the definition, 

 * successor for `/` is `/sha256digest=00000000000000000000000000000000`. 
 * successor for `/sha256digest=ffffffffffffffffffffffffffffffff` is `/2=...`. 
 * all other cases: the last component does not change type.

Back