|
|
/* /////////////////////////////////////////////////////////////////////////
* File: test/scratch/test.scratch.c_api/test.scratch.c_api.c * * Purpose: Implementation file for the test.scratch.c_api project. * * Created: 14th October 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. * * ////////////////////////////////////////////////////////////////////// */
/* Pantheios Header Files */ #include <pantheios/pantheios.h>
#include <pantheios/backends/be.lrsplit.h>
#include <pantheios/frontend.h>
/* STLSoft Header Files */ #include <stlsoft/stlsoft.h>
/* PlatformSTL Header Files */ #include <platformstl/platformstl.h>
/* Standard C Header Files */ #include <stdio.h>
#include <time.h>
/* /////////////////////////////////////////////////////////////////////////
* Forward declarations */
static int main_(int /* argc */, char ** /*argv*/); static void some_logging_1(); static void some_logging_2(); static void some_logging_3();
/* /////////////////////////////////////////////////////////////////////////
* Process Identity * * This is defined for when we link with the pantheios.fe.simple front-end * library, which implements pantheios_fe_getProcessIdentity() in terms of this * externally defined array */
PANTHEIOS_EXTERN_C PAN_CHAR_T const PANTHEIOS_FE_PROCESS_IDENTITY[] = PANTHEIOS_LITERAL_STRING("test.scratch.c_api");
/* ////////////////////////////////////////////////////////////////////// */
static int main_(int argc, char **argv) { STLSOFT_SUPPRESS_UNUSED(argc); STLSOFT_SUPPRESS_UNUSED(argv);
some_logging_1(); some_logging_2(); some_logging_3();
return 0; }
int main(int argc, char *argv[]) { int res;
#if 0
{ for(size_t i = 0;0 != ++i;) {} } #endif /* 0 */
if(pantheios_init() < 0) { res = EXIT_FAILURE; } else { res = main_(argc, argv);
pantheios_uninit(); }
return res; }
/* ////////////////////////////////////////////////////////////////////// */
static void some_logging_1() { short s = 123; int i = 456; long l = 789; float f = (float)(0.123); double d = 0.456; long double ld = 0.789; void *p = &l; char const *lstr = "{a pointer to a C-style string}";
#if 0
log_INFORMATIONAL( "This is a (hopefully) typical error string, containing: " , "some integers (", integer(s), ", ", integer(i), ", ", integer(l), "); " , "some real numbers (", real(f), ", ", real(d), ", ", real(ld), "); " , "a pointer (", pointer(p, fmt::hex), "); " , "some strings (", lstr, ", ", str, ", ", sstr, "); " , "and a converted time value (", tm, ")" ); #endif /* 0 */
}
static void some_logging_2() { #if 0
try { throw std::out_of_range("Eeep!"); } catch(std::exception &x) { log_CRITICAL("Something really bad has happened! Details: \"", x, "\""); } #endif /* 0 */
}
static void some_logging_3() { int numUsers = 1000000; char szNumUsers[101];
/* The long-hand way */ pantheios_log_4( PANTHEIOS_SEV_ALERT , "We're sure there're likely to be >", -1 , szNumUsers, sprintf(&szNumUsers[0], "%020d", numUsers) , " satisfied users of ", -1 , "Pantheios", 9 );
/* The convenient way */ pantheios_log_4( PANTHEIOS_SEV_ALERT , PANTHEIOS_CARG_STR("We're sure there're likely to be >") , szNumUsers, sprintf(&szNumUsers[0], "%020d", numUsers) , PANTHEIOS_CARG_STR(" satisfied users of ") , PANTHEIOS_CARG_STR_LEN("Pantheios", 9) );
/* The more convenient way. The following #defines would be in a
* location accessible to your application code */ #define PARG_S(s) PANTHEIOS_CARG_STR(s)
#define PARG_SN(s, n) PANTHEIOS_CARG_STR_LEN(s, n)
pantheios_log_4( PANTHEIOS_SEV_ALERT , PARG_S("We're sure there're likely to be >") , szNumUsers, sprintf(&szNumUsers[0], "%020d", numUsers) , PARG_S(" satisfied users of ") , PARG_SN("Pantheios", 9) ); }
/* ////////////////////////////////////////////////////////////////////// */
|