closes https://github.com/assimp/assimp/issues/3975: Use latest version of OpenDDL-Parser

This commit is contained in:
Kim Kulling
2021-07-26 11:24:18 +02:00
parent 26538a4f4a
commit 16c3f82222
3 changed files with 39 additions and 13 deletions

View File

@@ -132,6 +132,24 @@ OpenDDLParser::~OpenDDLParser() {
clear();
}
void OpenDDLParser::logToStream(FILE *f, LogSeverity severity, const std::string &message) {
if (f) {
const char *tag = "none";
switch (severity) {
case ddl_debug_msg: tag = "debug"; break;
case ddl_info_msg: tag = "info"; break;
case ddl_warn_msg: tag = "warn"; break;
case ddl_error_msg: tag = "error"; break;
}
fprintf(f, "OpenDDLParser: (%5s) %s\n", tag, message.c_str());
}
}
OpenDDLParser::logCallback OpenDDLParser::StdLogCallback (FILE *destination) {
using namespace std::placeholders;
return std::bind(logToStream, destination ? destination : stderr, _1, _2);
}
void OpenDDLParser::setLogCallback(logCallback callback) {
// install user-specific log callback; null = no log callback
m_logCallback = callback;
@@ -171,12 +189,8 @@ size_t OpenDDLParser::getBufferSize() const {
void OpenDDLParser::clear() {
m_buffer.resize(0);
if (nullptr != m_context) {
delete m_context;
m_context = nullptr;
}
// DDLNode::releaseNodes();
delete m_context;
m_context = nullptr;
}
bool OpenDDLParser::validate() {
@@ -506,7 +520,9 @@ char *OpenDDLParser::parseName(char *in, char *end, Name **name) {
in = parseIdentifier(in, end, &id);
if (id) {
currentName = new Name(ntype, id);
*name = currentName;
if (currentName) {
*name = currentName;
}
}
return in;