/* -*- mode: c++; c-basic-offset: 4; indent-tabs-mode: nil -*- */ /* * Copyright (C) 2004-2013 HUBzero Foundation, LLC * * Author: George A. Howlett */ #ifndef GEOVIS_TRACE_H #define GEOVIS_TRACE_H #include #include #include #include namespace GeoVis { extern void logUserMessage(const char* format, ...); extern std::string getUserMessages(); extern void clearUserMessages(); extern void initLog(); extern void closeLog(); extern void logMessage(int priority, const char *funcname, const char *fileName, int lineNum, const char* format, ...); #define ERROR(...) GeoVis::logMessage(LOG_ERR, __FUNCTION__, __FILE__, __LINE__, __VA_ARGS__) #ifdef WANT_TRACE #define TRACE(...) GeoVis::logMessage(LOG_DEBUG, __FUNCTION__, __FILE__, __LINE__, __VA_ARGS__) #else #define TRACE(...) #endif /*WANT_TRACE*/ #ifdef WANT_FRAME #define FRAME(...) GeoVis::logMessage(LOG_DEBUG, __FUNCTION__, __FILE__, __LINE__, __VA_ARGS__) #else #define FRAME(...) #endif /*WANT_FRAME*/ #define WARN(...) GeoVis::logMessage(LOG_WARNING, __FUNCTION__, __FILE__, __LINE__, __VA_ARGS__) #define INFO(...) GeoVis::logMessage(LOG_INFO, __FUNCTION__, __FILE__, __LINE__, __VA_ARGS__) #define USER_ERROR(...) GeoVis::logUserMessage(__VA_ARGS__) class GraphPrintVisitor : public osg::NodeVisitor { public: GraphPrintVisitor() : osg::NodeVisitor(osg::NodeVisitor::TRAVERSE_ALL_CHILDREN) {} virtual void apply(osg::Node& node) { char space[256]; size_t len = getNodePath().size(); memset(space, ' ', len); space[len] = '\0'; TRACE("%s%s (%s) %p", space, node.className(), node.getName().c_str(), &node); traverse(node); } }; } #endif