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.
		
		
		
		
		
			
		
			
				
					
					
						
							188 lines
						
					
					
						
							6.0 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							188 lines
						
					
					
						
							6.0 KiB
						
					
					
				| /* ///////////////////////////////////////////////////////////////////////// | |
|  * 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) | |
|     ); | |
| } | |
| 
 | |
| /* ////////////////////////////////////////////////////////////////////// */
 |