public class GraphClass<Id,Node> extends ValueMixin implements Graph<Id,Node>
Constructor and Description |
---|
GraphClass(IdGraph<Id> idGraph,
com.google.common.collect.ImmutableBiMap<Id,Node> id__node,
boolean allowPartial) |
Modifier and Type | Method and Description |
---|---|
boolean |
add(Node e)
Deprecated.
|
boolean |
addAll(Collection<? extends Node> c)
Deprecated.
|
IdGraph<Id> |
ancestorIdGraph(Id id,
boolean inclusive)
Getting an id's ancestor id graph (its, parents' parents, and so on).
|
IdGraph<Id> |
ancestorIdGraph(Set<Id> ids,
boolean inclusive)
Getting an id set's ancestor id graph (their parents, parents' parents, and so on).
|
Iterable<Id> |
ancestorIdIterable(Id id,
boolean inclusive)
Getting an id's ancestor id iterable (its parents, parents' parents, and so on).
|
Iterable<Id> |
ancestorIdIterable(Set<Id> ids,
boolean inclusive)
Getting an id set's ancestor id iterable (their parents, parents' parents, and so on).
|
com.google.common.collect.ImmutableSet<Id> |
ancestorIdSet(Id id,
boolean inclusive)
Getting an id's ancestor id set (its parents, parents' parents, and so on).
|
com.google.common.collect.ImmutableSet<Id> |
ancestorIdSet(Set<Id> ids,
boolean inclusive)
Getting an id set's ancestor id set (their parents, parents' parents, and so on).
|
Iterable<Node> |
ancestorNodeIterable(Id id,
boolean inclusive)
Getting an id's ancestor node iterable (its parents, parents' parents, and so on).
|
Iterable<Node> |
ancestorNodeIterable(Set<Id> ids,
boolean inclusive)
Getting an id set's ancestor node iterable (their parents, parents' parents, and so on).
|
com.google.common.collect.ImmutableSet<Node> |
ancestorNodeSet(Id id,
boolean inclusive)
Getting an id's ancestor node set (its parents, parents' parents, and so on).
|
com.google.common.collect.ImmutableSet<Node> |
ancestorNodeSet(Set<Id> ids,
boolean inclusive)
Getting an id set's ancestor node set (their parents, parents' parents, and so on).
|
void |
assertIdsEqual(Id[] ids)
Assert that a graph contains exactly these ids.
|
void |
assertIdsEqual(com.google.common.collect.ImmutableSet<Id> ids)
Assert that a graph contains exactly these ids.
|
com.google.common.collect.ImmutableSet<Id> |
childIdSet(Id id)
Getting an id's child ids.
|
com.google.common.collect.ImmutableSet<Node> |
childNodeSet(Id id)
Getting an id's child node set.
|
void |
clear()
Deprecated.
|
boolean |
contains(Object o) |
boolean |
containsAll(Collection<?> c) |
boolean |
containsCycle()
Whether the digraph contains a cycle.
|
boolean |
containsNodeForId(Id id)
Whether a node is associated with this id.
|
IdGraph<Id> |
descendantIdGraph(Id id,
boolean inclusive)
Getting an id's descendant id graph (its children, childrens' children, and so on).
|
IdGraph<Id> |
descendantIdGraph(Set<Id> ids,
boolean inclusive)
Getting an id set's descendant id graph (their children, childrens' children, and so on).
|
Iterable<Id> |
descendantIdIterable(Id id,
boolean inclusive)
Getting an id's descendant id iterable (its children, childrens' children, and so on).
|
Iterable<Id> |
descendantIdIterable(Set<Id> ids,
boolean inclusive)
Getting an id set's descendant id iterable (their children, childrens' children, and so on).
|
com.google.common.collect.ImmutableSet<Id> |
descendantIdSet(Id id,
boolean inclusive)
Getting an id's descendant id set (its children, childrens' children, and so on).
|
com.google.common.collect.ImmutableSet<Id> |
descendantIdSet(Set<Id> ids,
boolean inclusive)
Getting an id set's descendant id set (their children, childrens' children, and so on).
|
Iterable<Node> |
descendantNodeIterable(Id id,
boolean inclusive)
Getting an id's descendant node iterable (its children, childrens' children, and so on).
|
Iterable<Node> |
descendantNodeIterable(Set<Id> ids,
boolean inclusive)
Getting an id set's descendant node iterable (their children, childrens' children, and so on).
|
com.google.common.collect.ImmutableSet<Node> |
descendantNodeSet(Id id,
boolean inclusive)
Getting an id's descendant node set (its children, childrens' children, and so on).
|
com.google.common.collect.ImmutableSet<Node> |
descendantNodeSet(Set<Id> ids,
boolean inclusive)
Getting an id set's descendant node set (their children, childrens' children, and so on).
|
Object[] |
fields()
An array of alternating field names and field values.
|
IdGraph<Id> |
filterIdGraph(Set<Id> ids)
Filter a graph by only keep the specified ids and arcs between these ids.
|
Id |
getId(Node node)
Getting the id associated with a node.
|
Node |
getNode(Id id)
Getting the node associated with an id.
|
com.google.common.collect.ImmutableSetMultimap<Id,Id> |
id__childIds()
The mapping from id to child ids.
|
com.google.common.collect.ImmutableBiMap<Id,Node> |
id__node()
The mapping between id and node.
|
com.google.common.collect.ImmutableSetMultimap<Id,Id> |
id__parentIds()
The mapping from id to parent ids.
|
IdGraph<Id> |
idGraph()
The internal id graph.
|
com.google.common.collect.ImmutableSet<Id> |
idSet()
The set of ids.
|
int |
idSize()
The number of ids.
|
boolean |
isAncestorOf(Id id,
Id potentialDescendant,
boolean inclusive)
Whether an id is a ancestor of another id.
|
boolean |
isChildOf(Id id,
Id potentialParent)
Whether an id is a child of another id.
|
boolean |
isDescendantOf(Id id,
Id potentialAncestor,
boolean inclusive)
Whether an id is a descendant of another id.
|
boolean |
isEmpty() |
boolean |
isLeaf(Id id)
Is an id a leaf?
|
boolean |
isParentOf(Id id,
Id potentialChild)
Whether an id is a parent of another id.
|
boolean |
isRoot(Id id)
Is an id a root?
|
Iterator<Node> |
iterator() |
com.google.common.collect.ImmutableSet<Id> |
leafIdSet()
The digraph's leaf (sink) ids, so the ids without children.
|
com.google.common.collect.ImmutableSet<Node> |
leafNodeSet()
The digraph's leaf (sink) nodes, so the nodes without children.
|
com.google.common.collect.ImmutableSet<Node> |
nodeSet()
An ImmutableSet of nodes (note that Graph also implements Set<Node>).
|
int |
nodeSize()
The size of the node set, will be small than idSize() in partial graphs.
|
com.google.common.base.Optional<com.google.common.collect.ImmutableList<Id>> |
optionalTopsortIdList()
A topologically sorted list of ids, with roots (sources) first (will be absent if the digraph
is cyclic).
|
com.google.common.base.Optional<com.google.common.collect.ImmutableList<Node>> |
optionalTopsortNodeList()
A topologically sorted list of nodes, with roots (sources) first (will be absent if the digraph
is cyclic).
|
com.google.common.collect.ImmutableSet<Id> |
parentIdSet(Id id)
Getting an id's parent ids.
|
com.google.common.collect.ImmutableSet<Node> |
parentNodeSet(Id id)
Getting an id's parent node set.
|
boolean |
remove(Object o)
Deprecated.
|
boolean |
removeAll(Collection<?> c)
Deprecated.
|
boolean |
retainAll(Collection<?> c)
Deprecated.
|
com.google.common.collect.ImmutableSet<Id> |
rootIdSet()
The digraph's root (source) ids, so the ids without parents.
|
com.google.common.collect.ImmutableSet<Node> |
rootNodeSet()
The digraph's root (source) nodes, so the nodes without parents.
|
int |
size() |
Object[] |
toArray() |
<T> T[] |
toArray(T[] a) |
Iterable<Node> |
transformIterable(Iterable<Id> idIterable)
Converting an id iterable to a node iterable.
|
Iterable<Node> |
transformIterable(Iterable<Id> idIterable,
boolean skipMissingNodes)
Converting an id iterable to a node iterable.
|
Iterator<Node> |
transformIterator(Iterator<Id> idIterator)
Converting an id iterator to a node iterator.
|
Iterator<Node> |
transformIterator(Iterator<Id> idIterator,
boolean skipMissingNodes)
Converting an id iterator to a node iterator.
|
com.google.common.collect.ImmutableList<Node> |
transformList(Iterable<Id> ids)
Converting ids to a node list.
|
com.google.common.collect.ImmutableList<Node> |
transformList(Iterable<Id> ids,
boolean skipMissingNodes)
Converting ids to a node list.
|
com.google.common.base.Optional<Node> |
transformOptional(com.google.common.base.Optional<Id> id)
Converting optional id to an optional node.
|
com.google.common.base.Optional<Node> |
transformOptional(com.google.common.base.Optional<Id> optionalId,
boolean skipMissingNode)
Converting optional id to an optional node.
|
com.google.common.collect.ImmutableSet<Node> |
transformSet(Iterable<Id> ids)
Converting ids to a node set.
|
com.google.common.collect.ImmutableSet<Node> |
transformSet(Iterable<Id> ids,
boolean skipMissingNodes)
Converting ids to a node set.
|
Iterable<Id> |
traverseIdIterable(boolean depthFirst,
boolean inclusive,
Id startId,
LambdaLib.Fn1<Id,List<Id>> expand)
Generic id traversal as an iterable.
|
Iterable<Id> |
traverseIdIterable(boolean depthFirst,
boolean inclusive,
com.google.common.collect.ImmutableList<Id> startIds,
LambdaLib.Fn1<Id,List<Id>> expand)
Generic id traversal as an iterable.
|
com.google.common.collect.ImmutableList<Id> |
traverseIdList(boolean depthFirst,
boolean inclusive,
Id startId,
LambdaLib.Fn1<Id,List<Id>> expand)
Generic id traversal copied into a list.
|
com.google.common.collect.ImmutableList<Id> |
traverseIdList(boolean depthFirst,
boolean inclusive,
com.google.common.collect.ImmutableList<Id> startIds,
LambdaLib.Fn1<Id,List<Id>> expand)
Generic id traversal copied into a list.
|
Iterable<Node> |
traverseNodeIterable(boolean depthFirst,
boolean inclusive,
Id startId,
LambdaLib.Fn1<Node,List<Id>> expand)
Generic node traversal as an iterable.
|
Iterable<Node> |
traverseNodeIterable(boolean depthFirst,
boolean inclusive,
com.google.common.collect.ImmutableList<Id> startIds,
LambdaLib.Fn1<Node,List<Id>> expand)
Generic node traversal as an iterable.
|
com.google.common.collect.ImmutableList<Node> |
traverseNodeList(boolean depthFirst,
boolean inclusive,
Id startId,
LambdaLib.Fn1<Node,List<Id>> expand)
Generic node traversal copied into a list.
|
com.google.common.collect.ImmutableList<Node> |
traverseNodeList(boolean depthFirst,
boolean inclusive,
com.google.common.collect.ImmutableList<Id> startIds,
LambdaLib.Fn1<Node,List<Id>> expand)
Generic node traversal copied into a list.
|
com.google.common.collect.ImmutableSet<Id> |
unboundIdSet()
The ids in the idGraph which don't have associated nodes in id__node.
|
equals, hashCode, isEntity
array, objectHelper, toString
public Object[] fields()
ObjectMixin
fields
in class ObjectMixin
public IdGraph<Id> idGraph()
PartialGraph
idGraph
in interface PartialGraph<Id,Node>
public com.google.common.collect.ImmutableSet<Id> idSet()
IdGraph
public int idSize()
IdGraph
public void assertIdsEqual(com.google.common.collect.ImmutableSet<Id> ids)
IdGraph
assertIdsEqual
in interface IdGraph<Id>
public void assertIdsEqual(Id[] ids)
IdGraph
assertIdsEqual
in interface IdGraph<Id>
public IdGraph<Id> filterIdGraph(Set<Id> ids)
IdGraph
filterIdGraph
in interface IdGraph<Id>
public com.google.common.collect.ImmutableSet<Node> nodeSet()
PartialGraph
nodeSet
in interface PartialGraph<Id,Node>
public int nodeSize()
PartialGraph
nodeSize
in interface PartialGraph<Id,Node>
public com.google.common.collect.ImmutableBiMap<Id,Node> id__node()
PartialGraph
id__node
in interface PartialGraph<Id,Node>
public boolean containsNodeForId(Id id)
PartialGraph
containsNodeForId
in interface PartialGraph<Id,Node>
public Id getId(Node node)
PartialGraph
getId
in interface PartialGraph<Id,Node>
public Node getNode(Id id)
PartialGraph
getNode
in interface PartialGraph<Id,Node>
public com.google.common.collect.ImmutableSet<Id> unboundIdSet()
PartialGraph
unboundIdSet
in interface PartialGraph<Id,Node>
public boolean isParentOf(Id id, Id potentialChild)
IdGraph
isParentOf
in interface IdGraph<Id>
public com.google.common.collect.ImmutableSetMultimap<Id,Id> id__parentIds()
IdGraph
id__parentIds
in interface IdGraph<Id>
public com.google.common.collect.ImmutableSet<Id> parentIdSet(Id id)
IdGraph
parentIdSet
in interface IdGraph<Id>
public com.google.common.collect.ImmutableSet<Node> parentNodeSet(Id id)
Graph
parentNodeSet
in interface Graph<Id,Node>
public boolean isChildOf(Id id, Id potentialParent)
IdGraph
public com.google.common.collect.ImmutableSetMultimap<Id,Id> id__childIds()
IdGraph
id__childIds
in interface IdGraph<Id>
public com.google.common.collect.ImmutableSet<Id> childIdSet(Id id)
IdGraph
childIdSet
in interface IdGraph<Id>
public com.google.common.collect.ImmutableSet<Node> childNodeSet(Id id)
Graph
childNodeSet
in interface Graph<Id,Node>
public boolean isAncestorOf(Id id, Id potentialDescendant, boolean inclusive)
IdGraph
isAncestorOf
in interface IdGraph<Id>
public Iterable<Id> ancestorIdIterable(Id id, boolean inclusive)
IdGraph
ancestorIdIterable
in interface IdGraph<Id>
public Iterable<Id> ancestorIdIterable(Set<Id> ids, boolean inclusive)
IdGraph
ancestorIdIterable
in interface IdGraph<Id>
public com.google.common.collect.ImmutableSet<Id> ancestorIdSet(Id id, boolean inclusive)
IdGraph
ancestorIdSet
in interface IdGraph<Id>
public com.google.common.collect.ImmutableSet<Id> ancestorIdSet(Set<Id> ids, boolean inclusive)
IdGraph
ancestorIdSet
in interface IdGraph<Id>
public IdGraph<Id> ancestorIdGraph(Id id, boolean inclusive)
IdGraph
ancestorIdGraph
in interface IdGraph<Id>
public IdGraph<Id> ancestorIdGraph(Set<Id> ids, boolean inclusive)
IdGraph
ancestorIdGraph
in interface IdGraph<Id>
public Iterable<Node> ancestorNodeIterable(Id id, boolean inclusive)
Graph
ancestorNodeIterable
in interface Graph<Id,Node>
public Iterable<Node> ancestorNodeIterable(Set<Id> ids, boolean inclusive)
Graph
ancestorNodeIterable
in interface Graph<Id,Node>
public com.google.common.collect.ImmutableSet<Node> ancestorNodeSet(Id id, boolean inclusive)
Graph
ancestorNodeSet
in interface Graph<Id,Node>
public com.google.common.collect.ImmutableSet<Node> ancestorNodeSet(Set<Id> ids, boolean inclusive)
Graph
ancestorNodeSet
in interface Graph<Id,Node>
public boolean isDescendantOf(Id id, Id potentialAncestor, boolean inclusive)
IdGraph
isDescendantOf
in interface IdGraph<Id>
public Iterable<Id> descendantIdIterable(Id id, boolean inclusive)
IdGraph
descendantIdIterable
in interface IdGraph<Id>
public com.google.common.collect.ImmutableSet<Id> descendantIdSet(Id id, boolean inclusive)
IdGraph
descendantIdSet
in interface IdGraph<Id>
public Iterable<Id> descendantIdIterable(Set<Id> ids, boolean inclusive)
IdGraph
descendantIdIterable
in interface IdGraph<Id>
public com.google.common.collect.ImmutableSet<Id> descendantIdSet(Set<Id> ids, boolean inclusive)
IdGraph
descendantIdSet
in interface IdGraph<Id>
public IdGraph<Id> descendantIdGraph(Id id, boolean inclusive)
IdGraph
descendantIdGraph
in interface IdGraph<Id>
public IdGraph<Id> descendantIdGraph(Set<Id> ids, boolean inclusive)
IdGraph
descendantIdGraph
in interface IdGraph<Id>
public Iterable<Node> descendantNodeIterable(Id id, boolean inclusive)
Graph
descendantNodeIterable
in interface Graph<Id,Node>
public Iterable<Node> descendantNodeIterable(Set<Id> ids, boolean inclusive)
Graph
descendantNodeIterable
in interface Graph<Id,Node>
public com.google.common.collect.ImmutableSet<Node> descendantNodeSet(Id id, boolean inclusive)
Graph
descendantNodeSet
in interface Graph<Id,Node>
public com.google.common.collect.ImmutableSet<Node> descendantNodeSet(Set<Id> ids, boolean inclusive)
Graph
descendantNodeSet
in interface Graph<Id,Node>
public com.google.common.collect.ImmutableSet<Id> rootIdSet()
IdGraph
public com.google.common.collect.ImmutableSet<Node> rootNodeSet()
Graph
rootNodeSet
in interface Graph<Id,Node>
public com.google.common.collect.ImmutableSet<Id> leafIdSet()
IdGraph
public com.google.common.collect.ImmutableSet<Node> leafNodeSet()
Graph
leafNodeSet
in interface Graph<Id,Node>
public boolean containsCycle()
IdGraph
containsCycle
in interface IdGraph<Id>
public com.google.common.base.Optional<com.google.common.collect.ImmutableList<Id>> optionalTopsortIdList()
IdGraph
optionalTopsortIdList
in interface IdGraph<Id>
public com.google.common.base.Optional<com.google.common.collect.ImmutableList<Node>> optionalTopsortNodeList()
Graph
optionalTopsortNodeList
in interface Graph<Id,Node>
public Iterable<Id> traverseIdIterable(boolean depthFirst, boolean inclusive, com.google.common.collect.ImmutableList<Id> startIds, LambdaLib.Fn1<Id,List<Id>> expand)
IdGraph
traverseIdIterable
in interface IdGraph<Id>
depthFirst
- Whether to traverse depth first or breadth first.inclusive
- Whether to include the start ids in the traversal.startIds
- The initial id list.expand
- A function mapping an id to the next ids.public Iterable<Id> traverseIdIterable(boolean depthFirst, boolean inclusive, Id startId, LambdaLib.Fn1<Id,List<Id>> expand)
IdGraph
traverseIdIterable
in interface IdGraph<Id>
depthFirst
- Whether to traverse depth first or breadth first.inclusive
- Whether to include the start ids in the traversal.startId
- The initial id.expand
- A function mapping an id to the next ids.public com.google.common.collect.ImmutableList<Id> traverseIdList(boolean depthFirst, boolean inclusive, com.google.common.collect.ImmutableList<Id> startIds, LambdaLib.Fn1<Id,List<Id>> expand)
IdGraph
traverseIdList
in interface IdGraph<Id>
depthFirst
- Whether to traverse depth first or breadth first.inclusive
- Whether to include the start ids in the traversal.startIds
- The initial id list.expand
- A function mapping an id to the next ids.public com.google.common.collect.ImmutableList<Id> traverseIdList(boolean depthFirst, boolean inclusive, Id startId, LambdaLib.Fn1<Id,List<Id>> expand)
IdGraph
traverseIdList
in interface IdGraph<Id>
depthFirst
- Whether to traverse depth first or breadth first.inclusive
- Whether to include the start ids in the traversal.expand
- A function mapping an id to the next ids.public Iterable<Node> traverseNodeIterable(boolean depthFirst, boolean inclusive, Id startId, LambdaLib.Fn1<Node,List<Id>> expand)
Graph
traverseNodeIterable
in interface Graph<Id,Node>
depthFirst
- Whether to traverse depth first or breadth first.inclusive
- Whether to include the start nodes in the traversal.startId
- The initial id.expand
- A function mapping a node to the next ids.public Iterable<Node> traverseNodeIterable(boolean depthFirst, boolean inclusive, com.google.common.collect.ImmutableList<Id> startIds, LambdaLib.Fn1<Node,List<Id>> expand)
Graph
traverseNodeIterable
in interface Graph<Id,Node>
depthFirst
- Whether to traverse depth first or breadth first.inclusive
- Whether to include the start nodes in the traversal.startIds
- The initial id list.expand
- A function mapping a node to the next ids.public com.google.common.collect.ImmutableList<Node> traverseNodeList(boolean depthFirst, boolean inclusive, Id startId, LambdaLib.Fn1<Node,List<Id>> expand)
Graph
traverseNodeList
in interface Graph<Id,Node>
depthFirst
- Whether to traverse depth first or breadth first.inclusive
- Whether to include the start nodes in the traversal.expand
- A function mapping a node to the next ids.public com.google.common.collect.ImmutableList<Node> traverseNodeList(boolean depthFirst, boolean inclusive, com.google.common.collect.ImmutableList<Id> startIds, LambdaLib.Fn1<Node,List<Id>> expand)
Graph
traverseNodeList
in interface Graph<Id,Node>
depthFirst
- Whether to traverse depth first or breadth first.inclusive
- Whether to include the start nodes in the traversal.startIds
- The initial id list.expand
- A function mapping a node to the next ids.public com.google.common.collect.ImmutableSet<Node> transformSet(Iterable<Id> ids)
Graph
transformSet
in interface Graph<Id,Node>
public com.google.common.collect.ImmutableSet<Node> transformSet(Iterable<Id> ids, boolean skipMissingNodes)
PartialGraph
transformSet
in interface PartialGraph<Id,Node>
public com.google.common.collect.ImmutableList<Node> transformList(Iterable<Id> ids)
Graph
transformList
in interface Graph<Id,Node>
public com.google.common.collect.ImmutableList<Node> transformList(Iterable<Id> ids, boolean skipMissingNodes)
PartialGraph
transformList
in interface PartialGraph<Id,Node>
public com.google.common.base.Optional<Node> transformOptional(com.google.common.base.Optional<Id> id)
Graph
transformOptional
in interface Graph<Id,Node>
public com.google.common.base.Optional<Node> transformOptional(com.google.common.base.Optional<Id> optionalId, boolean skipMissingNode)
PartialGraph
transformOptional
in interface PartialGraph<Id,Node>
public Iterable<Node> transformIterable(Iterable<Id> idIterable)
Graph
transformIterable
in interface Graph<Id,Node>
public Iterable<Node> transformIterable(Iterable<Id> idIterable, boolean skipMissingNodes)
PartialGraph
transformIterable
in interface PartialGraph<Id,Node>
public Iterator<Node> transformIterator(Iterator<Id> idIterator)
Graph
transformIterator
in interface Graph<Id,Node>
public Iterator<Node> transformIterator(Iterator<Id> idIterator, boolean skipMissingNodes)
PartialGraph
transformIterator
in interface PartialGraph<Id,Node>
public int size()
public boolean isEmpty()
public boolean contains(Object o)
public Object[] toArray()
public <T> T[] toArray(T[] a)
public boolean containsAll(Collection<?> c)
containsAll
in interface Collection<Node>
containsAll
in interface Set<Node>
@Deprecated public boolean add(Node e)
PartialGraph
add
in interface PartialGraph<Id,Node>
add
in interface Collection<Node>
add
in interface Set<Node>
@Deprecated public boolean remove(Object o)
PartialGraph
remove
in interface PartialGraph<Id,Node>
remove
in interface Collection<Node>
remove
in interface Set<Node>
@Deprecated public boolean addAll(Collection<? extends Node> c)
PartialGraph
addAll
in interface PartialGraph<Id,Node>
addAll
in interface Collection<Node>
addAll
in interface Set<Node>
@Deprecated public boolean retainAll(Collection<?> c)
PartialGraph
retainAll
in interface PartialGraph<Id,Node>
retainAll
in interface Collection<Node>
retainAll
in interface Set<Node>
@Deprecated public boolean removeAll(Collection<?> c)
PartialGraph
removeAll
in interface PartialGraph<Id,Node>
removeAll
in interface Collection<Node>
removeAll
in interface Set<Node>
@Deprecated public void clear()
PartialGraph
clear
in interface PartialGraph<Id,Node>
clear
in interface Collection<Node>
clear
in interface Set<Node>
Copyright © 2014. All rights reserved.