/*******************************************************************************
 * Copyright (c) 2005 - 2013 Profactor GmbH, ACIN, nxtControl GmbH, fortiss GmbH
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * SPDX-License-Identifier: EPL-2.0
 *
 * Contributors:
 *    Thomas Strasser, Ingomar Müller, Martin Melik Merkumians, Alois Zoitl,
 *    Monika Wenger, Stansilav Meduna
 *      - initial implementation and rework communication infrastructure
 *******************************************************************************/
#ifndef _ANY_DAT_H_
#define _ANY_DAT_H_

#include "forte_any_elementary.h"

/*!\ingroup COREDTS IIEC_ANY_DATE represents any date data types according to IEC 61131.
 */
class CIEC_ANY_DATE : public CIEC_ANY_ELEMENTARY{
  public:
    virtual ~CIEC_ANY_DATE(){
    }

    /*! Retrieve the current timezone
     *
     * Can be sed to adjust mktime()-related values
     *
     * @return Number of minutes west (negative) or east (positive), not taking DST into consideration
     */
    static TForteInt32 getTimeZoneOffset();

    /*! set the value of the data according to the given values
     *
     */
    bool setDateAndTime(struct tm &pa_rstTM, unsigned int pa_unMilliSec);

    /*! retrieve the time struct for the current value stored in this Data variable
     */
    struct tm *getTimeStruct() const;

    /*! Get the milliseconds part of the data value
     */
    unsigned int getMilliSeconds() const;

  protected:
    CIEC_ANY_DATE() {
    }

  private:
    static TForteInt32 sm_nTimeZoneOffset;
};

#endif /*_MANY_DAT_H_*/
