From 82d5709bbf0c40af4255920f8ac9e0f9e6b2f904 Mon Sep 17 00:00:00 2001 From: Alex Zolotarev Date: Thu, 27 Oct 2011 11:24:30 +0300 Subject: [PATCH] Improved log formatting - do not print "()" for ObjectiveC functions --- base/src_point.hpp | 58 +++++++++++++++++++++++++++------------------- 1 file changed, 34 insertions(+), 24 deletions(-) diff --git a/base/src_point.hpp b/base/src_point.hpp index 72d5f87af0..848a4ee882 100644 --- a/base/src_point.hpp +++ b/base/src_point.hpp @@ -1,17 +1,21 @@ #pragma once -#include "base.hpp" + #include "../std/algorithm.hpp" #include "../std/sstream.hpp" #include "../std/string.hpp" #ifndef SRC_LOGGING -#define SRC_LOGGING 1 + #define SRC_LOGGING 1 #endif #if SRC_LOGGING -#define SRC() my::SrcPoint(__FILE__, __LINE__, __FUNCTION__) + #ifndef __OBJC__ + #define SRC() my::SrcPoint(__FILE__, __LINE__, __FUNCTION__, "()") + #else + #define SRC() my::SrcPoint(__FILE__, __LINE__, __FUNCTION__) + #endif #else -#define SRC() my::SrcPoint() + #define SRC() my::SrcPoint() #endif namespace my @@ -19,59 +23,65 @@ namespace my class SrcPoint { public: - SrcPoint() : m_FileName(""), m_Line(-1), m_Function("") + SrcPoint() : m_fileName(""), m_line(-1), m_function("") { TruncateFileName(); } - SrcPoint(char const * fileName, int line, char const * function) - : m_FileName(fileName), m_Line(line), m_Function(function) + SrcPoint(char const * fileName, int line, char const * function, char const * postfix = "") + : m_fileName(fileName), m_line(line), m_function(function), m_postfix(postfix) { TruncateFileName(); } inline char const * FileName() const { - return m_FileName; + return m_fileName; } inline int Line() const { - return m_Line; + return m_line; } inline char const * Function() const { - return m_Function; + return m_function; } + + inline char const * Postfix() const + { + return m_postfix; + } + private: void TruncateFileName() { size_t const maxLen = 10000; - char const * p[] = { m_FileName, m_FileName }; - for (size_t i = 0; i < maxLen && m_FileName[i]; ++i) + char const * p[] = { m_fileName, m_fileName }; + for (size_t i = 0; i < maxLen && m_fileName[i]; ++i) { - if (m_FileName[i] == '\\' || m_FileName[i] == '/') + if (m_fileName[i] == '\\' || m_fileName[i] == '/') { swap(p[0], p[1]); - p[0] = m_FileName + i + 1; + p[0] = m_fileName + i + 1; } } - m_FileName = p[1]; + m_fileName = p[1]; } - char const * m_FileName; - int m_Line; - char const * m_Function; + char const * m_fileName; + int m_line; + char const * m_function; + char const * m_postfix; }; } inline string DebugPrint(my::SrcPoint const & srcPoint) { - ostringstream out; - if (srcPoint.Line() > 0) - out << srcPoint.FileName() << ":" << srcPoint.Line() << " " << srcPoint.Function() << "()"; - return out.str(); + ostringstream out; + if (srcPoint.Line() > 0) + out << srcPoint.FileName() << ":" << srcPoint.Line() << " " << srcPoint.Function() + << srcPoint.Postfix() << " "; + return out.str(); } - -