diff --git a/src/logger.c b/src/logger.c index 398014da95e596746edbbff1c43e7c40fefd49e3..1f873567da9fcec15a66e5c1d74e54ad24e0e7ab 100644 --- a/src/logger.c +++ b/src/logger.c @@ -42,6 +42,15 @@ char LOGGER_VERSION[LOGGER_VERSION_SIZE] = "0.1"; +const unsigned int logger_data_size[logger_data_count] = { + sizeof(int), + sizeof(float), + sizeof(double), + sizeof(char), + sizeof(long long), + 1, +}; + void logger_write_data(struct dump *d, size_t *offset, const size_t size, void *const p) { char *buff = dump_get(d, size, offset); @@ -64,13 +73,9 @@ void logger_write_general_data(struct dump *d, struct logger_const *log, size_t memcpy(buff, &data_type, LOGGER_DATATYPE_SIZE); /* write value */ - size_t size = 0; - if (data_type == logger_data_double) - size = sizeof(double); - else if (data_type == logger_data_longlong) - size = sizeof(long long); - else + if (data_type >= logger_data_count) error("Not implemented"); + size_t size = logger_data_size[data_type]; buff = dump_get(d, size, offset); memcpy(buff, p, size); @@ -347,6 +352,10 @@ void logger_write_file_header(struct dump *dump, struct engine *e) { /* write number of bytes used for the offsets */ logger_write_data(dump, &file_offset, LOGGER_OFFSET_SIZE, &log_const.offset); + /* write offset direction */ + int reversed = 0; + logger_write_data(dump, &file_offset, logger_data_size[logger_data_bool], &reversed); + /* will write the offset of the first particle here */ skip_header = dump_get(dump, log_const.offset, &file_offset); diff --git a/src/logger.h b/src/logger.h index 946c267225dee2212602d95ca2123bfd0da08e2a..375492bbac5951d273f0aafa43abd9f0bfed7fff 100644 --- a/src/logger.h +++ b/src/logger.h @@ -109,8 +109,12 @@ enum logger_datatype { logger_data_double, logger_data_char, logger_data_longlong, + logger_data_bool, + logger_data_count /* should be last */ }; +extern const unsigned int logger_data_size[]; + /* Function prototypes. */ int logger_size(unsigned int mask); void logger_log_part(struct part *p, unsigned int mask, size_t *offset,