Ignore:
Timestamp:
12/10/14 14:27:09 (9 years ago)
Author:
rlacroix
Message:

Add a new attribute type for dates and use it for the context's start_date and time_origin.

The "xios_date" type should now be used to get/set date attributes through the Fortran interface. This avoids using strings to manipulate dates.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/trunk/src/calendar.cpp

    r501 r532  
    1414      {   } 
    1515 
    16       CCalendar::CCalendar(const StdString & id) 
     16      CCalendar::CCalendar(const StdString& id) 
    1717               : CObject(id) 
    1818               , initDate(*this) 
     
    2121      { } 
    2222       
    23       CCalendar::CCalendar(const StdString & id, 
     23      CCalendar::CCalendar(const StdString& id, 
    2424                           int yr, int mth, int d  , 
    2525                           int hr, int min, int sec) 
     
    3232      } 
    3333 
    34       CCalendar::CCalendar(const StdString & id, const StdString & dateStr) 
     34      CCalendar::CCalendar(const StdString& id, const CDate& startDate) 
    3535               : CObject(id) 
    36                , initDate(CDate::FromString(dateStr, *this)) 
    37                , timeOrigin(initDate) 
    38                , currentDate(initDate) 
    39       {  
    40         initializeDate(dateStr) ; 
     36               , initDate(startDate) 
     37               , timeOrigin(startDate) 
     38               , currentDate(startDate) 
     39      { 
     40        // Initialize the dates only in the derivated classes 
     41        // since we want to use the overloaded virtual functions 
    4142      } 
    4243 
    43       CCalendar::CCalendar(const StdString & id, const StdString & dateStr, const StdString & timeOriginStr) 
     44      CCalendar::CCalendar(const StdString& id, const CDate& startDate, const CDate& timeOrigin) 
    4445               : CObject(id) 
    45                , initDate(*this) 
    46                , timeOrigin(*this) 
    47                , currentDate(*this) 
    48       {  
    49         initializeDate(dateStr, timeOriginStr) ; 
     46               , initDate(startDate) 
     47               , timeOrigin(timeOrigin) 
     48               , currentDate(startDate) 
     49      { 
     50        // Initialize the dates only in the derivated classes 
     51        // since we want to use the overloaded virtual functions 
    5052      } 
    5153 
     54      void CCalendar::initializeDate() 
     55      { 
     56        if (!initDate.setRelCalendar(*this)) 
     57          ERROR("CCalendar::initializeDate()", 
     58                "initDate: Bad format or date not conform to the calendar"); 
     59        if (!timeOrigin.setRelCalendar(*this)) 
     60          ERROR("CCalendar::initializeDate()", 
     61                "timeOrigin: Bad format or date not conform to the calendar"); 
     62        if (!currentDate.setRelCalendar(*this)) 
     63          ERROR("CCalendar::initializeDate()", 
     64                "currentDate: Bad format or date not conform to the calendar"); 
     65      } 
    5266 
    53       void CCalendar::initializeDate( int yr, int mth, int d  , 
    54                                  int hr, int min, int sec) 
    55       {  
     67      void CCalendar::initializeDate(int yr, int mth, int d, 
     68                                     int hr, int min, int sec) 
     69      { 
    5670        initDate=CDate(*this,yr, mth, d, hr, min, sec) ; 
    5771        timeOrigin=initDate; 
     
    5973      } 
    6074 
    61       void CCalendar::initializeDate(const StdString & dateStr) 
     75      void CCalendar::initializeDate(const StdString& dateStr) 
    6276      {  
    6377        initDate=CDate::FromString(dateStr, *this) ; 
     
    6680      } 
    6781 
    68       void CCalendar::initializeDate(const StdString & dateStr, const StdString & timeOriginStr) 
     82      void CCalendar::initializeDate(const StdString& dateStr, const StdString& timeOriginStr) 
    6983      {  
    7084        initDate=CDate::FromString(dateStr, *this) ; 
Note: See TracChangeset for help on using the changeset viewer.