/* ---------------------------------------------------------------------
   (c) ED 2006
   Projet       : CLIB
   Fonction     : Fonctions 'systeme'
   Module       : ASSERT
   Fichier      : assert.c
   Creation     : 16-06-2006
   Modification : 16-06-2006
   --------------------------------------------------------------------- */

/* ---------------------------------------------------------------------
   Journal

   1.0 16-06-2006 Was in module sys
   --------------------------------------------------------------------- */

#include "ed/inc/assert.h"
#include "ed/inc/types.h"

#include <stdio.h>
#include <stdlib.h>

/* macros ============================================================== */

#define MODULE "ASSERT."

/* constants =========================================================== */
/* types =============================================================== */
/* structures ========================================================== */
/* private variables =================================================== */
/* private functions =================================================== */
/* internal public functions =========================================== */
/* entry points ======================================================== */

/* ---------------------------------------------------------------------
   assert_fail()
   ---------------------------------------------------------------------
   fonction de sortie de la macro ASSERT()
   ---------------------------------------------------------------------
   I:
   O:
   --------------------------------------------------------------------- */
void assert_fail (char const *exp_
                     ,char const *file
                     ,int line)
{
   fprintf (stderr, MODULE "assertion '%s' failed at %s:%u\n"
            ,(char const *) exp_
            ,(char const *) file
            ,(uint) line
      );
#if 0
   SYS_print_stack ();
#endif

   fprintf (stderr, MODULE "*** EXIT ***\n");
   exit (EXIT_FAILURE);
}

/* public variables ==================================================== */
