jvmti_wrapper 0.1.3

Rust wrapper for jvmti.h
Documentation
use jvmti_sys::jvmtiError;
use thiserror::Error;

pub type JvmtiResult<T> = Result<T, JvmtiError>;

#[derive(Debug, Error)]
pub enum JvmtiError {
    #[error("Invalid Thread")]
    JvmtiErrorInvalidThread = 10,
    #[error("Invalid Thread Group")]
    JvmtiErrorInvalidThreadGroup = 11,
    #[error("Invalid Priority")]
    JvmtiErrorInvalidPriority = 12,
    #[error("Thread Not Suspended")]
    JvmtiErrorThreadNotSuspended = 13,
    #[error("Thread Suspended")]
    JvmtiErrorThreadSuspended = 14,
    #[error("Thread Not Alive")]
    JvmtiErrorThreadNotAlive = 15,
    #[error("Invalid Object")]
    JvmtiErrorInvalidObject = 20,
    #[error("Invalid Class")]
    JvmtiErrorInvalidClass = 21,
    #[error("Class Not Prepared")]
    JvmtiErrorClassNotPrepared = 22,
    #[error("Invalid Methodid")]
    JvmtiErrorInvalidMethodid = 23,
    #[error("Invalid Location")]
    JvmtiErrorInvalidLocation = 24,
    #[error("Invalid Fieldid")]
    JvmtiErrorInvalidFieldid = 25,
    #[error("No More Frames")]
    JvmtiErrorNoMoreFrames = 31,
    #[error("Opaque Frame")]
    JvmtiErrorOpaqueFrame = 32,
    #[error("Type Mismatch")]
    JvmtiErrorTypeMismatch = 34,
    #[error("Invalid Slot")]
    JvmtiErrorInvalidSlot = 35,
    #[error("Duplicate")]
    JvmtiErrorDuplicate = 40,
    #[error("Not Found")]
    JvmtiErrorNotFound = 41,
    #[error("Invalid Monitor")]
    JvmtiErrorInvalidMonitor = 50,
    #[error("Not Monitor Owner")]
    JvmtiErrorNotMonitorOwner = 51,
    #[error("Interrupt")]
    JvmtiErrorInterrupt = 52,
    #[error("Invalid Class Format")]
    JvmtiErrorInvalidClassFormat = 60,
    #[error("Circular Class Definition")]
    JvmtiErrorCircularClassDefinition = 61,
    #[error("Fails Verification")]
    JvmtiErrorFailsVerification = 62,
    #[error("Unsupported Redefinition Method Added")]
    JvmtiErrorUnsupportedRedefinitionMethodAdded = 63,
    #[error("Unsupported Redefinition Schema Changed")]
    JvmtiErrorUnsupportedRedefinitionSchemaChanged = 64,
    #[error("Invalid Typestate")]
    JvmtiErrorInvalidTypestate = 65,
    #[error("Unsupported Redefinition Hierarchy Changed")]
    JvmtiErrorUnsupportedRedefinitionHierarchyChanged = 66,
    #[error("Unsupported Redefinition Method Deleted")]
    JvmtiErrorUnsupportedRedefinitionMethodDeleted = 67,
    #[error("Unsupported Version")]
    JvmtiErrorUnsupportedVersion = 68,
    #[error("Names Dont Match")]
    JvmtiErrorNamesDontMatch = 69,
    #[error("Unsupported Redefinition Class Modifiers Changed")]
    JvmtiErrorUnsupportedRedefinitionClassModifiersChanged = 70,
    #[error("Unsupported Redefinition Method Modifiers Changed")]
    JvmtiErrorUnsupportedRedefinitionMethodModifiersChanged = 71,
    #[error("Unmodifiable Class")]
    JvmtiErrorUnmodifiableClass = 79,
    #[error("Not Available")]
    JvmtiErrorNotAvailable = 98,
    #[error("Must Possess Capability")]
    JvmtiErrorMustPossessCapability = 99,
    #[error("Null Pointer")]
    JvmtiErrorNullPointer = 100,
    #[error("Absent Information")]
    JvmtiErrorAbsentInformation = 101,
    #[error("Invalid Event Type")]
    JvmtiErrorInvalidEventType = 102,
    #[error("Illegal Argument")]
    JvmtiErrorIllegalArgument = 103,
    #[error("Native Method")]
    JvmtiErrorNativeMethod = 104,
    #[error("Class Loader Unsupported")]
    JvmtiErrorClassLoaderUnsupported = 106,
    #[error("Out Of Memory")]
    JvmtiErrorOutOfMemory = 110,
    #[error("Access Denied")]
    JvmtiErrorAccessDenied = 111,
    #[error("Wrong Phase")]
    JvmtiErrorWrongPhase = 112,
    #[error("Internal")]
    JvmtiErrorInternal = 113,
    #[error("Unattached Thread")]
    JvmtiErrorUnattachedThread = 115,
    #[error("Invalid Environment")]
    JvmtiErrorInvalidEnvironment = 116,
}

