aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--python/nissy_module.c12
-rw-r--r--src/core/io_cube.h10
-rw-r--r--src/nissy.c38
-rw-r--r--src/nissy.h21
-rw-r--r--src/solvers/coord/gendata.h2
-rw-r--r--src/solvers/coord/utils.h4
-rw-r--r--src/solvers/h48/gendata_h48.h2
-rw-r--r--src/utils/dbg_log.h21
-rw-r--r--src/utils/math.h4
-rw-r--r--test/test.h8
-rw-r--r--tools/000_gendata/gendata.c2
-rw-r--r--tools/100_checkdata/checkdata.c2
-rw-r--r--tools/300_solve_small/solve_small.c2
-rw-r--r--tools/301_solve_file/solve_file.c2
-rw-r--r--tools/302_solve_multisol/solve_multisol.c2
-rw-r--r--tools/400_solvetest/solve_test.c2
-rw-r--r--tools/nissy_extra.h3
-rw-r--r--tools/tool.h30
18 files changed, 83 insertions, 84 deletions
diff --git a/python/nissy_module.c b/python/nissy_module.c
index db63dbb..da0b1c5 100644
--- a/python/nissy_module.c
+++ b/python/nissy_module.c
@@ -235,7 +235,7 @@ solverinfo(PyObject *self, PyObject *args)
235{ 235{
236 long long result; 236 long long result;
237 const char *solver; 237 const char *solver;
238 char buf[NISSY_DATAID_SIZE]; 238 char buf[NISSY_SIZE_DATAID];
239 PyObject *py_result, *py_buf; 239 PyObject *py_result, *py_buf;
240 240
241 if (!PyArg_ParseTuple(args, "s", &solver)) 241 if (!PyArg_ParseTuple(args, "s", &solver))
@@ -263,7 +263,7 @@ gendata(PyObject *self, PyObject *args)
263{ 263{
264 long long size, err; 264 long long size, err;
265 const char *solver; 265 const char *solver;
266 char *buf, dataid[NISSY_DATAID_SIZE]; 266 char *buf, dataid[NISSY_SIZE_DATAID];
267 267
268 if (!PyArg_ParseTuple(args, "s", &solver)) 268 if (!PyArg_ParseTuple(args, "s", &solver))
269 return NULL; 269 return NULL;
@@ -421,13 +421,9 @@ static struct PyModuleDef nissy_python_module = {
421}; 421};
422 422
423static void 423static void
424log_stdout(const char *str, ...) 424log_stdout(const char *str)
425{ 425{
426 va_list args; 426 fprintf(stderr, "%s", str);
427
428 va_start(args, str);
429 vfprintf(stderr, str, args);
430 va_end(args);
431} 427}
432 428
433PyMODINIT_FUNC PyInit_nissy_python_module(void) { 429PyMODINIT_FUNC PyInit_nissy_python_module(void) {
diff --git a/src/core/io_cube.h b/src/core/io_cube.h
index 39f3545..f5668d4 100644
--- a/src/core/io_cube.h
+++ b/src/core/io_cube.h
@@ -269,9 +269,9 @@ writecube_B32(cube_t cube, size_t buf_size, char buf[buf_size])
269 uint8_t corner[8], edge[12]; 269 uint8_t corner[8], edge[12];
270 270
271 if (buf_size < NISSY_SIZE_B32) { 271 if (buf_size < NISSY_SIZE_B32) {
272 LOG("Cannot write cube in B32 format: buffer size must be " 272 LOG("Cannot write cube in B32 format: buffer size must be at "
273 "at least %" PRIu64 " bytes, but the provided one is %" 273 "least %u bytes, but the provided one is %zu bytes.\n",
274 PRIu64 " bytes.\n", NISSY_SIZE_B32, buf_size); 274 NISSY_SIZE_B32, buf_size);
275 return NISSY_ERROR_BUFFER_SIZE; 275 return NISSY_ERROR_BUFFER_SIZE;
276 } 276 }
277 277
@@ -298,8 +298,8 @@ writecube_H48(cube_t cube, size_t buf_size, char buf[buf_size])
298 298
299 if (buf_size < NISSY_SIZE_H48) { 299 if (buf_size < NISSY_SIZE_H48) {
300 LOG("Cannot write cube in H48 format: buffer size must be " 300 LOG("Cannot write cube in H48 format: buffer size must be "
301 "at least %" PRIu64 " bytes, but the provided one is %" 301 "at least %u bytes, but the provided one is %zu bytes.\n",
302 PRIu64 " bytes.\n", NISSY_SIZE_H48, buf_size); 302 NISSY_SIZE_H48, buf_size);
303 return NISSY_ERROR_BUFFER_SIZE; 303 return NISSY_ERROR_BUFFER_SIZE;
304 } 304 }
305 305
diff --git a/src/nissy.c b/src/nissy.c
index 40e4be7..92fc01b 100644
--- a/src/nissy.c
+++ b/src/nissy.c
@@ -19,7 +19,7 @@ STATIC bool distribution_equal(const uint64_t [static INFO_DISTRIBUTION_LEN],
19 const uint64_t [static INFO_DISTRIBUTION_LEN], uint8_t); 19 const uint64_t [static INFO_DISTRIBUTION_LEN], uint8_t);
20STATIC long long write_result(cube_t, char [static NISSY_SIZE_B32]); 20STATIC long long write_result(cube_t, char [static NISSY_SIZE_B32]);
21STATIC size_t my_strnlen(const char *, size_t); 21STATIC size_t my_strnlen(const char *, size_t);
22STATIC long long nissy_dataid(const char *, char [static NISSY_DATAID_SIZE]); 22STATIC long long nissy_dataid(const char *, char [static NISSY_SIZE_DATAID]);
23STATIC long long nissy_gendata_unsafe( 23STATIC long long nissy_gendata_unsafe(
24 const char *, unsigned long long, char *); 24 const char *, unsigned long long, char *);
25 25
@@ -355,9 +355,8 @@ nissy_getcube(
355 c = getcube(ep, eo, cp, co); 355 c = getcube(ep, eo, cp, co);
356 356
357 if (!isconsistent(c)) { 357 if (!isconsistent(c)) {
358 LOG("Error: could not get cube with ep=%" PRId64 ", eo=%" 358 LOG("Error: could not get cube with ep=%lld, eo=%lld, "
359 PRId64 ", cp=%" PRId64 ", co=%" PRId64 ".\n", 359 "cp=%lld, co=%lld.\n", ep, eo, cp, co);
360 ep, eo, cp, co);
361 return NISSY_ERROR_OPTIONS; 360 return NISSY_ERROR_OPTIONS;
362 } 361 }
363 362
@@ -368,7 +367,7 @@ long long
368nissy_datainfo( 367nissy_datainfo(
369 uint64_t data_size, 368 uint64_t data_size,
370 const char data[data_size], 369 const char data[data_size],
371 void (*write)(const char *, ...) 370 void (*write)(const char *)
372) 371)
373{ 372{
374 uint8_t i; 373 uint8_t i;
@@ -384,25 +383,24 @@ nissy_datainfo(
384 if (ret != 0) 383 if (ret != 0)
385 return ret; 384 return ret;
386 385
387 write("\n---------\n\n"); 386 write_wrapper(write,
388 write("Table information for '%s'\n", info.solver); 387 "\n---------\n\n"
389 write("\n"); 388 "Table information for '%s'\n\n"
390 write("Size: %" PRIu64 " bytes\n", info.fullsize); 389 "Size: %" PRIu64 " bytes\n"
391 write("Entries: %" PRIu64 " (%" PRIu8 " bits per entry)", 390 "Entries: %" PRIu64 " (%" PRIu8 " bits per entry)\n",
392 info.entries, info.bits); 391 info.solver, info.fullsize, info.entries, info.bits);
393 write("\n");
394 392
395 switch (info.type) { 393 switch (info.type) {
396 case TABLETYPE_PRUNING: 394 case TABLETYPE_PRUNING:
397 write("\n"); 395 write_wrapper(write, "\nTable distribution:\n"
398 write("Table distribution:\nValue\tPositions\n"); 396 "Value\tPositions\n");
399 for (i = 0; i <= info.maxvalue; i++) { 397 for (i = 0; i <= info.maxvalue; i++) {
400 write("%" PRIu8 "\t%" PRIu64 "\n", 398 write_wrapper(write, "%" PRIu8 "\t%" PRIu64 "\n",
401 i + info.base, info.distribution[i]); 399 i + info.base, info.distribution[i]);
402 } 400 }
403 break; 401 break;
404 case TABLETYPE_SPECIAL: 402 case TABLETYPE_SPECIAL:
405 write("This is an ad-hoc table\n"); 403 write_wrapper(write, "This is an ad-hoc table\n");
406 break; 404 break;
407 default: 405 default:
408 LOG("datainfo: unknown table type\n"); 406 LOG("datainfo: unknown table type\n");
@@ -413,13 +411,13 @@ nissy_datainfo(
413 return nissy_datainfo( 411 return nissy_datainfo(
414 data_size - info.next, (char *)data + info.next, write); 412 data_size - info.next, (char *)data + info.next, write);
415 413
416 write("\n---------\n"); 414 write_wrapper(write, "\n---------\n");
417 415
418 return NISSY_OK; 416 return NISSY_OK;
419} 417}
420 418
421STATIC long long 419STATIC long long
422nissy_dataid(const char *solver, char dataid[static NISSY_DATAID_SIZE]) 420nissy_dataid(const char *solver, char dataid[static NISSY_SIZE_DATAID])
423{ 421{
424 if (!strncmp(solver, "h48", 3)) { 422 if (!strncmp(solver, "h48", 3)) {
425 uint8_t h, k; 423 uint8_t h, k;
@@ -442,7 +440,7 @@ nissy_dataid(const char *solver, char dataid[static NISSY_DATAID_SIZE])
442long long 440long long
443nissy_solverinfo( 441nissy_solverinfo(
444 const char *solver, 442 const char *solver,
445 char dataid[static NISSY_DATAID_SIZE] 443 char dataid[static NISSY_SIZE_DATAID]
446) 444)
447{ 445{
448 long long err; 446 long long err;
@@ -626,7 +624,7 @@ nissy_countmoves(
626 624
627long long 625long long
628nissy_setlogger( 626nissy_setlogger(
629 void (*log)(const char *, ...) 627 void (*log)(const char *)
630) 628)
631{ 629{
632 nissy_log = log; 630 nissy_log = log;
diff --git a/src/nissy.h b/src/nissy.h
index add88e4..42429d3 100644
--- a/src/nissy.h
+++ b/src/nissy.h
@@ -25,7 +25,7 @@ for example 'rotation UF' or 'mirrored BL'.
25#define NISSY_SIZE_H48 88U 25#define NISSY_SIZE_H48 88U
26#define NISSY_SIZE_TRANSFORMATION 12U 26#define NISSY_SIZE_TRANSFORMATION 12U
27#define NISSY_SIZE_SOLVE_STATS 10U 27#define NISSY_SIZE_SOLVE_STATS 10U
28#define NISSY_DATAID_SIZE 255U 28#define NISSY_SIZE_DATAID 255U
29 29
30/* Flags for NISS options */ 30/* Flags for NISS options */
31#define NISSY_NISSFLAG_NORMAL 1U 31#define NISSY_NISSFLAG_NORMAL 1U
@@ -141,7 +141,7 @@ Parameters:
141 format_in - The input format. 141 format_in - The input format.
142 format_out - The output format. 142 format_out - The output format.
143 cube_string - The cube, in format_in format. 143 cube_string - The cube, in format_in format.
144 retult_size - The allocated size of the result array. 144 result_size - The allocated size of the result array.
145 result - Return parameter for the cube in format_out format. 145 result - Return parameter for the cube in format_out format.
146 146
147Return values: 147Return values:
@@ -198,7 +198,7 @@ the given solver, and other useful information.
198Parameters: 198Parameters:
199 solver - The name of the solver. 199 solver - The name of the solver.
200 dataid - An identifier for the data computed for the solver. Different 200 dataid - An identifier for the data computed for the solver. Different
201 solver may use equivalent data. This identifier can be used 201 solvers may use equivalent data. This identifier can be used
202 e.g. as a filename or database key to save and retrieve the 202 e.g. as a filename or database key to save and retrieve the
203 correct data for each solver, without duplication. 203 correct data for each solver, without duplication.
204 204
@@ -211,7 +211,7 @@ Return values:
211long long 211long long
212nissy_solverinfo( 212nissy_solverinfo(
213 const char *solver, 213 const char *solver,
214 char dataid[static NISSY_DATAID_SIZE] 214 char dataid[static NISSY_SIZE_DATAID]
215); 215);
216 216
217/* 217/*
@@ -219,8 +219,8 @@ Compute the data for the given solver and store it in generated_data.
219 219
220Parameters: 220Parameters:
221 solver - The name of the solver. 221 solver - The name of the solver.
222 data_size - The size of the data buffer. It is advised to use nissy_datasize 222 data_size - The size of the data buffer. It is advised to use
223 to check how much memory is needed. 223 nissy_solverinfo to check how much memory is needed.
224 data - The return parameter for the generated data. 224 data - The return parameter for the generated data.
225 This buffer must have 8-byte alignment. 225 This buffer must have 8-byte alignment.
226 226
@@ -324,18 +324,19 @@ nissy_countmoves(
324); 324);
325 325
326/* 326/*
327Set a global logger function used by this library. 327Set a global logger function used by this library. Setting the logger to NULL
328disables logging.
328 329
329Parameters: 330Parameters:
330 write - A callback writer with the same signature as printf(3). 331 write - A callback writer with the same signature as printf(3).
331 332
332Return values: 333Return values:
333 NISSY_OK - Logger set succesfully. No warning or error is goind to be given 334 NISSY_OK - Logger set succesfully. No warning or error is going to be given
334 if the logger is NULL or invalid. 335 if the logger is invalid.
335*/ 336*/
336long long 337long long
337nissy_setlogger( 338nissy_setlogger(
338 void (*logger_function)(const char *, ...) 339 void (*logger_function)(const char *)
339); 340);
340 341
341 342
diff --git a/src/solvers/coord/gendata.h b/src/solvers/coord/gendata.h
index 63e1631..6abb5eb 100644
--- a/src/solvers/coord/gendata.h
+++ b/src/solvers/coord/gendata.h
@@ -22,7 +22,7 @@ gendata_coord_dispatch(const char *coordstr, void *buf)
22 parse_coord_and_axis(strlen(coordstr), coordstr, &coord, NULL); 22 parse_coord_and_axis(strlen(coordstr), coordstr, &coord, NULL);
23 23
24 if (coord == NULL) { 24 if (coord == NULL) {
25 LOG("Could not parse coordinate '%s'\n", coord); 25 LOG("Could not parse coordinate '%s'\n", coordstr);
26 return NISSY_ERROR_INVALID_SOLVER; 26 return NISSY_ERROR_INVALID_SOLVER;
27 } 27 }
28 28
diff --git a/src/solvers/coord/utils.h b/src/solvers/coord/utils.h
index e9d0595..5407de3 100644
--- a/src/solvers/coord/utils.h
+++ b/src/solvers/coord/utils.h
@@ -2,7 +2,7 @@ STATIC coord_t *parse_coord(size_t n, const char [n]);
2STATIC uint8_t parse_axis(size_t n, const char [n]); 2STATIC uint8_t parse_axis(size_t n, const char [n]);
3STATIC void parse_coord_and_axis( 3STATIC void parse_coord_and_axis(
4 size_t n, const char [n], coord_t **, uint8_t *); 4 size_t n, const char [n], coord_t **, uint8_t *);
5STATIC int64_t dataid_coord(const char *, char [static NISSY_DATAID_SIZE]); 5STATIC int64_t dataid_coord(const char *, char [static NISSY_SIZE_DATAID]);
6 6
7STATIC coord_t * 7STATIC coord_t *
8parse_coord(size_t n, const char coord[n]) 8parse_coord(size_t n, const char coord[n])
@@ -52,7 +52,7 @@ parse_coord_and_axis(
52} 52}
53 53
54STATIC int64_t 54STATIC int64_t
55dataid_coord(const char *ca, char dataid[static NISSY_DATAID_SIZE]) 55dataid_coord(const char *ca, char dataid[static NISSY_SIZE_DATAID])
56{ 56{
57 coord_t *c; 57 coord_t *c;
58 58
diff --git a/src/solvers/h48/gendata_h48.h b/src/solvers/h48/gendata_h48.h
index b6647ed..ba0cc50 100644
--- a/src/solvers/h48/gendata_h48.h
+++ b/src/solvers/h48/gendata_h48.h
@@ -232,7 +232,7 @@ gendata_h48h0k4(gendata_h48_arg_t arg[static 1])
232 bfsarg[t].table_mutex[tt] = &table_mutex[tt]; 232 bfsarg[t].table_mutex[tt] = &table_mutex[tt];
233 } 233 }
234 for (done = 1, d = 1; done < h48max && d <= arg->maxdepth; d++) { 234 for (done = 1, d = 1; done < h48max && d <= arg->maxdepth; d++) {
235 LOG("h48: generating depth %" PRIu8 "\n", d); 235 LOG("h48: generating depth %" PRId64 "\n", d);
236 236
237 for (t = 0; t < THREADS; t++) { 237 for (t = 0; t < THREADS; t++) {
238 bfsarg[t].depth = d; 238 bfsarg[t].depth = d;
diff --git a/src/utils/dbg_log.h b/src/utils/dbg_log.h
index f9b1d8a..c30993a 100644
--- a/src/utils/dbg_log.h
+++ b/src/utils/dbg_log.h
@@ -1,6 +1,23 @@
1void (*nissy_log)(const char *, ...); 1#include <stdio.h>
2 2
3#define LOG(...) if (nissy_log != NULL) nissy_log(__VA_ARGS__); 3void (*nissy_log)(const char *);
4void write_wrapper(void (*)(const char *), const char *, ...);
5
6void
7write_wrapper(void (*write)(const char *), const char *str, ...)
8{
9 static const size_t len = 1000;
10 char message[len];
11 va_list args;
12
13 va_start(args, str);
14 sprintf(message, str, args);
15 va_end(args);
16
17 write(message);
18}
19
20#define LOG(...) if (nissy_log != NULL) write_wrapper(nissy_log, __VA_ARGS__);
4 21
5#ifdef DEBUG 22#ifdef DEBUG
6#define STATIC 23#define STATIC
diff --git a/src/utils/math.h b/src/utils/math.h
index a9d9b85..1ae4013 100644
--- a/src/utils/math.h
+++ b/src/utils/math.h
@@ -168,8 +168,8 @@ sumzerotodigits(int64_t d, size_t n, uint8_t b, uint8_t a[n])
168 size_t i; 168 size_t i;
169 169
170 if (!((n == 8 && b == 3 ) || (n == 12 && b == 2))) { 170 if (!((n == 8 && b == 3 ) || (n == 12 && b == 2))) {
171 LOG("Won't compute 'digits' for n=%" PRIu8 "and b=%" PRIu8 171 LOG("Won't compute 'digits' for n=%zu and b=%" PRIu8
172 " (use n=8 b=3 or n=12 b=2)\n"); 172 " (use n=8 b=3 or n=12 b=2)\n", n, b);
173 goto sumzerotodigits_error; 173 goto sumzerotodigits_error;
174 } 174 }
175 175
diff --git a/test/test.h b/test/test.h
index 615402b..0b12fb7 100644
--- a/test/test.h
+++ b/test/test.h
@@ -31,13 +31,9 @@ int64_t writecube(const char *, cube_t, size_t n, char [n]);
31/* Test function to be implemented by all tests */ 31/* Test function to be implemented by all tests */
32void run(void); 32void run(void);
33 33
34void log_stderr(const char *str, ...) 34void log_stderr(const char *str)
35{ 35{
36 va_list args; 36 fprintf(stderr, "%s", str);
37
38 va_start(args, str);
39 vfprintf(stderr, str, args);
40 va_end(args);
41} 37}
42 38
43int main(void) { 39int main(void) {
diff --git a/tools/000_gendata/gendata.c b/tools/000_gendata/gendata.c
index 51c2f47..f2ac1a0 100644
--- a/tools/000_gendata/gendata.c
+++ b/tools/000_gendata/gendata.c
@@ -8,7 +8,7 @@ static void
8run(void) { 8run(void) {
9 int64_t size; 9 int64_t size;
10 bool consistent, expected; 10 bool consistent, expected;
11 char *buf, filename[1024], dataid[NISSY_DATAID_SIZE]; 11 char *buf, filename[1024], dataid[NISSY_SIZE_DATAID];
12 12
13 size = generatetable(solver, &buf, dataid); 13 size = generatetable(solver, &buf, dataid);
14 switch (size) { 14 switch (size) {
diff --git a/tools/100_checkdata/checkdata.c b/tools/100_checkdata/checkdata.c
index 8bc308c..5b3db2c 100644
--- a/tools/100_checkdata/checkdata.c
+++ b/tools/100_checkdata/checkdata.c
@@ -6,7 +6,7 @@ char *solver, *filename;
6static void 6static void
7run(void) { 7run(void) {
8 long long int size, result; 8 long long int size, result;
9 char *buf, dataid[NISSY_DATAID_SIZE]; 9 char *buf, dataid[NISSY_SIZE_DATAID];
10 FILE *f; 10 FILE *f;
11 11
12 size = nissy_solverinfo(solver, dataid); 12 size = nissy_solverinfo(solver, dataid);
diff --git a/tools/300_solve_small/solve_small.c b/tools/300_solve_small/solve_small.c
index 6a1f7b5..bec8add 100644
--- a/tools/300_solve_small/solve_small.c
+++ b/tools/300_solve_small/solve_small.c
@@ -46,7 +46,7 @@ void run(void) {
46} 46}
47 47
48int main(int argc, char **argv) { 48int main(int argc, char **argv) {
49 char filename[255], dataid[NISSY_DATAID_SIZE]; 49 char filename[255], dataid[NISSY_SIZE_DATAID];
50 50
51 if (argc < 2) { 51 if (argc < 2) {
52 printf("Error: not enough arguments. " 52 printf("Error: not enough arguments. "
diff --git a/tools/301_solve_file/solve_file.c b/tools/301_solve_file/solve_file.c
index cefc608..a772e95 100644
--- a/tools/301_solve_file/solve_file.c
+++ b/tools/301_solve_file/solve_file.c
@@ -33,7 +33,7 @@ void run(void) {
33} 33}
34 34
35int main(int argc, char **argv) { 35int main(int argc, char **argv) {
36 char filename[255], dataid[NISSY_DATAID_SIZE], *scrfilename; 36 char filename[255], dataid[NISSY_SIZE_DATAID], *scrfilename;
37 FILE *scrfile; 37 FILE *scrfile;
38 38
39 if (argc < 3) { 39 if (argc < 3) {
diff --git a/tools/302_solve_multisol/solve_multisol.c b/tools/302_solve_multisol/solve_multisol.c
index c6ab685..e933a94 100644
--- a/tools/302_solve_multisol/solve_multisol.c
+++ b/tools/302_solve_multisol/solve_multisol.c
@@ -39,7 +39,7 @@ void run(void) {
39} 39}
40 40
41int main(int argc, char **argv) { 41int main(int argc, char **argv) {
42 char filename[255], dataid[NISSY_DATAID_SIZE]; 42 char filename[255], dataid[NISSY_SIZE_DATAID];
43 43
44 if (argc < 3) { 44 if (argc < 3) {
45 printf("Error: not enough arguments. " 45 printf("Error: not enough arguments. "
diff --git a/tools/400_solvetest/solve_test.c b/tools/400_solvetest/solve_test.c
index a98be26..e881030 100644
--- a/tools/400_solvetest/solve_test.c
+++ b/tools/400_solvetest/solve_test.c
@@ -94,7 +94,7 @@ void run(void) {
94} 94}
95 95
96int main(int argc, char **argv) { 96int main(int argc, char **argv) {
97 char filename[255], dataid[NISSY_DATAID_SIZE]; 97 char filename[255], dataid[NISSY_SIZE_DATAID];
98 98
99 if (argc < 2) { 99 if (argc < 2) {
100 printf("Error: not enough arguments. " 100 printf("Error: not enough arguments. "
diff --git a/tools/nissy_extra.h b/tools/nissy_extra.h
index 1600681..3e9c9ab 100644
--- a/tools/nissy_extra.h
+++ b/tools/nissy_extra.h
@@ -11,6 +11,5 @@ for testing purposes only.
11 11
12size_t gendata_h48_derive(uint8_t, const void *, void *); 12size_t gendata_h48_derive(uint8_t, const void *, void *);
13int parse_h48_solver(const char *, uint8_t [static 1], uint8_t [static 1]); 13int parse_h48_solver(const char *, uint8_t [static 1], uint8_t [static 1]);
14long long int nissy_datainfo( 14long long int nissy_datainfo(uint64_t, const char *, void (*)(const char *));
15 uint64_t, const char *, void (*)(const char *, ...));
16long long int nissy_derivedata(const char *, const void *, void *); 15long long int nissy_derivedata(const char *, const void *, void *);
diff --git a/tools/tool.h b/tools/tool.h
index b65f33a..51301c6 100644
--- a/tools/tool.h
+++ b/tools/tool.h
@@ -9,12 +9,12 @@
9#include "../src/nissy.h" 9#include "../src/nissy.h"
10#include "nissy_extra.h" 10#include "nissy_extra.h"
11 11
12static void log_stderr(const char *, ...); 12static void log_stderr(const char *);
13static void log_stdout(const char *, ...); 13static void log_stdout(const char *);
14static double timerun(void (*)(void)); 14static double timerun(void (*)(void));
15static void writetable(const char *, int64_t, const char *); 15static void writetable(const char *, int64_t, const char *);
16static long long int generatetable(const char *, char **, 16static long long int generatetable(const char *, char **,
17 char [static NISSY_DATAID_SIZE]); 17 char [static NISSY_SIZE_DATAID]);
18static long long int derivetable( 18static long long int derivetable(
19 const char *, const char *, const char *, char **); 19 const char *, const char *, const char *, char **);
20static int getdata(const char *, char **, const char *); 20static int getdata(const char *, char **, const char *);
@@ -23,23 +23,15 @@ static void derivedata_run(
23 const char *, const char *, const char *, const char *); 23 const char *, const char *, const char *, const char *);
24 24
25static void 25static void
26log_stderr(const char *str, ...) 26log_stderr(const char *str)
27{ 27{
28 va_list args; 28 fprintf(stderr, "%s", str);
29
30 va_start(args, str);
31 vfprintf(stderr, str, args);
32 va_end(args);
33} 29}
34 30
35static void 31static void
36write_stdout(const char *str, ...) 32write_stdout(const char *str)
37{ 33{
38 va_list args; 34 fprintf(stdout, "%s", str);
39
40 va_start(args, str);
41 vfprintf(stdout, str, args);
42 va_end(args);
43} 35}
44 36
45static double 37static double
@@ -90,7 +82,7 @@ static long long int
90generatetable( 82generatetable(
91 const char *solver, 83 const char *solver,
92 char **buf, 84 char **buf,
93 char dataid[static NISSY_DATAID_SIZE] 85 char dataid[static NISSY_SIZE_DATAID]
94) 86)
95{ 87{
96 long long int size, gensize; 88 long long int size, gensize;
@@ -125,7 +117,7 @@ derivetable(
125{ 117{
126 uint8_t h, k; 118 uint8_t h, k;
127 long long int size, gensize; 119 long long int size, gensize;
128 char *fulltable, dataid[NISSY_DATAID_SIZE]; 120 char *fulltable, dataid[NISSY_SIZE_DATAID];
129 121
130 if (getdata(solver_large, &fulltable, filename_large) != 0) { 122 if (getdata(solver_large, &fulltable, filename_large) != 0) {
131 printf("Error reading full table.\n"); 123 printf("Error reading full table.\n");
@@ -169,7 +161,7 @@ getdata(
169) { 161) {
170 long long int size, sizeread; 162 long long int size, sizeread;
171 FILE *f; 163 FILE *f;
172 char dataid[NISSY_DATAID_SIZE]; 164 char dataid[NISSY_SIZE_DATAID];
173 165
174 if ((f = fopen(filename, "rb")) == NULL) { 166 if ((f = fopen(filename, "rb")) == NULL) {
175 printf("Table file not found, generating it.\n"); 167 printf("Table file not found, generating it.\n");
@@ -209,7 +201,7 @@ gendata_run(
209 uint64_t expected[static 21] 201 uint64_t expected[static 21]
210) { 202) {
211 long long int size; 203 long long int size;
212 char *buf, filename[1024], dataid[NISSY_DATAID_SIZE]; 204 char *buf, filename[1024], dataid[NISSY_SIZE_DATAID];
213 205
214 size = generatetable(solver, &buf, dataid); 206 size = generatetable(solver, &buf, dataid);
215 sprintf(filename, "tables/%s", dataid); 207 sprintf(filename, "tables/%s", dataid);

Generated with cgit - Back to sebastiano.tronto.net