92typedef enum loomc_module_function_kind_e {
113static inline bool loomc_module_function_kind_is_kernel(
120typedef enum loomc_module_function_flag_bits_e {
155typedef enum loomc_module_function_export_flag_bits_e {
207typedef enum loomc_module_global_kind_e {
219typedef enum loomc_module_global_flag_bits_e {
278typedef 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:47
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*.
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:155
@ LOOMC_MODULE_FUNCTION_EXPORT_FLAG_HAS_SYMBOL
loomc_module_function_export_info_t::export_symbol is present.
Definition module.h:157
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_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_module_global_kind_t
Public global category reported from a module query.
Definition module.h:207
@ LOOMC_MODULE_GLOBAL_KIND_CONSTANT
Immutable global.constant definition.
Definition module.h:212
@ LOOMC_MODULE_GLOBAL_KIND_VARIABLE
Mutable global.variable definition.
Definition module.h:215
@ LOOMC_MODULE_GLOBAL_KIND_UNKNOWN
No specific global kind was requested or reported.
Definition module.h:209
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:129
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:278
@ LOOMC_MODULE_TEXT_PRESENTATION_GENERIC
Force canonical text with descriptor-backed target-low operations printed as ordinary low....
Definition module.h:285
@ LOOMC_MODULE_TEXT_PRESENTATION_LOW_ASM
Require descriptor-backed target-low assembly syntax for every self-describing target-low function.
Definition module.h:290
@ LOOMC_MODULE_TEXT_PRESENTATION_DEFAULT
Prefer target-low assembly syntax using each function's representation contract, with canonical text ...
Definition module.h:281
loomc_module_global_flag_bits_t
Module global metadata flag bits.
Definition module.h:219
@ LOOMC_MODULE_GLOBAL_FLAG_PUBLIC
Global symbol is visible outside the module for linking.
Definition module.h:221
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:225
struct loomc_module_t loomc_module_t
Opaque parsed, linked, optimized, or lowered module.
Definition module.h:89
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:120
@ LOOMC_MODULE_FUNCTION_FLAG_PUBLIC
Function symbol is visible outside the module for linking.
Definition module.h:122
@ LOOMC_MODULE_FUNCTION_FLAG_HAS_EXPORT_INFO
loomc_module_function_try_get_export_info can return export metadata.
Definition module.h:125
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:161
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:92
@ LOOMC_MODULE_FUNCTION_KIND_TARGET_FUNCTION
Target-bound function definition produced by lowering.
Definition module.h:103
@ LOOMC_MODULE_FUNCTION_KIND_TARGET_KERNEL
Target-bound dispatchable kernel entry produced by lowering.
Definition module.h:106
@ LOOMC_MODULE_FUNCTION_KIND_FUNCTION
Source-level func.def function definition.
Definition module.h:97
@ LOOMC_MODULE_FUNCTION_KIND_UNKNOWN
No specific function kind was requested or reported.
Definition module.h:94
@ LOOMC_MODULE_FUNCTION_KIND_KERNEL
Source-level kernel.def dispatchable kernel definition.
Definition module.h:100
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.
Shared operation result container.
struct loomc_result_t loomc_result_t
Immutable operation result.
Definition result.h:63
Immutable source handles used by parsing, indexing, linking, and compiling.
struct loomc_source_t loomc_source_t
Immutable source handle.
Definition source.h:80
loomc_source_format_t
Source byte format.
Definition source.h:83
Host allocator used for persistent Loom object storage.
Definition base.h:375
Module deserialization options.
Definition module.h:325
loomc_structure_type_t type
Structure type.
Definition module.h:328
loomc_source_format_t format
Input source format.
Definition module.h:338
loomc_string_view_t identifier
Identifier used for diagnostics and module provenance.
Definition module.h:342
loomc_host_size_t structure_size
Size of this structure in bytes.
Definition module.h:331
const void * next
Extension chain for future deserialization options.
Definition module.h:334
Export metadata view written into caller-provided storage.
Definition module.h:172
loomc_module_function_export_flags_t flags
Present export metadata flags.
Definition module.h:174
loomc_string_view_t export_symbol
Optional artifact export symbol without a leading @.
Definition module.h:177
Module function query options.
Definition module.h:186
loomc_host_size_t structure_size
Size of this structure in bytes.
Definition module.h:192
loomc_structure_type_t type
Structure type.
Definition module.h:189
loomc_string_view_t function_symbol
Optional symbol selector.
Definition module.h:199
loomc_module_function_kind_t kind
Optional kind filter.
Definition module.h:203
const void * next
Extension chain for future function query options.
Definition module.h:195
Function metadata view written into caller-provided storage.
Definition module.h:140
loomc_string_view_t symbol_name
Loom module symbol name, without a leading @.
Definition module.h:145
loomc_host_size_t function_ordinal
Ordinal in the module's public function metadata sequence.
Definition module.h:142
loomc_module_function_flags_t flags
Present metadata flags.
Definition module.h:151
loomc_module_function_kind_t kind
Function category.
Definition module.h:148
Module global query options.
Definition module.h:257
const void * next
Extension chain for future global query options.
Definition module.h:266
loomc_module_global_kind_t kind
Optional kind filter.
Definition module.h:274
loomc_host_size_t structure_size
Size of this structure in bytes.
Definition module.h:263
loomc_structure_type_t type
Structure type.
Definition module.h:260
loomc_string_view_t global_symbol
Optional symbol selector.
Definition module.h:270
Global metadata view written into caller-provided storage.
Definition module.h:237
loomc_module_global_kind_t kind
Global category.
Definition module.h:245
loomc_host_size_t global_ordinal
Ordinal in the module's global metadata sequence.
Definition module.h:239
loomc_module_global_flags_t flags
Present metadata flags.
Definition module.h:248
loomc_string_view_t symbol_name
Loom module symbol name, without a leading @.
Definition module.h:242
Module serialization options.
Definition module.h:298
loomc_string_view_t identifier
Identifier to attach to a returned source.
Definition module.h:314
loomc_source_format_t format
Output source format. Unknown selects textual .loom.
Definition module.h:310
loomc_host_size_t structure_size
Size of this structure in bytes.
Definition module.h:304
loomc_structure_type_t type
Structure type.
Definition module.h:301
loomc_module_text_presentation_t text_presentation
Presentation policy for textual .loom output.
Definition module.h:317
const void * next
Extension chain for future serialization options.
Definition module.h:307
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