aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMITSUNARI Shigeo <herumi@nifty.com>2017-10-01 13:47:13 +0800
committerMITSUNARI Shigeo <herumi@nifty.com>2017-10-01 13:47:13 +0800
commitf0409370691edfcc8460105b5ba02bab97b0f160 (patch)
treeee2392f0685422fbeb07d19647fe6b444f4662ac
parentcaf9b91ae5925162c9ac44498b67a276d02e749f (diff)
downloaddexon-mcl-f0409370691edfcc8460105b5ba02bab97b0f160.tar.gz
dexon-mcl-f0409370691edfcc8460105b5ba02bab97b0f160.tar.zst
dexon-mcl-f0409370691edfcc8460105b5ba02bab97b0f160.zip
[js] export-functions.py supports -re option
-rw-r--r--ffi/js/export-functions.py27
1 files changed, 13 insertions, 14 deletions
diff --git a/ffi/js/export-functions.py b/ffi/js/export-functions.py
index a099546..ebaea4b 100644
--- a/ffi/js/export-functions.py
+++ b/ffi/js/export-functions.py
@@ -1,9 +1,11 @@
-import sys, re
+import sys, re, argparse
#RE_PROTOTYPE = re.compile(r'MCLBN_DLL_API\s\w\s\w\([^)]*\);')
RE_PROTOTYPE = re.compile(r'\w*\s(\w*)\s(\w*)\(([^)]*)\);')
-RE_SPECIAL_FUNCTION_NAME = re.compile(r'(mclBn_init|setStr|getStr|[sS]erialize|setLittleEndian|setHashOf|hashAndMapTo|DecStr|HexStr|HashTo|blsSign|blsVerify|GetCurveOrder|GetFieldOrder|KeyShare|KeyRecover|blsSignatureRecover|blsInit)')
-def export_functions(modName, fileNames):
+def export_functions(modName, fileNames, reToAddUnderscore):
+ if not reToAddUnderscore:
+ reToAddUnderscore = r'(mclBn_init|setStr|getStr|[sS]erialize|setLittleEndian|setHashOf|hashAndMapTo|DecStr|HexStr|HashTo|blsSign|blsVerify|GetCurveOrder|GetFieldOrder|KeyShare|KeyRecover|blsSignatureRecover|blsInit)'
+ reSpecialFunctionName = re.compile(reToAddUnderscore)
if modName:
print 'function define_exported_' + modName + '(mod) {'
comma = ''
@@ -21,7 +23,7 @@ def export_functions(modName, fileNames):
paramType = '[]'
else:
paramType = '[' + ("'number', " * len(arg.split(','))) + ']'
- if RE_SPECIAL_FUNCTION_NAME.search(name):
+ if reSpecialFunctionName.search(name):
exportName = '_' + name # to wrap function
else:
exportName = name
@@ -34,16 +36,13 @@ def export_functions(modName, fileNames):
print '}'
def main():
- args = len(sys.argv)
- modName = ''
- if args <= 1:
- print 'export_functions [-js <modName>] header+'
- sys.exit(1)
- pos = 1
- if args >= 3 and sys.argv[1] == '-js':
- modName = sys.argv[2]
- pos = 3
- export_functions(modName, sys.argv[pos:])
+ p = argparse.ArgumentParser('export_functions')
+ p.add_argument('header', type=str, nargs='+', help='headers')
+ p.add_argument('-js', type=str, nargs='?', help='module name')
+ p.add_argument('-re', type=str, nargs='?', help='regular expression to add underscore to function name')
+ args = p.parse_args()
+
+ export_functions(args.js, args.header, args.re)
if __name__ == '__main__':
main()