Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/graph.hpp

    rf66195 r5621c3  
    88#define GRAPH_HPP_
    99
    10 /*********************************************** includes ***********************************/
    11 
    1210// include config.h
    1311#ifdef HAVE_CONFIG_H
     
    1614
    1715// STL headers
    18 #include <deque>
    1916#include <map>
    20 #include <set>
     17#include <multimap>
    2118
    22 /****************************************** forward declarations *****************************/
    23 
    24 class atom;
    25 class bond;
    26 class config;
    27 class molecule;
     19#include "molecules.hpp"
    2820
    2921class Graph;
     
    3224class Edge;
    3325
    34 /********************************************** definitions *********************************/
     26/***************************************** Various graph-related STL defines ********************************/
    3527
    3628#define NodeMap pair < int, class Node* >
    3729#define EdgeMap multimap < class Node*, class Edge* >
    3830
    39 #define KeyStack deque<int>
    40 #define KeySet set<int>
    41 #define NumberValuePair pair<int, double>
    42 #define Graph map <KeySet, NumberValuePair, KeyCompare >
    43 #define GraphPair pair <KeySet, NumberValuePair >
    44 #define KeySetTestPair pair<KeySet::iterator, bool>
    45 #define GraphTestPair pair<Graph::iterator, bool>
     31/***************************************** Definition for classes ********************************/
    4632
    47 
    48 /******************************** Some small functions and/or structures **********************************/
    49 
    50 struct KeyCompare
     33/** Graph class containing the graphs behind molecules.
     34 */
     35class Graph
    5136{
    52   bool operator() (const KeySet SubgraphA, const KeySet SubgraphB) const;
     37        NodeMap ListOfNodes;            //!< tree-list of all nodes in this graph
     38        EdgeMap ListOfEdges;            //!< tree-multi-list of all nodes, referenced to node id
    5339};
    5440
    55 //bool operator < (KeySet SubgraphA, KeySet SubgraphB);   //note: this declaration is important, otherwise normal < is used (producing wrong order)
    56 void InsertFragmentIntoGraph(ofstream *out, struct UniqueFragments *Fragment); // Insert a KeySet into a Graph
    57 void InsertGraphIntoGraph(ofstream *out, Graph &graph1, Graph &graph2, int *counter);  // Insert all KeySet's in a Graph into another Graph
    58 
    59 /** Structure containing all values in power set combination generation.
     41/** Class describing subgraphs of the Class \a Graph.
     42 * SubGraph has its own node and edge lists, however also a pointer to its father graph
     43 * and hence access to its list as well.
    6044 */
    61 struct UniqueFragments {
    62   config *configuration;
    63   atom *Root;
    64   Graph *Leaflet;
    65   KeySet *FragmentSet;
    66   int ANOVAOrder;
    67   int FragmentCounter;
    68   int CurrentIndex;
    69   double TEFactor;
    70   int *ShortestPathList;
    71   bool **UsedList;
    72   bond **BondsPerSPList;
    73   int *BondsPerSPCount;
     45class SubGraph : class Graph
     46{
     47        class Graph *FatherGraph;               //!< Graph whose subgraph we are
    7448};
    7549
    76 /********************************************** declarations *******************************/
     50/** Class containing the nodes of a graph.
     51 */
     52class Node
     53{
     54        int     id;                             //!< individual id of the node
     55        char *Name;             //!< Name of the node for pretty printing
     56};
    7757
    78 ///** Graph class containing the graphs behind molecules.
    79 // */
    80 //class Graph
    81 //{
    82 //      NodeMap ListOfNodes;            //!< tree-list of all nodes in this graph
    83 //      EdgeMap ListOfEdges;            //!< tree-multi-list of all nodes, referenced to node id
    84 //};
    85 //
    86 ///** Class describing subgraphs of the Class \a Graph.
    87 // * SubGraph has its own node and edge lists, however also a pointer to its father graph
    88 // * and hence access to its list as well.
    89 // */
    90 //class SubGraph : class Graph
    91 //{
    92 //      class Graph *FatherGraph;               //!< Graph whose subgraph we are
    93 //};
    94 //
    95 ///** Class containing the nodes of a graph.
    96 // */
    97 //class Node
    98 //{
    99 //      int     id;                             //!< individual id of the node
    100 //      char *Name;             //!< Name of the node for pretty printing
    101 //};
    102 //
    103 ///** Class containing egdes in a Graph strructure.
    104 // */
    105 //class Edge
    106 //{
    107 //      class Node *leftnode;           //!< pointer to first node
    108 //      class Node *atomnode;           //!< pointer to second node
    109 //};
     58/** Class containing egdes in a Graph strructure.
     59 */
     60class Edge
     61{
     62        class Node *leftnode;           //!< pointer to first node
     63        class Node *atomnode;           //!< pointer to second node
     64};
    11065
    11166
Note: See TracChangeset for help on using the changeset viewer.