Line data Source code
1 : /* 2 : * Copyright (c) 2013 Juniper Networks, Inc. All rights reserved. 3 : */ 4 : 5 : #include "db/db_graph_vertex.h" 6 : 7 : #include "db/db_graph.h" 8 : #include "db/db_graph_edge.h" 9 : 10 : using namespace boost; 11 : 12 3732471 : DBGraphVertex::adjacency_iterator::adjacency_iterator() 13 3732471 : : graph_(NULL) { 14 3732471 : } 15 : 16 1147063 : DBGraphVertex::adjacency_iterator::adjacency_iterator(DBGraph *graph, 17 1147063 : Vertex vertex) 18 1147063 : : graph_(graph) { 19 1147063 : boost::tie(iter_, end_) = adjacent_vertices(vertex, *graph_->graph()); 20 1147063 : } 21 : 22 3488923 : DBGraphVertex &DBGraphVertex::adjacency_iterator::dereference() const { 23 3488923 : Vertex adj = *iter_; 24 3488923 : return *(graph_->vertex_data(adj)); 25 : } 26 : 27 1458003 : DBGraphVertex::edge_iterator::edge_iterator() 28 1458003 : : graph_(NULL), vertex_(NULL) { 29 1458003 : } 30 : 31 361552 : DBGraphVertex::edge_iterator::edge_iterator(DBGraph *graph, 32 361552 : DBGraphVertex *vertex) 33 361552 : : graph_(graph), vertex_(vertex) { 34 361552 : boost::tie(iter_, end_) = out_edges(vertex->vertex(), *graph_->graph()); 35 361552 : } 36 : 37 1093469 : DBGraphEdge &DBGraphVertex::edge_iterator::dereference() const { 38 1093469 : Edge edge = *iter_; 39 2186938 : return *(graph_->edge_data(edge)); 40 : } 41 : 42 291954 : DBGraphVertex *DBGraphVertex::edge_iterator::target() const { 43 291954 : Edge descriptor = *iter_; 44 291954 : DBGraphEdge *edge = graph_->edge_data(descriptor); 45 291954 : DBGraphVertex *v_target = edge->target(graph_); 46 291954 : if (v_target == vertex_) { 47 114903 : return edge->source(graph_); 48 : } 49 177051 : return v_target; 50 : } 51 : 52 108386 : bool DBGraphVertex::HasAdjacencies(DBGraph *graph) const { 53 108386 : DBGraphBase::adjacency_iterator iter, end; 54 108386 : boost::tie(iter, end) = adjacent_vertices(vertex_id_, *graph->graph()); 55 216772 : return (iter != end); 56 : }