MayaFlux 1.0.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ get_segments_data()

std::vector< CompositeArray > MayaFlux::Kakshya::CompositeContainer::get_segments_data ( const std::vector< RegionSegment > &  segments) const
overridevirtual

Copy valid one-dimensional segments into separate arrays.

Parameters
segmentsSource regions with offsets and element counts.
Returns
One owning array per valid segment; shorter than segments.size() when a segment is malformed, out of bounds, or fails to copy, since failures are skipped rather than represented as an empty entry.

Implements MayaFlux::Kakshya::NDDataContainer< CompositeArray >.

Definition at line 99 of file CompositeContainer.cpp.

100{
101 std::vector<CompositeArray> result;
102 result.reserve(segments.size());
103
104 for (const auto& segment : segments) {
105 const auto& region = segment.source_region;
106
107 if (region.start_coordinates.size() != 1 || region.end_coordinates.size() != 1
108 || segment.offset_in_region.size() != 1 || segment.segment_size.size() != 1)
109 continue;
110
111 const uint64_t source_start = region.start_coordinates[0];
112 const uint64_t source_end = region.end_coordinates[0];
113 const uint64_t offset = segment.offset_in_region[0];
114 const uint64_t count = segment.segment_size[0];
115
116 if (source_start > source_end || offset > source_end - source_start || count == 0)
117 continue;
118
119 const uint64_t start = source_start + offset;
120 if (count - 1 > source_end - start)
121 continue;
122
123 auto copied = get_region_data(Region(
124 std::vector<uint64_t> { start }, std::vector<uint64_t> { start + count - 1 }));
125
126 if (!copied.empty())
127 result.push_back(std::move(copied.front()));
128 }
129 return result;
130}
uint64_t offset
Definition Composite.cpp:10
size_t count
std::vector< CompositeArray > get_region_data(const Region &region) const override
Copy a one-dimensional Region into an owning CompositeArray.

References count, get_region_data(), and offset.

+ Here is the call graph for this function: