source: trunk/src/stl/assert.cc @ 410

Last change on this file since 410 was 410, checked in by epyon, 10 years ago
  • merge of vertex_descriptor and key_descriptor concepts - unified raw data description via data_descriptor
  • minor bugfixes
File size: 1.9 KB
RevLine 
[376]1// Copyright (C) 2015 ChaosForge Ltd
2// http://chaosforge.org/
3//
[395]4// This file is part of Nova libraries.
5// For conditions of distribution and use, see copying.txt file in root folder.
[376]6
[410]7#include "nv/base/common.hh"
[403]8#include "nv/core/logging.hh"
[376]9
[403]10extern "C" {
[376]11#if NV_COMPILER == NV_MSVC
[410]12        _ACRTIMP NV_NORETURN void __cdecl exit( _In_ int _Code );
[403]13#else
14        void exit( int status_code ) NV_NORETURN;
15#endif
16}
[376]17
[403]18#if NV_DEBUG
19#       if NV_COMPILER == NV_MSVC
[376]20extern "C" {
21        void __cdecl _wassert( const wchar_t * _Message, const wchar_t *_File, unsigned _Line );
22}
23
[403]24void nv::detail::assert_fail( const wchar_t * message, const wchar_t* file, unsigned line )
[376]25{
26        _wassert( message, file, line );
27}
[403]28#       else // NV_COMPILER
[376]29#       if NV_COMPILER == NV_CLANG
30extern "C" {
[403]31        extern void __assert(const char *, const char *, unsigned int, const char *) NV_NORETURN;
[376]32}
[403]33#define NV_ASSERT_IMPL __assert
[376]34#       else
[378]35extern "C" {
[403]36        extern void __assert_fail(const char *, const char *, unsigned int, const char *) NV_NORETURN;
[378]37}
[403]38#define NV_ASSERT_IMPL __assert_fail
[376]39#       endif
[403]40NV_NORETURN void nv::detail::assert_fail( const char * assertion, const char * file, unsigned int line, const char * function )
[376]41{
[403]42        NV_ASSERT_IMPL (assertion, file, line, function );
43}
[376]44#       endif
[403]45
46#endif // NV_DEBUG
47
48NV_NORETURN void nv::detail::abort( const char * msg, const char * file, unsigned int line, const char * function )
49{
50        NV_LOG_CRITICAL( "Abort called : ", msg );
51        NV_LOG_CRITICAL( "  in ", file, ":", line, " (", function, ")" );
52        NV_LOG_CRITICAL( "Aborting..." );
53        exit( 1 );
[376]54}
[403]55
56NV_NORETURN void nv::detail::assert_abort( const char * msg, const char * file, unsigned int line, const char * function )
[376]57{
[403]58        NV_LOG_CRITICAL( "Assertion failed: (", msg, ")" );
59        NV_LOG_CRITICAL( "  in ", file, ":", line, " (", function, ")" );
60        NV_LOG_CRITICAL( "Aborting..." );
61        exit( 1 );
[376]62}
[406]63
64
65NV_NORETURN void nv::exit( int ret_val )
66{
67        ::exit( ret_val );
68}
Note: See TracBrowser for help on using the repository browser.