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.
		
		
		
		
		
			
		
			
				
					
					
						
							125 lines
						
					
					
						
							4.8 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							125 lines
						
					
					
						
							4.8 KiB
						
					
					
				
								/* /////////////////////////////////////////////////////////////////////////
							 | 
						|
								 * File:        examples/cpp/misc/example.cpp.misc.101/example.cpp.misc.101.cpp
							 | 
						|
								 *
							 | 
						|
								 * Purpose:     C++ example program for introducing the basic essential
							 | 
						|
								 *              features of Pantheios when using the C++ API.
							 | 
						|
								 *              Demonstrates:
							 | 
						|
								 *
							 | 
						|
								 *                - how the Pantheios libraries do not need to be explicitly
							 | 
						|
								 *                  initialised in a C++ program
							 | 
						|
								 *                - use of pantheios::log()
							 | 
						|
								 *
							 | 
						|
								 * Created:     17th January 2008
							 | 
						|
								 * Updated:     6th December 2010
							 | 
						|
								 *
							 | 
						|
								 * www:         http://www.pantheios.org/
							 | 
						|
								 *
							 | 
						|
								 * License:     This source code is placed into the public domain 2006
							 | 
						|
								 *              by Synesis Software Pty Ltd. There are no restrictions
							 | 
						|
								 *              whatsoever to your use of the software.
							 | 
						|
								 *
							 | 
						|
								 *              This software is provided "as is", and any warranties,
							 | 
						|
								 *              express or implied, of any kind and for any purpose, are
							 | 
						|
								 *              disclaimed.
							 | 
						|
								 *
							 | 
						|
								 * ////////////////////////////////////////////////////////////////////// */
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								/* Pantheios Header Files */
							 | 
						|
								#include <pantheios/pantheios.hpp>      /* The root header for Panthieos when using the C++-API. */
							 | 
						|
								#include <pantheios/inserters.hpp>      /* Includes all headers for inserters, incl. integer, real, character */
							 | 
						|
								#include <pantheios/frontends/stock.h>  /* Declares the process identity symbol PANTHEIOS_FE_PROCESS_IDENTITY */
							 | 
						|
								
							 | 
						|
								/* Standard C++ Header Files */
							 | 
						|
								#include <algorithm>
							 | 
						|
								
							 | 
						|
								/* Standard C Header Files */
							 | 
						|
								#include <stdio.h>
							 | 
						|
								#include <stdlib.h>
							 | 
						|
								#include <string.h>
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								/* /////////////////////////////////////////////////////////////////////////
							 | 
						|
								 * Globals
							 | 
						|
								 */
							 | 
						|
								
							 | 
						|
								const PAN_CHAR_T PANTHEIOS_FE_PROCESS_IDENTITY[] = PANTHEIOS_LITERAL_STRING("example.cpp.misc.101");
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								/* /////////////////////////////////////////////////////////////////////////
							 | 
						|
								 * Macros
							 | 
						|
								 */
							 | 
						|
								
							 | 
						|
								#define PSTR(x)         PANTHEIOS_LITERAL_STRING(x)
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								/* /////////////////////////////////////////////////////////////////////////
							 | 
						|
								 * main
							 | 
						|
								 */
							 | 
						|
								
							 | 
						|
								int main()
							 | 
						|
								{
							 | 
						|
								    /* Note: there is no need to explicitly initialise the Pantheios
							 | 
						|
								     * libraries when the program contains 1 or more C++ compilation units
							 | 
						|
								     * that, like this one, #include <pantheios/pantheios.hpp>, since that
							 | 
						|
								     * file contains mechanisms within it that cause the initialisation to
							 | 
						|
								     * be done automatically.
							 | 
						|
								     */
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								    /* The libraries are now initialised, so we can output diagnostic
							 | 
						|
								     * logging statements.
							 | 
						|
								     */
							 | 
						|
								
							 | 
						|
								    /* 1. use pantheios::log(), which takes a severity level and between
							 | 
						|
								     * 1 and 32 statement element parameters
							 | 
						|
								     */
							 | 
						|
								
							 | 
						|
								    pantheios::log(PANTHEIOS_SEV_NOTICE, PSTR("The"));
							 | 
						|
								    pantheios::log(PANTHEIOS_SEV_NOTICE, PSTR("log() "), PSTR("method"));
							 | 
						|
								    pantheios::log(PANTHEIOS_SEV_NOTICE, PSTR("can "), PSTR("output "), PSTR("any"));
							 | 
						|
								    pantheios::log(PANTHEIOS_SEV_NOTICE, PSTR("number "), PSTR("of "), PSTR("parameters "), PSTR("between"));
							 | 
						|
								    pantheios::log(PANTHEIOS_SEV_NOTICE, PSTR("1"));
							 | 
						|
								    pantheios::log(PANTHEIOS_SEV_NOTICE, PSTR("and"));
							 | 
						|
								    pantheios::log(PANTHEIOS_SEV_NOTICE, PSTR("01, "), PSTR("02, "), PSTR("03, "), PSTR("04, "), PSTR("05, "), PSTR("06, "), PSTR("07, "), PSTR("08, "), PSTR("09, "), PSTR("10, "), PSTR("11, "), PSTR("12, "), PSTR("13, "), PSTR("14, "), PSTR("15, "), PSTR("16, "), PSTR("17, "), PSTR("18, "), PSTR("19, "), PSTR("20, "), PSTR("21, "), PSTR("22, "), PSTR("23, "), PSTR("24, "), PSTR("25, "), PSTR("26, "), PSTR("27, "), PSTR("28, "), PSTR("29, "), PSTR("30, "), PSTR("31, "), PSTR("32"));
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								    /* 2. use pantheios::log() to output some fundamental type
							 | 
						|
								     * instances
							 | 
						|
								     */
							 | 
						|
								
							 | 
						|
								    int     i = 10;
							 | 
						|
								    double  d = 20.20;
							 | 
						|
								    char    c = 'c';
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								    pantheios::log(PANTHEIOS_SEV_WARNING, PSTR("pantheios::log() is flexible, and output all fundamental types, including ints (e.g. i = "), pantheios::integer(i), PSTR(", doubles (e.g. d = "), pantheios::real(d), PSTR("), and chars (e.g. c = "), pantheios::character(c), PSTR(")"));
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								    /* 3. use pantheios::log() to illustrate that there is no size limit
							 | 
						|
								     * imposed by the C++ API
							 | 
						|
								     */
							 | 
						|
								
							 | 
						|
								    PAN_CHAR_T bigBuff[5000];
							 | 
						|
								
							 | 
						|
								    std::fill_n(bigBuff, STLSOFT_NUM_ELEMENTS(bigBuff), '-');
							 | 
						|
								    bigBuff[STLSOFT_NUM_ELEMENTS(bigBuff) - 1] = '\0';
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								    pantheios::log(PANTHEIOS_SEV_WARNING, PSTR("NOTE: pantheios::log() output is not limited to any number of characters. The rest of this statement is a very long string of '-' characters, enclosed in quotations. As you can see, it will be fully emitted: \""), bigBuff, PSTR("\""));
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								    /* Note: there is no need to explicitly uninitialise the Pantheios
							 | 
						|
								     * libraries when the program contains 1 or more C++ compilation units
							 | 
						|
								     * that, like this one, #include <pantheios/pantheios.hpp>, since that
							 | 
						|
								     * file contains mechanisms within it that cause the initialisation to
							 | 
						|
								     * be done automatically.
							 | 
						|
								     */
							 | 
						|
								
							 | 
						|
								    return EXIT_SUCCESS;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								/* ///////////////////////////// end of file //////////////////////////// */
							 |