1 ////////////////////////////////////////////////////////////////////////////////////////
2 //
3 // Nestopia - NES/Famicom emulator written in C++
4 //
5 // Copyright (C) 2003-2008 Martin Freij
6 //
7 // This file is part of Nestopia.
8 //
9 // Nestopia is free software; you can redistribute it and/or modify
10 // it under the terms of the GNU General Public License as published by
11 // the Free Software Foundation; either version 2 of the License, or
12 // (at your option) any later version.
13 //
14 // Nestopia is distributed in the hope that it will be useful,
15 // but WITHOUT ANY WARRANTY; without even the implied warranty of
16 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 // GNU General Public License for more details.
18 //
19 // You should have received a copy of the GNU General Public License
20 // along with Nestopia; if not, write to the Free Software
21 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
22 //
23 ////////////////////////////////////////////////////////////////////////////////////////
24 
25 #include "NstIoLog.hpp"
26 
27 namespace Nestopia
28 {
29 	namespace Io
30 	{
31 		struct Log::Callbacker
32 		{
33 			void* data;
34 			void (NST_CALL *code)(void*,wcstring,uint);
35 		};
36 
37 		Log::Callbacker Log::callbacker = {NULL,NULL};
38 
SetCallback(void * data,void (NST_CALL * code)(void *,wcstring,uint))39 		void Log::SetCallback(void* data,void (NST_CALL* code)(void*,wcstring,uint))
40 		{
41 			NST_ASSERT( bool(data) == bool(code) );
42 
43 			callbacker.code = code;
44 			callbacker.data = data;
45 		}
46 
UnsetCallback()47 		void Log::UnsetCallback()
48 		{
49 			callbacker.code = NULL;
50 			callbacker.data = NULL;
51 		}
52 
~Log()53 		Log::~Log()
54 		{
55 			if (callbacker.code)
56 				callbacker.code( callbacker.data, Ptr(), Length() );
57 		}
58 	}
59 }
60