halotukozak.mrpc.meta
Members list
Type members
Classlikes
User-facing metadata entry point, mirroring commons RpcMetadataCompanion. A concrete metadata class's COMPANION mixes this in, parameterized by the metadata type constructor M[_], to expose materialize[Real]: M[Real] — the metadata-class-param-driven derivation.
User-facing metadata entry point, mirroring commons RpcMetadataCompanion. A concrete metadata class's COMPANION mixes this in, parameterized by the metadata type constructor M[_], to expose materialize[Real]: M[Real] — the metadata-class-param-driven derivation.
Example (research §"Code Examples"):
final case class TraitMeta[T](
@reifyName name: String,
@rpcMethodMetadata @multi methods: List[MethodMeta[?]],
)
object TraitMeta extends RpcMetadataCompanion[TraitMeta]
// ...
val md: TraitMeta[SampleApi] = TraitMeta.materialize[SampleApi]
The macro reads M's primary-constructor params, classifies each by its steering annotation, and fills it from the real trait's halotukozak.made.Done structure — reusing RpcName.computeAll for resolved names so metadata names cannot drift from the engine's.
Attributes
- Source
- RpcMetadataCompanion.scala
- Supertypes
The phantom base of every user metadata class, mirroring commons metadata.scala:319's TypedMetadata[T].
The phantom base of every user metadata class, mirroring commons metadata.scala:319's TypedMetadata[T].
T is the type the metadata DESCRIBES — a method's result type or a parameter's type. It carries no field; it exists so a metadata class can declare WHAT it is metadata-for, and so the materialize macro / @composite recursion can summon nested metadata for the right T. A metadata class extends TypedMetadata[T] and has its constructor params steered by the marker annotations (@reifyName/@reifyAnnot/@infer/@composite/@rpcMethodMetadata/@rpcParamMetadata).
Attributes
- Source
- TypedMetadata.scala
- Supertypes