Crate tectonic_bridge_core[−][src]
Expand description
Core APIs for bridging the C and Rust portions of Tectonic’s processing backends.
This crate is used by the Tectonic “engines”, which are predominantly C/C++ code derived from the original TeX codebase. It provides a framework so that the C/C++ code can invoke the support services provided by Tectonic, such as its pluggable I/O backends. The interfaces exposed to the C/C++ layers are created by cbindgen.
In order to provide access to a C/C++ engine in Rust, you should create some
kind of interface that expects to be given a reference to a
CoreBridgeLauncher
struct. You should use that struct’s
with_global_lock
method to obtain a CoreBridgeState
reference, and
then pass that reference across the FFI layer. On the other side of the FFI
divide, your code must call the functions ttbc_global_engine_enter()
and
ttbc_global_engine_exit()
according to the pattern described in
tectonic_bridge_core.h
. If an abort is detected, the callback function
must return Err(EngineAbortedError::new_abort_indicator().into())
.
Unfortunately, this is the cleanest and most reliable API that we can
provide because our abort handling uses setjmp
/longjmp
and those can’t
cross FFI boundaries.
In order to use a C/C++ engine, you need to provide something that
implements the DriverHooks
trait. The MinimalDriver
struct provides
a minimal implementation that only requires you to provide an IoProvider
implementation.
Structs
CoreBridgeLauncher | A mechanism for launching bridged FFI code. |
CoreBridgeState | The CoreBridgeState structure is a handle to Rust state that can be used by C/C++ engine code to perform basic I/O functions. |
Diagnostic | A buffer for diagnostic messages. Rust code does not need to use this type. |
EngineAbortedError | An error type indicating the the FFI code aborted. |
MinimalDriver | This type provides a minimal |
SecuritySettings | A type for storing settings about potentially insecure engine features. |
Enums
FileFormat | Different types of files that can be opened by TeX engines |
SecurityStance | Different high-level security stances that can be adopted when creating
|
SystemRequestError | Possible failures for “system request” calls to the driver. |
Traits
DriverHooks | The DriverHooks trait allows engines to interact with the higher-level code that is driving the TeX processing. |
Functions
ttbc_diag_append⚠ | Append text to a diagnostic. |
ttbc_diag_begin_error | Create a new diagnostic that will be reported as an error. |
ttbc_diag_begin_warning | Create a new diagnostic that will be reported as a warning. |
ttbc_diag_finish | “Finish” a diagnostic: report it to the driver and free the diagnostic object. |
ttbc_get_data_md5⚠ | Calculate the MD5 digest of a block of binary data. |
ttbc_get_file_md5⚠ | Calculate the MD5 digest of a Tectonic file. |
ttbc_get_last_input_abspath⚠ | Get the filesystem path of the most-recently-opened input file. |
ttbc_input_close | Close a Tectonic input file. |
ttbc_input_get_mtime | Get the modification time of a Tectonic input file. |
ttbc_input_get_size | Get the size of a Tectonic input file. |
ttbc_input_getc | Get a single character from a Tectonic input file. |
ttbc_input_open⚠ | Open a Tectonic file for input. |
ttbc_input_open_primary | Open the “primary input” file. |
ttbc_input_read⚠ | Read data from a Tectonic input handle |
ttbc_input_seek⚠ | Seek in a Tectonic input stream. |
ttbc_input_ungetc | Put back a character that was obtained from a |
ttbc_issue_error⚠ | Issue an error. |
ttbc_issue_warning⚠ | Issue a warning. |
ttbc_output_close | Close a Tectonic output file. |
ttbc_output_flush | Flush pending writes to a Tectonic output file. |
ttbc_output_open⚠ | Open a Tectonic file for output. |
ttbc_output_open_stdout | Open the general user output stream as a Tectonic output file. |
ttbc_output_putc | Write a single character to a Tectonic output file. |
ttbc_output_write⚠ | Write data to a Tectonic output file. |
ttbc_shell_escape⚠ | Run a shell command |