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

constellation.cpp

Go to the documentation of this file.
00001 // constellation.cpp
00002 //
00003 // Copyright (C) 2001, Chris Laurel <claurel@shatters.net>
00004 //
00005 // This program is free software; you can redistribute it and/or
00006 // modify it under the terms of the GNU General Public License
00007 // as published by the Free Software Foundation; either version 2
00008 // of the License, or (at your option) any later version.
00009 
00010 #include <iostream>
00011 #include <celutil/util.h>
00012 #include "celestia.h"
00013 #include "constellation.h"
00014 
00015 using namespace std;
00016 
00017 
00018 struct Constellation_s {
00019     const char *name;
00020     const char *gen;
00021     const char *abbr;
00022 };
00023 
00024 static struct Constellation_s constellationInfo[] = {
00025     { "Aries", "Arietis", "Ari" },
00026     { "Taurus", "Tauri", "Tau" },
00027     { "Gemini", "Geminorum", "Gem" },
00028     { "Cancer", "Cancri", "Cnc" },
00029     { "Leo", "Leonis", "Leo" },
00030     { "Virgo", "Virginis", "Vir" },
00031     { "Libra", "Librae", "Lib" },
00032     { "Scorpius", "Scorpii", "Sco" },
00033     { "Sagittarius", "Sagittarii", "Sgr" },
00034     { "Capricornus", "Capricorni", "Cap" },
00035     { "Aquarius", "Aquarii", "Aqr" },
00036     { "Pisces", "Piscium", "Psc" },
00037     { "Ursa Major", "Ursae Majoris", "UMa" },
00038     { "Ursa Minor", "Ursae Minoris", "UMi" },
00039     { "Bootes", "Bootis", "Boo" },
00040     { "Orion", "Orionis", "Ori" },
00041     { "Canis Major", "Canis Majoris", "CMa" },
00042     { "Canis Minor", "Canis Minoris", "CMi" },
00043     { "Lepus", "Leporis", "Lep" },
00044     { "Perseus", "Persei", "Per" },
00045     { "Andromeda", "Andromedae", "And" },
00046     { "Cassiopeia", "Cassiopeiae", "Cas" },
00047     { "Cepheus", "Cephei", "Cep" },
00048     { "Cetus", "Ceti", "Cet" },
00049     { "Pegasus", "Pegasi", "Peg" },
00050     { "Carina", "Carinae", "Car" },
00051     { "Puppis", "Puppis", "Pup" },
00052     { "Vela", "Velorum", "Vel" },
00053     { "Hercules", "Herculis", "Her" },
00054     { "Hydra", "Hydrae", "Hya" },
00055     { "Centaurus", "Centauri", "Cen" },
00056     { "Lupus", "Lupi", "Lup" },
00057     { "Ara", "Arae", "Ara" },
00058     { "Ophiuchus", "Ophiuchi", "Oph" },
00059     { "Serpens", "Serpentis", "Ser" },
00060     { "Aquila", "Aquilae", "Aql" },
00061     { "Auriga", "Aurigae", "Aur" },
00062     { "Corona Australis", "Coronae Australis", "CrA" },
00063     { "Corona Borealis", "Coronae Borealis", "CrB" },
00064     { "Corvus", "Corvi", "Crv" },
00065     { "Crater", "Crateris", "Crt" },
00066     { "Cygnus", "Cygni", "Cyg" },
00067     { "Delphinus", "Delphini", "Del" },
00068     { "Draco", "Draconis", "Dra" },
00069     { "Equuleus", "Equulei", "Equ" },
00070     { "Eridanus", "Eridani", "Eri" },
00071     { "Lyra", "Lyrae", "Lyr" },
00072     { "Piscis Austrinus", "Piscis Austrini", "PsA" },
00073     { "Sagitta", "Sagittae", "Sge" },
00074     { "Triangulum", "Trianguli", "Tri" },
00075     { "Antlia", "Antliae", "Ant" },
00076     { "Apus", "Apodis", "Aps" },
00077     { "Caelum", "Caeli", "Cae" },
00078     { "Camelopardalis", "Camelopardalis", "Cam" },
00079     { "Canes Venatici", "Canum Venaticorum", "CVn" },
00080     { "Chamaeleon", "Chamaeleontis", "Cha" },
00081     { "Circinus", "Circini", "Cir" },
00082     { "Columba", "Columbae", "Col" },
00083     { "Coma Berenices", "Comae Berenices", "Com" },
00084     { "Crux", "Crucis", "Cru" },
00085     { "Dorado", "Doradus", "Dor" },
00086     { "Fornax", "Fornacis", "For" },
00087     { "Grus", "Gruis", "Gru" },
00088     { "Horologium", "Horologii", "Hor" },
00089     { "Hydrus", "Hydri", "Hyi" },
00090     { "Indus", "Indi", "Ind" },
00091     { "Lacerta", "Lacertae", "Lac" },
00092     { "Leo Minor", "Leonis Minoris", "LMi" },
00093     { "Lynx", "Lyncis", "Lyn" },
00094     { "Microscopium", "Microscopii", "Mic" },
00095     { "Monoceros", "Monocerotis", "Mon" },
00096     { "Mensa", "Mensae", "Men" },
00097     { "Musca", "Muscae", "Mus" },
00098     { "Norma", "Normae", "Nor" },
00099     { "Octans", "Octantis", "Oct" },
00100     { "Pavo", "Pavonis", "Pav" },
00101     { "Phoenix", "Phoenicis", "Phe" },
00102     { "Pictor", "Pictoris", "Pic" },
00103     { "Pyxis", "Pyxidis", "Pyx" },
00104     { "Reticulum", "Reticuli", "Ret" },
00105     { "Sculptor", "Sculptoris", "Scl" },
00106     { "Scutum", "Scuti", "Sct" },
00107     { "Sextans", "Sextantis", "Sex" },
00108     { "Telescopium", "Telescopii", "Tel" },
00109     { "Triangulum Australe", "Trianguli Australis", "TrA" },
00110     { "Tucana", "Tucanae", "Tuc" },
00111     { "Volans", "Volantis", "Vol" },
00112     { "Vulpecula", "Vulpeculae", "Vul" }
00113 };
00114 
00115 static Constellation **constellations = NULL;
00116 
00117 
00118 Constellation::Constellation(const char *_name, const char *_genitive, const char *_abbrev)
00119 {
00120     name = string(_name);
00121     genitive = string(_genitive);
00122     abbrev = string(_abbrev);
00123 }
00124 
00125 Constellation* Constellation::getConstellation(unsigned int n)
00126 {
00127     if (constellations == NULL)
00128         initialize();
00129 
00130     if (constellations == NULL ||
00131         n >= sizeof(constellationInfo) / sizeof(constellationInfo[0]))
00132         return NULL;
00133     else
00134         return constellations[n];
00135 }
00136 
00137 Constellation* Constellation::getConstellation(const string& name)
00138 {
00139     if (constellations == NULL)
00140         initialize();
00141 
00142     for (unsigned int i = 0;
00143          i < sizeof(constellationInfo) / sizeof(constellationInfo[0]);
00144          i++)
00145     {
00146         if (compareIgnoringCase(name, constellationInfo[i].abbr) == 0 ||
00147             compareIgnoringCase(name, constellationInfo[i].gen) == 0 ||
00148             compareIgnoringCase(name, constellationInfo[i].name) == 0)
00149         {
00150             return constellations[i];
00151         }
00152     }
00153 
00154     return NULL;
00155 }
00156 
00157 string Constellation::getName()
00158 {
00159     return name;
00160 }
00161 
00162 string Constellation::getGenitive()
00163 {
00164     return genitive;
00165 }
00166 
00167 string Constellation::getAbbreviation()
00168 {
00169     return abbrev;
00170 }
00171 
00172 void Constellation::initialize()
00173 {
00174     int nConstellations = sizeof(constellationInfo) / sizeof(constellationInfo[0]);
00175     constellations = new Constellation* [nConstellations];
00176 
00177     if (constellations != NULL)
00178     {
00179         for (int i = 0; i < nConstellations; i++)
00180         {
00181             constellations[i] = new Constellation(constellationInfo[i].name,
00182                                                   constellationInfo[i].gen,
00183                                                   constellationInfo[i].abbr);
00184         }
00185     }
00186 }

Generated on Sat Jan 14 22:30:27 2006 for Celestia by  doxygen 1.4.1