MayaFlux 0.4.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 332 of file BufferProcessingChain.cpp.

333{
334 std::vector<TokenCompatibilityReport> reports;
335
336 for (const auto& [buffer, processors] : m_buffer_processors) {
337 TokenCompatibilityReport report;
338 report.buffer = buffer;
339 report.chain_preferred_token = m_token_filter_mask;
340 report.enforcement_strategy = m_enforcement_strategy;
341
342 for (const auto& processor : processors) {
343 ProcessorTokenInfo info;
344 info.processor = processor;
345 info.processor_token = processor->get_processing_token();
346 info.is_compatible = are_tokens_compatible(m_token_filter_mask, info.processor_token);
347 info.will_be_skipped = (m_enforcement_strategy == TokenEnforcementStrategy::OVERRIDE_SKIP && !info.is_compatible);
348 info.pending_removal = (m_enforcement_strategy == TokenEnforcementStrategy::OVERRIDE_REJECT && !info.is_compatible);
349
350 report.processor_infos.push_back(info);
351 }
352
353 reports.push_back(report);
354 }
355
356 return reports;
357}
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: