diff Resources/GenerateTransferSyntaxes.py @ 3730:ae31ba2b09a6

toolbox: LookupTransferSyntax()
author Sebastien Jodogne <s.jodogne@gmail.com>
date Mon, 09 Mar 2020 15:06:22 +0100
parents 090022f1b5e1
children
line wrap: on
line diff
--- a/Resources/GenerateTransferSyntaxes.py	Sun Mar 08 19:51:57 2020 +0100
+++ b/Resources/GenerateTransferSyntaxes.py	Mon Mar 09 15:06:22 2020 +0100
@@ -35,6 +35,7 @@
 import os
 import re
 import sys
+import pystache
 
 BASE = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
 
@@ -65,43 +66,19 @@
     f.write(a)
 
 
-    
+
 ##
-## Generate the "GetTransferSyntaxUid()" function in
-## "Enumerations.cpp"
+## Generate the implementations
 ##
 
-path = os.path.join(BASE, 'Core', 'Enumerations.cpp')
-with open(path, 'r') as f:
-    a = f.read()
-
-s = '\n\n'.join(map(lambda x: '      case DicomTransferSyntax_%s:\n        return "%s";' % (x['Value'], x['UID']), SYNTAXES))
-a = re.sub('(GetTransferSyntaxUid\(DicomTransferSyntax.*?\)\s*{\s*switch \([^)]*?\)\s*{)[^}]*?(\s*default:)',
-           r'\1\n%s\2' % s, a, re.DOTALL)
-
-with open(path, 'w') as f:
-    f.write(a)
-
-    
-##
-## Generate the "GetDcmtkTransferSyntax()" function in
-## "FromDcmtkBridge.cpp"
-##
+with open(os.path.join(BASE, 'Core', 'Enumerations_TransferSyntaxes.impl.h'), 'w') as b:
+    with open(os.path.join(BASE, 'Resources', 'GenerateTransferSyntaxesEnumerations.mustache'), 'r') as a:
+        b.write(pystache.render(a.read(), {
+            'Syntaxes' : SYNTAXES
+        }))
 
-path = os.path.join(BASE, 'Core', 'DicomParsing', 'FromDcmtkBridge.cpp')
-with open(path, 'r') as f:
-    a = f.read()
-
-def Format(x):
-    t = '      case DicomTransferSyntax_%s:\n        target = %s;\n        return true;' % (x['Value'], x['DCMTK'])
-    if 'SinceDCMTK' in x:
-        return '#if DCMTK_VERSION_NUMBER >= %s\n%s\n#endif' % (x['SinceDCMTK'], t)
-    else:
-        return t
-    
-s = '\n\n'.join(map(Format, filter(lambda x: 'DCMTK' in x, SYNTAXES)))
-a = re.sub('(GetDcmtkTransferSyntax\(E_TransferSyntax.*?\s*DicomTransferSyntax.*?\)\s*{\s*switch \([^)]*?\)\s*{)[^}]*?(\s*default:)',
-           r'\1\n%s\2' % s, a, re.DOTALL)
-
-with open(path, 'w') as f:
-    f.write(a)
+with open(os.path.join(BASE, 'Core', 'DicomParsing', 'FromDcmtkBridge_TransferSyntaxes.impl.h'), 'w') as b:
+    with open(os.path.join(BASE, 'Resources', 'GenerateTransferSyntaxesDcmtk.mustache'), 'r') as a:
+        b.write(pystache.render(a.read(), {
+            'Syntaxes' : SYNTAXES
+        }))