#[derive(Debug)]
#[repr(usize)]
#[allow(dead_code)] // TODO: remove this
pub enum Opcode {
    /*  0 */ Initialize,
    /*  1 */ Terminate,
    /*  2 */ ChangePreset,
    /*  3 */ GetCurrentPresetNum,
    /*  4 */ SetCurrentPresetName,
    /*  5 */ GetCurrentPresetName,
    /*  6 */ GetParameterLabel,
    /*  7 */ GetParameterDisplay,
    /*  8 */ GetParameterName,
    /*  9 */ _GetVu,
    /* 10 */ SetSampleRate,
    /* 11 */ SetBlockSize,
    /* 12 */ StateChanged,
    /* 13 */ EditorGetRect, // Get rect, son.
    /* 14 */ EditorOpen,
    /* 15 */ EditorClose,
    /* 16 */ _EditorDraw,
    /* 17 */ _EditorMouse,
    /* 18 */ _EditorKey,
    /* 19 */ EditorIdle,
    /* 20 */ _EditorTop,
    /* 21 */ _EditorSleep,
    /* 22 */ _EditorIdentify,
    /* 23 */ GetData,
    /* 24 */ SetData,
    /* 25 */ ProcessEvents,
    /* 26 */ CanBeAutomated,
    /* 27 */ StringToParameter,
    /* 28 */ _GetNumCategories,
    /* 29 */ GetPresetName,
    /* 30 */ _CopyPreset,
    /* 31 */ _ConnectIn,
    /* 32 */ _ConnectOut,
    /* 33 */ GetInputInfo,
    /* 34 */ GetOutputInfo,
    /* 35 */ GetCategory,
    /* 36 */ _GetCurrentPosition,
    /* 37 */ _GetDestinationBuffer,
    /* 38 */ OfflineNotify,
    /* 39 */ OfflinePrepare,
    /* 40 */ OfflineRun,
    /* 41 */ ProcessVarIo,
    /* 42 */ SetSpeakerArrangement,
    /* 43 */ _SetBlocksizeAndSampleRate,
    /* 44 */ SoftBypass,
    /* 45 */ GetEffectName,
    /* 46 */ _GetErrorText,
    /* 47 */ GetVendorName,
    /* 48 */ GetProductName,
    /* 49 */ GetVendorVersion,
    /* 50 */ VendorSpecific,
    /* 51 */ CanDo,
    /* 52 */ GetTailSize,
    /* 53 */ _Idle,
    /* 54 */ _GetIcon,
    /* 55 */ _SetVewPosition,
    /* 56 */ GetParamInfo,
    /* 57 */ _KeysRequired,
    /* 58 */ GetApiVersion,
    /* 59 */ EditorKeyDown,
    /* 60 */ EditorKeyUp,
    /* 61 */ EditorSetKnobMode,
    /* 62 */ GetMidiProgramName,
    /* 63 */ GetCurrentMidiProgram,
    /* 64 */ GetMidiProgramCategory,
    /* 65 */ HasMidiProgramsChanged,
    /* 66 */ GetMidiKeyName,
    /* 67 */ BeginSetPreset,
    /* 68 */ EndSetPreset,
    /* 69 */ GetSpeakerArrangement,
    /* 70 */ ShellGetNextPlugin,
    /* 71 */ StartProcess,
    /* 72 */ StopProcess,
    /* 73 */ SetTotalSampleToProcess,
    /* 74 */ SetPanLaw,
    /* 75 */ BeginLoadBank,
    /* 76 */ BeginLoadPreset,
    /* 77 */ SetPrecision,
    /* 78 */ GetNumMidiInputs,
    /* 79 */ GetNumMidiOutputs,
}
impl_clike!(Opcode);