1 #ifndef __NDS_GAP_HANDLER_HH__
2 #define __NDS_GAP_HANDLER_HH__
6 #include "nds_buffer.hh"
8 #include "nds_export.hh"
10 #include "nds_memory.hh"
16 class delayed_gap_handler
19 delayed_gap_handler( ) =
default;
22 virtual ~delayed_gap_handler( ) =
default;
25 virtual void operator( )( ) = 0;
31 DLL_EXPORT gap_handler( ) =
default;
33 DLL_EXPORT
virtual ~gap_handler( ) =
default;
35 DLL_EXPORT
virtual std::unique_ptr< delayed_gap_handler >
36 fill_gap( buffer& cur_buffer,
37 buffer::size_type start_sample_offset,
38 buffer::size_type end_sample_offset )
const = 0;
40 DLL_EXPORT
virtual std::unique_ptr< gap_handler >
44 class fixed_point_gap_handler :
public gap_handler
65 DLL_EXPORT static_val(::int16_t int16val,
72 ::uint32_t uint32val );
74 DLL_EXPORT
explicit static_val( fixed_values spec );
76 DLL_EXPORT
explicit static_val(
double value = 0.0 );
80 DLL_EXPORT fixed_point_gap_handler( static_val::fixed_values spec )
82 DLL_EXPORT fixed_point_gap_handler(
const static_val& val )
84 DLL_EXPORT ~fixed_point_gap_handler( )
override =
default;
86 DLL_EXPORT std::unique_ptr< delayed_gap_handler >
87 fill_gap( buffer& cur_buffer,
88 buffer::size_type start_sample_offset,
89 buffer::size_type end_sample_offset )
const override;
91 DLL_EXPORT std::unique_ptr< gap_handler >
92 clone( )
const override
94 return NDS::detail::make_unique< fixed_point_gap_handler >(
102 class continuation_gap_handler :
public fixed_point_gap_handler
105 DLL_EXPORT continuation_gap_handler(
const static_val default_val )
106 : fixed_point_gap_handler( default_val ){};
107 DLL_EXPORT ~continuation_gap_handler( )
override =
default;
109 DLL_EXPORT std::unique_ptr< delayed_gap_handler >
110 fill_gap( buffer& cur_buffer,
111 buffer::size_type start_sample_offset,
112 buffer::size_type end_sample_offset )
const override;
114 DLL_EXPORT std::unique_ptr< gap_handler >
115 clone( )
const override
117 return NDS::detail::make_unique< continuation_gap_handler >(
122 class abort_gap_handler :
public gap_handler
125 DLL_EXPORT abort_gap_handler( ){};
126 DLL_EXPORT ~abort_gap_handler( )
override =
default;
128 DLL_EXPORT std::unique_ptr< delayed_gap_handler >
129 fill_gap( buffer& cur_buffer,
130 buffer::size_type start_sample_offset,
131 buffer::size_type end_sample_offset )
const override;
132 DLL_EXPORT std::unique_ptr< gap_handler >
133 clone( )
const override
135 return std::unique_ptr< gap_handler >(
136 NDS::detail::make_unique< abort_gap_handler >( ) );
142 #endif // __NDS_GAP_HANDLER_HH__