From 073767edcc03df32851db650e3e417ee1e3c05d0 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Tue, 5 Jan 2016 11:38:30 +0100 Subject: [PATCH] C support --- C/.empty | 0 src/groups.py | 10 ++++++++++ src/groups_templates.py | 31 ++++++++++++++++++++++++++++++- 3 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 C/.empty diff --git a/C/.empty b/C/.empty new file mode 100644 index 0000000..e69de29 diff --git a/src/groups.py b/src/groups.py index 83dd175..7d632b8 100644 --- a/src/groups.py +++ b/src/groups.py @@ -40,6 +40,9 @@ print >>file_py, """ version = property(fset=None,fget=get_version) """%(v) +file_c = open("../C/ezfio.h","w") +print >>file_c, c_header + import sys for group in groups.keys(): @@ -77,6 +80,7 @@ for group in groups.keys(): 'group': group, 'dims': strdims} print attributes%d + print >>file_c, attributes_c%d print >>file_py, attributes_py%d else: d = { 'type': type, @@ -90,12 +94,14 @@ for group in groups.keys(): buffer = re.sub(r"at\((.*),(.*)\)",r'\1(\2)',buffer) print buffer print >>file_py, calculated_py%d + print >>file_c, calculated_c%d elif type == "buffered": d = { 'group': group, 'var': var, 'dims_py': dims_py, 'dims': dims } print buffered%d + print >>file_c, buffered_c%d print >>file_py, buffered_py%d else: dims_loop = '' @@ -142,5 +148,9 @@ for group in groups.keys(): 'declar_loop' : declar_loop} print attributes_arr%d print >>file_py, attributes_arr_py%d + print >>file_c, attributes_arr_c%d +print >>file_c, c_footer file_py.close() +file_c.close() + diff --git a/src/groups_templates.py b/src/groups_templates.py index 4e14c24..489e3e9 100644 --- a/src/groups_templates.py +++ b/src/groups_templates.py @@ -239,12 +239,41 @@ end #--------- attributes_c = """ -void ezfio_set_%(group)s_%(var)s(%(type)s %(var)s) +void ezfio_set_%(group)s_%(var)s(%(ctype)s %(var)s) { ezfio_set_%(group)s_%(var)s_(&%(var)s); } + +void ezfio_get_%(group)s_%(var)s(%(ctype)s *%(var)s) +{ + ezfio_get_%(group)s_%(var)s_(%(var)s); +} + +bool ezfio_has_%(group)s_%(var)s() +{ + ezfio_has_%(group)s_%(var)s_(); +} """ +attributes_arr_c = """ +void ezfio_set_%(group)s_%(var)s(%(ctype)s %(var)s) +{ + ezfio_set_%(group)s_%(var)s_(&%(var)s, 1); +} + +void ezfio_get_%(group)s_%(var)s(%(ctype)s *%(var)s) +{ + ezfio_get_%(group)s_%(var)s_(%(var)s, 1); +} + +bool ezfio_has_%(group)s_%(var)s() +{ + ezfio_has_%(group)s_%(var)s_(); +} +""" + +calculated_c = attributes_c + c_header = """ #ifndef EZFIO_H #define EZFIO_H