///scratch/berryj/link/new_link/link/bin/instantiate "-a" "-t" "GraphObject*" "-h" "Attribute" "-II" "LINK/graph/Attribute.h" "-I" "LINK/graph/GraphObject.h" "-I" "LINK/graph/Graph.h" "-d" "graph" 
#ifdef __GNUC__
#define DEFINE_TEMPLATE
#endif

#include <LINK/basic/ElementOps.h>

#include <LINK/graph/Attribute.h>

#ifdef __GNUC__
#undef DEFINE_TEMPLATE
#endif

#include <LINK/graph/GraphObject.h>

#include <LINK/graph/Graph.h>


typedef GraphObject* _GraphObject_;
typedef Attribute<GraphObject* > _Attribute_GraphObject__;


//*********************************************************************
#ifdef __GNUC__
template class ElementOps<_Attribute_GraphObject__>;
#endif
//*********************************************************************



#ifdef __GNUC__
template class Attribute<GraphObject* >;

#ifdef __GNUC__
template int newAttribute(Graph*, String, _GraphObject_&, int);
template int getAttribute(GraphObject*, String, _GraphObject_&);
template int setAttribute(GraphObject*, String, _GraphObject_&, int);
#endif
#endif

Attribute<_GraphObject_ >::~Attribute()
{
	if (_graph) {
		if (strncmp(_name, "x_", 2) != 0)
			resetAttribute(_graph, _name);
	_graph->removeAttr(this);
	}
	delete _name;
	if (_static_flag == LINK_DYNAMIC)
		delete _value;
}

