/** \file
 *
 *  Contains the LuaMissionAPI class definition.
 *
 *  Copyright (c) 2007,2008,2009 MBARI
 *  MBARI Proprietary Information.  All Rights Reserved
 *
 */

#ifndef LUAMISSIONAPI_H_
#define LUAMISSIONAPI_H_

#include "lua/LuaAPI.h"
#include "missionScript/MissionAPI.h"

/**
 * Implements MissionAPI in the lua programming language. Relies heavily on
 * LuaAPI and Tethys.lua code.
 *
 *  \ingroup lua
 */
class LuaMissionAPI : public MissionAPI
{
public:

    virtual ~LuaMissionAPI();

    /// Load the mission with the indicated filename
    /// In case of error, log message with indicated severity
    virtual MissionNode* loadMissionFile( const char* filename, Logger& logger,
                                          Syslog::Severity severity );

private:

    /// Private constructor for singleton
    LuaMissionAPI();

    static LuaMissionAPI MissionAPIInstance_;

};

#endif /* LUAMISSIONAPI_H_ */
