1 | // ------------------ |
---|
2 | // --- nrkernel.c --- |
---|
3 | // ------------------ |
---|
4 | |
---|
5 | /* |
---|
6 | * Copyright (c) 2000-2014, Lionel Lacassagne, All rights reserved |
---|
7 | * Univ Paris Sud XI, CNRS |
---|
8 | * |
---|
9 | * Distributed under the Boost Software License, Version 1.0 |
---|
10 | * see accompanying file LICENSE.txt or copy it at |
---|
11 | * http://www.boost.org/LICENSE_1_0.txt |
---|
12 | */ |
---|
13 | |
---|
14 | /* |
---|
15 | * 2002/06/11 ajout des fonctions endline |
---|
16 | */ |
---|
17 | #include <stdio.h> |
---|
18 | #include <stddef.h> |
---|
19 | #include <stdlib.h> |
---|
20 | #include <math.h> // fabs |
---|
21 | |
---|
22 | #include "nrc_os_config.h" |
---|
23 | #include "mypredef.h" |
---|
24 | #include "nrtype.h" |
---|
25 | #include "nrdef.h" |
---|
26 | #include "nrmacro.h" |
---|
27 | #include "nrkernel.h" |
---|
28 | |
---|
29 | /* ------------------------- */ |
---|
30 | void nrerror0(char error_text[]) |
---|
31 | /* ------------------------- */ |
---|
32 | /* Numerical Recipes standard error handler */ |
---|
33 | { |
---|
34 | printf("Numerical Recipes run-time error...\n"); |
---|
35 | printf("%s\n",error_text); |
---|
36 | giet_pthread_exit("...now exiting to system...\n"); |
---|
37 | } |
---|
38 | /* ------------------------- */ |
---|
39 | void nrerror1(char *format, ...) |
---|
40 | /* ------------------------- */ |
---|
41 | /* global error handler */ |
---|
42 | { |
---|
43 | /*va_list pa; |
---|
44 | int n; |
---|
45 | char *s, c; |
---|
46 | float f; |
---|
47 | |
---|
48 | printf("NRC nrerror: "); |
---|
49 | va_start(pa, format); |
---|
50 | |
---|
51 | while (*format != '\0') { |
---|
52 | if ( *format == '%' ) { |
---|
53 | switch (*++format) { |
---|
54 | case '%' : putchar('%'); break; |
---|
55 | case 'c' : |
---|
56 | c = va_arg(pa, int); // 'char' is promoted to 'int' when passed through '...' |
---|
57 | putchar(c); |
---|
58 | break; |
---|
59 | case 'd' : |
---|
60 | n = va_arg(pa, int); |
---|
61 | printf("%d", n); |
---|
62 | break; |
---|
63 | case 'f' : // affichage d'un float |
---|
64 | f = (float) va_arg(pa, double); // 'float' is promoted to 'double' when passed through '...' |
---|
65 | printf("%f", f); |
---|
66 | break; |
---|
67 | case 's' : |
---|
68 | s = va_arg(pa, char*); |
---|
69 | for ( ; *s != '\0'; s++ ) |
---|
70 | putchar(*s); |
---|
71 | break; |
---|
72 | } |
---|
73 | } |
---|
74 | else |
---|
75 | putchar( *format); |
---|
76 | format++; |
---|
77 | } |
---|
78 | va_end(pa); |
---|
79 | putchar('\n'); |
---|
80 | exit(-1); |
---|
81 | */ |
---|
82 | } |
---|
83 | /* ------------------------- */ |
---|
84 | void nrerror(char error_text[]) |
---|
85 | /* ------------------------- */ |
---|
86 | /* Numerical Recipes standard error handler */ |
---|
87 | { |
---|
88 | nrerror0(error_text); |
---|
89 | } |
---|
90 | // -------------------------- |
---|
91 | void Error(char *format, ...) |
---|
92 | // -------------------------- |
---|
93 | { |
---|
94 | giet_pthread_exit("NRC 'Error' with variable length args is currently unavailable\nuse nrerror until 'include <stdarg.h>' issue will be addressed\n"); |
---|
95 | |
---|
96 | /*va_list pa; |
---|
97 | int n; |
---|
98 | char *s, c; |
---|
99 | float f; |
---|
100 | |
---|
101 | printf("NRC Error: "); |
---|
102 | va_start(pa, format); |
---|
103 | |
---|
104 | while (*format != '\0') { |
---|
105 | if ( *format == '%' ) { |
---|
106 | switch (*++format) { |
---|
107 | case '%' : putchar('%'); break; |
---|
108 | case 'c' : |
---|
109 | c = va_arg(pa, int); // 'char' is promoted to 'int' when passed through '...' |
---|
110 | putchar(c); |
---|
111 | break; |
---|
112 | case 'd' : |
---|
113 | n = va_arg(pa, int); |
---|
114 | printf("%d", n); |
---|
115 | break; |
---|
116 | case 'f' : // affichage d'un float |
---|
117 | f = (float) va_arg(pa, double); // 'float' is promoted to 'double' when passed through '...' |
---|
118 | printf("%f", f); |
---|
119 | break; |
---|
120 | case 's' : |
---|
121 | s = va_arg(pa, char*); |
---|
122 | for ( ; *s != '\0'; s++ ) |
---|
123 | putchar(*s); |
---|
124 | break; |
---|
125 | } |
---|
126 | } |
---|
127 | else |
---|
128 | putchar( *format); |
---|
129 | format++; |
---|
130 | } |
---|
131 | va_end(pa); |
---|
132 | putchar('\n'); |
---|
133 | exit(-1); |
---|
134 | */ |
---|
135 | } |
---|
136 | // ---------------------------- |
---|
137 | void Warning(char *format, ...) |
---|
138 | // ---------------------------- |
---|
139 | { |
---|
140 | giet_pthread_exit("NRC 'Warning' with variable length args is currently unavailable\nuse nrerror until 'include <stdarg.h>' issue will be addressed"); |
---|
141 | |
---|
142 | /* |
---|
143 | va_list pa; |
---|
144 | int n; |
---|
145 | char *s, c; |
---|
146 | float f; |
---|
147 | |
---|
148 | va_start(pa, format); |
---|
149 | |
---|
150 | while (*format != '\0') { |
---|
151 | if ( *format == '%' ) { |
---|
152 | switch (*++format) { |
---|
153 | case '%' : putchar('%'); break; |
---|
154 | case 'c' : |
---|
155 | c = va_arg(pa, int); // 'char' is promoted to 'int' when passed through '...' |
---|
156 | putchar(c); |
---|
157 | break; |
---|
158 | case 'd' : |
---|
159 | n = va_arg(pa, int); |
---|
160 | printf("%d", n); |
---|
161 | break; |
---|
162 | case 'f' : // affichage d'un float |
---|
163 | f = (float) va_arg(pa, double); // 'float' is promoted to 'double' when passed through '...' |
---|
164 | printf("%f", f); |
---|
165 | break; |
---|
166 | case 's' : |
---|
167 | s = va_arg(pa, char*); |
---|
168 | for ( ; *s != '\0'; s++ ) |
---|
169 | putchar(*s); |
---|
170 | break; |
---|
171 | } |
---|
172 | } |
---|
173 | else |
---|
174 | putchar( *format); |
---|
175 | format++; |
---|
176 | } |
---|
177 | va_end(pa); |
---|
178 | putchar('\n'); |
---|
179 | //exit(-1); |
---|
180 | */ |
---|
181 | } |
---|