impl From<&jvmtiError> for JvmtiError {
    fn from(error: &jvmtiError) -> Self {
        match error {
            jvmtiError::JVMTI_ERROR_NONE => { panic!("This should not happen!") }
            jvmtiError::JVMTI_ERROR_INVALID_THREAD => { JvmtiError::JvmtiErrorInvalidThread }
            jvmtiError::JVMTI_ERROR_INVALID_THREAD_GROUP => { JvmtiError::JvmtiErrorInvalidThreadGroup }
            jvmtiError::JVMTI_ERROR_INVALID_PRIORITY => { JvmtiError::JvmtiErrorInvalidPriority }
            jvmtiError::JVMTI_ERROR_THREAD_NOT_SUSPENDED => { JvmtiError::JvmtiErrorThreadNotSuspended }
            jvmtiError::JVMTI_ERROR_THREAD_SUSPENDED => { JvmtiError::JvmtiErrorThreadSuspended }
            jvmtiError::JVMTI_ERROR_THREAD_NOT_ALIVE => { JvmtiError::JvmtiErrorThreadNotAlive }
            jvmtiError::JVMTI_ERROR_INVALID_OBJECT => { JvmtiError::JvmtiErrorInvalidObject }
            jvmtiError::JVMTI_ERROR_INVALID_CLASS => { JvmtiError::JvmtiErrorInvalidClass }
            jvmtiError::JVMTI_ERROR_CLASS_NOT_PREPARED => { JvmtiError::JvmtiErrorClassNotPrepared }
            jvmtiError::JVMTI_ERROR_INVALID_METHODID => { JvmtiError::JvmtiErrorInvalidMethodid }
            jvmtiError::JVMTI_ERROR_INVALID_LOCATION => { JvmtiError::JvmtiErrorInvalidLocation }
            jvmtiError::JVMTI_ERROR_INVALID_FIELDID => { JvmtiError::JvmtiErrorInvalidFieldid }
            jvmtiError::JVMTI_ERROR_NO_MORE_FRAMES => { JvmtiError::JvmtiErrorNoMoreFrames }
            jvmtiError::JVMTI_ERROR_OPAQUE_FRAME => { JvmtiError::JvmtiErrorOpaqueFrame }
            jvmtiError::JVMTI_ERROR_TYPE_MISMATCH => { JvmtiError::JvmtiErrorTypeMismatch }
            jvmtiError::JVMTI_ERROR_INVALID_SLOT => { JvmtiError::JvmtiErrorInvalidSlot }
            jvmtiError::JVMTI_ERROR_DUPLICATE => { JvmtiError::JvmtiErrorDuplicate }
            jvmtiError::JVMTI_ERROR_NOT_FOUND => { JvmtiError::JvmtiErrorNotFound }
            jvmtiError::JVMTI_ERROR_INVALID_MONITOR => { JvmtiError::JvmtiErrorInvalidMonitor }
            jvmtiError::JVMTI_ERROR_NOT_MONITOR_OWNER => { JvmtiError::JvmtiErrorNotMonitorOwner }
            jvmtiError::JVMTI_ERROR_INTERRUPT => { JvmtiError::JvmtiErrorInterrupt }
            jvmtiError::JVMTI_ERROR_INVALID_CLASS_FORMAT => { JvmtiError::JvmtiErrorInvalidClassFormat }
            jvmtiError::JVMTI_ERROR_CIRCULAR_CLASS_DEFINITION => { JvmtiError::JvmtiErrorCircularClassDefinition }
            jvmtiError::JVMTI_ERROR_FAILS_VERIFICATION => { JvmtiError::JvmtiErrorFailsVerification }
            jvmtiError::JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_ADDED => { JvmtiError::JvmtiErrorUnsupportedRedefinitionMethodAdded }
            jvmtiError::JVMTI_ERROR_UNSUPPORTED_REDEFINITION_SCHEMA_CHANGED => { JvmtiError::JvmtiErrorUnsupportedRedefinitionSchemaChanged }
            jvmtiError::JVMTI_ERROR_INVALID_TYPESTATE => { JvmtiError::JvmtiErrorInvalidTypestate }
            jvmtiError::JVMTI_ERROR_UNSUPPORTED_REDEFINITION_HIERARCHY_CHANGED => { JvmtiError::JvmtiErrorUnsupportedRedefinitionHierarchyChanged }
            jvmtiError::JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_DELETED => { JvmtiError::JvmtiErrorUnsupportedRedefinitionMethodDeleted }
            jvmtiError::JVMTI_ERROR_UNSUPPORTED_VERSION => { JvmtiError::JvmtiErrorUnsupportedVersion }
            jvmtiError::JVMTI_ERROR_NAMES_DONT_MATCH => { JvmtiError::JvmtiErrorNamesDontMatch }
            jvmtiError::JVMTI_ERROR_UNSUPPORTED_REDEFINITION_CLASS_MODIFIERS_CHANGED => { JvmtiError::JvmtiErrorUnsupportedRedefinitionClassModifiersChanged }
            jvmtiError::JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_MODIFIERS_CHANGED => { JvmtiError::JvmtiErrorUnsupportedRedefinitionMethodModifiersChanged }
            jvmtiError::JVMTI_ERROR_UNMODIFIABLE_CLASS => { JvmtiError::JvmtiErrorUnmodifiableClass }
            jvmtiError::JVMTI_ERROR_NOT_AVAILABLE => { JvmtiError::JvmtiErrorNotAvailable }
            jvmtiError::JVMTI_ERROR_MUST_POSSESS_CAPABILITY => { JvmtiError::JvmtiErrorMustPossessCapability }
            jvmtiError::JVMTI_ERROR_NULL_POINTER => { JvmtiError::JvmtiErrorNullPointer }
            jvmtiError::JVMTI_ERROR_ABSENT_INFORMATION => { JvmtiError::JvmtiErrorAbsentInformation }
            jvmtiError::JVMTI_ERROR_INVALID_EVENT_TYPE => { JvmtiError::JvmtiErrorInvalidEventType }
            jvmtiError::JVMTI_ERROR_ILLEGAL_ARGUMENT => { JvmtiError::JvmtiErrorIllegalArgument }
            jvmtiError::JVMTI_ERROR_NATIVE_METHOD => { JvmtiError::JvmtiErrorNativeMethod }
            jvmtiError::JVMTI_ERROR_CLASS_LOADER_UNSUPPORTED => { JvmtiError::JvmtiErrorClassLoaderUnsupported }
            jvmtiError::JVMTI_ERROR_OUT_OF_MEMORY => { JvmtiError::JvmtiErrorOutOfMemory }
            jvmtiError::JVMTI_ERROR_ACCESS_DENIED => { JvmtiError::JvmtiErrorAccessDenied }
            jvmtiError::JVMTI_ERROR_WRONG_PHASE => { JvmtiError::JvmtiErrorWrongPhase }
            jvmtiError::JVMTI_ERROR_INTERNAL => { JvmtiError::JvmtiErrorInternal }
            jvmtiError::JVMTI_ERROR_UNATTACHED_THREAD => { JvmtiError::JvmtiErrorUnattachedThread }
            jvmtiError::JVMTI_ERROR_INVALID_ENVIRONMENT => { JvmtiError::JvmtiErrorInvalidEnvironment }
        }
    }
}