#[path = "gpu_pipeline_filter.rs"]
mod gpu_pipeline_filter;
pub use gpu_pipeline_filter::{gpu_filter_source_bytes, FilteredBytes};
#[path = "gpu_pipeline/buffers.rs"]
mod buffers;
#[path = "gpu_pipeline/byte_lru_cache.rs"]
mod byte_lru_cache;
#[path = "gpu_pipeline/cache.rs"]
mod cache;
#[cfg(test)]
#[path = "gpu_pipeline/cache_tests.rs"]
mod cache_tests;
#[path = "gpu_pipeline/classified_size.rs"]
mod classified_size;
#[cfg(test)]
#[path = "gpu_pipeline/conditional_eval.rs"]
mod conditional_eval;
#[path = "gpu_pipeline/conditional_events.rs"]
mod conditional_events;
#[path = "gpu_pipeline/conditional_stack.rs"]
mod conditional_stack;
#[path = "gpu_pipeline/directives.rs"]
mod directives;
#[path = "gpu_pipeline/dispatch.rs"]
mod dispatch;
#[path = "gpu_pipeline/driver.rs"]
mod driver;
#[path = "gpu_pipeline/expansion_events.rs"]
mod expansion_events;
#[path = "gpu_pipeline/header_reuse.rs"]
mod header_reuse;
#[path = "gpu_pipeline/include_acceleration.rs"]
mod include_acceleration;
#[path = "gpu_pipeline/include_events.rs"]
mod include_events;
#[path = "gpu_pipeline/live_conditional_cache.rs"]
mod live_conditional_cache;
#[path = "gpu_pipeline/live_state.rs"]
mod live_state;
#[path = "gpu_pipeline/lru_index.rs"]
mod lru_index;
#[path = "gpu_pipeline/macro_events.rs"]
mod macro_events;
#[path = "gpu_pipeline/macro_expansion.rs"]
mod macro_expansion;
#[path = "gpu_pipeline/macro_table.rs"]
mod macro_table;
#[path = "gpu_pipeline/macro_values.rs"]
mod macro_values;
#[path = "gpu_pipeline/payload_size.rs"]
mod payload_size;
#[path = "gpu_pipeline/scan.rs"]
mod scan;
#[path = "gpu_pipeline/segments.rs"]
mod segments;
#[path = "gpu_pipeline/source_spans.rs"]
mod source_spans;
#[path = "gpu_pipeline/token_provenance.rs"]
mod token_provenance;
#[path = "gpu_pipeline/tokenization.rs"]
mod tokenization;
#[path = "gpu_pipeline/types.rs"]
mod types;
pub use buffers::bucket_pow2;
pub use conditional_events::{ConditionalEvent, ConditionalEventKind, ConditionalEventResidency};
pub use directives::{gpu_extract_directive_payloads, DirectivePayload};
pub use dispatch::{BackendDispatcher, GpuDispatcher};
pub use expansion_events::MacroExpansionEvent;
pub use header_reuse::{HeaderReuseEvent, HeaderReuseKey};
pub use include_acceleration::{IncludeAccelerationEvent, IncludeAccelerationKind};
pub use include_events::{IncludeByteCacheStats, IncludeEvent, IncludeEventResidency};
pub use macro_events::{MacroEvent, MacroEventKind};
pub use token_provenance::TokenProvenanceEvent;
pub use tokenization::{gpu_tokenize_and_classify, ClassifiedTokens};
pub use types::{IncludeLoader, MacroDef, PreprocessedSource, MAX_INCLUDE_DEPTH};
pub fn gpu_preprocess_translation_unit(
dispatcher: &dyn GpuDispatcher,
loader: &dyn IncludeLoader,
tu_path: &std::path::Path,
source: &[u8],
cli_macros: &[MacroDef],
) -> Result<PreprocessedSource, String> {
driver::preprocess_translation_unit(dispatcher, loader, tu_path, source, cli_macros)
}