Lime Parser Generator 0.1.0
Runtime-extensible LALR(1) parser with SIMD tokenization and LLVM JIT
Loading...
Searching...
No Matches
Registry API

Create, query, and manage the extension registry. More...

Typedefs

typedef bool(* ExtensionVisitorFn) (const GrammarExtensionMetadata *meta, void *user_data)
 Visitor callback for extension iteration.
 

Functions

bool extension_registry_check_dependencies (ExtensionRegistry *reg, char **error_out)
 Validate all dependency and conflict declarations.
 
uint32_t extension_registry_count (const ExtensionRegistry *reg)
 Return the number of registered extensions.
 
ExtensionRegistryextension_registry_create (void)
 Create an empty extension registry.
 
void extension_registry_destroy (ExtensionRegistry *reg)
 Destroy the registry and free all owned memory.
 
const GrammarExtensionMetadataextension_registry_find (ExtensionRegistry *reg, const char *name)
 Look up an extension by name.
 
void extension_registry_foreach (const ExtensionRegistry *reg, ExtensionVisitorFn visitor, void *user_data)
 Iterate over all registered extensions.
 
bool extension_registry_get_order (ExtensionRegistry *reg, ExtensionOrder *order_out, char **error_out)
 Produce a topological ordering of all registered extensions.
 
bool extension_registry_register (ExtensionRegistry *reg, const GrammarExtensionMetadata *metadata)
 Register an extension with its metadata.
 
bool extension_registry_unregister (ExtensionRegistry *reg, const char *name)
 Unregister an extension by name.
 

Detailed Description

Create, query, and manage the extension registry.

Typedef Documentation

◆ ExtensionVisitorFn

typedef bool(* ExtensionVisitorFn) (const GrammarExtensionMetadata *meta, void *user_data)

#include <include/extension_registry.h>

Visitor callback for extension iteration.

Parameters
metaMetadata for the current extension.
user_dataUser-provided context pointer.
Return values
trueContinue iteration.
falseStop iteration early.

Definition at line 342 of file extension_registry.h.

Function Documentation

◆ extension_registry_check_dependencies()

bool extension_registry_check_dependencies ( ExtensionRegistry reg,
char **  error_out 
)

#include <include/extension_registry.h>

Validate all dependency and conflict declarations.

Checks:

  1. Every name in 'requires' refers to a registered extension.
  2. No extension lists a registered extension in 'conflicts_with'.
  3. The dependency graph is acyclic (topological sort succeeds).
Parameters
regThe extension registry.
[out]error_outOn failure, receives a malloc'd error message (caller must free). May be NULL. Set to NULL on success.
Return values
trueAll dependencies and conflicts are valid.
falseA problem was found; see error_out.
See also
extension_registry_get_order()

◆ extension_registry_count()

uint32_t extension_registry_count ( const ExtensionRegistry reg)

#include <include/extension_registry.h>

Return the number of registered extensions.

Parameters
regThe extension registry.
Returns
Count of registered extensions.

◆ extension_registry_create()

ExtensionRegistry * extension_registry_create ( void  )

#include <include/extension_registry.h>

Create an empty extension registry.

Returns
New registry, or NULL on allocation failure.
See also
extension_registry_destroy()

◆ extension_registry_destroy()

void extension_registry_destroy ( ExtensionRegistry reg)

#include <include/extension_registry.h>

Destroy the registry and free all owned memory.

Parameters
regRegistry to destroy. Passing NULL is safe.

◆ extension_registry_find()

const GrammarExtensionMetadata * extension_registry_find ( ExtensionRegistry reg,
const char *  name 
)

#include <include/extension_registry.h>

Look up an extension by name.

Parameters
regThe extension registry.
nameExtension name to search for.
Returns
Pointer to internal metadata, or NULL if not found.
Warning
The returned pointer is valid only until the registry is modified (register/unregister).

◆ extension_registry_foreach()

void extension_registry_foreach ( const ExtensionRegistry reg,
ExtensionVisitorFn  visitor,
void *  user_data 
)

#include <include/extension_registry.h>

Iterate over all registered extensions.

The callback receives each extension's metadata and the user-provided context pointer.

Parameters
regThe extension registry.
visitorCallback function.
user_dataOpaque pointer forwarded to visitor.

◆ extension_registry_get_order()

bool extension_registry_get_order ( ExtensionRegistry reg,
ExtensionOrder order_out,
char **  error_out 
)

#include <include/extension_registry.h>

Produce a topological ordering of all registered extensions.

Extensions are sorted so that dependencies come before dependents.

Parameters
regThe extension registry.
[out]order_outFilled with the sorted extension names on success.
[out]error_outOn failure, receives a malloc'd error message.
Return values
trueOrdering succeeded.
falseCycle detected or missing dependency; see error_out.

◆ extension_registry_register()

bool extension_registry_register ( ExtensionRegistry reg,
const GrammarExtensionMetadata metadata 
)

#include <include/extension_registry.h>

Register an extension with its metadata.

The registry copies all strings and arrays from metadata.

Parameters
regThe extension registry.
metadataExtension metadata to register.
Return values
trueRegistration succeeded.
falseName is NULL, empty, or already registered.
See also
extension_registry_unregister()

◆ extension_registry_unregister()

bool extension_registry_unregister ( ExtensionRegistry reg,
const char *  name 
)

#include <include/extension_registry.h>

Unregister an extension by name.

Parameters
regThe extension registry.
nameExtension name to remove.
Return values
trueExtension was found and removed.
falseExtension was not found.