Interface AdjacencyCursor

  • All Superinterfaces:
    java.lang.AutoCloseable
    All Known Implementing Classes:
    AdjacencyCursor.EmptyAdjacencyCursor, CompositeAdjacencyCursor, TransientAdjacencyList.DecompressingCursor

    public interface AdjacencyCursor
    extends java.lang.AutoCloseable
    Cursor iterating over the target ids of one adjacency list. A lot of the methods here are very low-level and break when looked at slightly askew. Better iteration methods and defined access patterns will be added under the continuation of Adjacency Compression III – Return of the Iterator
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static long NOT_FOUND
      Special ID value that could be returned to indicate that no valid value can be produced
    • Method Summary

      All Methods Static Methods Instance Methods Abstract Methods 
      Modifier and Type Method Description
      long advance​(long nodeId)
      Read and decode target ids until it is larger than or equal (>=) the provided target.
      void close()  
      static AdjacencyCursor empty()
      Returns a cursor that is always empty.
      boolean hasNextVLong()
      Return true iff there is at least one more target to decode.
      void init​(long index, int degree)
      Initialize this cursor to point to the given index.
      long nextVLong()
      Read and decode the next target id.
      long peekVLong()
      Decode and peek the next target id.
      int remaining()
      Return how many targets are still left to be decoded.
      @NotNull AdjacencyCursor shallowCopy​(@Nullable AdjacencyCursor destination)
      Create a shallow copy of this cursor.
      int size()
      Return how many targets can be decoded in total.
      long skipUntil​(long nodeId)
      Read and decode target ids until it is strictly larger than (>) the provided target.
    • Field Detail

      • NOT_FOUND

        static final long NOT_FOUND
        Special ID value that could be returned to indicate that no valid value can be produced
        See Also:
        Constant Field Values
    • Method Detail

      • init

        void init​(long index,
                  int degree)
        Initialize this cursor to point to the given index. The correct value for the index is highly implementation specific. The better way get initialize a cursor is through AdjacencyList.adjacencyCursor(long) or related.
      • size

        int size()
        Return how many targets can be decoded in total. This is equivalent to the degree.
      • hasNextVLong

        boolean hasNextVLong()
        Return true iff there is at least one more target to decode.
      • nextVLong

        long nextVLong()
        Read and decode the next target id. It is undefined behavior if this is called after hasNextVLong() returns false.
      • peekVLong

        long peekVLong()
        Decode and peek the next target id. Does not progress the internal cursor unlike nextVLong(). It is undefined behavior if this is called after hasNextVLong() returns false.
      • remaining

        int remaining()
        Return how many targets are still left to be decoded.
      • skipUntil

        long skipUntil​(long nodeId)
        Read and decode target ids until it is strictly larger than (>) the provided target. Might return an id that is less than or equal to target iff the cursor did exhaust before finding an id that is large enough. skipUntil(target) <= target can be used to distinguish the no-more-ids case and afterwards hasNextVLong() will return false
      • advance

        long advance​(long nodeId)
        Read and decode target ids until it is larger than or equal (>=) the provided target. Might return an id that is less than target iff the cursor did exhaust before finding an id that is large enough. advance(target) < target can be used to distinguish the no-more-ids case and afterwards hasNextVLong() will return false
      • shallowCopy

        @NotNull
        @NotNull AdjacencyCursor shallowCopy​(@Nullable
                                             @Nullable AdjacencyCursor destination)
        Create a shallow copy of this cursor. Iteration state is copied and will advance independently from this cursor. The underlying data might be shared between instances. If the provided destination argument is not null, it might be re-used instead of having to create a new instance. It is *not* guaranteed that the destination will be reused. If the destination is not if the same type than this cursor, the behavior of this method in undefined.
      • close

        void close()
        Specified by:
        close in interface java.lang.AutoCloseable
      • empty

        static AdjacencyCursor empty()
        Returns a cursor that is always empty.