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 	}
35 	//void printTreeStructure(int tabs);
36 	//void getTreeAsList(List<int> * temp);
37 	List<int> listOfNodes;
38 	List<POEMSChain> childChains;
39 	POEMSChain * parentChain;
40 	List<ChildRingData> childRings;
41 
42 
printTreeStructurePOEMSChain43 	void printTreeStructure(int tabs){
44 		for(int i = 0; i < tabs; i++)
45 		{
46 			cout << "\t";
47 		}
48 		cout << "Chain: ";
49 		for(int i = 0; i < listOfNodes.GetNumElements(); i++)
50 		{
51 			cout << *(listOfNodes(i)) << " ";
52 		}
53 		cout << endl;
54 		for(int i = 0; i < childChains.GetNumElements(); i++)
55 		{
56 			childChains(i)->printTreeStructure(tabs + 1);
57 		}
58 	}
getTreeAsListPOEMSChain59 	void getTreeAsList(List<int> * temp)
60 	{
61 		for(int i = 0; i < listOfNodes.GetNumElements(); i++)
62 		{
63 			int * integer = new int;
64 			*integer = *(listOfNodes(i));
65 			temp->Append(integer);
66 		}
67 		for(int i = 0; i < childChains.GetNumElements(); i++)
68 		{
69 			childChains(i)->getTreeAsList(temp);
70 		}
71 	}
72 };
73 #endif
74