From 017fa62aac683998eb80a71c87964a3c4a93ee3f Mon Sep 17 00:00:00 2001 From: Bert Belder Date: Wed, 12 Jun 2019 19:12:49 +0200 Subject: [PATCH] tools/combine: fold identical 'typedef struct' declarations --- tools/combine.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/tools/combine.js b/tools/combine.js index 83a1348..f828995 100644 --- a/tools/combine.js +++ b/tools/combine.js @@ -102,6 +102,15 @@ function include_sys(line, filename) { sys_included[key] = true; } +const declarations = {}; +function declare(line) { + const key = line.replace(/\s+/g, ' ').trim(); + if (declarations[key]) { + return ''; // Declared earlier. + } + declarations[key] = true; +} + let source = []; source = source @@ -124,7 +133,8 @@ for (let i = 0; i < files.length; i++) { const patterns = [ { re: /^\s*#include\s*"([^"]*)".*$/, fn: include }, - { re: /^\s*#include\s*<([^"]*)>.*$/, fn: include_sys } + { re: /^\s*#include\s*<([^"]*)>.*$/, fn: include_sys }, + { re: /^\s*typedef\s+struct\s+\w+\s+\w+\s*;\s*$/, fn: declare } ]; restart: for (let lno = 0; lno < source.length; ) {