]> sigrok.org Git - libsigrok.git/blobdiff - bindings/cxx/enums.py
C++: Declare namespace in enums.hpp so it can be used independently.
[libsigrok.git] / bindings / cxx / enums.py
index 0d2887bc1fa5d257796cbeb0584ede0d7bf40dad..3ce73bc43f4eaab3fcc9706b70306870e89544ed 100644 (file)
@@ -75,6 +75,8 @@ 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 = """
 /** {brief} */
@@ -134,11 +136,19 @@ 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<const enum %s, const %s * const> EnumValue<%s, enum %s>::_values = {' % (
@@ -168,3 +178,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)