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

NameDatabase< OBJ > Class Template Reference

#include <name.h>

Inheritance diagram for NameDatabase< OBJ >:

Inheritance graph
List of all members.

Public Types

typedef std::map< std::string,
uint32, CompareIgnoringCasePredicate
NameIndex
typedef std::multimap< uint32,
std::string
NumberIndex

Public Member Functions

void add (const uint32, const std::string &)
void erase (const uint32)
uint32 getCatalogNumberByName (const std::string &) const
std::vector< std::stringgetCompletion (const std::string &name) const
NumberIndex::const_iterator getFinalNameIter () const
NumberIndex::const_iterator getFirstNameIter (const uint32 catalogNumber) const
std::string getNameByCatalogNumber (const uint32) const
uint32 getNameCount () const
 NameDatabase ()

Protected Attributes

NameIndex nameIndex
NumberIndex numberIndex

template<class OBJ>
class NameDatabase< OBJ >


Member Typedef Documentation

template<class OBJ>
typedef std::map<std::string, uint32, CompareIgnoringCasePredicate> NameDatabase< OBJ >::NameIndex
 

Definition at line 30 of file name.h.

template<class OBJ>
typedef std::multimap<uint32, std::string> NameDatabase< OBJ >::NumberIndex
 

Definition at line 31 of file name.h.


Constructor & Destructor Documentation

template<class OBJ>
NameDatabase< OBJ >::NameDatabase  )  [inline]
 

Definition at line 34 of file name.h.

00034 {};


Member Function Documentation

template<class OBJ>
void NameDatabase< OBJ >::add const   uint32,
const std::string
 

Definition at line 67 of file name.h.

References DPRINTF, NameDatabase< OBJ >::getCatalogNumberByName(), NameDatabase< OBJ >::nameIndex, and NameDatabase< OBJ >::numberIndex.

Referenced by StarDatabase::load(), DSODatabase::load(), and StarNameDatabase::readNames().

00068 {
00069     if (name.length() != 0)
00070     {
00071 #ifdef DEBUG
00072         uint32 tmp;
00073         if ((tmp = getCatalogNumberByName(name)) != OBJ::InvalidCatalogNumber)
00074             DPRINTF(2,"Duplicated name '%s' on object with catalog numbers: %d and %d\n", name.c_str(), tmp, catalogNumber);
00075 #endif
00076         // Add the new name
00077         //nameIndex.insert(NameIndex::value_type(name, catalogNumber));
00078 
00079         nameIndex[name]   = catalogNumber;
00080         numberIndex.insert(NumberIndex::value_type(catalogNumber, name));
00081     }
00082 }

template<class OBJ>
void NameDatabase< OBJ >::erase const   uint32  ) 
 

Definition at line 86 of file name.h.

References NameDatabase< OBJ >::numberIndex.

Referenced by StarDatabase::load(), and DSODatabase::load().

00087 {
00088     numberIndex.erase(catalogNumber);
00089 }

template<class OBJ>
uint32 NameDatabase< OBJ >::getCatalogNumberByName const std::string  )  const
 

Definition at line 93 of file name.h.

References NameDatabase< OBJ >::nameIndex.

Referenced by NameDatabase< OBJ >::add().

00094 {
00095     NameIndex::const_iterator iter = nameIndex.find(name);
00096 
00097     if (iter == nameIndex.end())
00098         return OBJ::InvalidCatalogNumber;
00099     else
00100         return iter->second;
00101 }

template<class OBJ>
std::vector< std::string > NameDatabase< OBJ >::getCompletion const std::string name  )  const
 

Definition at line 153 of file name.h.

References NameDatabase< OBJ >::nameIndex, and UTF8StringCompare().

Referenced by StarDatabase::getCompletion(), and DSODatabase::getCompletion().

00154 {
00155     std::vector<std::string> completion;
00156     for (NameIndex::const_iterator iter = nameIndex.begin(); iter != nameIndex.end(); ++iter)
00157     {
00158         if (!UTF8StringCompare(iter->first, name, name.length()))
00159         {
00160             completion.push_back(iter->first);
00161         }
00162     }
00163     return completion;
00164 }

template<class OBJ>
NameDatabase< OBJ >::NumberIndex::const_iterator NameDatabase< OBJ >::getFinalNameIter  )  const
 

Definition at line 146 of file name.h.

References NameDatabase< OBJ >::numberIndex.

Referenced by DSODatabase::getDSOName(), DSODatabase::getDSONameList(), NameDatabase< OBJ >::getFirstNameIter(), StarDatabase::getStarName(), and StarDatabase::getStarNameList().

00147 {
00148     return numberIndex.end();
00149 }

template<class OBJ>
NameDatabase< OBJ >::NumberIndex::const_iterator NameDatabase< OBJ >::getFirstNameIter const uint32  catalogNumber  )  const
 

Definition at line 134 of file name.h.

References NameDatabase< OBJ >::getFinalNameIter(), and NameDatabase< OBJ >::numberIndex.

Referenced by DSODatabase::getDSOName(), DSODatabase::getDSONameList(), StarDatabase::getStarName(), and StarDatabase::getStarNameList().

00135 {
00136     NumberIndex::const_iterator iter   = numberIndex.lower_bound(catalogNumber);
00137 
00138     if (iter == numberIndex.end() || iter->first != catalogNumber)
00139         return getFinalNameIter();
00140     else
00141         return iter;
00142 }

template<class OBJ>
std::string NameDatabase< OBJ >::getNameByCatalogNumber const   uint32  )  const
 

Definition at line 113 of file name.h.

References NameDatabase< OBJ >::numberIndex.

00114 {
00115    if (catalogNumber == OBJ::InvalidCatalogNumber)
00116         return "";
00117 
00118    NumberIndex::const_iterator iter   = numberIndex.lower_bound(catalogNumber);
00119 
00120    if (iter != numberIndex.end() && iter->first == catalogNumber)
00121        return iter->second;
00122 }

template<class OBJ>
uint32 NameDatabase< OBJ >::getNameCount  )  const
 

Definition at line 60 of file name.h.

References NameDatabase< OBJ >::nameIndex.

00061 {
00062     return nameIndex.size();
00063 }


Member Data Documentation

template<class OBJ>
NameIndex NameDatabase< OBJ >::nameIndex [protected]
 

Definition at line 53 of file name.h.

Referenced by NameDatabase< OBJ >::add(), NameDatabase< OBJ >::getCatalogNumberByName(), NameDatabase< OBJ >::getCompletion(), and NameDatabase< OBJ >::getNameCount().

template<class OBJ>
NumberIndex NameDatabase< OBJ >::numberIndex [protected]
 

Definition at line 54 of file name.h.

Referenced by NameDatabase< OBJ >::add(), NameDatabase< OBJ >::erase(), NameDatabase< OBJ >::getFinalNameIter(), NameDatabase< OBJ >::getFirstNameIter(), and NameDatabase< OBJ >::getNameByCatalogNumber().


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