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 + -
显示快捷键?