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

/* /////////////////////////////////////////////////////////////////////////
* 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 //////////////////////////// */