subsurface/core/import-csv.h
Berthold Stoeger cf7c54bd56 core: turn a memblock in the parser to std::string
This avoid memory-management troubles. Had to convert a few
of the parsers (cochran, datatrak, liquivision) to C++.
Also had to convert libdivecomputer.c. This was less
painful than expected.

std::string is used because parts of the code assumes
that the data is null terminated after the last character
of the data. std::string does precisely that.

One disadvantage is that std::string clears its memory
when resizing / initializing. Thus we read the file onto
freshly cleared data, which some might thing is a
performance regression. Until someone shows me that this
matters, I don't care.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2024-03-10 11:01:42 +13:00

39 lines
862 B
C++

// SPDX-License-Identifier: GPL-2.0
#ifndef IMPORTCSV_H
#define IMPORTCSV_H
#include "filterpreset.h"
struct xml_params;
enum csv_format {
CSV_DEPTH,
CSV_TEMP,
CSV_PRESSURE,
POSEIDON_DEPTH,
POSEIDON_TEMP,
POSEIDON_SETPOINT,
POSEIDON_SENSOR1,
POSEIDON_SENSOR2,
POSEIDON_NDL,
POSEIDON_CEILING
};
#define MAXCOLDIGITS 10
#ifdef __cplusplus
extern "C" {
#endif
int parse_csv_file(const char *filename, struct xml_params *params, const char *csvtemplate, struct divelog *log);
int try_to_open_csv(std::string &mem, enum csv_format type, struct divelog *log);
int parse_txt_file(const char *filename, const char *csv, struct divelog *log);
int parse_seabear_log(const char *filename, struct divelog *log);
int parse_manual_file(const char *filename, struct xml_params *params, struct divelog *log);
#ifdef __cplusplus
}
#endif
#endif // IMPORTCSV_H