12#ifndef FDL_HANDLES_INTERNAL_H
13#define FDL_HANDLES_INTERNAL_H
15#include <jsoncons/json.hpp>
17#include <unordered_map>
32 [[nodiscard]] jsoncons::ojson*
node()
const;
40 [[nodiscard]] jsoncons::ojson*
node()
const;
48 [[nodiscard]] jsoncons::ojson*
node()
const;
57 [[nodiscard]] jsoncons::ojson*
node()
const;
67 [[nodiscard]] jsoncons::ojson*
node()
const;
75 [[nodiscard]] jsoncons::ojson*
node()
const;
83 [[nodiscard]] jsoncons::ojson*
node()
const;
97inline uint64_t
pack_key(uint32_t a, uint32_t b) {
98 return (
static_cast<uint64_t
>(a) << fdl::constants::kPackKey2Shift) | b;
108inline uint64_t
pack_key3(uint32_t a, uint32_t b, uint32_t c) {
109 return (
static_cast<uint64_t
>(a) << fdl::constants::kPackKey3HighShift) |
110 (
static_cast<uint64_t
>(b) << fdl::constants::kPackKey3MidShift) | c;
124 std::vector<std::unique_ptr<fdl_context>>
contexts;
129 std::vector<std::unique_ptr<fdl_clip_id>>
clip_ids;
139 std::unordered_map<uint64_t, fdl_framing_decision*>
fd_by_key;
Named constants replacing magic numbers throughout the FDL core library.
uint64_t pack_key3(uint32_t a, uint32_t b, uint32_t c)
Pack three indices into a 64-bit map key (20 bits each, a in high bits).
Definition fdl_handles.h:108
uint64_t pack_key(uint32_t a, uint32_t b)
Pack two 32-bit indices into a 64-bit map key.
Definition fdl_handles.h:97
Handle to a canvas template (root-level, single index).
Definition fdl_handles.h:44
uint32_t ct_index
Index into root "canvas_templates" array.
Definition fdl_handles.h:46
fdl_doc * owner
Owning document.
Definition fdl_handles.h:45
jsoncons::ojson * node() const
Resolve handle to its JSON node.
Definition fdl_handles.cpp:78
Handle to a canvas (child of context, two-level index).
Definition fdl_handles.h:52
jsoncons::ojson * node() const
Resolve handle to its JSON node.
Definition fdl_handles.cpp:82
fdl_doc * owner
Owning document.
Definition fdl_handles.h:53
uint32_t cvs_index
Index into context's "canvases" array.
Definition fdl_handles.h:55
uint32_t ctx_index
Index into "contexts" array.
Definition fdl_handles.h:54
Handle to a clip ID (child of context, one-level index).
Definition fdl_handles.h:71
jsoncons::ojson * node() const
Resolve handle to its JSON node (context's "clip_id" object).
Definition fdl_handles.cpp:90
uint32_t ctx_index
Index into "contexts" array.
Definition fdl_handles.h:73
fdl_doc * owner
Owning document.
Definition fdl_handles.h:72
Handle to a context (root-level, single index).
Definition fdl_handles.h:36
fdl_doc * owner
Owning document.
Definition fdl_handles.h:37
jsoncons::ojson * node() const
Resolve handle to its JSON node.
Definition fdl_handles.cpp:74
uint32_t ctx_index
Index into root "contexts" array.
Definition fdl_handles.h:38
Opaque handle definition — shared across ABI translation units.
Definition fdl_doc.h:82
Handle to a file sequence (grandchild of context, via clip_id, one-level index).
Definition fdl_handles.h:79
uint32_t ctx_index
Index into "contexts" array.
Definition fdl_handles.h:81
jsoncons::ojson * node() const
Resolve handle to its JSON node (clip_id's "sequence" object).
Definition fdl_handles.cpp:94
fdl_doc * owner
Owning document.
Definition fdl_handles.h:80
Handle to a framing decision (child of canvas, three-level index).
Definition fdl_handles.h:61
uint32_t fd_index
Index into canvas's "framing_decisions" array.
Definition fdl_handles.h:65
uint32_t cvs_index
Index into context's "canvases" array.
Definition fdl_handles.h:64
jsoncons::ojson * node() const
Resolve handle to its JSON node.
Definition fdl_handles.cpp:86
uint32_t ctx_index
Index into "contexts" array.
Definition fdl_handles.h:63
fdl_doc * owner
Owning document.
Definition fdl_handles.h:62
Handle to a framing intent (root-level, single index).
Definition fdl_handles.h:28
jsoncons::ojson * node() const
Resolve handle to its JSON node.
Definition fdl_handles.cpp:70
uint32_t fi_index
Index into root "framing_intents" array.
Definition fdl_handles.h:30
fdl_doc * owner
Owning document.
Definition fdl_handles.h:29
Cache container for all handle types — lives on fdl_doc.
Definition fdl_handles.h:121
std::unordered_map< uint64_t, fdl_canvas * > cvs_by_key
Canvas dedup map (packed ctx+cvs key).
Definition fdl_handles.h:138
std::unordered_map< uint32_t, fdl_canvas_template * > ct_by_index
Canvas template dedup map.
Definition fdl_handles.h:137
std::vector< std::unique_ptr< fdl_canvas_template > > canvas_templates
Canvas template handles.
Definition fdl_handles.h:128
std::vector< std::unique_ptr< fdl_file_sequence > > file_sequences
File sequence handles.
Definition fdl_handles.h:130
std::unordered_map< uint32_t, fdl_context * > ctx_by_index
Context dedup map.
Definition fdl_handles.h:135
std::vector< std::unique_ptr< fdl_canvas > > canvases
Canvas handles.
Definition fdl_handles.h:125
std::unordered_map< uint64_t, fdl_framing_decision * > fd_by_key
Framing decision dedup map (packed key).
Definition fdl_handles.h:139
std::vector< std::unique_ptr< fdl_clip_id > > clip_ids
Clip ID handles.
Definition fdl_handles.h:129
std::unordered_map< uint32_t, fdl_framing_intent * > fi_by_index
Framing intent dedup map.
Definition fdl_handles.h:136
std::unordered_map< uint32_t, fdl_clip_id * > cid_by_ctx
Clip ID dedup map (by context index).
Definition fdl_handles.h:140
void clear()
Clear all handles and deduplication maps.
Definition fdl_handles.h:145
std::vector< std::unique_ptr< fdl_context > > contexts
Context handles.
Definition fdl_handles.h:124
std::vector< std::unique_ptr< fdl_framing_decision > > framing_decisions
Framing decision handles.
Definition fdl_handles.h:126
std::unordered_map< uint32_t, fdl_file_sequence * > seq_by_ctx
File sequence dedup map (by context index).
Definition fdl_handles.h:141
std::vector< std::unique_ptr< fdl_framing_intent > > framing_intents
Framing intent handles.
Definition fdl_handles.h:127