# Patterns/vtable

> Vtable Pattern (C-Specific) pattern for C development

- Skill: `majiayu000/patterns-vtable` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds add majiayu000/patterns-vtable`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/patterns-vtable/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/majiayu000/patterns-vtable

---


# 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:**
```c
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.

