# lib_vtable function library

Dependencies: lib_2da, lib_2daq, lib_anon, lib_array, lib_fn, lib_ini, lib_sfo, lib_sugar, lib_tools, lib_ui

## Description

This library implements the 'vtable' (virtual table) system, which creates a virtual table of data by extracting one row from each of many 2da files. That table can then be edited as a WEIDU 2D array and then written back. Example applications are to edit classes, races or kits.

The vtable system is used by SFO's lib_class and lib_kit libraries.

## Public functions

vtable_debug(function:s, vtable:s, struct:s)=() dimorphic

Checks an expression (assumed to be an anon function) for apparent references to nonexistent keys.

vtable_generate_aliases(vtable:s)=() action

vtable_initialize action_macro

Loads a bunch of data used by the vtable system.

vtable_read(silent:b, row:s, vtable:s)=(struct:a) dimorphic

Read a virtual-table row into an array.

This is hardcoded for speed - even using 2daq functions slows things down a bit, and that matters for bulk editing of kits.

vtable_write(edit_strrefs_in_place:i, vtable:s, row:s, struct:s)=() dimorphic