1 /*
2  *_________________________________________________________________________*
3  *      POEMS: PARALLELIZABLE OPEN SOURCE EFFICIENT MULTIBODY SOFTWARE     *
4  *      DESCRIPTION: SEE READ-ME                                           *
5  *      FILE NAME: PoemsChain.h                                            *
6  *      AUTHORS: See Author List                                           *
7  *      GRANTS: See Grants List                                            *
8  *      COPYRIGHT: (C) 2005 by Authors as listed in Author's List          *
9  *      LICENSE: Please see License Agreement                              *
10  *      DOWNLOAD: Free at www.rpi.edu/~anderk5                             *
11  *      ADMINISTRATOR: Prof. Kurt Anderson                                 *
12  *                     Computational Dynamics Lab                          *
13  *                     Rensselaer Polytechnic Institute                    *
14  *                     110 8th St. Troy NY 12180                           *
15  *      CONTACT:        anderk5@rpi.edu                                    *
16  *_________________________________________________________________________*/
17 
18 #ifndef POEMSCHAIN_H_
19 #define POEMSCHAIN_H_
20 
21 #include "poemslist.h"
22 
23 struct ChildRingData {
24         List<int> * childRing;
25         int entranceNodeId;
26 };
27 
28 struct POEMSChain{
~POEMSChainPOEMSChain29         ~POEMSChain(){
30                 for(int i = 0; i < childChains.GetNumElements(); i++)
31                 {
32                         delete childChains(i);
33                 }
34         listOfNodes.DeleteValues();
35         }
36         //void printTreeStructure(int tabs);
37         //void getTreeAsList(List<int> * temp);
38         List<int> listOfNodes;
39         List<POEMSChain> childChains;
40         POEMSChain * parentChain;
41         List<ChildRingData> childRings;
42 
43 
printTreeStructurePOEMSChain44         void printTreeStructure(int tabs){
45                 for(int i = 0; i < tabs; i++)
46                 {
47                         cout << "\t";
48                 }
49                 cout << "Chain: ";
50                 for(int i = 0; i < listOfNodes.GetNumElements(); i++)
51                 {
52                         cout << *(listOfNodes(i)) << " ";
53                 }
54                 cout << endl;
55                 for(int i = 0; i < childChains.GetNumElements(); i++)
56                 {
57                         childChains(i)->printTreeStructure(tabs + 1);
58                 }
59         }
getTreeAsListPOEMSChain60         void getTreeAsList(List<int> * temp)
61         {
62                 for(int i = 0; i < listOfNodes.GetNumElements(); i++)
63                 {
64                         int * integer = new int;
65                         *integer = *(listOfNodes(i));
66                         temp->Append(integer);
67                 }
68                 for(int i = 0; i < childChains.GetNumElements(); i++)
69                 {
70                         childChains(i)->getTreeAsList(temp);
71                 }
72         }
73 };
74 #endif
75