SuperSpaceInvaderTurboApoca.../lib_headers/mingl/tools/ieditable.h
2021-12-13 09:08:31 +01:00

73 lines
1.4 KiB
C++
Executable File

/**
*
* @file ieditable.h
*
* @authors D. Mathieu, M. Laporte
*
* @date 16/03/2009
*
* @version V2.0
*
* @brief declaration de la classe CEditable dans nsUtil
*
* @version V2.1
*
* @author Alexandre Sollier
*
* @brief Ajout de la documentation
*
**/
#ifndef IEDITABLE_H
#define IEDITABLE_H
#include <iostream>
/**
* @namespace nsUtil
* @brief Espace de nom pour les utilitaires lambda
*/
namespace nsUtil
{
/**
* @class IEditable
* @brief Interface pour un objet injectable
*/
class IEditable
{
public:
/**
* @brief Destructeur pour la classe IEditable
* @fn virtual ~IEditable() = default;
*/
virtual ~IEditable() = default;
/**
* @brief Surcharge de l'opérateur d'injection
* @param[in] os : Flux dans lequel injecter
* @param[in] Obj : Objet a injecter
* @fn friend std::ostream& operator<<(std::ostream& os, const IEditable& Obj);
*/
friend std::ostream& operator<<(std::ostream& os, const IEditable& Obj);
protected:
/**
* @brief Fonction appelée pour injecter l'objet courant dans un flux
* @param[in] os : Flux dans lequel injecter
* @fn virtual std::ostream& _Edit(std::ostream& os) const = 0;
*/
virtual std::ostream& _Edit(std::ostream& os) const = 0;
}; // class IEditable
std::ostream& operator<<(std::ostream & os, const IEditable & Obj);
} // namespace nsUtil
#include "ieditable.hpp"
#endif // IEDITABLE_H