MayaFlux 0.2.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ analyze_token_compatibility()

std::vector< TokenCompatibilityReport > MayaFlux::Buffers::BufferProcessingChain::analyze_token_compatibility ( ) const

Analyzes token compatibility across all processors in the chain.

Returns
Vector of TokenCompatibilityReport objects summarizing processor compatibility

This method generates a detailed report on how each processor in the chain aligns with the preferred processing token, including compatibility status, enforcement strategy, and any processors that will be skipped or pending removal. Useful for debugging, optimization planning, and ensuring pipeline integrity.

Definition at line 314 of file BufferProcessingChain.cpp.

315{
316 std::vector<TokenCompatibilityReport> reports;
317
318 for (const auto& [buffer, processors] : m_buffer_processors) {
319 TokenCompatibilityReport report;
320 report.buffer = buffer;
321 report.chain_preferred_token = m_token_filter_mask;
322 report.enforcement_strategy = m_enforcement_strategy;
323
324 for (const auto& processor : processors) {
325 ProcessorTokenInfo info;
326 info.processor = processor;
327 info.processor_token = processor->get_processing_token();
328 info.is_compatible = are_tokens_compatible(m_token_filter_mask, info.processor_token);
329 info.will_be_skipped = (m_enforcement_strategy == TokenEnforcementStrategy::OVERRIDE_SKIP && !info.is_compatible);
330 info.pending_removal = (m_enforcement_strategy == TokenEnforcementStrategy::OVERRIDE_REJECT && !info.is_compatible);
331
332 report.processor_infos.push_back(info);
333 }
334
335 reports.push_back(report);
336 }
337
338 return reports;
339}
ProcessingToken m_token_filter_mask
Preferred processing token for this chain.
std::unordered_map< std::shared_ptr< Buffer >, std::vector< std::shared_ptr< BufferProcessor > > > m_buffer_processors
Map of buffers to their processor sequences.
TokenEnforcementStrategy m_enforcement_strategy
Token enforcement strategy for this chain.
bool are_tokens_compatible(ProcessingToken preferred, ProcessingToken current)
Determines if two processing tokens are compatible for joint execution.
@ OVERRIDE_SKIP
Allows token overrides but skips processing for incompatible operations.
@ OVERRIDE_REJECT
Allows token overrides but rejects incompatible processors from chains.

References MayaFlux::Buffers::are_tokens_compatible(), MayaFlux::Buffers::TokenCompatibilityReport::buffer, MayaFlux::Buffers::TokenCompatibilityReport::chain_preferred_token, MayaFlux::Buffers::TokenCompatibilityReport::enforcement_strategy, MayaFlux::Buffers::ProcessorTokenInfo::is_compatible, m_buffer_processors, m_enforcement_strategy, m_token_filter_mask, MayaFlux::Buffers::OVERRIDE_REJECT, MayaFlux::Buffers::OVERRIDE_SKIP, MayaFlux::Buffers::ProcessorTokenInfo::pending_removal, MayaFlux::Buffers::ProcessorTokenInfo::processor, MayaFlux::Buffers::TokenCompatibilityReport::processor_infos, MayaFlux::Buffers::ProcessorTokenInfo::processor_token, and MayaFlux::Buffers::ProcessorTokenInfo::will_be_skipped.

+ Here is the call graph for this function: