| OLD | NEW | 
|    1 # Accessing C++ Enums In Java |    1 # Accessing C++ Enums In Java | 
|    2  |    2  | 
|    3 [TOC] |    3 [TOC] | 
|    4  |    4  | 
|    5 ## Introduction |    5 ## Introduction | 
|    6  |    6  | 
|    7 Accessing C++ enums in Java is implemented via a Python script which analyzes |    7 Accessing C++ enums in Java is implemented via a Python script which analyzes | 
|    8 the C++ enum and spits out the corresponding Java class. The enum needs to be |    8 the C++ enum and spits out the corresponding Java class. The enum needs to be | 
|    9 annotated in a particular way. By default, the generated class name will be the |    9 annotated in a particular way. By default, the generated class name will be the | 
|   10 same as the name of the enum. If all the names of the enum values are prefixed |   10 same as the name of the enum. If all the names of the enum values are prefixed | 
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   63 4. The generated file `org/chromium/chrome/FooBar.java` would contain: |   63 4. The generated file `org/chromium/chrome/FooBar.java` would contain: | 
|   64  |   64  | 
|   65     ```java |   65     ```java | 
|   66     package org.chromium.chrome; |   66     package org.chromium.chrome; | 
|   67  |   67  | 
|   68     import android.support.annotation.IntDef; |   68     import android.support.annotation.IntDef; | 
|   69  |   69  | 
|   70     import java.lang.annotation.Retention; |   70     import java.lang.annotation.Retention; | 
|   71     import java.lang.annotation.RetentionPolicy; |   71     import java.lang.annotation.RetentionPolicy; | 
|   72  |   72  | 
|   73     public class FooBar { |   73     @IntDef({ | 
|   74       @IntDef({ |   74         FooBar.A, FooBar.B, FooBar.C | 
|   75           A, B, C |   75     }) | 
|   76       }) |   76     @Retention(RetentionPolicy.SOURCE) | 
|   77       @Retention(RetentionPolicy.SOURCE) |   77     public @interface FooBar { | 
|   78       public @interface FooBarEnum {} |   78       int A = 0; | 
|   79       public static final int A = 0; |   79       int B = 1; | 
|   80       public static final int B = 1; |   80       int C = 1; | 
|   81       public static final int C = 1; |  | 
|   82     } |   81     } | 
|   83     ``` |   82     ``` | 
|   84  |   83  | 
|   85 ## Formatting Notes |   84 ## Formatting Notes | 
|   86  |   85  | 
|   87 * Handling long package names: |   86 * Handling long package names: | 
|   88  |   87  | 
|   89     ``` |   88     ``` | 
|   90     // GENERATED_JAVA_ENUM_PACKAGE: ( |   89     // GENERATED_JAVA_ENUM_PACKAGE: ( | 
|   91     //   org.chromium.chrome.this.package.is.too.long.to.fit.on.a.single.line) |   90     //   org.chromium.chrome.this.package.is.too.long.to.fit.on.a.single.line) | 
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  123     enum CommentEnum { |  122     enum CommentEnum { | 
|  124       // This comment will be preserved. |  123       // This comment will be preserved. | 
|  125       ONE, |  124       ONE, | 
|  126       TWO, // This comment will NOT be preserved. |  125       TWO, // This comment will NOT be preserved. | 
|  127       THREE |  126       THREE | 
|  128     } |  127     } | 
|  129     ``` |  128     ``` | 
|  130  |  129  | 
|  131     ```java |  130     ```java | 
|  132     ... |  131     ... | 
|  133     public class CommentEnum { |  132     public @interface CommentEnum { | 
|  134       ... |  133       ... | 
|  135       /** |  134       /** | 
|  136        * This comment will be preserved. |  135        * This comment will be preserved. | 
|  137        */ |  136        */ | 
|  138       public static final int ONE = 0; |  137       int ONE = 0; | 
|  139       public static final int TWO = 1; |  138       int TWO = 1; | 
|  140       public static final int THREE = 2; |  139       int THREE = 2; | 
|  141     } |  140     } | 
|  142     ``` |  141     ``` | 
|  143  |  142  | 
|  144 ## Code |  143 ## Code | 
|  145 * [Generator |  144 * [Generator | 
|  146 code](https://cs.chromium.org/chromium/src/build/android/gyp/java_cpp_enum.py?dr
     =C&sq=package:chromium) |  145 code](https://cs.chromium.org/chromium/src/build/android/gyp/java_cpp_enum.py?dr
     =C&sq=package:chromium) | 
|  147 and |  146 and | 
|  148 [Tests](https://cs.chromium.org/chromium/src/build/android/gyp/java_cpp_enum_tes
     ts.py?dr=C&q=java_cpp_enum_tests&sq=package:chromium&l=1) |  147 [Tests](https://cs.chromium.org/chromium/src/build/android/gyp/java_cpp_enum_tes
     ts.py?dr=C&q=java_cpp_enum_tests&sq=package:chromium&l=1) | 
|  149 * [GN |  148 * [GN | 
|  150 template](https://cs.chromium.org/chromium/src/build/config/android/rules.gni?q=
     java_cpp_enum.py&sq=package:chromium&dr=C&l=458) |  149 template](https://cs.chromium.org/chromium/src/build/config/android/rules.gni?q=
     java_cpp_enum.py&sq=package:chromium&dr=C&l=458) | 
| OLD | NEW |