#!/usr/bin/env python3 """ Fix logging macros in INGLLogger.h files to work without logger parameter. The macros should use a global logger or be simplified. """ import os import re def fix_inglogger_file(filepath): """Fix logging macros in INGLLogger.h file.""" with open(filepath, 'r') as f: content = f.read() original_content = content # Replace macros that take (logger) parameter with variadic (...) version # that ignores the parameter # TRACE_LOG content = re.sub( r'#define TRACE_LOG\(logger\)\s*\\\n\s*for \(bool log_level_enabled = \(logger\)\.isTraceEnabled\(\); log_level_enabled; log_level_enabled = false\)\s*\\\n\s*NGL::LogStreamHelper\(logger,', r'#define TRACE_LOG(...) \\\n for (bool log_level_enabled = false; log_level_enabled; log_level_enabled = false) \\\n NGL::LogStreamHelper(NGL::getMemoryLogger(),', content ) # TRACE_LOG (disabled version) content = re.sub( r'#define TRACE_LOG\(logger\)\s*\\\n\s*for \( ; false; \)\s*\\\n\s*NGL::LogStreamHelper\(logger,', r'#define TRACE_LOG(...) \\\n for ( ; false; ) \\\n NGL::LogStreamHelper(NGL::getMemoryLogger(),', content ) # DEBUG_LOG content = re.sub( r'#define DEBUG_LOG\(logger\)\s*\\\n\s*for \(bool log_level_enabled = \(logger\)\.isDebugEnabled\(\); log_level_enabled; log_level_enabled = false\)\s*\\\n\s*NGL::LogStreamHelper\(logger,', r'#define DEBUG_LOG(...) \\\n for (bool log_level_enabled = false; log_level_enabled; log_level_enabled = false) \\\n NGL::LogStreamHelper(NGL::getMemoryLogger(),', content ) # INFO_LOG content = re.sub( r'#define INFO_LOG\(logger\)\s*\\\n\s*for \(bool log_level_enabled = \(logger\)\.isInfoEnabled\(\); log_level_enabled; log_level_enabled = false\)\s*\\\n\s*NGL::LogStreamHelper\(logger,', r'#define INFO_LOG(...) \\\n for (bool log_level_enabled = false; log_level_enabled; log_level_enabled = false) \\\n NGL::LogStreamHelper(NGL::getMemoryLogger(),', content ) # WARNING_LOG content = re.sub( r'#define WARNING_LOG\(logger\)\s*\\\n\s*for \(bool log_level_enabled = \(logger\)\.isWarningEnabled\(\); log_level_enabled; log_level_enabled = false\)\s*\\\n\s*NGL::LogStreamHelper\(logger,', r'#define WARNING_LOG(...) \\\n for (bool log_level_enabled = false; log_level_enabled; log_level_enabled = false) \\\n NGL::LogStreamHelper(NGL::getMemoryLogger(),', content ) # ERROR_LOG content = re.sub( r'#define ERROR_LOG\(logger\)\s*\\\n\s*for \(bool log_level_enabled = \(logger\)\.isErrorEnabled\(\); log_level_enabled; log_level_enabled = false\)\s*\\\n\s*NGL::LogStreamHelper\(logger,', r'#define ERROR_LOG(...) \\\n for (bool log_level_enabled = false; log_level_enabled; log_level_enabled = false) \\\n NGL::LogStreamHelper(NGL::getMemoryLogger(),', content ) # FATAL_LOG content = re.sub( r'#define FATAL_LOG\(logger\)\s*\\\n\s*for \(bool log_level_enabled = \(logger\)\.isFatalEnabled\(\); log_level_enabled; log_level_enabled = false\)\s*\\\n\s*NGL::LogStreamHelper\(logger,', r'#define FATAL_LOG(...) \\\n for (bool log_level_enabled = false; log_level_enabled; log_level_enabled = false) \\\n NGL::LogStreamHelper(NGL::getMemoryLogger(),', content ) # NOTICE_LOG content = re.sub( r'#define NOTICE_LOG\(logger\)\s*\\\n\s*NGL::LogStreamHelper\(logger,', r'#define NOTICE_LOG(...) \\\n NGL::LogStreamHelper(NGL::getMemoryLogger(),', content ) # STARTUP_LOG content = re.sub( r'#define STARTUP_LOG\(logger\)\s*\{ \(logger\)\.logStartup\(__FILE__, __LINE__, __func__\); \}', r'#define STARTUP_LOG(...) { NGL::getMemoryLogger().logStartup(__FILE__, __LINE__, __func__); }', content ) # SHUTDOWN_LOG content = re.sub( r'#define SHUTDOWN_LOG\(logger\)\s*\{ \(logger\)\.logShutdown\(__FILE__, __LINE__, __func__\); \}', r'#define SHUTDOWN_LOG(...) { NGL::getMemoryLogger().logShutdown(__FILE__, __LINE__, __func__); }', content ) if content != original_content: with open(filepath, 'w') as f: f.write(content) print(f"āœ“ Fixed: {filepath}") return True else: print(f"- No changes: {filepath}") return False if __name__ == '__main__': files_to_fix = [ '/home/torsten/swy/sandbox/qt-migration-legatus/qt6-after/qt6-migrated-legatus/Z/src/NGLLogger/INGLLogger.h', '/home/torsten/swy/sandbox/qt-migration-legatus/qt6-after/qt6-migrated-legatus/include/NGLLogger/INGLLogger.h', ] changed = 0 for filepath in files_to_fix: if os.path.exists(filepath): if fix_inglogger_file(filepath): changed += 1 else: print(f"⚠ File not found: {filepath}") print(f"\nāœ“ Fixed {changed} file(s)")