Skip to content

Commit 1af4b04

Browse files
author
Kilik Kuo
committed
Add argument parser in main.py and fix severl type mapping error
1 parent e449ffd commit 1af4b04

File tree

4 files changed

+32
-23
lines changed

4 files changed

+32
-23
lines changed

dsFileBuilder.py

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
from pprint import pprint
44
from utilityFunc import splitNameToWords, \
55
getStructFileName, \
6-
DS_TYPE_TO_NUMPY_TYPE
6+
DS_TYPE_TO_NUMPY_TYPE, \
7+
KERNEL_TYPE_MAP
78

89
class DSFileBuilder:
910
def __init__(self, strName, lstTypes, strFolder='out'):
@@ -21,17 +22,6 @@ def __init__(self, strName, lstTypes, strFolder='out'):
2122
def getGeneratedNumpyDS(self):
2223
return self.dicNumpyDS
2324

24-
def __generateNumpyDS(self, dsName, lstData):
25-
lstNumpyData = []
26-
for dicVar in lstData:
27-
varName = dicVar.get('name', 'UnknownVar')
28-
varType = dicVar.get('type', 'int')
29-
# unicode string is not acceptable in dtype
30-
tupData = (str(varName), DS_TYPE_TO_NUMPY_TYPE[varType])
31-
lstNumpyData.append(tupData)
32-
33-
self.dicNumpyDS[str(dsName)] = numpy.dtype(lstNumpyData)
34-
3525
def __getDefineString(self, strName):
3626
lstSplitWords = splitNameToWords(strName)
3727
ret = '__'
@@ -53,21 +43,26 @@ def buildDS(self):
5343
lstBody = ds.get('fields', [])
5444
if len(lstBody) == 0: continue
5545

46+
lstNumpyData = []
5647
fDS.write('#ifndef %s'%(self.__getDefineString(dsName)) + sep)
5748
fDS.write('#define %s'%(self.__getDefineString(dsName)) + sep)
5849
fDS.write(sep)
5950
fDS.write(strTypeDefHead)
6051
for dicVar in lstBody:
6152
varName = dicVar.get('name', 'UnknownVar')
62-
varType = dicVar.get('type', 'int')
63-
strLineInput = tabSpace + '%s'%(varType) + ' ' + \
53+
varKernelType = KERNEL_TYPE_MAP[dicVar.get('type', 'int')]
54+
strLineInput = tabSpace + '%s'%(varKernelType) + ' ' + \
6455
'%s'%(varName) + ';' + sep
6556
fDS.write(strLineInput)
57+
# unicode string is not acceptable in dtype
58+
tupData = (str(varName), DS_TYPE_TO_NUMPY_TYPE[dicVar.get('type', 'int')])
59+
lstNumpyData.append(tupData)
60+
6661
strTypeDefTail = '} %s;'%(dsName) + sep
6762
fDS.write(strTypeDefTail)
6863
fDS.write(sep)
6964

70-
self.__generateNumpyDS(dsName, lstBody)
65+
self.dicNumpyDS[str(dsName)] = numpy.dtype(lstNumpyData)
7166

7267
fDS.write("#endif" + sep)
73-
pass
68+
pass

main.py

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,40 @@
11
import os
22
import json
33
import sys
4-
from pprint import pprint
4+
import argparse
55

66
def loadJSON(fInput):
77
with open(fInput) as f:
88
return json.load(f)
99
return None
1010

1111
if __name__ == '__main__':
12-
filePath = os.path.join(os.path.dirname(__file__), 'data/example.json')
12+
parser = argparse.ArgumentParser(description="Enter your .json definition file & output folder path,\
13+
default data/example.json will be executed either input or output is not set")
14+
parser.add_argument('-i', help="Relative path to your definition .json file")
15+
parser.add_argument('-o', help="Relative path to your output folder")
16+
args = parser.parse_args()
17+
18+
filePath = None
19+
strOutFolder = None
20+
if args.i == None or args.o == None:
21+
filePath = os.path.join(os.path.dirname(__file__), 'data/example.json')
22+
strOutFolder = os.path.join(os.path.dirname(__file__), 'out')
23+
else:
24+
filePath = os.path.join(os.path.dirname(__file__), args.i)
25+
strOutFolder = os.path.join(os.path.dirname(__file__), args.o)
26+
27+
print "Input file here : %s"%(os.path.abspath(filePath))
28+
print "Output files to : %s"%(os.path.abspath(strOutFolder))
29+
1330
data = loadJSON(filePath)
31+
1432
# check if the data is loaded correctly
1533
if data is None:
1634
sys.exit('wrong json file');
17-
1835
name = data.get('name')
1936
lstTypes = data.get('types')
2037
lstFuncs = data.get('functions')
21-
strOutFolder = os.path.join(os.path.dirname(__file__), 'out')
22-
print "Output files to : %s"%(os.path.abspath(strOutFolder))
2338

2439
from dsFileBuilder import DSFileBuilder
2540
dsb = DSFileBuilder(name, lstTypes, strOutFolder)

oclPyObjGenerator.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import os
2-
from pprint import pprint
32
from utilityFunc import splitNameToWords, \
43
getStructFileName, \
54
getPyFileName, \

utilityFunc.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
'int': 'int',\
1010
'uint': 'unsigned int',\
1111
'float': 'float',\
12-
'ufloat': 'unsigned float',\
12+
'long': 'long',\
1313
'string': 'char*'\
1414
}
1515

0 commit comments

Comments
 (0)