@Retention(CLASS) @Target({TYPE})
public @interface Concrete
Indicates that a class has a known concrete implementation that ParparVM can target directly in native (C/Objective-C) pipelines.
When present, the translator may bypass virtual lookup when invoking methods
on this type by preferring the concrete class provided in name(),
and falling back to the annotated type implementation if the concrete class
doesn’t implement the method.
Methods
public abstract String name() | The fully-qualified class name of the concrete implementation to prefer during ParparVM native translation (the iOS pipeline, historically the only native target). |
public abstract String win() default "" | The fully-qualified class name of the concrete implementation to prefer when translating for the native Windows port. |
public abstract String linux() default "" | The fully-qualified class name of the concrete implementation to prefer when translating for the native Linux (GTK/Cairo) port. |
public abstract String mac() default "" | The fully-qualified class name of the concrete implementation to prefer when translating for the native macOS (AppKit) port. |
Method details
name
public abstract String name()win
public abstract String win() default ""name() target – so a type that has no
Windows specialization (e.g. a SIMD helper) translates to its software
base instead of pulling in the absent iOS class.linux
public abstract String linux() default ""name() target – mirroring
win() so a type with no Linux specialization translates to its
software base instead of pulling in the absent iOS class.mac
public abstract String mac() default ""The fully-qualified class name of the concrete implementation to prefer
when translating for the native macOS (AppKit) port. When empty (the
default), the native macOS build falls back to the annotated (portable)
base class – mirroring win() and linux().
Unlike those two, the macOS port shares the Apple native binding classes with the iOS port, so a type whose iOS specialization also compiles against the macOS SDK should name that same iOS class here rather than leave this empty. Leaving it empty silently degrades to the portable base, which is a green build with the specialization missing.