X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Ftiming%2Ftimezone.h;h=76c62a326debd6e2d5b2ac670aa8551cf3c17b32;hb=1f585d67199896749f5f532657d17afe586f6615;hp=cac4acadd28d5017bb2e852c88e7660e55a7dd89;hpb=1b07b25ad2eb26be45f7df744efa332a230d2baf;p=simgear.git diff --git a/simgear/timing/timezone.h b/simgear/timing/timezone.h index cac4acad..76c62a32 100644 --- a/simgear/timing/timezone.h +++ b/simgear/timing/timezone.h @@ -2,69 +2,103 @@ * timezone.h * Written by Durk Talsma. Started July 1999. * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of the - * License, or (at your option) any later version. + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. + * Library General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * **************************************************************************/ -/************************************************************************* +/** \file timezone.h * - * Timezone is derived from geocoord, and stores the timezone centerpoint, - * as well as the countrycode and the timezone descriptor. The latter is - * used in order to get the local time. + * Provides SGTimeZone and SGTimeZoneContainer * - ************************************************************************/ + */ #ifndef _TIMEZONE_H_ #define _TIMEZONE_H_ -#include "geocoord.h" -#include +#include +#include + +#include +#include -class Timezone : public GeoCoord +/** + * SGTimeZone stores the timezone centerpoint, + * as well as the countrycode and the timezone descriptor. The latter is + * used in order to get the local time. + * + */ + +class SGTimeZone { + private: - char* countryCode; - char* descriptor; + + SGVec3d centerpoint; // centre of timezone, in cartesian coordinates + std::string countryCode; + std::string descriptor; public: - Timezone() : - GeoCoord() - { - countryCode = 0; - descriptor = 0; - }; - Timezone(float la, float lo, char* cc, char* desc); - Timezone(const char *infoString); - Timezone(const Timezone &other); - virtual ~Timezone() { delete [] countryCode; delete [] descriptor; }; - - virtual void print() { printf("%s", descriptor);}; - virtual char * getDescription() { return descriptor; }; + /** + * Build a timezone object with a specifed latitude, longitude, country + * code, and descriptor + * @param pt centerpoint + * @param cc country code + * @param desc descriptor + */ + SGTimeZone(const SGGeod& pt, char* cc, char* desc); + + /** + * Build a timezone object from a textline in zone.tab + * @param infoString the textline from zone.tab + */ + SGTimeZone(const char *infoString); + + /** + * The copy constructor + * @param other the source object + */ + SGTimeZone(const SGTimeZone &other); + + /** + * Return the descriptor string + * @return descriptor string (char array) + */ + const char * getDescription() { return descriptor.c_str(); }; + + const SGVec3d& cartCenterpoint() const + { + return centerpoint; + } }; -/************************************************************************ - * Timezone container is derived from GeoCoordContainer, and has some - * added functionality. - ************************************************************************/ +/** + * SGTimeZoneContainer + */ -class TimezoneContainer : public GeoCoordContainer +class SGTimeZoneContainer { - public: - TimezoneContainer(const char *filename); - virtual ~TimezoneContainer(); +public: + SGTimeZoneContainer(const char *filename); + ~SGTimeZoneContainer(); + + SGTimeZone* getNearest(const SGGeod& ref) const; + +private: + typedef std::vector TZVec; + TZVec zones; };