# This file was auto-generated by Fern from our API Definition.

import enum
import typing

T_Result = typing.TypeVar("T_Result")


class ProcessorArchitectureOv(str, enum.Enum):
    ALPHA = "alpha"
    ARM = "arm"
    AI_64 = "ai_64"
    MIPS = "mips"
    POWERPC = "powerpc"
    SPARC = "sparc"
    X_86 = "x86"
    X_86_64 = "x86_64"

    def visit(
        self,
        alpha: typing.Callable[[], T_Result],
        arm: typing.Callable[[], T_Result],
        ai_64: typing.Callable[[], T_Result],
        mips: typing.Callable[[], T_Result],
        powerpc: typing.Callable[[], T_Result],
        sparc: typing.Callable[[], T_Result],
        x_86: typing.Callable[[], T_Result],
        x_86_64: typing.Callable[[], T_Result],
    ) -> T_Result:
        if self is ProcessorArchitectureOv.ALPHA:
            return alpha()
        if self is ProcessorArchitectureOv.ARM:
            return arm()
        if self is ProcessorArchitectureOv.AI_64:
            return ai_64()
        if self is ProcessorArchitectureOv.MIPS:
            return mips()
        if self is ProcessorArchitectureOv.POWERPC:
            return powerpc()
        if self is ProcessorArchitectureOv.SPARC:
            return sparc()
        if self is ProcessorArchitectureOv.X_86:
            return x_86()
        if self is ProcessorArchitectureOv.X_86_64:
            return x_86_64()
