Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

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 Apr 30 02:30:49 2009 for ACS C++ API by doxygen 1.3.8