/****************************************************************************
**  SCALASCA    http://www.scalasca.org/                                   **
*****************************************************************************
**  Copyright (c) 1998-2012                                                **
**  Forschungszentrum Juelich GmbH, Juelich Supercomputing Centre          **
**                                                                         **
**  See the file COPYRIGHT in the package base directory for details       **
****************************************************************************/


#ifndef SCOUT_READTRACETASK_H
#define SCOUT_READTRACETASK_H


#include <Task.h>

#include "scout_types.h"


/*-------------------------------------------------------------------------*/
/**
 * @file  ReadTraceTask.h
 * @brief Declaration of the ReadTraceTask class.
 *
 * This header file provides the declaration of the ReadTraceTask class
 * which is used to read in the trace data per location.
 */
/*-------------------------------------------------------------------------*/


namespace scout
{

/*-------------------------------------------------------------------------*/
/**
 * @class ReadTraceTask
 * @brief Task used to read the per-location trace data.
 *
 * The ReadTraceTask class is used to read the entire trace data which is
 * stored per location into memory.
 */
/*-------------------------------------------------------------------------*/

class ReadTraceTask : public pearl::Task
{
  public:
    /// @name Constructors & destructor
    /// @{

    ReadTraceTask(const GlobalDefsPtr& defs, const LocalTracePtr& trace);

    /// @}
    /// @name Execution control
    /// @{

    virtual bool execute();

    /// @}


  private:
    /// Global definitions object (smart pointer)
    GlobalDefsPtr m_defs;

    /// Local trace data object (smart pointer)
    LocalTracePtr m_trace;
};


}   // namespace scout


#endif   // !SCOUT_READTRACETASK_H
