X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=bindings%2Fcxx%2Fenums.py;h=3711334e74f740135a94f58ef70e78e7a8570268;hb=e333a40c1c5a27806b8a6dd2611c54b23d11366b;hp=4e6be7ba2ae6d1a0d3f87a8a26c2150a6ca047ae;hpb=e5c22906e804f540647ab182d9538499964eb633;p=libsigrok.git diff --git a/bindings/cxx/enums.py b/bindings/cxx/enums.py index 4e6be7ba..3711334e 100644 --- a/bindings/cxx/enums.py +++ b/bindings/cxx/enums.py @@ -40,6 +40,7 @@ mapping = dict([ ('sr_unit', ('Unit', 'Unit of measurement')), ('sr_mqflag', ('QuantityFlag', 'Flag applied to measured quantity')), ('sr_configkey', ('ConfigKey', 'Configuration key')), + ('sr_configcap', ('Capability', 'Configuration capability')), ('sr_datatype', ('DataType', 'Configuration data type')), ('sr_channeltype', ('ChannelType', 'Channel type')), ('sr_trigger_matches', ('TriggerMatchType', 'Trigger match type')), @@ -75,8 +76,12 @@ swig = open(os.path.join(outdirname, 'swig/enums.i'), 'w') for file in (header, code): print("/* Generated file - edit enums.py instead! */", file=file) +print("namespace sigrok {", file=header) + # Template for beginning of class declaration and public members. header_public_template = """ +template<> const SR_API std::map EnumValue<{classname}, enum {enumname}>::_values; + /** {brief} */ class SR_API {classname} : public EnumValue<{classname}, enum {enumname}> {{ @@ -134,19 +139,11 @@ for enum, (classname, classbrief) in classes.items(): classname, classname, trimmed_name, classname, name, trimmed_name), file=code) - print('%%typemap(javacode) sigrok::%s %%{' % classname, file=swig) - # Define public pointers for each enum value for trimmed_name in trimmed_names: print('const %s * const %s::%s = &%s::_%s;' % ( classname, classname, trimmed_name, classname, trimmed_name), file=code) - print('public static final %s %s = new %s(classesJNI.%s_%s_get(), false);' % ( - classname, trimmed_name, classname, classname, trimmed_name), - file=swig) - - print ('%}', file=swig) - # Define map of enum values to constants print('template<> const SR_API std::map EnumValue<%s, enum %s>::_values = {' % ( @@ -176,3 +173,5 @@ for enum, (classname, classbrief) in classes.items(): filename = os.path.join(dirname, "%s_methods.i" % classname) if os.path.exists(filename): print(str.join('', open(filename).readlines()), file=swig) + +print("}", file=header)