blob: 28914b95b95974908ab1eb8a381a4f8633397193 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
--- include/NTL/tools.h.orig 2008-05-06 22:14:06.000000000 +1200
+++ include/NTL/tools.h 2008-05-06 22:14:23.000000000 +1200
@@ -249,6 +249,12 @@
char IntValToChar(long a);
+/*
+ This function is not present in vanilla NTL 5.4.2.
+ See tools.c for documentation.
+ */
+void SetErrorCallbackFunction(void (*func)(const char *s, void *context), void *context);
+
void Error(const char *s);
--- src/tools.c.orig 2008-05-06 22:15:32.000000000 +1200
+++ src/tools.c 2008-05-06 22:15:45.000000000 +1200
@@ -8,8 +8,35 @@
NTL_START_IMPL
+/*
+ The following code differs from vanilla NTL 5.4.2.
+
+ We add a SetErrorCallbackFunction(). This sets a global callback function _function_,
+ which gets called with parameter _context_ and an error message string whenever Error()
+ gets called.
+
+ Note that if the custom error handler *returns*, then NTL will dump the error message
+ back to stderr and abort() as it habitually does.
+
+ -- David Harvey (2008-04-12)
+*/
+
+void (*ErrorCallbackFunction)(const char*, void*) = NULL;
+void *ErrorCallbackContext = NULL;
+
+
+void SetErrorCallbackFunction(void (*function)(const char*, void*), void *context)
+{
+ ErrorCallbackFunction = function;
+ ErrorCallbackContext = context;
+}
+
+
void Error(const char *s)
{
+ if (ErrorCallbackFunction != NULL)
+ ErrorCallbackFunction(s, ErrorCallbackContext);
+
cerr << s << "\n";
abort();
}
|