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::ConditionalSubChunkStrategy< T > Class Template Reference

#include <sub_chunk_strategies.hpp>

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

Public Member Functions

 ConditionalSubChunkStrategy (std::shared_ptr< ChunkStrategy< T > > strategy, std::function< bool(const std::vector< T > &)> condition, size_t min_size)
 
std::vector< std::vector< T > > apply (const std::vector< T > &data) const override
 

Private Attributes

std::shared_ptr< ChunkStrategy< T > > base_strategy_
 
std::function< bool(const std::vector< T > &)> condition_
 
size_t min_size_
 

Detailed Description

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

Definition at line 244 of file sub_chunk_strategies.hpp.

Constructor & Destructor Documentation

◆ ConditionalSubChunkStrategy()

template<typename T >
chunk_processing::ConditionalSubChunkStrategy< T >::ConditionalSubChunkStrategy ( std::shared_ptr< ChunkStrategy< T > >  strategy,
std::function< bool(const std::vector< T > &)>  condition,
size_t  min_size 
)
inline

Definition at line 251 of file sub_chunk_strategies.hpp.

254 : base_strategy_(strategy), condition_(condition), min_size_(min_size) {
255 // Validate inputs
256 if (!strategy) {
257 throw std::invalid_argument("Base strategy cannot be null");
258 }
259 if (!condition) {
260 throw std::invalid_argument("Condition function cannot be null");
261 }
262 if (min_size == 0) {
263 throw std::invalid_argument("Minimum size must be positive");
264 }
265 }
std::shared_ptr< ChunkStrategy< T > > base_strategy_
std::function< bool(const std::vector< T > &)> condition_

Member Function Documentation

◆ apply()

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

Implements chunk_processing::ChunkStrategy< T >.

Definition at line 267 of file sub_chunk_strategies.hpp.

267 {
268 if (data.empty()) {
269 return {};
270 }
271 if (data.size() <= min_size_) {
272 return {data};
273 }
274
275 try {
276 // Safely check condition and apply strategy
277 if (condition_ && condition_(data)) {
278 if (base_strategy_) {
279 return base_strategy_->apply(data);
280 }
281 }
282 } catch (const std::exception& e) {
283 throw std::runtime_error(std::string("Error in conditional strategy: ") + e.what());
284 }
285
286 return {data};
287 }

References chunk_processing::ConditionalSubChunkStrategy< T >::base_strategy_, chunk_processing::ConditionalSubChunkStrategy< T >::condition_, and chunk_processing::ConditionalSubChunkStrategy< T >::min_size_.

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

Member Data Documentation

◆ base_strategy_

template<typename T >
std::shared_ptr<ChunkStrategy<T> > chunk_processing::ConditionalSubChunkStrategy< T >::base_strategy_
private

◆ condition_

template<typename T >
std::function<bool(const std::vector<T>&)> chunk_processing::ConditionalSubChunkStrategy< T >::condition_
private

◆ min_size_

template<typename T >
size_t chunk_processing::ConditionalSubChunkStrategy< T >::min_size_
private

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