Main Page | Class Hierarchy | Alphabetical List | Compound List | File List | Compound Members | File Members

opEdges.H

Go to the documentation of this file.
00001 /*-------------------------------------------------------------------
00002 *  File:          opEdges.H
00003 *
00004 *  Designer:      Willie Glover
00005 *
00006 *  Description:   opEdges is the base class which defines the arcs
00007 *                 between the region nodes
00008 *
00009 *
00010 *  12/05/96 WAH: Added copy constructor.
00011 *   2/27/97 WAH: Fixed ~opEdges to delete edgeAttrListPtr and
00012 *                nextOpEdgePtr too.
00013 *   4/25/97 WAH: Added mark field and associated methods.
00014 *   5/21/97 WAH: Fixed newToOpId parameter of copy constructor (was NULL).
00015 *    8/1/97 WAH: Changed short mark to long long markfield; altered
00016 *                methods to use constants EM_*; added UnmarkAll.
00017 *    9/4/97 WAH: Switched to enums in globals.H.
00018 *    9/9/97 WAH: Changed EM_EXIT to EM_LOOPEXIT; removed EM_INNER and
00019 *                EM_OUTER.
00020 *--------------------------------------------------------------------*/
00021 #ifndef OPEDGES_H
00022 #define OPEDGES_H
00023 
00024 // The following #defines are used to mark an edge as a backedge or
00025 // whatever. To mark a region, call Mark with one of the following
00026 // parameters. To unmark it, call Unmark. To clear all marks,
00027 // call UnmarkAll. To check a mark, call IsMarked.
00028 #define EM_GENERAL ((long long) 0x1)
00029 #define EM_BACK ((long long) 0x2)
00030 #define EM_LOOPEXIT ((long long) 0x4)
00031 
00032 class legoOp;
00033 //class attrList;
00034 #include "attrList.H"
00035 
00036 class opEdges {
00037   enum edgeTypes edgeType;  // see enumeration below (also in globals.H)
00038   int edgeId;               // edge ID
00039   int oldEdgeId;            // original edge ID from REBEL input
00040   int fromOpId;             // from op ID
00041   legoOp *fromOpPtr;        // from op ptr
00042   int srcPort;
00043   int altSrcPort;
00044   enum portTypes srcPortType; // see enumeration below (also in globals.H)
00045   int toOpId;               // to op ID
00046   legoOp *toOpPtr;          // to op ptr
00047   int destPort;
00048   int altDestPort;
00049   enum portTypes destPortType; // see enumeration below (also in globals.H)
00050   enum usageTypes edgeUsage;   // see enumeration below (globals.H)
00051   enum statusTypes edgeStatus; // see enumeration below (globals.H)
00052   int edgeLat;              // MAX_INT if undefined
00053   int edgeOmega;            // MAX_INT if undefined
00054   attrList *edgeAttrListPtr; // ptr to list of attributes
00055   long long markfield;
00056   opEdges *nextOpEdgePtr;
00057 
00058 public:
00059   opEdges(void)
00060   {
00061     //    fprintf(stderr,"Creating OPEDGES %p\n",this);
00062     edgeType = ET_UNDEF;
00063     edgeId = -1;
00064     oldEdgeId = 0;
00065     fromOpId = 0;
00066     fromOpPtr = NULL;
00067     srcPort = 0;
00068     altSrcPort = 0;
00069     srcPortType = PT_UNDEF;
00070     toOpId = 0;
00071     toOpPtr = NULL;
00072     destPort = 0;
00073     altDestPort = 0;
00074     destPortType = PT_UNDEF;
00075     edgeUsage = USAGE_UNDEF;
00076     edgeStatus = STATUS_CERTAIN;
00077     edgeLat = MAX_INT;
00078     edgeOmega = MAX_INT;
00079     edgeAttrListPtr = NULL;
00080     markfield = (long long) 0;
00081     nextOpEdgePtr = NULL;
00082   }
00083   opEdges(const opEdges &orig, int newEdgeId = -1, int newFromOpId = -1,
00084           legoOp *newFromOpPtr = NULL, int newToOpId = -1,
00085           legoOp *newToOpPtr = NULL)
00086   {
00087     //    fprintf(stderr,"Creating OPEDGES %p\n",this);
00088     edgeType = orig.edgeType;
00089     if (newEdgeId != -1)
00090       edgeId = newEdgeId;
00091     else
00092       edgeId = orig.edgeId;  // will be changed anyway
00093     oldEdgeId = orig.oldEdgeId;
00094     if (newFromOpId != -1)
00095       fromOpId = newFromOpId;
00096     else
00097       fromOpId = orig.fromOpId;  // will be changed anyway
00098     if (newFromOpPtr != NULL)
00099       fromOpPtr = newFromOpPtr;
00100     else
00101       fromOpPtr = orig.fromOpPtr;  // will be changed anyway
00102     srcPort = orig.srcPort;
00103     altSrcPort = orig.altSrcPort;
00104     srcPortType = orig.srcPortType;
00105     if (newToOpId != -1)
00106       toOpId = newToOpId;
00107     else
00108       toOpId = orig.toOpId;  // will be changed anyway
00109     if (newToOpPtr != NULL)
00110       toOpPtr = newToOpPtr;
00111     else
00112       toOpPtr = orig.toOpPtr;  // will be changed anyway
00113     destPort = orig.destPort;
00114     altDestPort = orig.altDestPort;
00115     destPortType = orig.destPortType;
00116     edgeUsage = orig.edgeUsage;
00117     edgeStatus = orig.edgeStatus;
00118     edgeLat = orig.edgeLat;
00119     edgeOmega = orig.edgeOmega;
00120     if (orig.edgeAttrListPtr != NULL)
00121       edgeAttrListPtr = new attrList (*(orig.edgeAttrListPtr));
00122     else
00123       edgeAttrListPtr = NULL;
00124     markfield = orig.markfield;
00125     nextOpEdgePtr = NULL;  // will be changed anyway
00126   } // end copy constructor
00127   ~opEdges(void)
00128   {
00129     opEdges *temp;
00130 
00131     delete edgeAttrListPtr;
00132     while (nextOpEdgePtr != NULL)
00133       {
00134         temp = nextOpEdgePtr;
00135         nextOpEdgePtr = temp->nextOpEdgePtr;
00136         temp->nextOpEdgePtr = NULL;
00137         delete temp;
00138       } // end while
00139     //    fprintf(stderr,"Deleting OPEDGES %p\n",this);
00140   } // end destructor
00141 
00142 /*-------------------------------------------------------------------
00143  * Get edgeType
00144  *-------------------------------------------------------------------*/
00145   enum edgeTypes GetEdgeType(void) { return edgeType; }
00146 
00147 /*-------------------------------------------------------------------
00148  * Get edgeId
00149  *-------------------------------------------------------------------*/
00150   int GetEdgeId(void) { return edgeId; }
00151 
00152 /*-------------------------------------------------------------------
00153  * Get oldEdgeId
00154  *-------------------------------------------------------------------*/
00155   int GetOldEdgeId(void) { return oldEdgeId; }
00156 
00157 /*-------------------------------------------------------------------
00158  * Get fromOpId
00159  *-------------------------------------------------------------------*/
00160   int GetFromOpId(void) { return fromOpId; }
00161 
00162 /*-------------------------------------------------------------------
00163  * Get fromOpPtr
00164  *-------------------------------------------------------------------*/
00165   legoOp *GetFromOpPtr(void) { return fromOpPtr; }
00166 
00167 /*-------------------------------------------------------------------
00168  * Get srcPort
00169  *-------------------------------------------------------------------*/
00170   int GetSrcPort(void) { return srcPort; }
00171 
00172 /*-------------------------------------------------------------------
00173  * Get altSrcPort
00174  *-------------------------------------------------------------------*/
00175   int GetAltSrcPort(void) { return altSrcPort; }
00176 
00177 /*-------------------------------------------------------------------
00178  * Get srcPortType
00179  *-------------------------------------------------------------------*/
00180   enum portTypes GetSrcPortType(void) { return srcPortType; }
00181 
00182 /*-------------------------------------------------------------------
00183  * Get toOpId
00184  *-------------------------------------------------------------------*/
00185   int GetToOpId(void) { return toOpId; }
00186 
00187 /*-------------------------------------------------------------------
00188  * Get toOpPtr
00189  *-------------------------------------------------------------------*/
00190   legoOp *GetToOpPtr(void) { return toOpPtr; }
00191 
00192 /*-------------------------------------------------------------------
00193  * Get destPort
00194  *-------------------------------------------------------------------*/
00195   int GetDestPort(void) { return destPort; }
00196 
00197 /*-------------------------------------------------------------------
00198  * Get altDestPort
00199  *-------------------------------------------------------------------*/
00200   int GetAltDestPort(void) { return altDestPort; }
00201 
00202 /*-------------------------------------------------------------------
00203  * Get destPortType
00204  *-------------------------------------------------------------------*/
00205   enum portTypes GetDestPortType(void) { return destPortType; }
00206 
00207 /*-------------------------------------------------------------------
00208  * Get edgeUsage
00209  *-------------------------------------------------------------------*/
00210   enum usageTypes GetEdgeUsage(void) { return edgeUsage; }
00211 
00212 /*-------------------------------------------------------------------
00213  * Get edgeStatus
00214  *-------------------------------------------------------------------*/
00215   enum statusTypes GetEdgeStatus(void) { return edgeStatus; }
00216 
00217 /*-------------------------------------------------------------------
00218  * Get edgeLat
00219  *-------------------------------------------------------------------*/
00220   int GetEdgeLat(void) { return edgeLat; }
00221 
00222 /*-------------------------------------------------------------------
00223  * Get edgeOmega
00224  *-------------------------------------------------------------------*/
00225   int GetEdgeOmega(void) { return edgeOmega; }
00226 
00227 /*-------------------------------------------------------------------
00228  * Get edgeAttrListPtr
00229  *-------------------------------------------------------------------*/
00230   attrList *GetEdgeAttrListPtr(void) { return edgeAttrListPtr; }
00231 
00232 /*-------------------------------------------------------------------
00233  * Get nextOpEdgePtr
00234  *-------------------------------------------------------------------*/
00235   opEdges *GetNextOpEdgePtr(void) { return nextOpEdgePtr; }
00236 
00237 /*-------------------------------------------------------------------
00238  * Set edgeType
00239  *-------------------------------------------------------------------*/
00240   void SetEdgeType(enum edgeTypes newType) { edgeType = newType; }
00241 
00242 /*-------------------------------------------------------------------
00243  * Set edgeId
00244  *-------------------------------------------------------------------*/
00245   void SetEdgeId(int newId) { edgeId = newId; }
00246 
00247 /*-------------------------------------------------------------------
00248  * Set oldEdgeId
00249  *-------------------------------------------------------------------*/
00250   void SetOldEdgeId(int newId) { oldEdgeId = newId; }
00251 
00252 /*-------------------------------------------------------------------
00253  * Set fromOpId
00254  *-------------------------------------------------------------------*/
00255   void SetFromOpId(int newFromOpId) { fromOpId = newFromOpId; }
00256 
00257 /*-------------------------------------------------------------------
00258  * Set fromOpPtr
00259  *-------------------------------------------------------------------*/
00260   void SetFromOpPtr(legoOp* newFromOpPtr) { fromOpPtr = newFromOpPtr; }
00261 
00262 /*-------------------------------------------------------------------
00263  * Set srcPort
00264  *-------------------------------------------------------------------*/
00265   void SetSrcPort(int newPort) { srcPort = newPort; }
00266 
00267 /*-------------------------------------------------------------------
00268  * Set altSrcPort
00269  *-------------------------------------------------------------------*/
00270   void SetAltSrcPort(int newPort) { altSrcPort = newPort; }
00271 
00272 /*-------------------------------------------------------------------
00273  * Set srcPortType
00274  *-------------------------------------------------------------------*/
00275   void SetSrcPortType(enum portTypes newType) { srcPortType = newType; }
00276 
00277 /*-------------------------------------------------------------------
00278  * Set toOpId
00279  *-------------------------------------------------------------------*/
00280   void SetToOpId(int newToOpId) { toOpId = newToOpId; }
00281 
00282 /*-------------------------------------------------------------------
00283  * Set toOpPtr
00284  *-------------------------------------------------------------------*/
00285   void SetToOpPtr(legoOp* newToOpPtr) { toOpPtr = newToOpPtr; }
00286 
00287 /*-------------------------------------------------------------------
00288  * Set destPort
00289  *-------------------------------------------------------------------*/
00290   void SetDestPort(int newPort) { destPort = newPort; }
00291 
00292 /*-------------------------------------------------------------------
00293  * Set altDestPort
00294  *-------------------------------------------------------------------*/
00295   void SetAltDestPort(int newPort) { altDestPort = newPort; }
00296 
00297 /*-------------------------------------------------------------------
00298  * Set destPortType
00299  *-------------------------------------------------------------------*/
00300   void SetDestPortType(enum portTypes newType) { destPortType = newType; }
00301 
00302 /*-------------------------------------------------------------------
00303  * Set edgeUsage
00304  *-------------------------------------------------------------------*/
00305   void SetEdgeUsage(enum usageTypes newUsage) { edgeUsage = newUsage; }
00306 
00307 /*-------------------------------------------------------------------
00308  * Set edgeStatus
00309  *-------------------------------------------------------------------*/
00310   void SetEdgeStatus(enum statusTypes newStatus) { edgeStatus = newStatus; }
00311 
00312 /*-------------------------------------------------------------------
00313  * Set edgeLat
00314  *-------------------------------------------------------------------*/
00315   void SetEdgeLat(int newLat) { edgeLat = newLat; }
00316 
00317 /*-------------------------------------------------------------------
00318  * Set edgeOmega
00319  *-------------------------------------------------------------------*/
00320   void SetEdgeOmega(int newOmega) { edgeOmega = newOmega; }
00321 
00322 /*-------------------------------------------------------------------
00323  * Set edgeAttrListPtr
00324  *-------------------------------------------------------------------*/
00325   void SetEdgeAttrListPtr(attrList* newAttrListPtr)
00326     { edgeAttrListPtr = newAttrListPtr; }
00327 
00328 /*-------------------------------------------------------------------
00329  * Set nextOpEdgePtr
00330  *-------------------------------------------------------------------*/
00331   void SetNextOpEdgePtr(opEdges* newNext)
00332     { nextOpEdgePtr = newNext; }
00333 
00334 // ----------------------------------------------------------------
00335 //    edgeType       portType        usage         status
00336 //
00337 //  0=ET_UNDEF     0=PT_UNDEF     0=USAGE_UNDEF  0=STATUS_UNDEF
00338 //  1=ET_CNTL      1=PT_FIRST     1=USAGE_SEM    1=STATUS_CERTAIN
00339 //  2=ET_REGFLOW   2=PT_CTL       2=USAGE_ANN    2=STATUS_MAYBE
00340 //  3=ET_REGANTI   3=PT_MEM
00341 //  4=ET_REGOUT    4=PT_SRC
00342 //  5=ET_MEM       5=PT_DEST
00343 // ----------------------------------------------------------------
00344 
00345   void Mark (long long m) {markfield |= m; return;}
00346   void Unmark (long long m) {markfield &= (~m); return;}
00347   void UnmarkAll (void) {markfield = (long long) 0; return;}
00348   int IsMarked (long long m) {return ((markfield & m) != (long long) 0);}
00349 
00350 };
00351 #endif // OPEDGES_H

Generated on Mon Jul 21 20:28:48 2003 for TINKER LEGO DOC by doxygen 1.3.2