Class ArcLabelledImmutableGraph

  • All Implemented Interfaces:
    it.unimi.dsi.lang.FlyweightPrototype<ImmutableGraph>
    Direct Known Subclasses:
    ArcLabelledImmutableSequentialGraph, ArcRelabelledImmutableGraph, BitStreamArcLabelledImmutableGraph, UnionArcLabelledImmutableGraph

    public abstract class ArcLabelledImmutableGraph
    extends ImmutableGraph
    An abstract implementation of a graph labelled on its arcs.

    The main purpose of this class is that of override covariantly the return type of nodeIterator() and nodeIterator(long) so that it is an ArcLabelledNodeIterator, and the return type of all static load methods and of copy() so that it is an ArcLabelledImmutableGraph (the methods themselves just delegate to the corresponding method in ImmutableGraph).

    The only additional instance methods are labelBigArray(long) and prototype().

    Saving labels

    A subclass of this class may implement

    • store(ArcLabelledImmutableGraph, CharSequence, CharSequence, ProgressLogger);
    • store(ArcLabelledImmutableGraph, CharSequence, CharSequence).

    These methods must save the labels of the given arc-labelled graph using the first given character sequence as a basename, and a suitable property file using the second given basename. Note that the graph will not be saved—use the store() method of an ImmutableGraph implementation for that purpose.

    For istance, assuming g is an arc-labelled graph the idiomatic way of storing it on disk using BVGraph for the underlying graph and BitStreamArcLabelledImmutableGraph for the labels is

     BVGraph.store(g, "foo");
     BitStreamArcLabelledImmutableGraph.store(g, "bar", "foo");
     

    Underlying graphs

    Often, implementations of this class will just wrap an underlying graph (i.e., an instance of ImmutableGraph). In that case, we suggest that if the implementation uses property files the basename of the underlying graph is specified using the property key UNDERLYINGGRAPH_PROPERTY_KEY. If the basename must be generated starting from the arc-labelled graph basename, we suggest to just add at the end the string UNDERLYINGGRAPH_SUFFIX.

    • Field Detail

      • UNDERLYINGGRAPH_PROPERTY_KEY

        public static final java.lang.String UNDERLYINGGRAPH_PROPERTY_KEY
        The standard property key for the underlying graph. All implementations decorating with labels an underlying graph are strongly encouraged to use this property name to specify the basename of the underlying graph.
        See Also:
        Constant Field Values
      • UNDERLYINGGRAPH_SUFFIX

        public static final java.lang.String UNDERLYINGGRAPH_SUFFIX
        The standard suffix added to basenames in order to give a basename to the underlying graph, when needed.
        See Also:
        Constant Field Values
    • Constructor Detail

      • ArcLabelledImmutableGraph

        public ArcLabelledImmutableGraph()
    • Method Detail

      • copy

        public abstract ArcLabelledImmutableGraph copy()
        Description copied from class: ImmutableGraph
        Returns a flyweight copy of this immutable graph.
        Specified by:
        copy in interface it.unimi.dsi.lang.FlyweightPrototype<ImmutableGraph>
        Specified by:
        copy in class ImmutableGraph
        Returns:
        a flyweight copy of this immutable graph.
        See Also:
        FlyweightPrototype
      • prototype

        public abstract Label prototype()
        Returns a prototype of the labels used by this graph. The prototype can be used to produce new copies, but must not be modified by the caller.
        Returns:
        a prototype for the labels of this graph.
      • labelBigArray

        public Label[][] labelBigArray​(long x)
        Returns a reference to an array containing the labels of the arcs going out of a given node in the same order as the order in which the corresponding successors are returned by successors(long).

        The returned array may contain more entries than the outdegree of x. However, only those with indices from 0 (inclusive) to the outdegree of x (exclusive) contain valid data.

        Returns:
        an array whose first elements are the labels of the arcs going out of x; the array must not be modified by the caller.
        Implementation Specification:
        This implementation just unwrap the iterator returned by successors(long) and writes in a newly allocated array copies of the labels returned by ArcLabelledNodeIterator.LabelledArcIterator.label().
      • loadSequential

        @Deprecated
        public static ArcLabelledImmutableGraph loadSequential​(java.lang.CharSequence basename)
                                                        throws java.io.IOException
        Deprecated.
        Throws:
        java.io.IOException
      • loadSequential

        @Deprecated
        public static ArcLabelledImmutableGraph loadSequential​(java.lang.CharSequence basename,
                                                               it.unimi.dsi.logging.ProgressLogger pl)
                                                        throws java.io.IOException
        Deprecated.
        Throws:
        java.io.IOException
      • loadOffline

        public static ArcLabelledImmutableGraph loadOffline​(java.lang.CharSequence basename)
                                                     throws java.io.IOException
        Throws:
        java.io.IOException
      • loadOffline

        public static ArcLabelledImmutableGraph loadOffline​(java.lang.CharSequence basename,
                                                            it.unimi.dsi.logging.ProgressLogger pl)
                                                     throws java.io.IOException
        Throws:
        java.io.IOException
      • load

        public static ArcLabelledImmutableGraph load​(java.lang.CharSequence basename)
                                              throws java.io.IOException
        Throws:
        java.io.IOException
      • load

        public static ArcLabelledImmutableGraph load​(java.lang.CharSequence basename,
                                                     it.unimi.dsi.logging.ProgressLogger pl)
                                              throws java.io.IOException
        Throws:
        java.io.IOException
      • loadOnce

        public static ArcLabelledImmutableGraph loadOnce​(java.io.InputStream is)
                                                  throws java.io.IOException
        Throws:
        java.io.IOException
      • equals

        public boolean equals​(java.lang.Object x)
        Description copied from class: ImmutableGraph
        Compare this immutable graph to another object.
        Overrides:
        equals in class ImmutableGraph
        Returns:
        true iff the given object is an immutable graph of the same size, and the successor list of every node of this graph is equal to the successor list of the corresponding node of o.