00001 #include <stdlib.h>
00002 #include <string.h>
00003 #include <stdarg.h>
00004 #include "syspro.h"
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 static PetscErrorCode(*sysprotrace)(void*,char *fmt,va_list) = NULL;
00018 static size_t sysprotracectx = (size_t)NULL;
00019
00020 #undef __FUNCT__
00021 #define __FUNCT__ "SysProDefaultTrace"
00022 PetscErrorCode SysProDefaultTrace(void *ctx,char *fmt,va_list argp)
00023 {
00024
00025 PetscFunctionBegin;
00026 printf("SysPro message: ");
00027 vprintf(fmt, argp);
00028 PetscFunctionReturn(0);
00029 }
00030
00031 #undef __FUNCT__
00032 #define __FUNCT__ "SysProDeclareTraceFunction"
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064 PetscErrorCode SysProDeclareTraceFunction(PetscErrorCode(*fn)(void*,char*,va_list))
00065 {
00066 PetscFunctionBegin;
00067 sysprotrace = fn;
00068 PetscFunctionReturn(0);
00069 }
00070
00071 #undef __FUNCT__
00072 #define __FUNCT__ "SysProDeclareTraceContext"
00073
00074
00075
00076
00077 PetscErrorCode SysProDeclareTraceContext(void *ctx)
00078 {
00079 PetscFunctionBegin;
00080 sysprotracectx = (size_t)ctx;
00081 PetscFunctionReturn(0);
00082 }
00083
00084 #undef __FUNCT__
00085 #define __FUNCT__ "SysProTraceMessage"
00086
00087
00088
00089 PetscErrorCode SysProTraceMessage(char *fmt,...)
00090 {
00091 va_list argp; PetscErrorCode ierr;
00092 PetscFunctionBegin;
00093 if (sysprotrace) {
00094 va_start(argp, fmt);
00095 ierr = (*sysprotrace)((void*)sysprotracectx,fmt,argp); CHKERRQ(ierr);
00096 va_end(argp);
00097 }
00098 PetscFunctionReturn(0);
00099 }
00100
00101 #undef __FUNCT__
00102 #define __FUNCT__ "SysProHasTrace"
00103
00104
00105
00106
00107
00108
00109 PetscErrorCode SysProHasTrace(PetscTruth *flg)
00110 {
00111 PetscFunctionBegin;
00112 if (sysprotrace)
00113 *flg = PETSC_TRUE;
00114 else
00115 *flg = PETSC_FALSE;
00116 PetscFunctionReturn(0);
00117 }
00118