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 
00022 /*****************************************************************************
00023 ** Namespaces
00024 *****************************************************************************/
00025 
00026 namespace ecl {
00027 
00028 /*****************************************************************************
00029 ** Forwarding
00030 *****************************************************************************/
00031 
00032 namespace interfaces {
00033         template <typename Device, bool OutputDevice> class ECL_PUBLIC OutputTextStream;
00034 }
00035 
00036 /*****************************************************************************
00037 ** Interface [Manipulator]
00038 *****************************************************************************/
00090 template <typename Derived>
00091 class ECL_PUBLIC Manipulator {
00092 public:
00107         template <typename ODevice>
00108         void insert (interfaces::OutputTextStream<ODevice,true>& ostream) {
00109                 ecl_compile_time_concept_check(OutputCharDeviceConcept<ODevice>);
00110                 static_cast<Derived*>(this)->action(ostream);
00111         }
00112 
00113         virtual ~Manipulator() {}
00114 };
00115 
00116 } // namespace ecl
00117 
00118 #endif /* ECL_STREAMS_MANIPULATOR_HPP_ */


ecl_streams
Author(s): Daniel Stonier (d.stonier@gmail.com)
autogenerated on Thu Jan 2 2014 11:12:54