From cdadd00e72cb149fe09faaa168f558f5e4e0920e Mon Sep 17 00:00:00 2001 From: rdb Date: Sat, 4 Dec 2021 21:57:55 +0100 Subject: [PATCH] makepanda: Optimize WriteEmbeddedStringFile function This function took ages with a debug build of Python --- makepanda/makepandacore.py | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/makepanda/makepandacore.py b/makepanda/makepandacore.py index 2e3bc76ed8..ccb1aaad71 100644 --- a/makepanda/makepandacore.py +++ b/makepanda/makepandacore.py @@ -3276,6 +3276,22 @@ def WriteResourceFile(basename, **kwargs): return basename +def GenerateEmbeddedStringFile(string_name, data): + yield 'extern const char %s[] = {\n' % (string_name) + i = 0 + for byte in data: + if i == 0: + yield ' ' + + yield ' 0x%02x,' % (byte) + i += 1 + if i >= 12: + yield '\n' + i = 0 + + yield '\n};\n' + + def WriteEmbeddedStringFile(basename, inputs, string_name=None): if os.path.splitext(basename)[1] not in SUFFIX_INC: basename += '.cxx' @@ -3300,20 +3316,7 @@ def WriteEmbeddedStringFile(basename, inputs, string_name=None): data.append(0) - output = 'extern const char %s[] = {\n' % (string_name) - - i = 0 - for byte in data: - if i == 0: - output += ' ' - - output += ' 0x%02x,' % (byte) - i += 1 - if i >= 12: - output += '\n' - i = 0 - - output += '\n};\n' + output = ''.join(GenerateEmbeddedStringFile(string_name, data)) ConditionalWriteFile(target, output) return target