class Graph { public: Graph(); Graph(const Graph &g); ~Graph(); void FreeMemory(); // // File IO // void SaveToFile(const String &filename) const; void LoadFromFile(const String &filename); void LoadFromImageClusters(const Bitmap &bmp, const Grid &clusterIDs); // // Traversal // void EnumerateAllWalks(UINT length, const Node &start, Vector &walks) const; // // Accessors // __forceinline const Vector& nodes() const { return _nodes; } __forceinline Vector& nodes() { return _nodes; } __forceinline const Vector& edges() const { return _edges; } __forceinline Vector& edges() { return _edges; } __forceinline String& Name() { return _name; } __forceinline const String& Name() const { return _name; } // // Static members // static void LoadGraphsFromFile(const String &filename, Vector &graphs); private: void Finalize(); Edge* FindEdge(UINT n0, UINT n1); Vector _nodes; Vector _edges; String _name; };