---
name: "tlp_Graph"
section: "3tulip"
platform: "linux"
package: "tulip-doc"
version: "3.1.2-2.3"
release: "Debian 6.0 (Squeeze)"
platforms: ["linux"]
url: "https://new.carta.tech/tlp_Graph"
---

# tlp\_Graph(3tulip)

Interface for a graph.

## NAME

tlp::Graph -

Interface for a graph.

## SYNOPSIS

`#include <Graph.h>`

Inherits **tlp::Observable**, and **tlp::ObservableGraph**.

### Public Member Functions

**Graph** ()\
 virtual **~Graph** ()\
 virtual void **clear** ()=0\
 virtual **Graph** \* **addSubGraph** (**BooleanProperty** \*selection=0)=0\
 virtual void **delSubGraph** (**Graph** \*)=0\
 virtual void **delAllSubGraphs** (**Graph** \*)=0\
 virtual **Graph** \* **getSuperGraph** () const =0\
 **Graph** \* **getFather** () const \
 virtual **Graph** \* **getRoot** () const =0\
 virtual void **setSuperGraph** (**Graph** \*)=0\
 void **setFather** (**Graph** \*sg)\
 virtual **Iterator**\< **Graph** \* \> \* **getSubGraphs** () const =0\
 virtual **node** **addNode** ()=0\
 virtual void **addNode** (const **node**)=0\
 virtual void **delNode** (const **node**)=0\
 virtual void **delAllNode** (const **node**)=0\
 virtual **edge** **addEdge** (const **node**, const **node**)=0\
 virtual void **addEdge** (const **edge**)=0\
 virtual void **delEdge** (const **edge**)=0\
 virtual void **delAllEdge** (const **edge**)=0\
 virtual void **setEdgeOrder** (const **node**, const std::vector\< **edge** \> &)=0\
 virtual void **swapEdgeOrder** (const **node**, const **edge**, const **edge**)=0\
 virtual void **reverse** (const **edge**)=0\
 virtual **node** **getOneNode** () const =0\
 *Return an existing node of the graph.*  virtual **Iterator**\< **node** \> \* **getNodes** () const =0\
 *Return an iterator on the nodes.*  virtual **node** **getInNode** (const **node**, unsigned int) const =0\
 *Return the ith successor of a node.*  virtual **Iterator**\< **node** \> \* **getInNodes** (const **node**) const =0\
 *Return an iterator on the predecessors of a node.*  virtual **node** **getOutNode** (const **node**, unsigned int) const =0\
 *Return the ith predecessor of a node.*  virtual **Iterator**\< **node** \> \* **getOutNodes** (const **node**) const =0\
 *Return an iterator on the successors of a node.*  virtual **Iterator**\< **node** \> \* **getInOutNodes** (const **node**) const =0\
 *Return an iterator on the neighbours of a node.*  virtual **Graph** \* **getNodeMetaInfo** (const **node**) const =0\
 *Returns the underlying graph of a meta node.*  virtual **Iterator**\< **edge** \> \* **getEdges** () const =0\
 *Return an iterator on the edges.*  virtual **edge** **getOneEdge** () const =0\
 *Return an existing edge of the graph.*  virtual **Iterator**\< **edge** \> \* **getOutEdges** (const **node**) const =0\
 *Return an iterator on the out-edges of a node.*  virtual **Iterator**\< **edge** \> \* **getInOutEdges** (const **node**) const =0\
 *Return an iterator on the in-out-edges of a node.*  virtual **Iterator**\< **edge** \> \* **getInEdges** (const **node**) const =0\
 *Return an iterator on the in--edges of a node.*  virtual **Iterator**\< **edge** \> \* **getEdgeMetaInfo** (const **edge**) const =0\
 *Return an iterator on the underlying edges of a meta edge.*  int **getId** () const \
 *Return the graph's id, this id is unique.*  virtual unsigned int **numberOfNodes** () const =0\
 *Return the number of nodes in the graph.*  virtual unsigned int **numberOfEdges** () const =0\
 *Return the number of edges in the graph.*  virtual unsigned int **deg** (const **node**) const =0\
 *Return degree of a node.*  virtual unsigned int **indeg** (const **node**) const =0\
 *Return indegree of a node.*  virtual unsigned int **outdeg** (const **node**) const =0\
 *Return outdegree of a node.*  virtual **node** **source** (const **edge**) const =0\
 *Return the source of the edge.*  virtual **node** **target** (const **edge**) const =0\
 *Return the target of the edge.*  virtual **node** **opposite** (const **edge**, const **node**) const =0\
 *Return the opposite node for s in the edge e.*  virtual bool **isElement** (const **node**) const =0\
 *Return true if the node is element of the graph.*  virtual bool **isMetaNode** (const **node**) const =0\
 *Return true if the node is a meta node.*  virtual bool **isElement** (const **edge**) const =0\
 *Return true if the edge is element of the graph.*  virtual bool **isMetaEdge** (const **edge**) const =0\
 *Return true if the edge is a meta edge.*  virtual **edge** **existEdge** (const **node**, const **node**) const =0\
 virtual **DataSet** & **getAttributes** ()=0\
 *Return graph attributes.*  template\<typename ATTRIBUTETYPE \> bool **getAttribute** (const std::string &name, ATTRIBUTETYPE &value)\
 template\<typename ATTRIBUTETYPE \> ATTRIBUTETYPE **getAttribute** (const std::string &name)\
 *deprecated version of the previous method*  template\<typename ATTRIBUTETYPE \> void **setAttribute** (const std::string &name, const ATTRIBUTETYPE &value)\
 *Set an attribute of the graph.*  void **removeAttribute** (const std::string &name)\
 *remove an existing attribute*  bool **attributeExist** (const std::string &name)\
 *return if the attribute exist*  virtual void **addLocalProperty** (const std::string &name, **PropertyInterface** \*prop)=0\
 template\<typename Proxytype \> Proxytype \* **getLocalProperty** (const std::string &name)\
 template\<typename Proxytype \> bool **computeProperty** (const std::string &algorithm, Proxytype result, std::string &msg, **PluginProgress** \*progress=0, **DataSet** \*data=0)\
 template\<typename Proxytype \> Proxytype \* **getProperty** (const std::string &name)\
 virtual **PropertyInterface** \* **getProperty** (const std::string &name)=0\
 virtual bool **existProperty** (const std::string &name)=0\
 virtual bool **existLocalProperty** (const std::string &name)=0\
 virtual void **delLocalProperty** (const std::string &name)=0\
 virtual **Iterator**\< std::string \> \* **getLocalProperties** ()=0\
 virtual **Iterator**\< std::string \> \* **getInheritedProperties** ()=0\
 virtual **Iterator**\< std::string \> \* **getProperties** ()=0\
 virtual void **push** ()=0\
 virtual void **pop** ()=0\
 virtual void **unpop** ()=0\
 virtual bool **canPop** ()=0\
 virtual bool **canUnpop** ()=0\

### Protected Member Functions

virtual **node** **restoreNode** (**node**)=0\
 virtual **edge** **restoreEdge** (**edge**, **node** source, **node** target)=0\
 virtual void **removeNode** (const **node**)=0\
 virtual void **removeEdge** (const **edge**, const **node**=**node**())=0\
 virtual void **removeSubGraph** (**Graph** \*)=0\
 virtual void **clearSubGraphs** ()=0\
 virtual void **restoreSubGraph** (**Graph** \*, bool restoreSubGraphs=false)=0\
 virtual void **setSubGraphToKeep** (**Graph** \*)=0\

### Friends

class **GraphUpdatesRecorder**\

## Detailed Description

Interface for a graph.

The class **Graph** is the interface of a **Graph** in the Tulip Library.

## Member Function Documentation

### virtual PropertyInterface\* tlp::Graph::getProperty (const std::string & name)` [pure virtual]` Returns a pointer on an existing property. If the property does not exist return NULL. In DEBUG the existence of a property is checked using an assertion.

## Friends And Related Function Documentation

### friend class GraphUpdatesRecorder` [friend]`

## Author

Generated automatically by Doxygen for Tulip Graph Library from the source code.
