93typedef enum loomc_module_verify_scope_e {
146typedef enum loomc_module_function_kind_e {
167static inline bool loomc_module_function_kind_is_kernel(
174typedef enum loomc_module_function_flag_bits_e {
209typedef enum loomc_module_function_export_flag_bits_e {
261typedef enum loomc_module_global_kind_e {
273typedef enum loomc_module_global_flag_bits_e {
332typedef enum loomc_module_text_presentation_e {
#define LOOMC_API_EXPORT
Exports a public Loom C API symbol from a shared library build.
Definition base.h:34
size_t loomc_host_size_t
Host allocation and container size type.
Definition base.h:45
loomc_structure_type_t
Structure type values used by extensible public descriptors.
Definition base.h:181
struct iree_status_handle_t * loomc_status_t
Opaque status handle.
Definition base.h:55
Reusable Loom API context.
struct loomc_context_t loomc_context_t
Immutable Loom API context.
Definition context.h:63
loomc_status_t loomc_module_get_global_at(const loomc_module_t *module, loomc_host_size_t global_ordinal, loomc_module_global_t *out_global)
Gets global metadata by global ordinal.
bool loomc_module_function_try_get_export_info(const loomc_module_t *module, const loomc_module_function_t *function, loomc_module_function_export_info_t *out_info)
Tries to get export metadata for a function without allocating a status.
bool loomc_module_try_get_function_at(const loomc_module_t *module, loomc_host_size_t function_ordinal, loomc_module_function_t *out_function)
Tries to get function metadata by public function ordinal without allocating a status.
loomc_status_t loomc_module_deserialize_from_source(loomc_context_t *context, loomc_workspace_t *workspace, const loomc_source_t *source, const loomc_module_deserialize_options_t *options, loomc_allocator_t allocator, loomc_module_t **out_module, loomc_result_t **out_result)
Deserializes an immutable source handle into an owned mutable module.
bool loomc_module_try_lookup_global(const loomc_module_t *module, loomc_string_view_t symbol_name, loomc_module_global_t *out_global)
Looks up one global by symbol name without allocating a status.
loomc_status_t loomc_module_serialize_to_file(const loomc_module_t *module, const loomc_module_serialize_options_t *options, FILE *file)
Serializes a module to an open C FILE*.
loomc_module_verify_scope_t
Invariants checked by an explicit module verification operation.
Definition module.h:93
@ LOOMC_MODULE_VERIFY_SCOPE_DEFAULT
Structural and target-Low checks using the module's target environment.
Definition module.h:95
@ LOOMC_MODULE_VERIFY_SCOPE_STRUCTURAL
Structural checks only, without establishing target-Low admission.
Definition module.h:97
loomc_status_t loomc_module_deserialize_request(loomc_context_t *context, loomc_workspace_t *workspace, const loomc_request_t *request, loomc_allocator_t host_allocator, loomc_module_t **out_module, loomc_string_view_t *out_root_symbols, loomc_result_t **out_result)
Deserializes an immutable request and resolves its exact source roots.
bool loomc_module_try_get_global_at(const loomc_module_t *module, loomc_host_size_t global_ordinal, loomc_module_global_t *out_global)
Tries to get global metadata by global ordinal without allocating a status.
loomc_module_function_export_flag_bits_t
Export metadata flag bits.
Definition module.h:209
@ LOOMC_MODULE_FUNCTION_EXPORT_FLAG_HAS_SYMBOL
loomc_module_function_export_info_t::export_symbol is present.
Definition module.h:211
loomc_status_t loomc_module_get_function_at(const loomc_module_t *module, loomc_host_size_t function_ordinal, loomc_module_function_t *out_function)
Gets function metadata by public function ordinal.
loomc_status_t loomc_module_serialize_bytecode_to_source(const loomc_module_t *module, const loomc_module_serialize_options_t *options, loomc_allocator_t allocator, loomc_source_t **out_source)
Serializes a module as .loombc bytecode into an immutable source handle.
loomc_status_t loomc_module_serialize_to_path(const loomc_module_t *module, const loomc_module_serialize_options_t *options, loomc_string_view_t path, loomc_allocator_t allocator)
Serializes a module to a filesystem path.
loomc_status_t loomc_module_deserialize_text_from_source(loomc_context_t *context, loomc_workspace_t *workspace, const loomc_source_t *source, const loomc_module_deserialize_options_t *options, loomc_allocator_t allocator, loomc_module_t **out_module, loomc_result_t **out_result)
Deserializes a source handle as textual .loom into a mutable module.
loomc_status_t loomc_module_serialize_text_to_source(const loomc_module_t *module, const loomc_module_serialize_options_t *options, loomc_allocator_t allocator, loomc_source_t **out_source)
Serializes a module as textual .loom into an immutable source handle.
loomc_module_global_kind_t
Public global category reported from a module query.
Definition module.h:261
@ LOOMC_MODULE_GLOBAL_KIND_CONSTANT
Immutable global.constant definition.
Definition module.h:266
@ LOOMC_MODULE_GLOBAL_KIND_VARIABLE
Mutable global.variable definition.
Definition module.h:269
@ LOOMC_MODULE_GLOBAL_KIND_UNKNOWN
No specific global kind was requested or reported.
Definition module.h:263
bool loomc_module_function_try_get_export_info_at(const loomc_module_t *module, loomc_host_size_t function_ordinal, loomc_module_function_export_info_t *out_info)
Tries to get export metadata by public function ordinal without allocating a status.
uint32_t loomc_module_function_flags_t
Bitmask of loomc_module_function_flag_bits_t values.
Definition module.h:183
loomc_status_t loomc_module_deserialize_bytecode_from_source(loomc_context_t *context, loomc_workspace_t *workspace, const loomc_source_t *source, const loomc_module_deserialize_options_t *options, loomc_allocator_t allocator, loomc_module_t **out_module, loomc_result_t **out_result)
Deserializes a source handle as .loombc bytecode into a mutable module.
loomc_status_t loomc_module_verify(loomc_module_t *module, const loomc_module_verify_options_t *options, loomc_allocator_t allocator, loomc_result_t **out_result)
Checks module invariants explicitly according to the selected scope.
loomc_status_t loomc_module_query_functions(const loomc_module_t *module, const loomc_module_function_query_options_t *options, loomc_allocator_t allocator, loomc_host_size_t function_capacity, loomc_module_function_t *out_functions, loomc_host_size_t *out_function_count, loomc_result_t **out_result)
Queries function metadata from a module.
loomc_status_t loomc_module_deserialize_from_path(loomc_context_t *context, loomc_workspace_t *workspace, loomc_string_view_t path, const loomc_module_deserialize_options_t *options, loomc_allocator_t allocator, loomc_module_t **out_module, loomc_result_t **out_result)
Deserializes bytes from a filesystem path into a module.
loomc_status_t loomc_module_function_get_export_info_at(const loomc_module_t *module, loomc_host_size_t function_ordinal, loomc_module_function_export_info_t *out_info)
Gets export metadata by public function ordinal.
loomc_status_t loomc_module_query_globals(const loomc_module_t *module, const loomc_module_global_query_options_t *options, loomc_allocator_t allocator, loomc_host_size_t global_capacity, loomc_module_global_t *out_globals, loomc_host_size_t *out_global_count, loomc_result_t **out_result)
Queries global metadata from a module.
loomc_module_text_presentation_t
Text presentation policy used when serializing .loom text.
Definition module.h:332
@ LOOMC_MODULE_TEXT_PRESENTATION_PRESERVE
Preserve explicitly authored assembly regions without converting generic regions to assembly.
Definition module.h:348
@ LOOMC_MODULE_TEXT_PRESENTATION_GENERIC
Force canonical text with descriptor-backed target-low operations printed as ordinary low....
Definition module.h:339
@ LOOMC_MODULE_TEXT_PRESENTATION_LOW_ASM
Require descriptor-backed target-low assembly syntax for every self-describing target-low function.
Definition module.h:344
@ LOOMC_MODULE_TEXT_PRESENTATION_DEFAULT
Prefer target-low assembly syntax using each function's representation contract, with canonical text ...
Definition module.h:335
loomc_module_global_flag_bits_t
Module global metadata flag bits.
Definition module.h:273
@ LOOMC_MODULE_GLOBAL_FLAG_PUBLIC
Global symbol is visible outside the module for linking.
Definition module.h:275
loomc_status_t loomc_module_lookup_function(const loomc_module_t *module, loomc_string_view_t symbol_name, loomc_module_function_t *out_function)
Looks up one function by symbol name.
loomc_status_t loomc_module_deserialize_from_file(loomc_context_t *context, loomc_workspace_t *workspace, FILE *file, const loomc_module_deserialize_options_t *options, loomc_allocator_t allocator, loomc_module_t **out_module, loomc_result_t **out_result)
Deserializes bytes from an open C FILE* into a module.
uint32_t loomc_module_global_flags_t
Bitmask of loomc_module_global_flag_bits_t values.
Definition module.h:279
struct loomc_module_t loomc_module_t
Opaque parsed, linked, optimized, or lowered module.
Definition module.h:90
void loomc_module_retain(loomc_module_t *module)
Retains an opaque module for another owner.
loomc_module_function_flag_bits_t
Module function metadata flag bits.
Definition module.h:174
@ LOOMC_MODULE_FUNCTION_FLAG_PUBLIC
Function symbol is visible outside the module for linking.
Definition module.h:176
@ LOOMC_MODULE_FUNCTION_FLAG_HAS_EXPORT_INFO
loomc_module_function_try_get_export_info can return export metadata.
Definition module.h:179
loomc_status_t loomc_module_lookup_global(const loomc_module_t *module, loomc_string_view_t symbol_name, loomc_module_global_t *out_global)
Looks up one global by symbol name.
uint32_t loomc_module_function_export_flags_t
Bitmask of loomc_module_function_export_flag_bits_t values.
Definition module.h:215
loomc_status_t loomc_module_serialize_to_source(const loomc_module_t *module, const loomc_module_serialize_options_t *options, loomc_allocator_t allocator, loomc_source_t **out_source)
Serializes a module into an immutable source handle.
loomc_module_function_kind_t
Public function category reported from a module query.
Definition module.h:146
@ LOOMC_MODULE_FUNCTION_KIND_TARGET_FUNCTION
Target-bound function definition produced by lowering.
Definition module.h:157
@ LOOMC_MODULE_FUNCTION_KIND_TARGET_KERNEL
Target-bound dispatchable kernel entry produced by lowering.
Definition module.h:160
@ LOOMC_MODULE_FUNCTION_KIND_FUNCTION
Source-level func.def function definition.
Definition module.h:151
@ LOOMC_MODULE_FUNCTION_KIND_UNKNOWN
No specific function kind was requested or reported.
Definition module.h:148
@ LOOMC_MODULE_FUNCTION_KIND_KERNEL
Source-level kernel.def dispatchable kernel definition.
Definition module.h:154
void loomc_module_release(loomc_module_t *module)
Releases an opaque module from one owner.
loomc_status_t loomc_module_function_get_export_info(const loomc_module_t *module, const loomc_module_function_t *function, loomc_module_function_export_info_t *out_info)
Gets export metadata for a function.
loomc_status_t loomc_module_clone(const loomc_module_t *source_module, loomc_workspace_t *workspace, loomc_allocator_t allocator, loomc_module_t **out_module)
Clones a module into workspace-backed mutable storage.
bool loomc_module_try_lookup_function(const loomc_module_t *module, loomc_string_view_t symbol_name, loomc_module_function_t *out_function)
Looks up one function by symbol name without allocating a status.
Immutable compiler products and their recursively published requests.
struct loomc_request_t loomc_request_t
Immutable independently compilable product request.
Definition product.h:167
Shared operation result container.
struct loomc_result_t loomc_result_t
Immutable operation result.
Definition result.h:71
Immutable source handles used by parsing, indexing, linking, and compiling.
struct loomc_source_t loomc_source_t
Immutable source handle.
Definition source.h:81
loomc_source_format_t
Source byte format.
Definition source.h:84
Host allocator used for persistent Loom object storage.
Definition base.h:414
Module deserialization options.
Definition module.h:391
uint32_t max_errors
Maximum text parsing errors to report; zero selects the library default.
Definition module.h:413
loomc_structure_type_t type
Structure type.
Definition module.h:394
loomc_source_format_t format
Input source format.
Definition module.h:404
loomc_string_view_t identifier
Identifier used for diagnostics and module provenance.
Definition module.h:408
loomc_host_size_t structure_size
Size of this structure in bytes.
Definition module.h:397
const void * next
Extension chain for future deserialization options.
Definition module.h:400
Export metadata view written into caller-provided storage.
Definition module.h:226
loomc_module_function_export_flags_t flags
Present export metadata flags.
Definition module.h:228
loomc_string_view_t export_symbol
Optional artifact export symbol without a leading @.
Definition module.h:231
Module function query options.
Definition module.h:240
loomc_host_size_t structure_size
Size of this structure in bytes.
Definition module.h:246
loomc_structure_type_t type
Structure type.
Definition module.h:243
loomc_string_view_t function_symbol
Optional symbol selector.
Definition module.h:253
loomc_module_function_kind_t kind
Optional kind filter.
Definition module.h:257
const void * next
Extension chain for future function query options.
Definition module.h:249
Function metadata view written into caller-provided storage.
Definition module.h:194
loomc_string_view_t symbol_name
Loom module symbol name, without a leading @.
Definition module.h:199
loomc_host_size_t function_ordinal
Ordinal in the module's public function metadata sequence.
Definition module.h:196
loomc_module_function_flags_t flags
Present metadata flags.
Definition module.h:205
loomc_module_function_kind_t kind
Function category.
Definition module.h:202
Module global query options.
Definition module.h:311
const void * next
Extension chain for future global query options.
Definition module.h:320
loomc_module_global_kind_t kind
Optional kind filter.
Definition module.h:328
loomc_host_size_t structure_size
Size of this structure in bytes.
Definition module.h:317
loomc_structure_type_t type
Structure type.
Definition module.h:314
loomc_string_view_t global_symbol
Optional symbol selector.
Definition module.h:324
Global metadata view written into caller-provided storage.
Definition module.h:291
loomc_module_global_kind_t kind
Global category.
Definition module.h:299
loomc_host_size_t global_ordinal
Ordinal in the module's global metadata sequence.
Definition module.h:293
loomc_module_global_flags_t flags
Present metadata flags.
Definition module.h:302
loomc_string_view_t symbol_name
Loom module symbol name, without a leading @.
Definition module.h:296
Module serialization options.
Definition module.h:356
loomc_string_view_t identifier
Identifier to attach to a returned source.
Definition module.h:372
loomc_source_format_t format
Output source format. Unknown selects textual .loom.
Definition module.h:368
uint32_t reserved
Reserved padding separating appended fields from the original ABI prefix.
Definition module.h:378
loomc_host_size_t structure_size
Size of this structure in bytes.
Definition module.h:362
loomc_structure_type_t type
Structure type.
Definition module.h:359
loomc_module_text_presentation_t text_presentation
Presentation policy for textual .loom output.
Definition module.h:375
bool print_locations
Include operation source locations in textual output.
Definition module.h:383
const void * next
Extension chain for future serialization options.
Definition module.h:365
Options for an explicit module verification operation.
Definition module.h:101
loomc_structure_type_t type
Structure type; LOOMC_STRUCTURE_TYPE_MODULE_VERIFY_OPTIONS when nonzero.
Definition module.h:103
loomc_host_size_t structure_size
Size of this structure in bytes, or zero.
Definition module.h:105
const void * next
Reserved extension chain. Must be NULL.
Definition module.h:107
uint32_t max_errors
Maximum errors to report; zero selects the library default.
Definition module.h:109
uint32_t reserved
Reserved padding separating appended fields from the original ABI prefix.
Definition module.h:111
loomc_module_verify_scope_t scope
Verification scope.
Definition module.h:114
Non-owning string view over bytes that need not be NUL-terminated.
Definition base.h:63
Per-worker scratch workspace.
struct loomc_workspace_t loomc_workspace_t
Mutable per-worker scratch workspace.
Definition workspace.h:54