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

legoJump.H

Go to the documentation of this file.
00001 /**********************************************************************
00002 *  File:            legoJump.H
00003 *
00004 *  Designer:        Willie Glover
00005 *
00006 *  Description:     legoJump is the LEGO IR jump table structure.
00007 *
00008 *  4/8/97 WAH:      Fixed destructors.
00009 *  7/29/97 WAH:     Added isDefault field and associated methods to
00010 *                   jumpList.
00011 *  1/9/98 WAH:      Fixed SetTableName to handle NULL.
00012 **********************************************************************/
00013 #ifndef LEGOJUMP_H
00014 #define LEGOJUMP_H
00015 
00016 class jumpList;
00017 
00018 class jumpTable {
00019   int tableId;
00020   char *tableName;
00021   int entries;
00022   int reserve;
00023   int align;
00024   jumpList *jumpEntryPtr;
00025   jumpTable *nextTablePtr;
00026 
00027 public:
00028   jumpTable()
00029   {
00030     //    fprintf(stderr,"Creating JUMPTABLE %p\n",this);
00031     tableId = 0;           // undefined
00032     tableName = NULL;
00033     entries = 0;           // default value
00034     reserve = 0;           // default value
00035     align = 0;             // undefined
00036     jumpEntryPtr = NULL;
00037     nextTablePtr = NULL;
00038   }
00039   ~jumpTable(void)
00040   {
00041     delete[] tableName;
00042     jumpTable* tmpTablePtr;
00043     while (nextTablePtr != NULL) {
00044       tmpTablePtr = nextTablePtr;
00045       nextTablePtr = tmpTablePtr->nextTablePtr;
00046       tmpTablePtr->nextTablePtr = NULL;
00047       delete tmpTablePtr;
00048     }
00049     //    fprintf(stderr,"Deleting JUMPTABLE %p\n",this);
00050   }
00051 
00052 /*-------------------------------------------------------
00053  * Get table ID
00054  *-------------------------------------------------------*/
00055   int  GetTableId(void)  { return tableId; }
00056 
00057 /*-------------------------------------------------------
00058  * Get jump table name
00059  *-------------------------------------------------------*/
00060   char  *GetTableName(void)  { return tableName; }
00061 
00062 /*-------------------------------------------------------
00063  * Get number of entries in table
00064  *-------------------------------------------------------*/
00065   int GetEntries(void)  { return entries; }
00066 
00067 /*-------------------------------------------------------
00068  * Get total number of bytes reserved for table
00069  *-------------------------------------------------------*/
00070   int  GetReserve(void)  { return reserve; }
00071 
00072 /*-------------------------------------------------------
00073  * Get address alignment
00074  *-------------------------------------------------------*/
00075   int  GetAlign(void)  { return align; }
00076 
00077 /*-------------------------------------------------------
00078  * Get pointer to jump table entries
00079  *-------------------------------------------------------*/
00080   jumpList  *GetJumpEntryPtr(void)  { return jumpEntryPtr; }
00081 
00082 /*-------------------------------------------------------
00083  * Get pointer to next jump table
00084  *-------------------------------------------------------*/
00085   jumpTable *GetNextTablePtr(void) { return nextTablePtr; }
00086 
00087 /*-------------------------------------------------------
00088  * Update table ID
00089  *-------------------------------------------------------*/
00090   void SetTableId(int newTableId)  { tableId = newTableId; }
00091 
00092 /*-------------------------------------------------------
00093  * Update jump table name
00094  *-------------------------------------------------------*/
00095   void SetTableName(char *newName)
00096     {
00097        delete[] tableName;
00098        if (newName != NULL)
00099          {
00100            tableName = new char[strlen(newName)+1];
00101            (void)strcpy(tableName,newName);
00102          } // end if
00103        else tableName = NULL;
00104     }
00105 
00106 /*-------------------------------------------------------
00107  * Update number of entries in table
00108  *-------------------------------------------------------*/
00109   void SetEntries(int newEntries)  { entries = newEntries; }
00110 
00111 /*-------------------------------------------------------
00112  * Update total number of bytes reserved for table
00113  *-------------------------------------------------------*/
00114   void SetReserve(int newReserve)  { reserve = newReserve; }
00115 
00116 /*-------------------------------------------------------
00117  * Update address alignment
00118  *-------------------------------------------------------*/
00119   void SetAlign(int newAlign)  { align = newAlign; }
00120 
00121 /*-------------------------------------------------------
00122  * Update pointer to jump table entries
00123  *-------------------------------------------------------*/
00124   void SetJumpEntryPtr(jumpList* newPtr)  { jumpEntryPtr = newPtr; }
00125 
00126 /*-------------------------------------------------------
00127  * Update pointer to next jump table
00128  *-------------------------------------------------------*/
00129   void SetNextTablePtr(jumpTable* newPtr) { nextTablePtr = newPtr; }
00130 
00131 };
00132 // ---------------------------------------------------------------------------
00133 
00134 class jumpList {
00135   int       offset;         // address offset into table
00136   int       ccValue;        // either 0 for DFLT, or value
00137   int       isDefault;      // 1 if DFLT case, 0 otherwise
00138   int       opId;           // op ID
00139   legoOp*   opPtr;          // pointer to op (for op ID above)
00140   jumpList *nextListPtr;    // pointer to next entry in list
00141 
00142 public:
00143   jumpList()
00144   {
00145     //    fprintf(stderr,"Creating JUMPLIST %p\n",this);
00146     offset = 0;            // default value
00147     ccValue = 0;           // default value
00148     isDefault = 0;         // default value
00149     opId = 0;              // default value
00150     opPtr = NULL;
00151     nextListPtr = NULL;
00152   }
00153   ~jumpList(void)
00154   {
00155     jumpList* tmpListPtr;
00156     while (nextListPtr != NULL) {
00157       tmpListPtr = nextListPtr;
00158       nextListPtr = tmpListPtr->GetNextListPtr();
00159       tmpListPtr->nextListPtr = NULL;
00160       delete tmpListPtr;
00161     }
00162     //    fprintf(stderr,"Deleting JUMPLIST %p\n",this);
00163   }
00164 
00165 /*-------------------------------------------------------
00166  * Get offset
00167  *-------------------------------------------------------*/
00168   int  GetOffset(void)  { return offset; }
00169 
00170 /*-------------------------------------------------------
00171  * Get ccValue
00172  *-------------------------------------------------------*/
00173   int  GetCcValue(void)  { return ccValue; }
00174 
00175 /*-------------------------------------------------------
00176  * Get isDefault
00177  *-------------------------------------------------------*/
00178   int  IsDefault(void)  { return isDefault; }
00179 
00180 /*-------------------------------------------------------
00181  * Get op ID
00182  *-------------------------------------------------------*/
00183   int GetOpId(void)  { return opId; }
00184 
00185 /*-------------------------------------------------------
00186  * Get op pointer
00187  *-------------------------------------------------------*/
00188   legoOp  *GetOpPtr(void)  { return opPtr; }
00189 
00190 /*-------------------------------------------------------
00191  * Get pointer to next jump table entry
00192  *-------------------------------------------------------*/
00193   jumpList *GetNextListPtr(void) { return nextListPtr; }
00194 
00195 /*-------------------------------------------------------
00196  * Update offset
00197  *-------------------------------------------------------*/
00198   void SetOffset(int newOffset)  { offset = newOffset; }
00199 
00200 /*-------------------------------------------------------
00201  * Update ccValue
00202  *-------------------------------------------------------*/
00203   void SetCcValue(int newCcValue)  { ccValue = newCcValue; }
00204 
00205 /*-------------------------------------------------------
00206  * Update isDefault
00207  *-------------------------------------------------------*/
00208   void SetIsDefault(int newIsDefault)  { isDefault = newIsDefault; }
00209 
00210 /*-------------------------------------------------------
00211  * Update op ID
00212  *-------------------------------------------------------*/
00213   void SetOpId(int newOpId)  { opId = newOpId; }
00214 
00215 /*-------------------------------------------------------
00216  * Update op pointer
00217  *-------------------------------------------------------*/
00218   void SetOpPtr(legoOp *newOpPtr)  { opPtr = newOpPtr; }
00219 
00220 /*-------------------------------------------------------
00221  * Update pointer to next jump table entry
00222  *-------------------------------------------------------*/
00223   void SetNextListPtr(jumpList *newListPtr)
00224     { nextListPtr = newListPtr; }
00225 
00226 };
00227 // --------------------------------------------------------------
00228 #endif // LEGOJUMP_H
00229 
00230 
00231 

Generated on Mon Jul 21 20:27:32 2003 for TINKER LEGO DOC by doxygen 1.3.2