| Global Memory | Table of Content | Intro | Class Tree | 
 | 

 
public:
        //---------------------------------------------------------------
        // Local Type Definitions
        //---------------------------------------------------------------
enum StationSet {X, Y, NumSets}; // Tacan Stations are numbered 1 - 126 and are grouped in two sets X and Y band.
enum Domain {AA, AG, NumDomains};
       
struct TacanCampStr
        {
               
int                    
channel;
               
StationSet      set;
               
short           campaignID;
               
int                    
callsign;
       
};
       
struct LinkedCampStationStr
        {
              
LinkedCampStationStr    *p_next;
               
TacanCampStr                   
*p_station;
       
};
       
struct LinkedTacanVUStr
        {
              
LinkedTacanVUStr*       p_next;
               
LinkedTacanVUStr*       p_previous;
               
int                                    
channel;
               
StationSet                    
set;
               
Domain                         
domain;
              
VU_ID                                  
vuID;
       
};
private:
        //---------------------------------------------------------------
        // Airbase File Data
        //---------------------------------------------------------------
        TacanCampStr           
**mpCampList;                                                                  
// List Sorted By CampId
        int                                    
mCampListTally;                                                        
// Total Num of airbases
        //---------------------------------------------------------------
        // THE Dynamically Assigned
Tanker/Carrier List
        //---------------------------------------------------------------
       
LinkedTacanVUStr        *mpAssigned;   
// All Tacans will be in Y band
       
LinkedTacanVUStr        *mpRetired;            
// All Tacans will be in Y band
        int                                    
mLastUnused;    // Valid Numbers 126 ... 70
        //---------------------------------------------------------------
        // THE Airbase TACAN LIST
        //---------------------------------------------------------------
LinkedTacanVUStr *mpTList;
        //---------------------------------------------------------------
        // Initialization Functions
for Airbase List
        //---------------------------------------------------------------
        BOOL StoreStation(LinkedCampStationStr**,
short, int, StationSet, int);        
// Used by the class only during initialization, operates upon mpCampList
        void ResolveStationList(LinkedCampStationStr**,
TacanCampStr***, int);  // Used by the class only during initialization,
operates upon mpCampList
       
friend int SearchForChannel(void*, void**);                                                                            
// Compare function for bsearch routine
        //---------------------------------------------------------------
        // Utility Functions for
Airbase List
        //---------------------------------------------------------------
        BOOL GetChannelFromCampID(int*,
StationSet*, short);                                                                  
// Looks up channel given the CampID, operates upon mpCampList
        BOOL GetPointerFromVUID(LinkedTacanVUStr*,
VU_ID, LinkedTacanVUStr**, LinkedTacanVUStr**);     
// Used for searching for a particular VU_ID, returns a pointer to the
entry.
        void InsertIntoTacanList(LinkedTacanVUStr**,
LinkedTacanVUStr**, VU_ID, int, StationSet, Domain);      
// Used by AddTacan for inserting tacan stations into mpTList
        //---------------------------------------------------------------
        // Utility Functions for
Dynamically Assigned List
        //---------------------------------------------------------------
        void                                   
InitDynamicChans(void);
        void                                   
CleanupDynamicChans(void);
        int                                    
AssignChannel(VU_ID, Domain);          
// Get the next retired tacan number, otherwise create one from the mLastUnused
value
        void                                   
RetireChannel(VU_ID);                          
// Move the channel from the Assigned list into the retired list
public:
        //---------------------------------------------------------------
        // Run Time Functions
        //---------------------------------------------------------------
        void AddTacan(CampBaseClass
*);                                                                                                        
// Add a tacan station to the list
        void RemoveTacan(VU_ID,
int);                                                                                
// Remove a tacan station from the list
        BOOL GetVUIDFromChannel(VU_ID*,
int, StationSet, Domain);                                      
// Given the channel and band, we can get the VU_ID of a tacan station
        BOOL GetVUIDFromLocation(VU_ID*,
float, float, Domain);                                        
// Works for airbases only.  Find the closest tacan to this point
        BOOL GetChannelFromVUID(VU_ID,
int*, StationSet*, Domain*);                                    
// Works for airbases only.  Given a VU_ID, we can get the channel
and band of a tacan station
        BOOL GetCallsignFromCampID(short
campId, int*);                                
// Works for airbases only.  Given a campId, we can get the callsign
of the respective objective, 0 if not found
        //---------------------------------------------------------------
        // Constructors and Destructors
        //---------------------------------------------------------------
        TacanList();
        ~TacanList();