Cortex  10.0.0-a4
MessageHandler.h
1 //
3 // Copyright (c) 2007-2013, Image Engine Design Inc. All rights reserved.
4 //
5 // Redistribution and use in source and binary forms, with or without
6 // modification, are permitted provided that the following conditions are
7 // met:
8 //
9 // * Redistributions of source code must retain the above copyright
10 // notice, this list of conditions and the following disclaimer.
11 //
12 // * Redistributions in binary form must reproduce the above copyright
13 // notice, this list of conditions and the following disclaimer in the
14 // documentation and/or other materials provided with the distribution.
15 //
16 // * Neither the name of Image Engine Design nor the names of any
17 // other contributors to this software may be used to endorse or
18 // promote products derived from this software without specific prior
19 // written permission.
20 //
21 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
22 // IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
23 // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
24 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
25 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
26 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
27 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
28 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
29 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
30 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
31 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32 //
34 
35 #ifndef IECORE_MESSAGEHANDLER_H
36 #define IECORE_MESSAGEHANDLER_H
37 
38 #include <stack>
39 
40 #include "boost/format.hpp"
41 #include "boost/noncopyable.hpp"
42 
43 #include "IECore/Export.h"
44 #include "IECore/RefCounted.h"
45 
46 namespace IECore
47 {
48 
49 class MessageHandler;
50 IE_CORE_DECLAREPTR( MessageHandler );
51 
58 class IECORE_API MessageHandler : public RefCounted
59 {
60 
61  public :
62 
63  IE_CORE_DECLAREMEMBERPTR( MessageHandler );
64 
65  enum Level
66  {
67  Error = 0,
68  Warning = 1,
69  Info = 2,
70  Debug = 3,
71  Invalid = 4
72  };
73 
80 
81  static void output( Level level, const std::string &context, const std::string &message );
84  static void output( Level level, const std::string &context, const boost::format &message );
86 
97 
98  static void setDefaultHandler( const MessageHandlerPtr &handler );
99  static MessageHandler *getDefaultHandler();
101 
109  class IECORE_API Scope : boost::noncopyable
110  {
111 
112  public :
113 
118  Scope( MessageHandler *handler );
121  ~Scope();
122 
123  private :
124 
125  MessageHandler *m_handler;
126 
127  };
128 
134  static MessageHandler *currentHandler();
135 
138 
139  static std::string levelAsString( Level level );
142  static Level stringAsLevel( const std::string &level );
144 
147  virtual void handle( Level level, const std::string &context, const std::string &message ) = 0;
148 
149 };
150 
153 
156 IECORE_API void msg( MessageHandler::Level level, const std::string &context, const std::string &message );
157 IECORE_API void msg( MessageHandler::Level level, const std::string &context, const boost::format &message );
158 
159 }; // namespace IECore
160 
161 #endif // IECORE_MESSAGEHANDLER_H
MessageHandler Msg
typedef for brevity.
Definition: MessageHandler.h:152
Definition: MessageHandler.h:58
Definition: MessageHandler.h:109
Definition: RefCounted.h:124
This namespace contains all components of the core library.
Definition: AddSmoothSkinningInfluencesOp.h:43
IECORE_API void msg(MessageHandler::Level level, const std::string &context, const std::string &message)