MME2 changes - Propped commits from openmme/paging branch. Added scripts
for code gen
Change-Id: Ie55032217232214ac8544ca76ea34335205329e4
diff --git a/scripts/SMCodeGen/codeGen.py b/scripts/SMCodeGen/codeGen.py
new file mode 100644
index 0000000..15259be
--- /dev/null
+++ b/scripts/SMCodeGen/codeGen.py
@@ -0,0 +1,79 @@
+#
+# Copyright (c) 2019, Infosys Ltd.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+import json, sys, os
+from os.path import join
+import utils
+
+with open('dataModels/stateMachineAppModel.json') as jsonFile:
+ stateMachineAppModelJSON = json.load(jsonFile)
+with open('dataModels/ctxtManagerAppModel.json') as jsonFile:
+ contextMgrAppModelJSON = json.load(jsonFile)
+
+def processTemplate(templateIp):
+ from template import Template
+
+ utils.outputFileName = ''
+ if utils.outputFileKeyword != '':
+ utils.outputFileName = utils.getFileName(templateIp[utils.outputFileKeyword])
+ if utils.outputFile != '':
+ utils.outputFileName = utils.outputFileName + utils.outputFile
+
+ utils.outputFileName = utils.outputFileName + utils.outputFileExt
+
+ tt = Template({'EVAL_PYTHON':1, 'AUTO_RESET':1})
+ op = tt.process(utils.ttFileName, {'TemplateInputVar' : templateIp})
+ utils.WriteFile(utils.outputDir, utils.outputFileName, op, utils.mode)
+
+def getTemplateIn(appModelItems, depth):
+ depthChanged = False
+
+ if (depth == 0):
+ print(appModelItems)
+ processTemplate(appModelItems)
+ return
+
+ if depthChanged == False:
+ depth = depth - 1
+ depthChanged = True
+
+ for item in appModelItems:
+ getTemplateIn(item, depth)
+
+def genCppCode(genModel, appModelJSON):
+ for item in genModel:
+ keyWord = item["appModelKeyword"]
+ depth = item["appModelValueDepth"]
+ utils.ttFileName = item["templateFile"]
+ utils.outputDir = item["outputPath"]
+ utils.outputFile = item["outputFile"]
+ utils.outputFileKeyword = item["outputFileKey"]
+ utils.outputFileExt = item["outputFileExt"]
+ utils.mode = item["mode"]
+
+ if not os.path.exists(utils.outputDir):
+ os.makedirs(utils.outputDir)
+
+ appModelItems = utils.get_key_values(appModelJSON, keyWord)
+ getTemplateIn(appModelItems, depth)
+
+with open('dataModels/generationItem.json') as JSONFile:
+ GenItemJSON = json.load(JSONFile)
+ if 'Model1' in GenItemJSON:
+ genCppCode(GenItemJSON['Model1'], stateMachineAppModelJSON)
+ if "Model2" in GenItemJSON:
+ genCppCode(GenItemJSON['Model2'], contextMgrAppModelJSON)
+