Skip to content

Instantly share code, notes, and snippets.

@kiranshila
Created August 31, 2022 01:21
Show Gist options
  • Save kiranshila/3d8b6120d782c284a7804b25527128f7 to your computer and use it in GitHub Desktop.
Save kiranshila/3d8b6120d782c284a7804b25527128f7 to your computer and use it in GitHub Desktop.
# In external Julia libraries
struct KATCPClient end
struct TAPCPClient end
# In CasperFPGA.jl
abstract type AbstractCasperTransport end
struct KatcpTransport <: AbstractCasperTransport end
struct TapcpTransport <: AbstractCasperTransport end
AbstractCasperTransport(::Type{KATCPClient}) = KatcpTransport()
AbstractCasperTransport(::Type{TAPCPClient}) = TapcpTransport()
# Trait Dispatch
listdev(transport::T) where {T} = listdev(AbstractCasperTransport(T),transport)
# Trait Implementations
listdev(::KatcpTransport, transport) = println("listdev for KATCP")
listdev(::TapcpTransport, transport) = println("listdev for TAPCP")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment