MayaFlux 1.0.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 382 of file BufferProcessingChain.cpp.

383{
384 std::vector<TokenCompatibilityReport> reports;
385
386 for (const auto& [buffer, processors] : m_buffer_processors) {
387 TokenCompatibilityReport report;
388 report.buffer = buffer;
389 report.chain_preferred_token = m_token_filter_mask;
390 report.enforcement_strategy = m_enforcement_strategy;
391
392 for (const auto& processor : processors) {
393 ProcessorTokenInfo info;
394 info.processor = processor;
395 info.processor_token = processor->get_processing_token();
396 info.is_compatible = are_tokens_compatible(m_token_filter_mask, info.processor_token);
397 info.will_be_skipped = (m_enforcement_strategy == TokenEnforcementStrategy::OVERRIDE_SKIP && !info.is_compatible);
398 info.pending_removal = (m_enforcement_strategy == TokenEnforcementStrategy::OVERRIDE_REJECT && !info.is_compatible);
399
400 report.processor_infos.push_back(info);
401 }
402
403 reports.push_back(report);
404 }
405
406 return reports;
407}
std::shared_ptr< NetworkGeometryBuffer > buffer
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, 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: