/* libzz
 *
 * This program is distributed under the GNU General Public License, version 2.
 * A copy of this license is included with this source.
 *
 * Copyright 2000-2006, Toni Thomsson <toni@tonjac.org> 
*/

#ifndef zz_log_exception_h
#define zz_log_exception_h

#include <zz_exception.h>
#include <zz_log.h>
#include <zz_export.h>

/**
    Exception that logs the error

    @author Toni Thomsson, toni@tonjac.org  
*/
class ZZ_API CzzLogException : public CzzException
{
public:

     /** 
        Create an exception
        @param lineNumber   Line number in sourcecode file, use __LINE__
        @param fileName     Sourcecode file, use __FILE__
        @param code         Error code
        @param reason       Error text
    */
    CzzLogException( int lineNumber,
                        CzzString fileName,
                        int code,
                        CzzString reason );

    virtual ~CzzLogException();

    /**
        Logs the message. No need to call this directly
        its called by the constructor.
        @param  row     Rownumber
        @param  file    File
    */
    virtual void LogErr( const int row,
                            const char* file );

protected:
        /** Logger */
       CzzLog m_Log;

};

#endif // zz_log_exception_h