Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
document_session.hpp File Reference
#include <pulp/timeline/command.hpp>
#include <pulp/timeline/journal.hpp>
#include <pulp/timeline/undo.hpp>
#include <atomic>
#include <cstddef>
#include <cstdint>
#include <limits>
#include <memory>
#include <optional>
#include <type_traits>

Go to the source code of this file.

Classes

struct  pulp::timeline::SessionLimits
 Resource ceilings for one mutable document session. More...
struct  pulp::timeline::CommandAuthority
 The authority one command requires, as a class and intent pair. More...
struct  pulp::timeline::WriterCapabilityMask
 Fixed authority of one writer over command classes and retained size. More...
class  pulp::timeline::WriterToken
 Move-only authority for submitting transactions to one DocumentSession. More...
class  pulp::timeline::WriterToken::Provenance
 Opaque identity of one writer authority within one document session. More...
struct  pulp::timeline::DocumentView
 Atomically observed immutable project snapshot and its matching revision. More...
class  pulp::timeline::DocumentSession
 Thread-safe owner of a revisioned Timeline document. More...

Namespaces

namespace  pulp
namespace  pulp::timeline
namespace  pulp::timeline::detail

Enumerations

enum class  pulp::timeline::CommandClass : std::uint8_t {
  pulp::timeline::CommandClass::Clip , pulp::timeline::CommandClass::Note , pulp::timeline::CommandClass::Automation , pulp::timeline::CommandClass::Track ,
  pulp::timeline::CommandClass::Take , pulp::timeline::CommandClass::Scene , pulp::timeline::CommandClass::Sequence , pulp::timeline::CommandClass::Device ,
  pulp::timeline::CommandClass::Annotation , pulp::timeline::CommandClass::Timing , pulp::timeline::CommandClass::Asset
}
 The part of the document one command governs. More...
enum class  pulp::timeline::CommandIntent : std::uint8_t { pulp::timeline::CommandIntent::Create , pulp::timeline::CommandIntent::Modify , pulp::timeline::CommandIntent::Remove }
 What a command does to the entity its class names. More...

Functions

template<class T>
constexpr CommandAuthority pulp::timeline::command_authority_of () noexcept
 Returns the primary authority command type T requires.
CommandAuthority pulp::timeline::command_authority (const Command &command) noexcept
 Returns the primary authority command requires.
constexpr std::uint64_t pulp::timeline::capability_bit (CommandAuthority authority) noexcept
 Returns the single mask bit representing authority.
constexpr bool pulp::timeline::allows (const WriterCapabilityMask &mask, CommandAuthority authority) noexcept
 Reports whether mask permits authority.
constexpr WriterCapabilityMask pulp::timeline::deny (WriterCapabilityMask mask, CommandClass command_class, CommandIntent intent) noexcept
 Returns mask with one class/intent pair denied.
constexpr WriterCapabilityMask pulp::timeline::allow (WriterCapabilityMask mask, CommandClass command_class, CommandIntent intent) noexcept
 Returns mask with one class/intent pair permitted.
constexpr WriterCapabilityMask pulp::timeline::unrestricted_capabilities () noexcept
 Returns the legacy authority carried by writers registered without a mask.
constexpr WriterCapabilityMask pulp::timeline::non_destructive_capabilities () noexcept
 Returns a mask permitting every class but denying every destructive intent.

Variables

constexpr std::size_t pulp::timeline::kCommandClassCount = 11
 Number of distinct command classes.
constexpr std::size_t pulp::timeline::kCommandIntentCount = 3
 Number of distinct command intents.
template<class>
constexpr bool pulp::timeline::detail::unclassified_command_v = false
constexpr std::uint64_t pulp::timeline::kAllCommandAuthorities
 Every class/intent pair set.