Update scaninc and preproc with multi-file incbins

This commit is contained in:
Diegoisawesome 2018-09-06 03:45:50 -05:00
parent f8f7a8e300
commit e0a83e3d72
2 changed files with 69 additions and 52 deletions

View File

@ -325,6 +325,10 @@ void CFile::TryConvertIncbin()
m_pos++;
std::printf("{");
while (true)
{
SkipWhitespace();
if (m_buffer[m_pos] != '"')
@ -357,15 +361,6 @@ void CFile::TryConvertIncbin()
m_pos++;
SkipWhitespace();
if (m_buffer[m_pos] != ')')
RaiseError("expected ')'");
m_pos++;
std::printf("{");
int fileSize;
std::unique_ptr<unsigned char[]> buffer = ReadWholeFile(path, fileSize);
@ -386,6 +381,19 @@ void CFile::TryConvertIncbin()
std::printf("%uu,", data);
}
SkipWhitespace();
if (m_buffer[m_pos] != ',')
break;
m_pos++;
}
if (m_buffer[m_pos] != ')')
RaiseError("expected ')'");
m_pos++;
std::printf("}");
}

View File

@ -244,18 +244,27 @@ void CFile::CheckIncbin()
m_pos++;
while (true)
{
SkipWhitespace();
std::string path = ReadPath();
SkipWhitespace();
m_incbins.emplace(path);
if (m_buffer[m_pos] != ',')
break;
m_pos++;
}
if (m_buffer[m_pos] != ')')
FATAL_INPUT_ERROR("expected ')'");
m_pos++;
m_incbins.emplace(path);
}
std::string CFile::ReadPath()