You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							199 lines
						
					
					
						
							6.7 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							199 lines
						
					
					
						
							6.7 KiB
						
					
					
				
								/* /////////////////////////////////////////////////////////////////////////
							 | 
						|
								 * File:        test/scratch/test.scratch.util.onbailout/test.scratch.util.onbailout.cpp
							 | 
						|
								 *
							 | 
						|
								 * Purpose:     Implementation file for the test.scratch.util.onbailout project.
							 | 
						|
								 *
							 | 
						|
								 * Created:     21st June 2005
							 | 
						|
								 * Updated:     6th August 2012
							 | 
						|
								 *
							 | 
						|
								 * Status:      Wizard-generated
							 | 
						|
								 *
							 | 
						|
								 * License:     (Licensed under the Synesis Software Open License)
							 | 
						|
								 *
							 | 
						|
								 *              www:        http://www.synesis.com.au/software
							 | 
						|
								 *
							 | 
						|
								 *              This source code is placed into the public domain 2005
							 | 
						|
								 *              by Synesis Software Pty Ltd. There are no restrictions
							 | 
						|
								 *              whatsoever to your use of the software. 
							 | 
						|
								 *
							 | 
						|
								 *              This source code is provided by Synesis Software Pty Ltd "as is"
							 | 
						|
								 *              and any warranties, whether expressed or implied, including, but
							 | 
						|
								 *              not limited to, the implied warranties of merchantability and
							 | 
						|
								 *              fitness for a particular purpose are disclaimed. In no event
							 | 
						|
								 *              shall the Synesis Software Pty Ltd be liable for any direct,
							 | 
						|
								 *              indirect, incidental, special, exemplary, or consequential
							 | 
						|
								 *              damages (including, but not limited to, procurement of
							 | 
						|
								 *              substitute goods or services; loss of use, data, or profits; or
							 | 
						|
								 *              business interruption) however caused and on any theory of
							 | 
						|
								 *              liability, whether in contract, strict liability, or tort
							 | 
						|
								 *              (including negligence or otherwise) arising in any way out of
							 | 
						|
								 *              the use of this software, even if advised of the possibility of
							 | 
						|
								 *              such damage. 
							 | 
						|
								 *
							 | 
						|
								 *              Neither the name of Synesis Software Pty Ltd nor the names of
							 | 
						|
								 *              any subdivisions, employees or agents of Synesis Software Pty
							 | 
						|
								 *              Ltd, nor the names of any other contributors to this software
							 | 
						|
								 *              may be used to endorse or promote products derived from this
							 | 
						|
								 *              software without specific prior written permission. 
							 | 
						|
								 *
							 | 
						|
								 * ////////////////////////////////////////////////////////////////////// */
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								/* This inclusion required for suppressing warnings during NoX (No eXception-support) configurations. */
							 | 
						|
								#include <pantheios/util/test/compiler_warnings_suppression.first_include.h>
							 | 
						|
								
							 | 
						|
								/* Pantheios Header Files */
							 | 
						|
								#include <pantheios/pantheios.h>
							 | 
						|
								#include <pantheios/init_codes.h>
							 | 
						|
								
							 | 
						|
								/* STLSoft Header Files */
							 | 
						|
								#include <stlsoft/stlsoft.h>
							 | 
						|
								
							 | 
						|
								/* Standard C++ Header Files */
							 | 
						|
								#include <exception>
							 | 
						|
								#include <iostream>
							 | 
						|
								#include <string>
							 | 
						|
								
							 | 
						|
								using std::cerr;
							 | 
						|
								using std::cin;
							 | 
						|
								using std::cout;
							 | 
						|
								using std::endl;
							 | 
						|
								
							 | 
						|
								/* Standard C Header Files */
							 | 
						|
								#include <stdio.h>
							 | 
						|
								
							 | 
						|
								#include <pantheios/util/test/compiler_warnings_suppression.last_include.h>
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								PANTHEIOS_EXTERN_C PAN_CHAR_T const PANTHEIOS_FE_PROCESS_IDENTITY[] = PANTHEIOS_LITERAL_STRING("test.scratch.util.onbailout");
							 | 
						|
								
							 | 
						|
								static int main_(int /* argc */, char ** /*argv*/)
							 | 
						|
								{
							 | 
						|
								#if 0
							 | 
						|
								    pantheios::util::onBailOut(PANTHEIOS_SEV_DEBUG, "abc");
							 | 
						|
								
							 | 
						|
								    pantheios::util::onBailOut(PANTHEIOS_SEV_DEBUG, "abc", PANTHEIOS_FE_PROCESS_IDENTITY);
							 | 
						|
								
							 | 
						|
								    pantheios::util::onBailOut(PANTHEIOS_SEV_DEBUG, "abc", PANTHEIOS_FE_PROCESS_IDENTITY, pantheios::getInitErrorString(PANTHEIOS_INIT_RC_CANNOT_CREATE_TSS_INDEX));
							 | 
						|
								
							 | 
						|
								// no longer valid  pantheios::util::onBailOut(PANTHEIOS_SEV_DEBUG, "abc", PANTHEIOS_FE_PROCESS_IDENTITY, (char const*)(pantheios::uint16_t)PANTHEIOS_INIT_RC_CANNOT_CREATE_TSS_INDEX);
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								    {
							 | 
						|
								        std::string message(1200, 'm');
							 | 
						|
								        std::string qualifier(1200, 'q');
							 | 
						|
								
							 | 
						|
								        pantheios::util::onBailOut(PANTHEIOS_SEV_DEBUG, message.c_str(), PANTHEIOS_FE_PROCESS_IDENTITY);
							 | 
						|
								
							 | 
						|
								        pantheios::util::onBailOut(PANTHEIOS_SEV_DEBUG, message.c_str(), PANTHEIOS_FE_PROCESS_IDENTITY, qualifier.c_str());
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    {
							 | 
						|
								        std::string message(2000, 'm');
							 | 
						|
								        std::string qualifier(100, 'q');
							 | 
						|
								
							 | 
						|
								        pantheios::util::onBailOut(PANTHEIOS_SEV_DEBUG, message.c_str(), PANTHEIOS_FE_PROCESS_IDENTITY);
							 | 
						|
								
							 | 
						|
								        pantheios::util::onBailOut(PANTHEIOS_SEV_DEBUG, message.c_str(), PANTHEIOS_FE_PROCESS_IDENTITY, qualifier.c_str());
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    {
							 | 
						|
								        std::string message(100, 'm');
							 | 
						|
								        std::string qualifier(2000, 'q');
							 | 
						|
								
							 | 
						|
								        pantheios::util::onBailOut(PANTHEIOS_SEV_DEBUG, message.c_str(), PANTHEIOS_FE_PROCESS_IDENTITY);
							 | 
						|
								
							 | 
						|
								        pantheios::util::onBailOut(PANTHEIOS_SEV_DEBUG, message.c_str(), PANTHEIOS_FE_PROCESS_IDENTITY, qualifier.c_str());
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    {
							 | 
						|
								        std::string message(2500, 'm');
							 | 
						|
								        std::string qualifier(1200, 'q');
							 | 
						|
								
							 | 
						|
								        pantheios::util::onBailOut(PANTHEIOS_SEV_DEBUG, message.c_str(), PANTHEIOS_FE_PROCESS_IDENTITY);
							 | 
						|
								
							 | 
						|
								        pantheios::util::onBailOut(PANTHEIOS_SEV_DEBUG, message.c_str(), PANTHEIOS_FE_PROCESS_IDENTITY, qualifier.c_str());
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    {
							 | 
						|
								        std::string message(2500, 'm');
							 | 
						|
								        std::string qualifier(100, 'q');
							 | 
						|
								
							 | 
						|
								        pantheios::util::onBailOut(PANTHEIOS_SEV_DEBUG, message.c_str(), PANTHEIOS_FE_PROCESS_IDENTITY);
							 | 
						|
								
							 | 
						|
								        pantheios::util::onBailOut(PANTHEIOS_SEV_DEBUG, message.c_str(), PANTHEIOS_FE_PROCESS_IDENTITY, qualifier.c_str());
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    {
							 | 
						|
								        std::string message(2500, 'm');
							 | 
						|
								
							 | 
						|
								        pantheios::util::onBailOut(PANTHEIOS_SEV_DEBUG, message.c_str(), PANTHEIOS_FE_PROCESS_IDENTITY);
							 | 
						|
								
							 | 
						|
								        pantheios::util::onBailOut(PANTHEIOS_SEV_DEBUG, message.c_str(), PANTHEIOS_FE_PROCESS_IDENTITY, "");
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								#endif /* 0 */
							 | 
						|
								
							 | 
						|
								    const size_t INCREMENT  =   150;
							 | 
						|
								
							 | 
						|
								    STLSOFT_STATIC_ASSERT(0 == (3000 % INCREMENT));
							 | 
						|
								
							 | 
						|
								    { for(size_t i = 0; i != 3000; i += INCREMENT)
							 | 
						|
								    {
							 | 
						|
								        { for(size_t j = 0; j != 3000; j += INCREMENT)
							 | 
						|
								        {
							 | 
						|
								            if(0 == i)
							 | 
						|
								            {
							 | 
						|
								                std::string qualifier(j, 'q');
							 | 
						|
								
							 | 
						|
								                pantheios::util::onBailOut(PANTHEIOS_SEV_DEBUG, NULL, PANTHEIOS_FE_PROCESS_IDENTITY, qualifier.c_str());
							 | 
						|
								            }
							 | 
						|
								            else if(0 == j)
							 | 
						|
								            {
							 | 
						|
								                std::string message(i, 'm');
							 | 
						|
								
							 | 
						|
								                pantheios::util::onBailOut(PANTHEIOS_SEV_DEBUG, message.c_str(), PANTHEIOS_FE_PROCESS_IDENTITY, "");
							 | 
						|
								            }
							 | 
						|
								            else
							 | 
						|
								            {
							 | 
						|
								                std::string message(i, 'm');
							 | 
						|
								                std::string qualifier(j, 'q');
							 | 
						|
								
							 | 
						|
								                pantheios::util::onBailOut(PANTHEIOS_SEV_DEBUG, message.c_str(), PANTHEIOS_FE_PROCESS_IDENTITY, qualifier.c_str());
							 | 
						|
								            }
							 | 
						|
								        }}
							 | 
						|
								    }}
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								    return EXIT_SUCCESS;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								int main(int argc, char *argv[])
							 | 
						|
								{
							 | 
						|
								#if 0
							 | 
						|
								    for(;;) {}
							 | 
						|
								#endif /* 0 */
							 | 
						|
								
							 | 
						|
								#ifdef STLSOFT_CF_EXCEPTION_SUPPORT
							 | 
						|
								    try
							 | 
						|
								    {
							 | 
						|
								#endif /* STLSOFT_CF_EXCEPTION_SUPPORT */
							 | 
						|
								
							 | 
						|
								        return main_(argc, argv);
							 | 
						|
								
							 | 
						|
								#ifdef STLSOFT_CF_EXCEPTION_SUPPORT
							 | 
						|
								    }
							 | 
						|
								    catch(std::exception &x)
							 | 
						|
								    {
							 | 
						|
								        fprintf(stderr, "Unhandled error: %s\n", x.what());
							 | 
						|
								    }
							 | 
						|
								    catch(...)
							 | 
						|
								    {
							 | 
						|
								        pantheios::puts(pantheios::emergency, "Unhandled unknown error");
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    return EXIT_FAILURE;
							 | 
						|
								#endif /* STLSOFT_CF_EXCEPTION_SUPPORT */
							 | 
						|
								}
							 | 
						|
								
							 |