/** \file
 *
 *  Specifies the interface details for the InternalEnvSim component in the
 *  SimulatorModule.
 *
 *  InternalEnvSim.h should only be included by InternalEnvSim.cpp
 *  Other classes should include InternalEnvSimIF.h
 *
 *  Copyright (c) 2007,2008,2009 MBARI
 *  MBARI Proprietary Information.  All Rights Reserved
 */

#ifndef INTERNALENVSIMIF_H_
#define INTERNALENVSIMIF_H_

/**
 *  Specifies the interface details for the InternalEnvSim component in the
 *  SimulatorModule.
 *
 *  InternalEnvSim.h should only be included by InternalEnvSim.cpp
 *  Other classes should include InternalEnvSimIF.h
 *
 *  \ingroup modules_simulator
 */
namespace InternalEnvSimIF
{
// Component name
static const Str NAME( "InternalEnvSim" );

// Include common ConfigURIs -- must be in namespace and follow definition of NAME
#include "component/HasLoadAtStartupIF.h"

static const RestartConfigURI NC3_FILE( NAME, "nc3File", "Netcdf v3 (classic) CF-Metadata compliant file containing ocean model", Units::NONE, STRVALUE );

/// Maximum number of Variables (used below)
static const int MAX_VARS = 6;

static const RestartConfigURI VAR_1( NAME, "var1", "Simulated [standard variable name]:[LRAUV unit] #1", Units::NONE, STRVALUE );
static const RestartConfigURI VAR_2( NAME, "var2", "Simulated [standard variable name]:[LRAUV unit] #2, can leave blank", Units::NONE, STRVALUE );
static const RestartConfigURI VAR_3( NAME, "var3", "Simulated [standard variable name]:[LRAUV unit] #3, can leave blank", Units::NONE, STRVALUE );
static const RestartConfigURI VAR_4( NAME, "var4", "Simulated [standard variable name]:[LRAUV unit] #4, can leave blank", Units::NONE, STRVALUE );
static const RestartConfigURI VAR_5( NAME, "var5", "Simulated [standard variable name]:[LRAUV unit] #5, can leave blank", Units::NONE, STRVALUE );
static const RestartConfigURI VAR_6( NAME, "var6", "Simulated [standard variable name]:[LRAUV unit] #6, can leave blank", Units::NONE, STRVALUE );

/// Maximum number of global attributes Set/Overriden (used below)
static const int MAX_ATTS = 6;

static const RestartConfigURI ATT_1( NAME, "att1", "Set/Override [global attribute name]:[double value] #1, can leave blank", Units::NONE, STRVALUE );
static const RestartConfigURI ATT_2( NAME, "att2", "Set/Override [global attribute name]:[double value] #2, can leave blank", Units::NONE, STRVALUE );
static const RestartConfigURI ATT_3( NAME, "att3", "Set/Override [global attribute name]:[double value] #3, can leave blank", Units::NONE, STRVALUE );
static const RestartConfigURI ATT_4( NAME, "att4", "Set/Override [global attribute name]:[double value] #4, can leave blank", Units::NONE, STRVALUE );
static const RestartConfigURI ATT_5( NAME, "att5", "Set/Override [global attribute name]:[double value] #5, can leave blank", Units::NONE, STRVALUE );
static const RestartConfigURI ATT_6( NAME, "att6", "Set/Override [global attribute name]:[double value] #6, can leave blank", Units::NONE, STRVALUE );

static const RestartConfigURI TIME_ADJUST( NAME, "timeAdjust", "If non-NaN, set sim time=0 to start of mission plus this anount of time", Units::SECOND );

// Arrays that allow looping through Vars and Atts
static const RestartConfigURI* VARS[InternalEnvSimIF::MAX_VARS] =
{
    &InternalEnvSimIF::VAR_1,
    &InternalEnvSimIF::VAR_2,
    &InternalEnvSimIF::VAR_3,
    &InternalEnvSimIF::VAR_4,
    &InternalEnvSimIF::VAR_5,
    &InternalEnvSimIF::VAR_6
};

static const RestartConfigURI* ATTS[InternalEnvSimIF::MAX_ATTS] =
{
    &InternalEnvSimIF::ATT_1,
    &InternalEnvSimIF::ATT_2,
    &InternalEnvSimIF::ATT_3,
    &InternalEnvSimIF::ATT_4,
    &InternalEnvSimIF::ATT_5,
    &InternalEnvSimIF::ATT_6
};

}

#endif /*INTERNALENVSIMIF_H_*/
