diff --git a/build_linux64/libamsmathutil25.linux64.a b/build_linux64/libamsmathutil25.linux64.a index 8bd7bf8..316d743 100644 Binary files a/build_linux64/libamsmathutil25.linux64.a and b/build_linux64/libamsmathutil25.linux64.a differ diff --git a/build_linux64/objstore/amsmathutil25_errorlogger.o b/build_linux64/objstore/amsmathutil25_errorlogger.o new file mode 100644 index 0000000..e93b468 Binary files /dev/null and b/build_linux64/objstore/amsmathutil25_errorlogger.o differ diff --git a/include/amsmathutil25/amsmathutil25.hpp b/include/amsmathutil25/amsmathutil25.hpp index 493683d..bbb1954 100644 --- a/include/amsmathutil25/amsmathutil25.hpp +++ b/include/amsmathutil25/amsmathutil25.hpp @@ -25,6 +25,28 @@ static const int amsmathutil25_maxthreads = 50; static const int amsmathutil25_threadpsz = 5000; + +//Global Changeable Error Logger // +//Using accessor pattern + +//pointer to function of signature void errorlogger(const char *errmsg, int errcode, void *errglobal); +extern void (*amsmathutil25_errlogger)(const char *, int, void *); +extern void* amsmathutil25_errglobal; + +typedef void (*amsmathutil25_errloggerptr_t)(const char *, int, void *); +amsmathutil25_errloggerptr_t amsmathutil25_get_errlogger(); //call this to get the error logger to log errors + +// //the other way to do this +// // return type "pointer to function(const char*, int, void*) returning void" +// void (*amsmathutil25_get_errlogger(void))(const char *, int, void *); +// //not exactly clear.... + +void amsmathutil25_set_errlogger( + void(*errloggerpointer)(const char *, int, void *), + void* errglobal +); +//End Error Logger + }; //Library subsections diff --git a/src/amsmathutil25/util/amsmathutil25_errorlogger.cpp b/src/amsmathutil25/util/amsmathutil25_errorlogger.cpp new file mode 100644 index 0000000..14a7bc3 --- /dev/null +++ b/src/amsmathutil25/util/amsmathutil25_errorlogger.cpp @@ -0,0 +1,30 @@ +#include + +namespace ams +{ + + void amsmathutil25_default_errlogger( + const char *msg, + int code, + void *) + { + fprintf(stderr,"%s, %d\n",msg,code); + return; + } + + amsmathutil25_errloggerptr_t amsmathutil25_get_errlogger() + { + if(amsmathutil25_errlogger==NULL) + { + amsmathutil25_errlogger = amsmathutil25_default_errlogger; + } + return amsmathutil25_errlogger; + } + + void amsmathutil25_set_errlogger(void(*errloggerpointer)(const char *, int, void *),void *errglobal) + { + amsmathutil25_errglobal = errglobal; + amsmathutil25_errlogger = errloggerpointer; + } + +}; \ No newline at end of file