VISR  0.11.8
Versatile Interactive Scene Renderer
compose_message_string.hpp
Go to the documentation of this file.
1 /* Copyright Institute of Sound and Vibration Research - All rights reserved */
2 
3 #ifndef VISR_DETAIL_COMPOSE_MESSAGE_STRING_HPP_INCLUDED
4 #define VISR_DETAIL_COMPOSE_MESSAGE_STRING_HPP_INCLUDED
5 
6 #include <ostream>
7 #include <string>
8 #include <sstream>
9 
10 namespace visr
11 {
12 namespace detail
13 {
14  // Forward declarations
15  template< typename MessageType >
16  static void composeMessageStream( std::ostream & str, MessageType const & msg );
17  template< typename MessageType, typename... MessageRest>
18  static void composeMessageStream( std::ostream & str, MessageType const & msg,
19  MessageRest ... rest );
20 
28  template<typename ... Messages>
29  static std::string composeMessageString( Messages ... messages )
30  {
31  std::stringstream str;
32  composeMessageStream( str, messages ... );
33  return str.str();
34  }
35 
43  template< typename MessageType >
44  static void composeMessageStream( std::ostream & str, MessageType const & msg )
45  {
46  str << msg;
47  }
48 
58  template< typename MessageType, typename... MessageRest>
59  static void composeMessageStream( std::ostream & str, MessageType const & msg, MessageRest ... rest )
60  {
61  str << msg;
62  composeMessageStream( str, rest ... );
63  }
64 
65 } // namespace detail
66 } // namespace visr
67 
68 #endif // #ifndef VISR_DETAIL_COMPOSE_MESSAGE_STRING_HPP_INCLUDED
Definition: options.cpp:10