#ifndef USGE_AUDIT_H
#define USGE_AUDIT_H

// Détection du système cible...
#include "usgeDetectSystem.h"

// Les fonctions d'accès au rapport
#ifdef __cplusplus
extern "C" 
{
#endif
    void usgeAuditStart();
    void usgeAudit(const char *className, const char *fctName, int line);
    void usgeAuditStop();
    const char *usgeAuditReport();
    void usgeAuditReportToFile(const char *filename);
#ifdef __cplusplus
}
#endif


// Macro pour les appels aux fonctions de traçage
#ifndef USGE_RUN_AUDIT
    #define USGE_AUDIT_CMD_THIS
    #define USGE_AUDIT_CMD_STATIC
#else
    // Version STATIC
    #define USGE_AUDIT_CMD_STATIC                                       \
    {                                                                   \
        usgeAudit(__FILE__, __FUNCTION__, __LINE__);                    \
    }
    // Version THIS
    #ifdef __cplusplus
        #include <typeinfo>
        #define USGE_AUDIT_CMD_THIS                                     \
        {                                                               \
            usgeAudit(typeid(this).name(), __FUNCTION__, __LINE__);     \
        }
    #else
        #define USGE_AUDIT_CMD_THIS                                     \
        {                                                               \
            usgeAudit(__FILE__, __FUNCTION__, __LINE__);                \
        }
    #endif
#endif


#endif
