stacktrace.h

来自「AIML的实现」· C头文件 代码 · 共 124 行

H
124
字号
#ifndef REBECCA_IMPL_UTILS_STACKTRACE_H#define REBECCA_IMPL_UTILS_STACKTRACE_H/* * RebeccaAIML, Artificial Intelligence Markup Language  * C++ api and engine. * * Copyright (C) 2005 Frank Hassanabad * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA *///Stl includes#include <iostream> #include <fstream>//Rebecca includes#include <rebecca/adt/String.h>namespace rebecca{namespace impl{namespace utils{using adt::String;using std::cout;using std::endl;using std::ofstream;#if defined(BOT_USE_STACK_TRACE) || defined(BOT_USE_LOGGING)class OutputDirection{	public:		void outputText(const String &text)		{			m_outputFile << text;		}		void outputTextEndl(const String &text)		{			m_outputFile << text << endl;		}		static OutputDirection *getInstance()		{			if(m_instance == 0)			{				m_instance = new OutputDirection;			}			return m_instance;		}	protected:		OutputDirection() 			: m_outputFile("logging.txt")		{		}	public:		ofstream m_outputFile;		static OutputDirection *m_instance;};#endif //end of BOT_USE_STACK_TRACE ifdef#ifdef BOT_USE_STACK_TRACEclass StackTrace{	public:			StackTrace(const String &methodName);		static void indent();		~StackTrace();		static int getSpaces();	private:		String m_methodName;		static int m_spaces;};#define LOG_BOT_METHOD(a) StackTrace bot_impl_utils_stacktrace_private_tracing(a);#else //BOT_USE_LOGGING//We do not want logging#define LOG_BOT_METHOD(a)#endif //end of BOT_USE_LOGGING} //end of utils namespace} //end of impl namespace#ifdef BOT_USE_STACK_TRACEusing rebecca::impl::utils::StackTrace;#endif} //end of bot namespace#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?