In jvmti.h, it has:
enum {
JVMTI_THREAD_STATE_ALIVE = 0x0001,
JVMTI_THREAD_STATE_TERMINATED = 0x0002,
JVMTI_THREAD_STATE_RUNNABLE = 0x0004,
JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER = 0x0400,
JVMTI_THREAD_STATE_WAITING = 0x0080,
JVMTI_THREAD_STATE_WAITING_INDEFINITELY = 0x0010,
JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT = 0x0020,
JVMTI_THREAD_STATE_SLEEPING = 0x0040,
JVMTI_THREAD_STATE_IN_OBJECT_WAIT = 0x0100,
JVMTI_THREAD_STATE_PARKED = 0x0200,
JVMTI_THREAD_STATE_SUSPENDED = 0x100000,
JVMTI_THREAD_STATE_INTERRUPTED = 0x200000,
JVMTI_THREAD_STATE_IN_NATIVE = 0x400000,
JVMTI_THREAD_STATE_VENDOR_1 = 0x10000000,
JVMTI_THREAD_STATE_VENDOR_2 = 0x20000000,
JVMTI_THREAD_STATE_VENDOR_3 = 0x40000000
};
And it also has:
enum {
JVMTI_JAVA_LANG_THREAD_STATE_MASK = JVMTI_THREAD_STATE_TERMINATED | JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_RUNNABLE | JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER | JVMTI_THREAD_STATE_WAITING | JVMTI_THREAD_STATE_WAITING_INDEFINITELY | JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT,
JVMTI_JAVA_LANG_THREAD_STATE_NEW = 0,
JVMTI_JAVA_LANG_THREAD_STATE_TERMINATED = JVMTI_THREAD_STATE_TERMINATED,
JVMTI_JAVA_LANG_THREAD_STATE_RUNNABLE = JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_RUNNABLE,
JVMTI_JAVA_LANG_THREAD_STATE_BLOCKED = JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER,
JVMTI_JAVA_LANG_THREAD_STATE_WAITING = JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_WAITING | JVMTI_THREAD_STATE_WAITING_INDEFINITELY,
JVMTI_JAVA_LANG_THREAD_STATE_TIMED_WAITING = JVMTI_THREAD_STATE_ALIVE | JVMTI_THREAD_STATE_WAITING | JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT
};
Because the next enums use the first enums, the generator generated:
public const int JVMTI_JAVA_LANG_THREAD_STATE_MASK = __AnonymousEnum_jvmti_L87_C1.JVMTI_THREAD_STATE_TERMINATED | __AnonymousEnum_jvmti_L87_C1.JVMTI_THREAD_STATE_ALIVE | __AnonymousEnum_jvmti_L87_C1.JVMTI_THREAD_STATE_RUNNABLE | __AnonymousEnum_jvmti_L87_C1.JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER | __AnonymousEnum_jvmti_L87_C1.JVMTI_THREAD_STATE_WAITING | __AnonymousEnum_jvmti_L87_C1.JVMTI_THREAD_STATE_WAITING_INDEFINITELY | __AnonymousEnum_jvmti_L87_C1.JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT;
public const int JVMTI_JAVA_LANG_THREAD_STATE_NEW = 0;
public const int JVMTI_JAVA_LANG_THREAD_STATE_TERMINATED = __AnonymousEnum_jvmti_L87_C1.JVMTI_THREAD_STATE_TERMINATED;
public const int JVMTI_JAVA_LANG_THREAD_STATE_RUNNABLE = __AnonymousEnum_jvmti_L87_C1.JVMTI_THREAD_STATE_ALIVE | __AnonymousEnum_jvmti_L87_C1.JVMTI_THREAD_STATE_RUNNABLE;
public const int JVMTI_JAVA_LANG_THREAD_STATE_BLOCKED = __AnonymousEnum_jvmti_L87_C1.JVMTI_THREAD_STATE_ALIVE | __AnonymousEnum_jvmti_L87_C1.JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER;
public const int JVMTI_JAVA_LANG_THREAD_STATE_WAITING = __AnonymousEnum_jvmti_L87_C1.JVMTI_THREAD_STATE_ALIVE | __AnonymousEnum_jvmti_L87_C1.JVMTI_THREAD_STATE_WAITING | __AnonymousEnum_jvmti_L87_C1.JVMTI_THREAD_STATE_WAITING_INDEFINITELY;
public const int JVMTI_JAVA_LANG_THREAD_STATE_TIMED_WAITING = __AnonymousEnum_jvmti_L87_C1.JVMTI_THREAD_STATE_ALIVE | __AnonymousEnum_jvmti_L87_C1.JVMTI_THREAD_STATE_WAITING | __AnonymousEnum_jvmti_L87_C1.JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT;
But not generated the __AnonymousEnum_jvmti_L87_C1 type. Which cause:
error CS0103: The name '__AnonymousEnum_jvmti_L87_C1' does not exist in the current context
I try to use enums.json to let this consts into a enum, but I found that enums.json does not work for anonymous enums.
{
"$schema": "https://github.com/microsoft/win32metadata/raw/main/generation/WinSDK/enums.schema.json",
"items": [
{
"namespace": "Java.Runtime.Tool",
"name": "JVMTI_JAVA_LANG_THREAD_STATE",
"autoPopulate": {
"filter": "JVMTI_JAVA_LANG_THREAD_STATE_",
"header": "jvmti.h"
}
}
]
}
Is that any way to generate anonymous enums into a enum? Besides, in classfile_constants.h there are all of anonymous enums, which make Api class full of consts.

In
jvmti.h, it has:And it also has:
Because the next enums use the first enums, the generator generated:
But not generated the
__AnonymousEnum_jvmti_L87_C1type. Which cause:I try to use
enums.jsonto let this consts into a enum, but I found thatenums.jsondoes not work for anonymous enums.{ "$schema": "https://github.com/microsoft/win32metadata/raw/main/generation/WinSDK/enums.schema.json", "items": [ { "namespace": "Java.Runtime.Tool", "name": "JVMTI_JAVA_LANG_THREAD_STATE", "autoPopulate": { "filter": "JVMTI_JAVA_LANG_THREAD_STATE_", "header": "jvmti.h" } } ] }Is that any way to generate anonymous enums into a enum? Besides, in
classfile_constants.hthere are all of anonymous enums, which makeApiclass full of consts.