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

stardb.cpp File Reference

#include <cmath>
#include <cstdlib>
#include <cstdio>
#include <cassert>
#include <algorithm>
#include <celmath/mathlib.h>
#include <celmath/plane.h>
#include <celutil/util.h>
#include <celutil/bytes.h>
#include <celengine/stardb.h>
#include "celestia.h"
#include "astro.h"
#include "parser.h"
#include "parseobject.h"
#include "multitexture.h"
#include "meshmanager.h"
#include <celutil/debug.h>

Include dependency graph for stardb.cpp:

Go to the source code of this file.

Classes

struct  PtrCatalogNumberOrderingPredicate

Functions

static void errorMessagePrelude (const Tokenizer &tok)
static string GlieseCatalogPrefix ("Gliese ")
static string HDCatalogPrefix ("HD ")
static string HIPPARCOSCatalogPrefix ("HIP ")
static string LacailleCatalogPrefix ("Lacaille ")
bool operator< (const StarDatabase::CrossIndexEntry &a, const StarDatabase::CrossIndexEntry &b)
static bool parseCelestiaCatalogNumber (const string &name, uint32 *catalogNumber)
static bool parseHDCatalogNumber (const string &name, uint32 *catalogNumber)
static bool parseHIPPARCOSCatalogNumber (const string &name, uint32 *catalogNumber)
static bool parseSimpleCatalogNumber (const string &name, const string &prefix, uint32 *catalogNumber)
static bool parseTychoCatalogNumber (const string &name, uint32 *catalogNumber)
static string RossCatalogPrefix ("Ross ")
static string SAOCatalogPrefix ("SAO ")
static void stcError (const Tokenizer &tok, const string &msg)
static string TychoCatalogPrefix ("TYC ")

Variables

static const float STAR_EXTRA_ROOM = 0.01f
static const float STAR_OCTREE_MAGNITUDE = 6.0f
static const float STAR_OCTREE_ROOT_SIZE = 15000.0f


Function Documentation

static void errorMessagePrelude const Tokenizer tok  )  [static]
 

Definition at line 814 of file stardb.cpp.

References _.

00815 {
00816     cerr << _("Error in .stc file (line ") << tok.getLineNumber() << "): ";
00817 }

static string GlieseCatalogPrefix "Gliese "   )  [static]
 

static string HDCatalogPrefix "HD "   )  [static]
 

Referenced by parseHDCatalogNumber().

static string HIPPARCOSCatalogPrefix "HIP "   )  [static]
 

Referenced by parseHIPPARCOSCatalogNumber().

static string LacailleCatalogPrefix "Lacaille "   )  [static]
 

bool operator< const StarDatabase::CrossIndexEntry a,
const StarDatabase::CrossIndexEntry b
 

Definition at line 166 of file stardb.cpp.

00168 {
00169     return a.catalogNumber < b.catalogNumber;
00170 }

static bool parseCelestiaCatalogNumber const string name,
uint32 catalogNumber
[static]
 

Definition at line 147 of file stardb.cpp.

Referenced by StarDatabase::find().

00149 {
00150     char extra[4];
00151 
00152     if (name[0] == '#')
00153     {
00154         unsigned int num;
00155         if (sscanf(name.c_str(), "#%u %c", &num, &extra) == 1)
00156         {
00157             *catalogNumber = (uint32) num;
00158             return true;
00159         }
00160     }
00161 
00162     return false;
00163 }

static bool parseHDCatalogNumber const string name,
uint32 catalogNumber
[static]
 

Definition at line 119 of file stardb.cpp.

References HDCatalogPrefix(), and parseSimpleCatalogNumber().

Referenced by StarDatabase::find().

00121 {
00122     return parseSimpleCatalogNumber(name,
00123                                     HDCatalogPrefix,
00124                                     catalogNumber);
00125 }

static bool parseHIPPARCOSCatalogNumber const string name,
uint32 catalogNumber
[static]
 

Definition at line 110 of file stardb.cpp.

References HIPPARCOSCatalogPrefix(), and parseSimpleCatalogNumber().

Referenced by StarDatabase::find().

00112 {
00113     return parseSimpleCatalogNumber(name,
00114                                     HIPPARCOSCatalogPrefix,
00115                                     catalogNumber);
00116 }

static bool parseSimpleCatalogNumber const string name,
const string prefix,
uint32 catalogNumber
[static]
 

Definition at line 88 of file stardb.cpp.

References compareIgnoringCase().

Referenced by StarDatabase::find(), parseHDCatalogNumber(), and parseHIPPARCOSCatalogNumber().

00091 {
00092     char extra[4];
00093     if (compareIgnoringCase(name, prefix, prefix.length()) == 0)
00094     {
00095         unsigned int num;
00096         // Use scanf to see if we have a valid catalog number; it must be
00097         // of the form: <prefix> <non-negative integer>  No additional
00098         // characters other than whitespace are allowed after the number.
00099         if (sscanf(name.c_str() + prefix.length(), " %u %c", &num, extra) == 1)
00100         {
00101             *catalogNumber = (uint32) num;
00102             return true;
00103         }
00104     }
00105 
00106     return false;
00107 }

static bool parseTychoCatalogNumber const string name,
uint32 catalogNumber
[static]
 

Definition at line 128 of file stardb.cpp.

References compareIgnoringCase(), and TychoCatalogPrefix().

Referenced by StarDatabase::find().

00130 {
00131     if (compareIgnoringCase(name, TychoCatalogPrefix, TychoCatalogPrefix.length()) == 0)
00132     {
00133         unsigned int tyc1 = 0, tyc2 = 0, tyc3 = 0;
00134         if (sscanf(string(name, TychoCatalogPrefix.length(),
00135                    string::npos).c_str(),
00136                    " %u-%u-%u", &tyc1, &tyc2, &tyc3) == 3)
00137         {
00138             *catalogNumber = (uint32) (tyc3 * 1000000000 + tyc2 * 10000 + tyc1);
00139             return true;
00140         }
00141     }
00142 
00143     return false;
00144 }

static string RossCatalogPrefix "Ross "   )  [static]
 

static string SAOCatalogPrefix "SAO "   )  [static]
 

Referenced by StarDatabase::find().

static void stcError const Tokenizer tok,
const string msg
[static]
 

Definition at line 819 of file stardb.cpp.

References errorMessagePrelude().

Referenced by StarDatabase::load().

00821 {
00822     errorMessagePrelude(tok);
00823     cerr << msg << '\n';
00824 }

static string TychoCatalogPrefix "TYC "   )  [static]
 

Referenced by parseTychoCatalogNumber().


Variable Documentation

const float STAR_EXTRA_ROOM = 0.01f [static]
 

Definition at line 41 of file stardb.cpp.

Referenced by StarDatabase::loadBinary(), and StarDatabase::loadOldFormatBinary().

const float STAR_OCTREE_MAGNITUDE = 6.0f [static]
 

Definition at line 40 of file stardb.cpp.

Referenced by StarDatabase::buildOctree().

const float STAR_OCTREE_ROOT_SIZE = 15000.0f [static]
 

Definition at line 39 of file stardb.cpp.

Referenced by StarDatabase::buildOctree(), StarDatabase::findCloseStars(), and StarDatabase::findVisibleStars().


Generated on Sat Jan 14 22:31:20 2006 for Celestia by  doxygen 1.4.1