Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
pulp::interchange::ExportPlan Class Reference

A document measured against one format's capability table: what survives, and what it costs. More...

#include <export_plan.hpp>

Public Member Functions

Format format () const noexcept
const timeline::Project & project () const noexcept
const ConceptCensus & census () const noexcept
std::span< const Concept > representable () const noexcept
 Concept kinds present in the document that the format supports in isolation.
const LossManifest & losses () const noexcept
bool is_lossless () const noexcept
 True when no model-detectable concept needs a lossy format row.
std::vector< Concept > required_consent () const
 The concepts a caller must accept for run_export to proceed.

Friends

ExportPlan plan_export (const timeline::Project &project, Format format, const CensusLimits &limits={})
 Measure a document against a format.

Detailed Description

A document measured against one format's capability table: what survives, and what it costs.

A plan is only obtainable from plan_export, and run_export only accepts a plan. That is what makes the loss accounting unskippable – there is no one-shot entry point that writes an artifact without producing the plan first within the consent-gated interchange adapter surface, because no other interchange code can construct one. Strict raw format codecs may remain as separate APIs for callers that want refusal rather than planned loss.

Member Function Documentation

◆ census()

const ConceptCensus & pulp::interchange::ExportPlan::census ( ) const
inlinenoexcept

◆ format()

Format pulp::interchange::ExportPlan::format ( ) const
inlinenoexcept

◆ is_lossless()

bool pulp::interchange::ExportPlan::is_lossless ( ) const
inlinenoexcept

True when no model-detectable concept needs a lossy format row.

This is not byte-for-byte or identity-preserving round-trip equivalence.

◆ losses()

const LossManifest & pulp::interchange::ExportPlan::losses ( ) const
inlinenoexcept

◆ project()

const timeline::Project & pulp::interchange::ExportPlan::project ( ) const
inlinenoexcept

◆ representable()

std::span< const Concept > pulp::interchange::ExportPlan::representable ( ) const
inlinenoexcept

Concept kinds present in the document that the format supports in isolation.

This is concept-level capability, not an instance survivor projection: a supported note inside a dropped container is still listed.

◆ required_consent()

std::vector< Concept > pulp::interchange::ExportPlan::required_consent ( ) const

The concepts a caller must accept for run_export to proceed.

◆ plan_export

ExportPlan plan_export ( const timeline::Project & project,
Format format,
const CensusLimits & limits = {} )
friend

Measure a document against a format.

Pure: no I/O, no writer, no failure mode – a census and a table lookup always produce an answer, and an answer that says "everything is lost" is still a plan.


The documentation for this class was generated from the following file:
  • /home/runner/work/pulp/pulp/core/interchange/include/pulp/interchange/export_plan.hpp