//===-- rosa/core/forward_declarations.h ------------------------*- C++ -*-===//
//
//                                 The RoSA Framework
//
//===----------------------------------------------------------------------===//
///
/// \file rosa/core/forward_declarations.h
///
/// \author David Juhasz (david.juhasz@tuwien.ac.at)
///
/// \date 2017
///
/// \brief Necessary forward declarations of types in the *Core* library.
///
//===----------------------------------------------------------------------===//

#ifndef ROSA_CORE_FORWARD_DECLARATIONS_H
#define ROSA_CORE_FORWARD_DECLARATIONS_H

#include <memory> // NOLINT

namespace rosa {

// Forward declarations of classes.
class Agent;
class Message;
class MessagingSystem;
class System;
class Unit;

/// Type alias used for \c rosa::Unit identifiers.
using id_t = uint64_t;

/// Type of a \c std::unique_ptr for an immutable *Message*, \c rosa::Message
/// instance.
using message_t = std::unique_ptr<const Message>;

} // End namespace rosa

#endif // ROSA_CORE_FORWARD_DECLARATIONS_H
