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