Advanced Chunk Processing Library 0.2.0
A comprehensive C++ library for advanced data chunking strategies and processing operations
Loading...
Searching...
No Matches
chunk_processing::PatternBasedStrategy< T > Class Template Reference

#include <chunk_strategies.hpp>

+ Inheritance diagram for chunk_processing::PatternBasedStrategy< T >:
+ Collaboration diagram for chunk_processing::PatternBasedStrategy< T >:

Public Member Functions

 PatternBasedStrategy (size_t pattern_size)
 
 PatternBasedStrategy (std::function< bool(T)> predicate)
 
std::vector< std::vector< T > > apply (const std::vector< T > &data) const override
 

Private Attributes

size_t pattern_size_
 
std::function< bool(T)> predicate_
 

Detailed Description

template<typename T>
class chunk_processing::PatternBasedStrategy< T >

Definition at line 39 of file chunk_strategies.hpp.

Constructor & Destructor Documentation

◆ PatternBasedStrategy() [1/2]

template<typename T >
chunk_processing::PatternBasedStrategy< T >::PatternBasedStrategy ( std::function< bool(T)>  predicate)
inlineexplicit

Definition at line 46 of file chunk_strategies.hpp.

47 : predicate_(std::move(predicate)), pattern_size_(0) {}

◆ PatternBasedStrategy() [2/2]

template<typename T >
chunk_processing::PatternBasedStrategy< T >::PatternBasedStrategy ( size_t  pattern_size)
inlineexplicit

Definition at line 50 of file chunk_strategies.hpp.

50: pattern_size_(pattern_size) {}

Member Function Documentation

◆ apply()

template<typename T >
std::vector< std::vector< T > > chunk_processing::PatternBasedStrategy< T >::apply ( const std::vector< T > &  data) const
inlineoverridevirtual

Implements chunk_processing::ChunkStrategy< T >.

Definition at line 52 of file chunk_strategies.hpp.

52 {
53 std::vector<std::vector<T>> result;
54 if (data.empty())
55 return result;
56
57 if (pattern_size_ > 0) {
58 // Size-based pattern chunking
59 for (size_t i = 0; i < data.size(); i += pattern_size_) {
60 size_t end = std::min(i + pattern_size_, data.size());
61 result.emplace_back(data.begin() + i, data.begin() + end);
62 }
63 } else {
64 // Predicate-based chunking
65 std::vector<T> current_chunk;
66 for (const auto& value : data) {
67 if (!current_chunk.empty() && predicate_(value)) {
68 result.push_back(current_chunk);
69 current_chunk.clear();
70 }
71 current_chunk.push_back(value);
72 }
73 if (!current_chunk.empty()) {
74 result.push_back(current_chunk);
75 }
76 }
77 return result;
78 }

References chunk_processing::PatternBasedStrategy< T >::pattern_size_, and chunk_processing::PatternBasedStrategy< T >::predicate_.

Referenced by TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), and TEST_F().

Member Data Documentation

◆ pattern_size_

template<typename T >
size_t chunk_processing::PatternBasedStrategy< T >::pattern_size_
private

◆ predicate_

template<typename T >
std::function<bool(T)> chunk_processing::PatternBasedStrategy< T >::predicate_
private

The documentation for this class was generated from the following file: