Ignore:
Timestamp:
04/14/17 17:18:31 (8 years ago)
Author:
tbretz
Message:
Changed to upper case, automatically convert to upper case, use an invalid default if string is invalid, added isValid
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Mars/mcore/nova.h

    r18820 r18827  
    44#include <map>
    55#include <string>
     6#include <algorithm>
    67
    78#include <libnova/solar.h>
     
    3839        LnLatPosn() { }
    3940        LnLatPosn(const ln_lnlat_posn &pos) : ln_lnlat_posn(pos) { }
    40         LnLatPosn(const std::string &obs)
     41        LnLatPosn(std::string obs)
    4142        {
    4243#ifndef __CINT__
    4344            static const std::map<std::string, ln_lnlat_posn> lut =
    4445            {
    45                 { "orm",  kORM  },
    46                 { "hawc", kHAWC },
    47                 { "spm",  kSPM  },
     46                { "ORM",  kORM  },
     47                { "HAWC", kHAWC },
     48                { "SPM",  kSPM  },
    4849            };
    4950
     51            for (auto &c: obs)
     52                c = toupper(c);
     53
    5054            const auto it = lut.find(obs);
    51             *this = it==lut.end() ? ln_lnlat_posn({0,0}) : it->second;
    52 #endif
     55            *this = it==lut.end() ? ln_lnlat_posn({std::numeric_limits<double>::quiet_NaN(),std::numeric_limits<double>::quiet_NaN()}) : it->second;
     56#endif
     57        }
     58        bool isValid() const
     59        {
     60            return std::isfinite(lat) && std::isfinite(lng);
    5361        }
    5462    };
Note: See TracChangeset for help on using the changeset viewer.