Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members

host_info.h

Go to the documentation of this file.
00001 #include "misc.h"
00002 #include "timerange.h" 
00003 
00004 #ifndef HOST_INFO_H
00005 #define HOST_INFO_H
00006 #include "nodes.h"
00007 
00008 class CHostInfo {
00009     CHostInfo * Next;
00010     CCDGNode * Node; // if !IsLoopTx, this is host node, else is loop to be txd
00011     long PaddingNeeded;
00012     CCDGNode * NodeToPad;
00013     POS_TYPE GuestPos;
00014 
00015     // only valid if node is loop 
00016     bool IsLoopTx, LoopIsOpen;
00017     float Iteration;
00018     LOOP_TX_TYPE Tx;
00019     CHostInfo * Children, * Parent;
00020 public:
00021     CHostInfo() { Next = NULL; Node = NULL;
00022     GuestPos = POS_UNINIT; Tx = LTX_UNINIT; Children = Parent = NULL; 
00023     IsLoopTx = LoopIsOpen = FALSE; Iteration = INVALID; };
00024     CHostInfo(CCDGNode * node, bool is_loop_tx, POS_TYPE pos, 
00025           long padding, CCDGNode * pad_node, 
00026           CHostInfo * parent=NULL);
00027     CHostInfo * Add_Node(CCDGNode * node, bool is_loop_tx,
00028                  POS_TYPE pos, long padding,
00029                  CCDGNode * pad_node);
00030     CHostInfo * Get_Next() { return Next; };
00031     void Set_Next(CHostInfo * n) { Next = n; };
00032     CCDGNode * Get_Node() { return Node; };
00033     CHostInfo * Get_Last(); // Get the last node -- either in an open
00034     // loop or else after the last root node
00035 
00036     CHostInfo * Get_Children() { return Children; };
00037     CHostInfo * Add_Child(CCDGNode * host, bool is_loop_tx, POS_TYPE pos);
00038 
00039     // When building loop list, need to store loop information before 
00040     // we actually find the node which will be the host. So until that
00041     // node is found, Is_Nodeless is true.
00042     bool Is_Nodeless() { return !Node; };
00043     void Set_Node(CCDGNode * node) { 
00044       //    HACK - Commented out but should work:   assert(!Node); 
00045       Node = node; };
00046     void Set_GuestPos(POS_TYPE p) { GuestPos = p; };
00047     POS_TYPE Get_GuestPos() { return GuestPos; };
00048 
00049     LOOP_TX_TYPE Get_Tx() { return Tx; };
00050     float Get_Iteration() { return Iteration; };
00051     void Set_Iteration(float i) { Iteration = i; };
00052 
00053     void Do_Current_Padding();
00054     void Set_Pad_Info(long pad_cy, CCDGNode * pad_node);
00055 
00056     bool Get_LoopIsOpen() { return LoopIsOpen; };
00057     void Set_LoopIsOpen(bool v) { LoopIsOpen = v; };
00058     bool Get_IsLoopTx() { return IsLoopTx; };
00059 
00060     void Set_Loop_Info(float it, LOOP_TX_TYPE tx);
00061     void Do_Loop_Tx();
00062     CPred * Create_Guard_Nodes(CGuestInfo * g_int_info );
00063     void Set_to_LoopTransformed_Version_of_Node(LOOP_TX_TYPE ltx, POS_TYPE pos);
00064     void Create_Guarded_Loop(CGuestInfo * guest_loop);
00065     CCDGNode * Adjust_Host_Node(CGuestInfo * guest);
00066     void Output_Debug(bool do_all, int indent, ostream &stream = cout );    
00067 };
00068 
00069 class CLTXList {
00070     CHostInfo * LTx;
00071     CLTXList * Next;
00072 public:
00073   CLTXList() { LTx = NULL; Next = NULL; };
00074     CLTXList(CHostInfo * ltx) { LTx = ltx; Next = NULL; };
00075     CLTXList * Add_Node(CHostInfo * ltx);
00076     CLTXList * Get_Next() { return Next; };
00077     CHostInfo * Get_LTx() { return LTx; };
00078     void Output_Debug();
00079 };
00080 #endif
00081 
00082 
00083 
00084 
00085 
00086 
00087 

Generated on Sat May 8 14:08:33 2004 for Thrint by doxygen 1.3.6