Patterns/vtable

Vtable Pattern (C-Specific) pattern for C development

majiayu000 8a970b0 2 files · 1.5 KB Updated 567 repo stars

File contents

Vtable Pattern (C-Specific)

Struct of function pointers enabling polymorphism. Different implementations provide different function pointer sets. Callers invoke through vtable.

ikigai Application

LLM providers:

typedef struct {
    res_t (*send)(void *impl, ...);
    res_t (*stream)(void *impl, ...);
    void (*cleanup)(void *impl);
} ik_provider_vtable_t;

typedef struct {
    ik_provider_vtable_t *vt;
    void *impl;  // OpenAI ctx, Anthropic ctx, etc.
} ik_llm_client_t;

Layer system: Each layer type provides render/resize functions.

Benefits:

  • Runtime polymorphism without inheritance
  • Swap implementations transparently
  • Mock implementations for testing

Convention: Vtable struct named *_vtable_t, instance holds vt pointer plus impl context.

majiayu000/claude-skill-registry-data/tree/main/development/patternsvtable commit 8a970b03e3

Frequently asked questions

npx skillmds add majiayu000/patterns-vtable