/*******************************************************************************
 * 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_ELE_H_
#define _ANY_ELE_H_

#include "forte_any.h"
#include <ctype.h>
#include <string_utils.h>

/*!\ingroup COREDTS IIEC_ANY_ELEMENTARY represents the elementary data types according to
 *  IEC 61131.
 */
class CIEC_ANY_ELEMENTARY : public CIEC_ANY{
  DECLARE_FIRMWARE_DATATYPE(ANY_ELEMENTARY)

  public:

    CIEC_ANY_ELEMENTARY(const CIEC_ANY_ELEMENTARY &pa_roVal) :
        CIEC_ANY(){
      setLargestUInt(pa_roVal.getLargestUInt());
    }

    virtual ~CIEC_ANY_ELEMENTARY(){
    }

    virtual EDataTypeID getDataTypeID() const{
      return CIEC_ANY::e_ANY;
    }

    virtual int toString(char* paValue, size_t paBufferSize) const;
    virtual int fromString(const char *pa_rsValue);

  protected:
    CIEC_ANY_ELEMENTARY() {
    }

    private:

    int checkTypeSpec(const char *pa_pacValue, const char *pa_pacHashPos);

    const static CStringDictionary::TStringId scm_anTypeNameStringIds[];
    const static int scm_nMaxTypeNameLength = 13;

};

#endif /*_MANY_ELE_H_*/
