MayaFlux 0.1.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 278 of file BufferProcessingChain.cpp.

279{
280 std::vector<TokenCompatibilityReport> reports;
281
282 for (const auto& [buffer, processors] : m_buffer_processors) {
283 TokenCompatibilityReport report;
284 report.buffer = buffer;
285 report.chain_preferred_token = m_token_filter_mask;
286 report.enforcement_strategy = m_enforcement_strategy;
287
288 for (const auto& processor : processors) {
289 ProcessorTokenInfo info;
290 info.processor = processor;
291 info.processor_token = processor->get_processing_token();
292 info.is_compatible = are_tokens_compatible(m_token_filter_mask, info.processor_token);
293 info.will_be_skipped = (m_enforcement_strategy == TokenEnforcementStrategy::OVERRIDE_SKIP && !info.is_compatible);
294 info.pending_removal = (m_enforcement_strategy == TokenEnforcementStrategy::OVERRIDE_REJECT && !info.is_compatible);
295
296 report.processor_infos.push_back(info);
297 }
298
299 reports.push_back(report);
300 }
301
302 return reports;
303}
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: