mirror of
https://git.sr.ht/~eliasnaur/gio
synced 2026-07-06 18:05:35 +00:00
internal/ops: avoid bounds check in OpType.Size()
Signed-off-by: Egon Elbre <egonelbre@gmail.com>
This commit is contained in:
+43
-41
@@ -380,48 +380,50 @@ func DecodeLoad(data []byte) int {
|
|||||||
return int(bo.Uint32(data[1:]))
|
return int(bo.Uint32(data[1:]))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var opSize = [0x100]byte{
|
||||||
|
TypeMacro: TypeMacroLen,
|
||||||
|
TypeCall: TypeCallLen,
|
||||||
|
TypeDefer: TypeDeferLen,
|
||||||
|
TypePushTransform: TypePushTransformLen,
|
||||||
|
TypeTransform: TypeTransformLen,
|
||||||
|
TypePopTransform: TypePopTransformLen,
|
||||||
|
TypeInvalidate: TypeRedrawLen,
|
||||||
|
TypeImage: TypeImageLen,
|
||||||
|
TypePaint: TypePaintLen,
|
||||||
|
TypeColor: TypeColorLen,
|
||||||
|
TypeLinearGradient: TypeLinearGradientLen,
|
||||||
|
TypePass: TypePassLen,
|
||||||
|
TypePopPass: TypePopPassLen,
|
||||||
|
TypePointerInput: TypePointerInputLen,
|
||||||
|
TypeClipboardRead: TypeClipboardReadLen,
|
||||||
|
TypeClipboardWrite: TypeClipboardWriteLen,
|
||||||
|
TypeSource: TypeSourceLen,
|
||||||
|
TypeTarget: TypeTargetLen,
|
||||||
|
TypeOffer: TypeOfferLen,
|
||||||
|
TypeKeyInput: TypeKeyInputLen,
|
||||||
|
TypeKeyFocus: TypeKeyFocusLen,
|
||||||
|
TypeKeySoftKeyboard: TypeKeySoftKeyboardLen,
|
||||||
|
TypeSave: TypeSaveLen,
|
||||||
|
TypeLoad: TypeLoadLen,
|
||||||
|
TypeAux: TypeAuxLen,
|
||||||
|
TypeClip: TypeClipLen,
|
||||||
|
TypePopClip: TypePopClipLen,
|
||||||
|
TypeProfile: TypeProfileLen,
|
||||||
|
TypeCursor: TypeCursorLen,
|
||||||
|
TypePath: TypePathLen,
|
||||||
|
TypeStroke: TypeStrokeLen,
|
||||||
|
TypeSemanticLabel: TypeSemanticLabelLen,
|
||||||
|
TypeSemanticDesc: TypeSemanticDescLen,
|
||||||
|
TypeSemanticClass: TypeSemanticClassLen,
|
||||||
|
TypeSemanticSelected: TypeSemanticSelectedLen,
|
||||||
|
TypeSemanticDisabled: TypeSemanticDisabledLen,
|
||||||
|
TypeSnippet: TypeSnippetLen,
|
||||||
|
TypeSelection: TypeSelectionLen,
|
||||||
|
TypeActionInput: TypeActionInputLen,
|
||||||
|
}
|
||||||
|
|
||||||
func (t OpType) Size() int {
|
func (t OpType) Size() int {
|
||||||
return [...]int{
|
return int(opSize[t])
|
||||||
TypeMacroLen,
|
|
||||||
TypeCallLen,
|
|
||||||
TypeDeferLen,
|
|
||||||
TypePushTransformLen,
|
|
||||||
TypeTransformLen,
|
|
||||||
TypePopTransformLen,
|
|
||||||
TypeRedrawLen,
|
|
||||||
TypeImageLen,
|
|
||||||
TypePaintLen,
|
|
||||||
TypeColorLen,
|
|
||||||
TypeLinearGradientLen,
|
|
||||||
TypePassLen,
|
|
||||||
TypePopPassLen,
|
|
||||||
TypePointerInputLen,
|
|
||||||
TypeClipboardReadLen,
|
|
||||||
TypeClipboardWriteLen,
|
|
||||||
TypeSourceLen,
|
|
||||||
TypeTargetLen,
|
|
||||||
TypeOfferLen,
|
|
||||||
TypeKeyInputLen,
|
|
||||||
TypeKeyFocusLen,
|
|
||||||
TypeKeySoftKeyboardLen,
|
|
||||||
TypeSaveLen,
|
|
||||||
TypeLoadLen,
|
|
||||||
TypeAuxLen,
|
|
||||||
TypeClipLen,
|
|
||||||
TypePopClipLen,
|
|
||||||
TypeProfileLen,
|
|
||||||
TypeCursorLen,
|
|
||||||
TypePathLen,
|
|
||||||
TypeStrokeLen,
|
|
||||||
TypeSemanticLabelLen,
|
|
||||||
TypeSemanticDescLen,
|
|
||||||
TypeSemanticClassLen,
|
|
||||||
TypeSemanticSelectedLen,
|
|
||||||
TypeSemanticDisabledLen,
|
|
||||||
TypeSnippetLen,
|
|
||||||
TypeSelectionLen,
|
|
||||||
TypeActionInputLen,
|
|
||||||
}[t-firstOpIndex]
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t OpType) NumRefs() int {
|
func (t OpType) NumRefs() int {
|
||||||
|
|||||||
Reference in New Issue
Block a user