00001 //----------------------------------------------------------------------------- 00002 // Author: Jim Holmström 00003 // Date: 2002-02-13 00004 //----------------------------------------------------------------------------- 00005 00006 #ifndef __GNGNODE_H 00007 #define __GNGNODE_H 00008 00009 #include <Vector.hpp> 00010 #include "EdgeContainer.hpp" 00011 00012 class GNGEdge; 00013 00021 class GNGNode 00022 { 00023 public: 00024 GNGNode(); 00025 virtual ~GNGNode(); 00026 00031 virtual void SetReferenceVector(Vector const & referenceVector); 00032 00037 virtual Vector & GetReferenceVector(); 00038 00043 virtual Vector const & GetReferenceVector() const; 00044 00049 virtual void SetAccumulatedError(double d); 00050 00055 virtual double GetAccumulatedError() const; 00056 00061 virtual void SetUtility(double d); 00062 00067 virtual double GetUtility() const; 00068 00073 virtual void AddEdge(GNGEdge & edge); 00074 00079 virtual void RemoveEdge(GNGEdge const & edge); 00080 00087 virtual GNGEdge * GetEdgeTo(GNGNode const & node); 00088 00093 virtual EdgeContainer const & GetEdges() const; 00094 00099 virtual EdgeContainer & GetEdges(); 00100 00101 protected: 00102 Vector m_referenceVector; 00103 EdgeContainer m_edges; 00104 double m_accumulatedError; 00105 double m_utility; 00106 00107 }; 00108 00109 00110 class GNGNodeFactory 00111 { 00112 public: 00113 virtual GNGNode * NewNode() { return new GNGNode(); } 00114 }; 00115 00116 #endif