|
| loomc_status_t | loomc_link_index_builder_create (loomc_context_t *context, const loomc_link_index_builder_options_t *options, loomc_allocator_t allocator, loomc_link_index_builder_t **out_builder) |
| | Creates an empty link-index builder.
|
| void | loomc_link_index_builder_release (loomc_link_index_builder_t *builder) |
| | Releases a link-index builder.
|
| loomc_status_t | loomc_link_index_builder_reserve_source_slot (loomc_link_index_builder_t *builder, const loomc_link_index_source_options_t *options, loomc_link_index_source_slot_t *out_slot) |
| | Reserves a deterministic source slot.
|
| loomc_status_t | loomc_link_index_builder_fill_source_slot (loomc_link_index_builder_t *builder, loomc_link_index_source_slot_t slot, loomc_source_t *source) |
| | Fills an already reserved source slot.
|
| loomc_status_t | loomc_link_index_builder_add_source (loomc_link_index_builder_t *builder, loomc_source_t *source, const loomc_link_index_source_options_t *options, loomc_link_index_source_slot_t *out_slot) |
| | Reserves and fills the next source slot.
|
| loomc_status_t | loomc_link_index_builder_finish (loomc_link_index_builder_t *builder, loomc_link_index_t **out_link_index, loomc_result_t **out_result) |
| | Finishes a builder into a frozen immutable link index.
|
| void | loomc_link_index_retain (loomc_link_index_t *link_index) |
| | Retains a frozen link index for another owner.
|
| void | loomc_link_index_release (loomc_link_index_t *link_index) |
| | Releases a frozen link index from one owner.
|
| loomc_host_size_t | loomc_link_index_provider_count (const loomc_link_index_t *link_index) |
| | Returns the number of providers in a frozen index.
|
| bool | loomc_link_index_provider_at (const loomc_link_index_t *link_index, loomc_host_size_t ordinal, loomc_link_index_provider_t *out_provider) |
| | Returns provider metadata by ordinal.
|
| loomc_host_size_t | loomc_link_index_module_count (const loomc_link_index_t *link_index) |
| | Returns the number of modules in a frozen index.
|
| bool | loomc_link_index_module_at (const loomc_link_index_t *link_index, loomc_host_size_t ordinal, loomc_link_index_module_t *out_module) |
| | Returns module metadata by ordinal.
|
| loomc_host_size_t | loomc_link_index_symbol_count (const loomc_link_index_t *link_index) |
| | Returns the number of symbols in a frozen index.
|
| bool | loomc_link_index_symbol_at (const loomc_link_index_t *link_index, loomc_host_size_t ordinal, loomc_link_index_symbol_t *out_symbol) |
| | Returns symbol metadata by ordinal.
|
| bool | loomc_link_index_lookup_global (const loomc_link_index_t *link_index, loomc_string_view_t name, loomc_link_index_symbol_t *out_symbol) |
| | Looks up the selected global symbol by name.
|
| bool | loomc_link_index_next_global_duplicate (const loomc_link_index_t *link_index, const loomc_link_index_symbol_t *symbol, loomc_link_index_symbol_t *out_symbol) |
| | Returns the next duplicate global symbol for symbol.
|
| bool | loomc_link_index_lookup_private (const loomc_link_index_t *link_index, const loomc_link_index_module_t *module, loomc_string_view_t name, loomc_link_index_symbol_t *out_symbol) |
| | Looks up a private symbol within an indexed module.
|
Reusable link indexes for deterministic library and source discovery.
A frozen link index records source/provider identity and symbol metadata so link operations can resolve live roots without rebuilding reusable library indexes. Builders reserve deterministic source slots, accept source handles in any slot order, and finish into an immutable, shareable index whose provider order is independent of scheduling order.
The first indexing contract is intentionally explicit about lifetimes: source handles are retained by the builder, and a frozen index owns the persistent storage needed for provider/module/symbol metadata. Resetting a caller workspace never invalidates a frozen link index.
- Example
- Retain a frozen library index when handing it to an asynchronous worker:
enqueue_work(library_index);
}
}
void loomc_link_index_release(loomc_link_index_t *link_index)
Releases a frozen link index from one owner.
void loomc_link_index_retain(loomc_link_index_t *link_index)
Retains a frozen link index for another owner.
struct loomc_link_index_t loomc_link_index_t
Frozen immutable link index.
Definition link_index.h:62