• Classes
  • Modules
  • Namespaces
  • Files
  • Related Pages
  • File List
  • File Members

acstimeEpochHelper.h

Go to the documentation of this file.
00001 /* @(#) $Id: acstimeEpochHelper.h,v 1.18 2008/10/09 07:31:16 cparedes Exp $
00002  *
00003  * Copyright (C) 2001
00004  * Associated Universities, Inc. Washington DC, USA.
00005  *
00006  * Produced for the ALMA project
00007  *
00008  * This library is free software; you can redistribute it and/or modify it it 
00009  * under the terms of the GNU Library General Public License as published by 
00010  * the Free Software Foundation; either version 2 of the License, or (at your
00011  * option) any later version.
00012  *
00013  * This library is distributed in the hope that it will be useful but WITHOUT 
00014  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 
00015  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Library General Public 
00016  * License for more details.
00017  *
00018  * You should have received a copy of the GNU Library General Public License 
00019  * along with this library; if not, write to the Free Software Foundation, 
00020  * Inc., 675 Massachusetts Ave, Cambridge, MA, 02139, USA.
00021  *
00022  * Correspondence concerning ALMA should be addressed as follows:
00023  * Internet email: alma-sw-admin@nrao.edu
00024  */
00025 /* ----------------------------------------------------------------*/
00026 #ifndef ACSTIME_EPOCH_HELPER_H
00027 #define ACSTIME_EPOCH_HELPER_H
00028 /* ----------------------------------------------------------------*/
00029 #ifndef __cplusplus
00030 #error This is a C++ include file and cannot be used from plain C
00031 #endif
00032 /* ----------------------------------------------------------------*/
00033 #include "acstimeTimeUtil.h"
00034 #include "acstimeDurationHelper.h"
00035 /* ----------------------------------------------------------------*/
00048 class EpochHelper : TimeUtil
00049 {
00050   public:
00051     /* ----------------------------------------------------------------*/
00056     EpochHelper(const acstime::Epoch &epoch);
00057     
00060     EpochHelper();
00061 
00066     EpochHelper(long double MJDSeconds);
00067 
00072     EpochHelper(const ACS::Time &value);
00073 
00076     virtual ~EpochHelper(){};
00077     /* ----------------------------------------------------------------*/
00085     acstime::Epoch value();
00086 
00094     void value(const acstime::Epoch &epoch);
00095 
00103     void value(const ACS::Time &epoch);
00104 
00112     void value(long double MJDSeconds);
00113     /* ----------------------------------------------------------------*/
00121     CORBA::ULong year();
00122 
00130     void year(const CORBA::ULong&);
00131     /* ----------------------------------------------------------------*/
00139     CORBA::Long month();
00140 
00148     void month(const CORBA::Long&);
00149     /* ----------------------------------------------------------------*/
00157     CORBA::Long day();
00158 
00166     void day(const CORBA::Long&);
00167     /* ----------------------------------------------------------------*/
00175     CORBA::Long dayOfYear();
00176 
00184     void dayOfYear(const CORBA::Long&);
00185     /* ----------------------------------------------------------------*/
00193     CORBA::ULong dayOfWeek();
00194     /* ----------------------------------------------------------------*/
00202     CORBA::Long hour();
00203 
00211     void hour(const CORBA::Long&);
00212     /* ----------------------------------------------------------------*/
00220     CORBA::Long minute();
00221 
00229     void minute(const CORBA::Long&);
00230     /* ----------------------------------------------------------------*/
00238     CORBA::Long second();
00239 
00247     void second(const CORBA::Long&);
00248     /* ----------------------------------------------------------------*/
00256     CORBA::Long microSecond();
00257 
00265     void microSecond(const CORBA::Long&);
00266     /* ----------------------------------------------------------------*/
00291     CORBA::Boolean normalize();
00292 
00317     void normalize(const CORBA::Boolean&);
00318     /* ----------------------------------------------------------------*/
00326     void reset();
00327     /* ----------------------------------------------------------------*/
00341     acstime::TimeComparison 
00342     compare(const acstime::Epoch &epoch);
00343     //These are the equivalent of the compare method()
00344     CORBA::Boolean operator==(const acstime::Epoch &epoch) const;
00345     CORBA::Boolean operator<=(const acstime::Epoch &epoch) const;
00346     CORBA::Boolean operator<(const acstime::Epoch &epoch) const;
00347     CORBA::Boolean operator>=(const acstime::Epoch &epoch) const;
00348     CORBA::Boolean operator>(const acstime::Epoch &epoch) const;
00349 
00359     void add(const acstime::Duration&);
00360     
00369     EpochHelper& operator+=(const acstime::Duration &duration);
00370 
00380     void subtract(const acstime::Duration&);
00381     
00390     EpochHelper& operator-=(const acstime::Duration &duration);
00391 
00407     acstime::Duration difference(const acstime::Epoch &subtrahend);
00408 
00417     void modulo(const acstime::Epoch &epoch);
00418 
00427     EpochHelper& operator%=(const acstime::Epoch &epoch);
00428     
00442     CORBA::Double toUTCdate(CORBA::Long array2TAI, CORBA::Long TAI2UTC);
00443 
00458     long double toMJDseconds();
00459     
00473     CORBA::Double toJulianYear(CORBA::Long array2TAI, CORBA::Long TAI2UTC);
00474     /* ----------------------------------------------------------------*/
00487     std::string toString(acstime::TimeSystem, const char*, const CORBA::Long array2TAI, const CORBA::Long TAI2UTC);
00488 
00499     void fromString(acstime::TimeSystem, const char*);
00500 
00501     friend DurationHelper* operator% (const EpochHelper&, const ACS::TimeInterval &);
00502     friend DurationHelper* operator% (const ACS::TimeInterval &, const EpochHelper&);
00503 
00504   private:
00505     /* ----------------------------------------------------------------*/
00509     void m_toValue(CORBA::Boolean booVal);
00510     
00511     void m_toAttributes();
00512     
00513     long m_calcLeap();
00514     
00515     void m_almostUnix(std::ostringstream&);
00516     void m_iso8601date(std::ostringstream&);
00517     void m_iso8601full(std::ostringstream&);
00518     void m_abbrevMonth(std::ostringstream&);
00519     void m_abbrevWeekday(std::ostringstream&);
00520     void m_microSec(std::ostringstream&, int);
00521     /* ----------------------------------------------------------------*/
00522     //The real variables affected by calls to public methods.
00523     acstime::Epoch value_m;
00524     CORBA::ULong year_m;
00525     CORBA::Long month_m;
00526     CORBA::Long day_m;
00527     CORBA::Long day_mOfYear;
00528     CORBA::ULong dayOfWeek_m;
00529     CORBA::Long hour_m;
00530     CORBA::Long minute_m;
00531     CORBA::Long second_m;
00532     CORBA::Long microSecond_m;
00533     CORBA::Boolean normalize_m;
00534     
00537     EpochHelper(const EpochHelper&);
00538     
00541     void operator= (const EpochHelper&);
00542 };
00543 
00552 DurationHelper* operator% (const EpochHelper&, const ACS::TimeInterval &);
00553 
00562 DurationHelper* operator% (const ACS::TimeInterval &, const EpochHelper&);
00563 
00564 #endif
00565 
00566 
00567 
00568 
00569 
00570 
00571 
00572 
00573 
00574 

Generated on Thu Jul 8 2010 19:47:46 for ACS-9.0 C++ API by  doxygen 1.7.0