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

CatalogCrossReference Class Reference

#include <catalogxref.h>

List of all members.

Public Types

enum  { InvalidCatalogNumber = 0xffffffff }

Public Member Functions

void addEntry (uint32 catalogNumber, Star *star)
 CatalogCrossReference ()
std::string getPrefix () const
Starlookup (const std::string &) const
Starlookup (uint32) const
uint32 parse (const std::string &) const
void reserve (size_t)
void setPrefix (const std::string &)
void sortEntries ()
 ~CatalogCrossReference ()

Private Attributes

std::vector< Entryentries
std::string prefix

Classes

class  Entry


Member Enumeration Documentation

anonymous enum
 

Enumeration values:
InvalidCatalogNumber 

Definition at line 36 of file catalogxref.h.

00036          {
00037         InvalidCatalogNumber = 0xffffffff,
00038     };


Constructor & Destructor Documentation

CatalogCrossReference::CatalogCrossReference  ) 
 

Definition at line 19 of file catalogxref.cpp.

00020 {
00021 }

CatalogCrossReference::~CatalogCrossReference  ) 
 

Definition at line 23 of file catalogxref.cpp.

00024 {
00025 }


Member Function Documentation

void CatalogCrossReference::addEntry uint32  catalogNumber,
Star star
 

Definition at line 121 of file catalogxref.cpp.

References CatalogCrossReference::Entry::catalogNumber, entries, and CatalogCrossReference::Entry::star.

Referenced by ReadCatalogCrossReference().

00122 {
00123     Entry e;
00124     e.catalogNumber = catalogNumber;
00125     e.star = star;
00126 
00127     entries.insert(entries.end(), e);
00128 }

string CatalogCrossReference::getPrefix  )  const
 

Definition at line 28 of file catalogxref.cpp.

References prefix.

00029 {
00030     return prefix;
00031 }

Star * CatalogCrossReference::lookup const std::string  )  const
 

Definition at line 76 of file catalogxref.cpp.

References InvalidCatalogNumber, lookup(), and parse().

00077 {
00078     uint32 catalogNumber = parse(name);
00079     if (catalogNumber == InvalidCatalogNumber)
00080         return NULL;
00081     else
00082         return lookup(catalogNumber);
00083 }

Star * CatalogCrossReference::lookup uint32   )  const
 

Definition at line 59 of file catalogxref.cpp.

References CatalogCrossReference::Entry::catalogNumber, entries, and CatalogCrossReference::Entry::star.

Referenced by lookup().

00060 {
00061     Entry e;
00062     e.catalogNumber = catalogNumber;
00063     e.star = NULL;
00064 
00065     XrefEntryPredicate pred;
00066     vector<Entry>::const_iterator iter = lower_bound(entries.begin(),
00067                                                      entries.end(), e, pred);
00068 
00069     if (iter != entries.end() && iter->catalogNumber == catalogNumber)
00070         return iter->star;
00071     else
00072         return NULL;
00073 }

uint32 CatalogCrossReference::parse const std::string  )  const
 

Definition at line 86 of file catalogxref.cpp.

References compareIgnoringCase(), InvalidCatalogNumber, and prefix.

Referenced by lookup().

00087 {
00088     if (compareIgnoringCase(name, prefix, prefix.length()) != 0)
00089         return InvalidCatalogNumber;
00090 
00091     unsigned int i = prefix.length();
00092     unsigned int n = 0;
00093     bool readDigit = false;
00094 
00095     // Optional space between prefix and number
00096     if (name[i] == ' ')
00097         i++;
00098 
00099     while (isdigit(name[i]))
00100     {
00101         n = n * 10 + ((unsigned int) name[i] - (unsigned int) '0');
00102         readDigit = true;
00103 
00104         // Limited to 24 bits
00105         if (n >= 0x1000000)
00106             return InvalidCatalogNumber;
00107     }
00108 
00109     // Must have read at least one digit
00110     if (!readDigit)
00111         return InvalidCatalogNumber;
00112 
00113     // Check for garbage at the end of the string
00114     if (i != prefix.length())
00115         return InvalidCatalogNumber;
00116     else
00117         return n;
00118 }

void CatalogCrossReference::reserve size_t   ) 
 

Definition at line 136 of file catalogxref.cpp.

References entries.

Referenced by ReadCatalogCrossReference().

00137 {
00138     if (n > entries.size())
00139         entries.reserve(n);
00140 }

void CatalogCrossReference::setPrefix const std::string  ) 
 

Definition at line 33 of file catalogxref.cpp.

References prefix.

00034 {
00035     prefix = _prefix;
00036 }

void CatalogCrossReference::sortEntries  ) 
 

Definition at line 130 of file catalogxref.cpp.

References entries.

00131 {
00132     XrefEntryPredicate pred;
00133     sort(entries.begin(), entries.end(), pred);
00134 }


Member Data Documentation

std::vector<Entry> CatalogCrossReference::entries [private]
 

Definition at line 50 of file catalogxref.h.

Referenced by addEntry(), lookup(), reserve(), and sortEntries().

std::string CatalogCrossReference::prefix [private]
 

Definition at line 49 of file catalogxref.h.

Referenced by getPrefix(), parse(), and setPrefix().


The documentation for this class was generated from the following files:
Generated on Sat Jan 14 22:33:07 2006 for Celestia by  doxygen 1.4.1