manipulator.hpp
Go to the documentation of this file.
00001 
00008 /*****************************************************************************
00009 ** Ifdefs
00010 *****************************************************************************/
00011 
00012 #ifndef ECL_STREAMS_MANIPULATOR_HPP_
00013 #define ECL_STREAMS_MANIPULATOR_HPP_
00014 
00015 /*****************************************************************************
00016 ** Includes
00017 *****************************************************************************/
00018 
00019 #include <ecl/config/macros.hpp>
00020 #include <ecl/concepts/devices.hpp>
00021 #include "../macros.hpp"
00022 
00023 /*****************************************************************************
00024 ** Namespaces
00025 *****************************************************************************/
00026 
00027 namespace ecl {
00028 
00029 /*****************************************************************************
00030 ** Forwarding
00031 *****************************************************************************/
00032 
00033 namespace interfaces {
00034         template <typename Device, bool OutputDevice> class ECL_PUBLIC OutputTextStream;
00035 }
00036 
00037 /*****************************************************************************
00038 ** Interface [Manipulator]
00039 *****************************************************************************/
00091 template <typename Derived>
00092 class ecl_streams_PUBLIC Manipulator {
00093 public:
00108         template <typename ODevice>
00109         void insert (interfaces::OutputTextStream<ODevice,true>& ostream) {
00110                 ecl_compile_time_concept_check(OutputCharDeviceConcept<ODevice>);
00111                 static_cast<Derived*>(this)->action(ostream);
00112         }
00113 
00114         virtual ~Manipulator() {}
00115 };
00116 
00117 } // namespace ecl
00118 
00119 #endif /* ECL_STREAMS_MANIPULATOR_HPP_ */


ecl_streams
Author(s): Daniel Stonier
autogenerated on Mon Jul 3 2017 02:22:08