00001 /*------------------------------------------------------------------- 00002 * Name: legoTree.H 00003 * 00004 * Designer: Bill Havanki 00005 * 00006 * Created: 10/30/96 (Happy Halloween everybody) 00007 * 00008 * Description: This file contains the LEGO header file which 00009 * defines the treegion derived class. 00010 * 00011 * Location: /ncsu/tinker/LEGO/src/derived/legoTree.H 00012 -------------------------------------------------------------------- 00013 * 10/30/96 WAH: Initial file creation. 00014 * 11/01/96 WAH: Added support for treegion children. 00015 * 11/22/96 WAH: Incorporated in LEGO proper. 00016 * 2/13/97 WAH: Made name change from legoRegionRef to regionList et al. 00017 * 3/22/97 WAH: Added RefreshEdges method et al. 00018 * 6/11/97 WAH: Added GetOpCount method. 00019 * 1/29/98 WAH: Modified RefreshEntryEdges to delete parents list. 00020 * 3/27/98 WAH: Fixed RefreshEntryEdges to handle root with no inedges. 00021 --------------------------------------------------------------------*/ 00022 00023 #ifndef LEGOTREEGION_H 00024 #define LEGOTREEGION_H 00025 00026 #include <stdio.h> 00027 #include "region.H" 00028 00029 //--------------------------------------------------------------------------- 00030 00031 class legoTreegion : public legoRegion 00032 { 00033 legoRegion *root; 00034 regionList *saplings; 00035 regionList *treeTraversalRList; 00036 00037 // void AddExitOp (legoOp *); 00038 // regionList *DFS (legoRegion *, int); 00039 00040 public: 00041 legoTreegion () : legoRegion (RT_TREE,0) { 00042 root = NULL; 00043 saplings = NULL; 00044 treeTraversalRList = NULL; 00045 } 00046 legoTreegion (unsigned rId = 0): legoRegion(RT_TREE,rId) { 00047 root = NULL; 00048 saplings = NULL; 00049 treeTraversalRList = NULL; 00050 } 00051 legoTreegion (const legoTreegion &orig) : legoRegion ((legoRegion) orig) 00052 { 00053 root = (legoRegion *) GetItem(0); 00054 RefreshSaplings(); 00055 treeTraversalRList = NULL; 00056 } 00057 00058 ~legoTreegion () { 00059 delete saplings; 00060 delete treeTraversalRList; 00061 RegionKiller(); 00062 } 00063 int GetOpCount (void) 00064 { 00065 int opct = 0; 00066 00067 for (int i = 0; i < GetCount(); i++) 00068 opct += ((legoRegion *) GetItem(i))->GetOpCount(); 00069 return opct; 00070 } 00071 00072 void SetRoot (legoRegion *r) {root = r;} 00073 legoRegion *GetRoot (void) {return root;} 00074 00075 void SetSaplings (regionList *r) {saplings = r;} 00076 regionList *GetSaplings (void) {return saplings;} 00077 00078 void RefreshSaplings (void); 00079 00080 void SetTreeTraversalRList (regionList *r) {treeTraversalRList = r;} 00081 regionList *GetTreeTraversalRList (void) {return treeTraversalRList;} 00082 00083 void RefreshOps (void) 00084 { 00085 RefreshEntryOps(); 00086 RefreshExitOps(); 00087 } // end RefreshOps 00088 void RefreshEntryOps (void) 00089 { 00090 if (GetEntryOpsPtr() != NULL) 00091 delete GetEntryOpsPtr(); // scrog old list 00092 SetEntryOpsPtr (new opList (*(root->GetEntryOpsPtr()))); 00093 } // end RefreshEntryOps 00094 void RefreshExitOps(); 00095 00096 void RefreshEdges (void) 00097 { 00098 RefreshEntryEdges(); 00099 RefreshExitEdges(); 00100 } // end RefreshEdges 00101 void RefreshEntryEdges (void) 00102 { 00103 if (GetInEdgesPtr() != NULL) 00104 delete GetInEdgesPtr(); // scrog old list 00105 if (root->GetInEdgesPtr() != NULL) 00106 SetInEdgesPtr (new edgeList (*(root->GetInEdgesPtr()))); 00107 else 00108 SetInEdgesPtr (NULL); 00109 SetParents (NULL); 00110 } // end RefreshEntryEdges 00111 void RefreshExitEdges (void); 00112 00113 /* #define LEGOTREE_FULL (0) */ 00114 /* #define LEGOTREE_LINEAR (1) */ 00115 00116 /* void Construct (legoRegion *, int = LEGOTREE_FULL); 00117 void ContinueConstruction (void); 00118 void Deconstruct (void); 00119 void Reconstruct (legoRegion *);*/ 00120 void Dump (FILE *); 00121 }; 00122 #endif // LEGOTREEGION_H 00123 00124 00125 00126
1.3.2