a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync/* $Id$ */
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync/** @file
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync * IPRT - Internal RTAssert header
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync */
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync/*
c7814cf6e1240a519cbec0441e033d0e2470ed00vboxsync * Copyright (C) 2009-2011 Oracle Corporation
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync *
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync * available from http://www.virtualbox.org. This file is free software;
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync * you can redistribute it and/or modify it under the terms of the GNU
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync * General Public License (GPL) as published by the Free Software
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync *
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync * The contents of this file may alternatively be used under the terms
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync * of the Common Development and Distribution License Version 1.0
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync * VirtualBox OSE distribution, in which case the provisions of the
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync * CDDL are applicable instead of those of the GPL.
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync *
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync * You may elect to license modified versions of this file under the
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync * terms and conditions of either the GPL or the CDDL or both.
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync */
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync#ifndef ___internal_assert_h
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync#define ___internal_assert_h
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync#include <iprt/types.h>
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsyncRT_C_DECLS_BEGIN
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync#ifdef IN_RING0
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync/**
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync * Print the 1st part of an assert message to whatever native facility is best
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync * fitting.
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync *
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync * @param pszExpr Expression. Can be NULL.
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync * @param uLine Location line number.
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync * @param pszFile Location file name.
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync * @param pszFunction Location function name.
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync */
5eda82e218d35ae0691febd531e1bfc0324cc4a6vboxsyncDECLHIDDEN(void) rtR0AssertNativeMsg1(const char *pszExpr, unsigned uLine, const char *pszFile, const char *pszFunction);
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync/**
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync * Print the 2nd (optional) part of an assert message to whatever native
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync * facility is best fitting.
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync *
0e5731ab59b4ecead38375f26eeea698f00b19fdvboxsync * @param fInitial Whether it's the initial (true) or an additional (false)
0e5731ab59b4ecead38375f26eeea698f00b19fdvboxsync * message.
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync * @param pszFormat Printf like format string.
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync * @param va Arguments to that string.
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync */
5eda82e218d35ae0691febd531e1bfc0324cc4a6vboxsyncDECLHIDDEN(void) rtR0AssertNativeMsg2V(bool fInitial, const char *pszFormat, va_list va);
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync#endif
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsyncRT_C_DECLS_END
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync#endif
a7aa94e0115a73841f34ebbfa00f63fa1904e51fvboxsync