//-*-c++-*- /** Authors: David Auber, Patrick Mary, Morgan Mathiaut from the LaBRI Visualization Team Email : auber@tulip-software.org Last modification : 22/01/2009 This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. */ #ifndef TULIP_METAGRAPH_H #define TULIP_METAGRAPH_H #ifdef HAVE_CONFIG_H #include <config.h> #endif #include "tulip/AbstractProperty.h" #include "tulip/TemplateFactory.h" namespace tlp { class PropertyContext; class GraphAbstract; /** \addtogroup properties */ /*@{*/ class TLP_SCOPE GraphProperty:public AbstractProperty<GraphType,EdgeSetType>, public GraphObserver, public PropertyObserver { friend class GraphAbstract; public : GraphProperty (Graph *); virtual ~GraphProperty(); PropertyInterface* clonePrototype(Graph *, std::string ); void copy( const node, const node, PropertyInterface * ); void copy( const edge, const edge, PropertyInterface * ); void destroy(Graph *); bool setNodeStringValue(const node n, const std::string & v); bool setAllNodeStringValue(const std::string & v); bool setEdgeStringValue( const edge e, const std::string & v); bool setAllEdgeStringValue(const std::string & v); // redefinition of some PropertyObserver methods virtual void beforeSetNodeValue(PropertyInterface* prop, const node n); virtual void afterSetNodeValue(PropertyInterface* prop, const node n); virtual void beforeSetAllNodeValue(PropertyInterface* prop); virtual void afterSetAllNodeValue(PropertyInterface* prop); private: MutableContainer<std::set<node> > referencedGraph; const std::set<edge>& getReferencedEdges(const edge) const; }; /*@}*/ } #endif