-
Notifications
You must be signed in to change notification settings - Fork 144
Open
Description
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 contextI 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.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels
