/**
 * aux.cc - Compiler helper functions. 
 *
 * The functions declared in this file are intended to be called only by code
 * that is automatically generated by C++ compilers for some common cases.  
 */

#include <stdlib.h>
#include "stdexcept.h"

/**
 * Called to generate a bad cast exception.  This function is intended to allow
 * compilers to insert code generating this exception without needing to
 * duplicate the code for throwing the exception in every call site.
 */
extern "C" void __cxa_bad_cast()
{
    throw std::bad_cast();
}

/**
 * Called to generate a bad typeid exception.  This function is intended to
 * allow compilers to insert code generating this exception without needing to
 * duplicate the code for throwing the exception in every call site.
 */
extern "C" void __cxa_bad_typeid()
{
    throw std::bad_typeid();
}

/**
 * Compilers may (but are not required to) set any pure-virtual function's
 * vtable entry to this function.  This makes debugging slightly easier, as
 * users can add a breakpoint on this function to tell if they've accidentally
 * called a pure-virtual function.
 */
extern "C" void __cxa_pure_virtual()
{
    abort();
}

