21 #ifndef TULIP_SUPERGRAPHABSTRACT_H 22 #define TULIP_SUPERGRAPHABSTRACT_H 26 #include <tulip/Graph.h> 27 #include <tulip/DataSet.h> 31 #define GRAPH_SEQ std::vector<Graph *> 34 class PropertyManager;
38 class TLP_SCOPE GraphAbstract:
public Graph {
39 friend class PropertyManager;
41 GraphAbstract(Graph *supergraph,
unsigned int id);
43 virtual ~GraphAbstract();
45 virtual Graph *addSubGraph(BooleanProperty *selection=NULL,
46 const std::string& name =
"unnamed");
49 Graph *addSubGraph(
unsigned int id,
50 BooleanProperty *selection=NULL,
51 const std::string& name =
"");
52 virtual void delSubGraph(Graph *);
53 virtual void delAllSubGraphs(Graph *);
54 virtual Graph* getSuperGraph()
const;
55 virtual Graph* getRoot()
const;
57 virtual bool isSubGraph(
const Graph* sg)
const;
58 virtual bool isDescendantGraph(
const Graph* sg)
const;
59 virtual Graph* getSubGraph(
unsigned int id)
const;
60 virtual Graph* getSubGraph(
const std::string& name)
const;
61 virtual Graph* getDescendantGraph(
unsigned int id)
const;
62 virtual Graph* getDescendantGraph(
const std::string &name)
const;
63 virtual Graph *getNthSubGraph(
unsigned int n)
const;
64 virtual unsigned int numberOfSubGraphs()
const;
65 virtual unsigned int numberOfDescendantGraphs()
const;
68 virtual unsigned int deg(
const node)
const;
69 virtual unsigned int indeg(
const node)
const;
70 virtual unsigned int outdeg(
const node)
const;
71 virtual bool isMetaNode(
const node)
const;
72 virtual Graph* getNodeMetaInfo(
const node)
const;
73 virtual void delNodes(
Iterator<node>* itN,
bool deleteInAllGraphs);
74 virtual node source(
const edge)
const;
75 virtual void setSource(
const edge,
const node);
76 virtual node target(
const edge)
const;
77 virtual void setTarget(
const edge,
const node);
78 virtual const std::pair<node, node>& ends(
const edge)
const;
79 virtual void setEnds(
const edge,
const node,
const node);
80 virtual node opposite(
const edge,
const node)
const;
81 virtual void reverse(
const edge);
82 virtual bool isMetaEdge(
const edge)
const;
84 virtual void delEdges(
Iterator<edge>* itE,
bool deleteInAllGraphs =
false);
86 virtual node getOneNode()
const;
87 virtual node getRandomNode()
const;
88 virtual node getInNode(
const node,
unsigned int )
const;
89 virtual node getOutNode(
const node,
unsigned int )
const;
90 virtual edge getOneEdge()
const;
91 virtual edge getRandomEdge()
const;
92 virtual unsigned int numberOfNodes()
const;
93 virtual unsigned int numberOfEdges()
const;
95 bool existProperty(
const std::string&)
const;
96 bool existLocalProperty(
const std::string&)
const;
97 void delLocalProperty(
const std::string&);
98 void addLocalProperty(
const std::string &name, PropertyInterface *prop);
105 PropertyInterface* getProperty(
const std::string &)
const;
108 GraphProperty* getMetaGraphProperty();
110 virtual void setName(
const std::string &name);
111 virtual std::string getName()
const;
117 DataSet& getNonConstAttributes();
118 void setSuperGraph(Graph *);
119 PropertyManager *propertyContainer;
120 const std::set<edge>& getReferencedEdges(
const edge)
const;
122 virtual bool renameLocalProperty(PropertyInterface *prop,
123 const std::string& newName);
126 virtual void clearSubGraphs();
127 virtual void removeSubGraph(Graph*);
128 virtual void restoreSubGraph(Graph*);
129 virtual void setSubGraphToKeep(Graph*);
136 Graph* subGraphToKeep;
138 GraphProperty* metaGraphProperty;
140 void notifyBeforeAddInheritedProperty(
const std::string& prop);
141 void notifyAddInheritedProperty(
const std::string& prop);
142 void notifyBeforeDelInheritedProperty(
const std::string& prop);
143 void notifyAfterDelInheritedProperty(
const std::string& prop);
145 void notifyBeforeRenameLocalProperty(PropertyInterface* prop,
146 const std::string& newName);
147 void notifyAfterRenameLocalProperty(PropertyInterface* prop,
148 const std::string& oldName);
Interface for Tulip iterators. Allows basic iteration operations only.