| Index: graph_utils.h | 
| diff --git a/graph_utils.h b/graph_utils.h | 
| index fd602eabea22733ced86408bc22a9ee9bcb564d9..6f7b9a291aad4d84a4bc2761e09b0d8103b8b945 100644 | 
| --- a/graph_utils.h | 
| +++ b/graph_utils.h | 
| @@ -19,11 +19,43 @@ namespace graph_utils { | 
| // Returns the number of blocks represented by all extents in the edge. | 
| uint64_t EdgeWeight(const Graph& graph, const Edge& edge); | 
|  | 
| +// These add a read-before dependency from graph[src] -> graph[dst]. If the dep | 
| +// already exists, the block/s is/are added to the existing edge. | 
| +void AddReadBeforeDep(Vertex* src, | 
| +                      Vertex::Index dst, | 
| +                      uint64_t block); | 
| +void AddReadBeforeDepExtents(Vertex* src, | 
| +                             Vertex::Index dst, | 
| +                             const std::vector<Extent>& extents); | 
| + | 
| +void DropWriteBeforeDeps(Vertex::EdgeMap* edge_map); | 
| + | 
| +// For each node N in graph, drop all edges N->|index|. | 
| +void DropIncomingEdgesTo(Graph* graph, Vertex::Index index); | 
| + | 
| // block must either be the next block in the last extent or a block | 
| // in the next extent. This function will not handle inserting block | 
| // into an arbitrary place in the extents. | 
| void AppendBlockToExtents(std::vector<Extent>* extents, uint64_t block); | 
|  | 
| +// Get/SetElement are intentionally overloaded so that templated functions | 
| +// can accept either type of collection of Extents. | 
| +Extent GetElement(const std::vector<Extent>& collection, size_t index); | 
| +Extent GetElement( | 
| +    const google::protobuf::RepeatedPtrField<Extent>& collection, | 
| +    size_t index); | 
| + | 
| +template<typename T> | 
| +uint64_t BlocksInExtents(const T& collection) { | 
| +  uint64_t ret = 0; | 
| +  for (size_t i = 0; i < static_cast<size_t>(collection.size()); ++i) { | 
| +    ret += GetElement(collection, i).num_blocks(); | 
| +  } | 
| +  return ret; | 
| +} | 
| + | 
| +void DumpGraph(const Graph& graph); | 
| + | 
| }  // namespace graph_utils | 
|  | 
| }  // namespace chromeos_update_engine | 
|  |