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>
This commit is contained in:
Berthold Stoeger 2024-03-01 13:09:20 +01:00 committed by Michael Keller
parent 2f4dbf1848
commit cf7c54bd56
12 changed files with 233 additions and 285 deletions

View file

@ -60,7 +60,7 @@ SOURCES += subsurface-mobile-main.cpp \
core/gaspressures.c \
core/git-access.cpp \
core/globals.cpp \
core/liquivision.c \
core/liquivision.cpp \
core/load-git.cpp \
core/parse-xml.cpp \
core/parse.cpp \
@ -76,14 +76,14 @@ SOURCES += subsurface-mobile-main.cpp \
core/save-html.c \
core/statistics.c \
core/worldmap-save.c \
core/libdivecomputer.c \
core/libdivecomputer.cpp \
core/version.c \
core/save-git.cpp \
core/datatrak.c \
core/datatrak.cpp \
core/ostctools.c \
core/planner.c \
core/save-xml.cpp \
core/cochran.c \
core/cochran.cpp \
core/deco.c \
core/divesite.c \
core/equipment.c \