assimp/port/jAssimp/jni_bridge/jbridge_Logger.h

115 lines
3.0 KiB
C++

/* --------------------------------------------------------------------------------
*
* Open Asset Import Library (ASSIMP) (http://assimp.sourceforge.net)
* Assimp2Java bridge
*
* Copyright (c) 2006-2009, ASSIMP Development Team
* All rights reserved. See the LICENSE file for more information.
*
* --------------------------------------------------------------------------------
*/
/** @file jbridge_Logger.h
* Declaration of a log dispatching service to send all log messages to Java
*/
#ifndef INCLUDED_JBRIDGE_LOGGER_H
#define INCLUDED_JBRIDGE_LOGGER_H
#include <DefaultLogger.h>
namespace Assimp {
namespace jbridge {
// ---------------------------------------------------------------------------
class IOStream;
struct LogStreamInfo;
// ---------------------------------------------------------------------------
/** @class JNILogDispatcher
* @brief Logging system implementation that is used to send all
* log messages generated by native code to the Java logging system.
*/
class JNILogDispatcher : public Logger
{
friend class JNIEnvironment;
public:
//! Default constructor
JNILogDispatcher()
: m_iRefCnt(1) {}
/** @brief Logs a debug message */
void OnDebug(const char* msg);
/** @brief Logs an info message */
void OnInfo(const char* msg);
/** @brief Logs a warning message */
void OnWarn(const char* msg);
/** @brief Logs an error message */
void OnError(const char* msg);
/** @brief Log severity setter */
void setLogSeverity(LogSeverity log_severity) {}
/** @brief Detach a still attached stream from logger */
bool attachStream(LogStream *pStream, unsigned int severity) {
return false;
}
/** @brief Detach a still attached stream from logger */
bool detatchStream(LogStream *pStream, unsigned int severity) {
return false;
}
//! COM-style reference counting mechanism
unsigned int AddRef()
{
return ++m_iRefCnt;
}
//! COM-style reference counting mechanism
unsigned int Release()
{
const unsigned int n = --m_iRefCnt;
if (n == 0)
{
delete this;
// don't forget to reset the logger to the default implementation
DefaultLogger::set(NULL);
}
return n;
}
private:
//! Called by JNIEnvironment
bool OnAttachToCurrentThread(JNIThreadData* pcData);
bool OnDetachFromCurrentThread(JNIThreadData* pcData);
private:
//! Handle to assimp.DefaultLogger class
jclass m_pcClass;
//! Handle to the static assimp.DefaultLogger._NativeCallWriteError() method
jmethodID m_pcMethodError;
//! Handle to the static assimp.DefaultLogger._NativeCallWriteInfo() method
jmethodID m_pcMethodInfo;
//! Handle to the static assimp.DefaultLogger._NativeCallWriteDebug() method
jmethodID m_pcMethodDebug;
//! Handle to the static assimp.DefaultLogger._NativeCallWriteWarn() method
jmethodID m_pcMethodWarn;
//! Reference counter of the logger
unsigned int m_iRefCnt;
};
}}
#endif // !! INCLUDED_JBRIDGE_LOGGER_H