[−][src]Trait sophia::graph::indexed::IndexedGraph
A utility trait for implementing Graph
and MutableGraph
based on an internal TermIndexMap
for efficient storage.
The impl_mutable_graph_for_indexed_graph!
macro
can be used to derive the MutableGraph
implementation
for any implementation of IndexedGraph
.
Associated Types
type Index: Copy + Eq + Hash
The type used to represent terms internally.
type TermData: TermData + 'static
Required methods
fn get_index<T>(&self, t: &Term<T>) -> Option<Self::Index> where
T: TermData,
T: TermData,
Return the index for the given term, if it exists.
fn get_term(&self, i: Self::Index) -> Option<&Term<Self::TermData>>
Return the term for the given index, if it exists.
fn insert_indexed<T, U, V>(
&mut self,
s: &Term<T>,
p: &Term<U>,
o: &Term<V>
) -> Option<[Self::Index; 3]> where
T: TermData,
U: TermData,
V: TermData,
&mut self,
s: &Term<T>,
p: &Term<U>,
o: &Term<V>
) -> Option<[Self::Index; 3]> where
T: TermData,
U: TermData,
V: TermData,
Insert a triple in this Graph, and return the corresponding tuple of indices.
fn remove_indexed<T, U, V>(
&mut self,
s: &Term<T>,
p: &Term<U>,
o: &Term<V>
) -> Option<[Self::Index; 3]> where
T: TermData,
U: TermData,
V: TermData,
&mut self,
s: &Term<T>,
p: &Term<U>,
o: &Term<V>
) -> Option<[Self::Index; 3]> where
T: TermData,
U: TermData,
V: TermData,
Remove a triple from this Graph, and return the corresponding tuple of indices.
fn shrink_to_fit(&mut self)
Implementors
impl<I> IndexedGraph for HashGraph<I> where
I: TermIndexMap,
I::Index: Hash,
<I::Factory as TermFactory>::TermData: 'static,
[src]
I: TermIndexMap,
I::Index: Hash,
<I::Factory as TermFactory>::TermData: 'static,
type Index = I::Index
type TermData = <I::Factory as TermFactory>::TermData
fn get_index<T>(&self, t: &Term<T>) -> Option<Self::Index> where
T: TermData,
[src]
T: TermData,
fn get_term(&self, i: Self::Index) -> Option<&Term<Self::TermData>>
[src]
fn insert_indexed<T, U, V>(
&mut self,
s: &Term<T>,
p: &Term<U>,
o: &Term<V>
) -> Option<[I::Index; 3]> where
T: TermData,
U: TermData,
V: TermData,
[src]
&mut self,
s: &Term<T>,
p: &Term<U>,
o: &Term<V>
) -> Option<[I::Index; 3]> where
T: TermData,
U: TermData,
V: TermData,
fn remove_indexed<T, U, V>(
&mut self,
s: &Term<T>,
p: &Term<U>,
o: &Term<V>
) -> Option<[I::Index; 3]> where
T: TermData,
U: TermData,
V: TermData,
[src]
&mut self,
s: &Term<T>,
p: &Term<U>,
o: &Term<V>
) -> Option<[I::Index; 3]> where
T: TermData,
U: TermData,
V: TermData,
fn shrink_to_fit(&mut self)
[src]
impl<T> IndexedGraph for OpsWrapper<T> where
T: IndexedGraph + for<'a> Graph<'a, Triple = [&'a Term<<T as IndexedGraph>::TermData>; 3]>,
[src]
T: IndexedGraph + for<'a> Graph<'a, Triple = [&'a Term<<T as IndexedGraph>::TermData>; 3]>,
type Index = T::Index
type TermData = T::TermData
fn get_index<U>(&self, t: &Term<U>) -> Option<Self::Index> where
U: TermData,
[src]
U: TermData,
fn get_term(&self, i: Self::Index) -> Option<&Term<Self::TermData>>
[src]
fn insert_indexed<U, V, W>(
&mut self,
s: &Term<U>,
p: &Term<V>,
o: &Term<W>
) -> Option<[Self::Index; 3]> where
U: TermData,
V: TermData,
W: TermData,
[src]
&mut self,
s: &Term<U>,
p: &Term<V>,
o: &Term<W>
) -> Option<[Self::Index; 3]> where
U: TermData,
V: TermData,
W: TermData,
fn remove_indexed<U, V, W>(
&mut self,
s: &Term<U>,
p: &Term<V>,
o: &Term<W>
) -> Option<[Self::Index; 3]> where
U: TermData,
V: TermData,
W: TermData,
[src]
&mut self,
s: &Term<U>,
p: &Term<V>,
o: &Term<W>
) -> Option<[Self::Index; 3]> where
U: TermData,
V: TermData,
W: TermData,
fn shrink_to_fit(&mut self)
[src]
impl<T> IndexedGraph for SpoWrapper<T> where
T: IndexedGraph + for<'a> Graph<'a, Triple = [&'a Term<<T as IndexedGraph>::TermData>; 3]>,
[src]
T: IndexedGraph + for<'a> Graph<'a, Triple = [&'a Term<<T as IndexedGraph>::TermData>; 3]>,
type Index = T::Index
type TermData = T::TermData
fn get_index<U>(&self, t: &Term<U>) -> Option<Self::Index> where
U: TermData,
[src]
U: TermData,
fn get_term(&self, i: Self::Index) -> Option<&Term<Self::TermData>>
[src]
fn insert_indexed<U, V, W>(
&mut self,
s: &Term<U>,
p: &Term<V>,
o: &Term<W>
) -> Option<[Self::Index; 3]> where
U: TermData,
V: TermData,
W: TermData,
[src]
&mut self,
s: &Term<U>,
p: &Term<V>,
o: &Term<W>
) -> Option<[Self::Index; 3]> where
U: TermData,
V: TermData,
W: TermData,
fn remove_indexed<U, V, W>(
&mut self,
s: &Term<U>,
p: &Term<V>,
o: &Term<W>
) -> Option<[Self::Index; 3]> where
U: TermData,
V: TermData,
W: TermData,
[src]
&mut self,
s: &Term<U>,
p: &Term<V>,
o: &Term<W>
) -> Option<[Self::Index; 3]> where
U: TermData,
V: TermData,
W: TermData,