From ff32d5b037f40f827ad424ec8b12c299c3b00e8f Mon Sep 17 00:00:00 2001 From: Jason Turner Date: Tue, 18 Jul 2023 09:41:01 -0600 Subject: [PATCH] Modernize the embedded sources, make them less noisy --- embedded/CreateEmbeddedSource.cpp | 6 +++--- embedded/EmbedFiles.cmake | 3 ++- embedded/embedded_files.cxx.in | 30 ++++++++++-------------------- 3 files changed, 15 insertions(+), 24 deletions(-) diff --git a/embedded/CreateEmbeddedSource.cpp b/embedded/CreateEmbeddedSource.cpp index 56f152a5..fbd9db47 100644 --- a/embedded/CreateEmbeddedSource.cpp +++ b/embedded/CreateEmbeddedSource.cpp @@ -56,7 +56,7 @@ int main(int argc, char *argv[]) unsigned length = 0; if (outstream.is_open()) { - outstream << "static const uint8_t embedded_file_" << filenum << "[] = {"; + outstream << "static constexpr uint8_t embedded_file_" << filenum << "[] = {"; do { strm.avail_in = static_cast(fread(in.data(), 1, CHUNK, source)); if (ferror(source) != 0) { @@ -95,9 +95,9 @@ int main(int argc, char *argv[]) outstream << "};"; outstream << "\n"; - outstream << "static const char *embedded_file_name_" << filenum << " = \"" << embeddedname << "\";"; + outstream << "static constexpr const char *embedded_file_name_" << filenum << " = \"" << embeddedname << "\";"; outstream << "\n"; - outstream << "static const size_t embedded_file_len_" << filenum << " = " << std::dec << length << ";"; + outstream << "static constexpr size_t embedded_file_len_" << filenum << " = " << std::dec << length << ";"; outstream << std::endl; outstream.close(); diff --git a/embedded/EmbedFiles.cmake b/embedded/EmbedFiles.cmake index e49220d6..1eb2935f 100644 --- a/embedded/EmbedFiles.cmake +++ b/embedded/EmbedFiles.cmake @@ -80,7 +80,7 @@ function(embed_files FILES EMBEDDED_LOCATIONS CXX_OUTPUT_FILES) # datas foreach (arg RANGE ${END}) - set(EMBEDDED_FILES "${EMBEDDED_FILES} embedded_file_${arg}") + set(EMBEDDED_FILES "${EMBEDDED_FILES} static_cast(embedded_file_${arg})") if (NOT arg EQUAL MAXFILECOUNT) set(EMBEDDED_FILES "${EMBEDDED_FILES},") endif() @@ -92,6 +92,7 @@ function(embed_files FILES EMBEDDED_LOCATIONS CXX_OUTPUT_FILES) if( NAMESPACE ) set(BEGIN_NAMESPACE "namespace ${NAMESPACE} {") set(END_NAMESPACE "}") + set(NESTED_NAMESPACE "${NAMESPACE}::") endif() configure_file("${PROJECT_SOURCE_DIR}/embedded/embedded_files.hxx.in" "${CMAKE_CURRENT_BINARY_DIR}/embedded_files.hxx") diff --git a/embedded/embedded_files.cxx.in b/embedded/embedded_files.cxx.in index 09eb1ee8..ce6a8ccd 100644 --- a/embedded/embedded_files.cxx.in +++ b/embedded/embedded_files.cxx.in @@ -1,35 +1,26 @@ #include "embedded_files.hxx" -@BEGIN_NAMESPACE@ -namespace embedded_files { - static const size_t embedded_file_count = @NUMFILES@; +namespace @NESTED_NAMESPACE@embedded_files { + @EMBEDDED_FILE_INCLUDES@ - static const char *embedded_file_names[] = { + static constexpr std::array embedded_file_names{ @EMBEDDED_FILE_NAMES@ }; - static const size_t embedded_file_lens[] = { + static constexpr std::array embedded_file_lens{ @EMBEDDED_FILE_LENS@ }; - static const uint8_t *embedded_files[] = { + static constexpr std::array embedded_files{ @EMBEDDED_FILES@ }; const std::vector &fileNames() { - static const auto result = [](){ - std::vector vals; - vals.reserve(embedded_file_count); - for (size_t i = 0; i < embedded_file_count; ++i) { - vals.push_back(std::string(embedded_file_names[i])); - } - return vals; - }(); - + static const auto result = std::vector{embedded_file_names.begin(), embedded_file_names.end()}; return result; } @@ -38,10 +29,10 @@ namespace embedded_files { static const auto fs = [](){ std::map> vals; if (vals.empty()){ - for (size_t i = 0; i < embedded_file_count; ++i) { - vals.insert(std::make_pair(std::string(embedded_file_names[i]), - std::make_pair(embedded_file_lens[i], - embedded_files[i]))); + for (size_t i = 0; i < embedded_file_names.size(); ++i) { + vals.insert(std::make_pair(std::string(embedded_file_names.at(i)), + std::make_pair(embedded_file_lens.at(i), + embedded_files.at(i)))); } } return vals; @@ -51,5 +42,4 @@ namespace embedded_files { } -@END_NAMESPACE@