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

flag.H

Go to the documentation of this file.
00001 /**********************************************************************
00002  *   Name:        flag.h
00003  *
00004  *   Designer:    Willie Glover
00005  *
00006  *   Created:     4/02/96
00007  *
00008  *   Description: This file contains the LEGO header file which
00009  *                defines the flag structure of the LEGO IR.
00010  *
00011  *   Location:    /ncsu/tinker/LEGO/src/base/flag.h
00012  *
00013  * 4/02/96 WTG: Added structure for flags. Used by op and graph.
00014  * 6/19/96 WTG: Change to class.  Add method to add to list.
00015  * 12/5/96 WAH: Added copy constructor.
00016  **********************************************************************/
00017 
00018 #ifndef FLAG_H
00019 #define FLAG_H
00020 
00021 //   struct flags {
00022 //      int    name;           // add enum table for flags
00023 //      flags *nextFlagPtr;
00024 //    };
00025 
00026 class flags {
00027 
00028    int flagName;         // See tinker.tab.h for flag values
00029                          //   Use char *ParseMap(int) to get ASCII
00030    flags *nextFlagPtr;   // pointer to next flag entry
00031 
00032 public:
00033 
00034         flags(void)
00035         {
00036           //      fprintf(stderr,"Creating FLAGS %p\n",this);
00037           flagName = 0;
00038           nextFlagPtr = NULL;
00039         }
00040 
00041   flags(const flags &orig)
00042   {
00043     //    fprintf(stderr,"Creating FLAGS %p\n",this);
00044     flagName = orig.flagName;
00045     if (orig.nextFlagPtr != NULL)
00046       nextFlagPtr = new flags (*(orig.nextFlagPtr));
00047     else
00048       nextFlagPtr = NULL;
00049   } // end copy constructor
00050 
00051         ~flags(void)
00052         {
00053           flags* tmpFlagPtr;
00054           while (nextFlagPtr != NULL) {
00055             tmpFlagPtr = nextFlagPtr;
00056             nextFlagPtr = tmpFlagPtr->nextFlagPtr;
00057             tmpFlagPtr->nextFlagPtr = NULL;
00058             delete tmpFlagPtr;
00059           }
00060           //      fprintf(stderr,"Deleting FLAGS %p\n",this);
00061         }
00062 
00063 int     GetFlagName(void) { return flagName; }
00064 flags  *GetNextFlagPtr(void) { return nextFlagPtr; }
00065 void    SetFlagName(unsigned newFlag) {flagName = newFlag; }
00066 void    SetNextFlagPtr(flags *newPtr) {nextFlagPtr = newPtr; }
00067 
00068 /*
00069  *   Add a flag to the current flag structure.  If the last flag in the list is
00070  *     uninitialized, update it with newFlag.  Otherwise allocate a new entry
00071  *     and update.
00072  */
00073 
00074 void    AddFlag(unsigned newFlag)
00075   {
00076      if ( flagName == 0 ) {
00077         flagName = newFlag;
00078         return;
00079      }
00080      else {
00081         flags *tmpFlgPtr = this;
00082         while ( tmpFlgPtr->nextFlagPtr != NULL ) {
00083            tmpFlgPtr = tmpFlgPtr->nextFlagPtr;
00084         }
00085         tmpFlgPtr->nextFlagPtr = new flags();
00086         tmpFlgPtr->nextFlagPtr->flagName = newFlag;
00087         tmpFlgPtr->nextFlagPtr->nextFlagPtr = NULL;
00088      }
00089   }
00090 };
00091 
00092 // ------------------------------------------------------------
00093 //     flag definitions
00094 //
00095 //
00096 //
00097 //
00098 //
00099 //
00100 //
00101 //
00102 // ------------------------------------------------------------
00103 #endif

Generated on Mon Jul 21 20:24:12 2003 for TINKER LEGO DOC by doxygen 1.3.2