summaryrefslogtreecommitdiff
path: root/gnuradio-core/src
diff options
context:
space:
mode:
Diffstat (limited to 'gnuradio-core/src')
-rw-r--r--gnuradio-core/src/lib/CMakeLists.txt106
-rw-r--r--gnuradio-core/src/lib/ConfigChecks.cmake212
-rw-r--r--gnuradio-core/src/lib/filter/CMakeLists.txt351
-rw-r--r--gnuradio-core/src/lib/filter/ccomplex_dotprod_generic.h4
-rw-r--r--gnuradio-core/src/lib/filter/complex_dotprod_generic.h4
-rw-r--r--gnuradio-core/src/lib/filter/dotprod_fff_altivec.h1
-rw-r--r--gnuradio-core/src/lib/filter/dotprod_fff_armv7_a.h1
-rwxr-xr-xgnuradio-core/src/lib/filter/generate_gr_fir_util.py5
-rw-r--r--gnuradio-core/src/lib/filter/gr_adaptive_fir_ccc.h3
-rw-r--r--gnuradio-core/src/lib/filter/gr_adaptive_fir_ccf.h3
-rw-r--r--gnuradio-core/src/lib/filter/gr_altivec.h5
-rw-r--r--gnuradio-core/src/lib/filter/gr_cma_equalizer_cc.h63
-rw-r--r--gnuradio-core/src/lib/filter/gr_cpu.h6
-rw-r--r--gnuradio-core/src/lib/filter/gr_dc_blocker_cc.h9
-rw-r--r--gnuradio-core/src/lib/filter/gr_dc_blocker_ff.h9
-rw-r--r--gnuradio-core/src/lib/filter/gr_fft_filter_ccc.h7
-rw-r--r--gnuradio-core/src/lib/filter/gr_fft_filter_fff.h7
-rw-r--r--gnuradio-core/src/lib/filter/gr_filter_delay_fc.h7
-rw-r--r--gnuradio-core/src/lib/filter/gr_fir_XXX.h.t3
-rw-r--r--gnuradio-core/src/lib/filter/gr_fir_XXX_generic.h.t3
-rw-r--r--gnuradio-core/src/lib/filter/gr_fir_ccc_simd.h3
-rw-r--r--gnuradio-core/src/lib/filter/gr_fir_ccc_x86.h7
-rw-r--r--gnuradio-core/src/lib/filter/gr_fir_ccf_simd.h3
-rw-r--r--gnuradio-core/src/lib/filter/gr_fir_ccf_x86.h5
-rw-r--r--gnuradio-core/src/lib/filter/gr_fir_fcc_simd.h3
-rw-r--r--gnuradio-core/src/lib/filter/gr_fir_fcc_x86.h5
-rw-r--r--gnuradio-core/src/lib/filter/gr_fir_fff_altivec.h3
-rw-r--r--gnuradio-core/src/lib/filter/gr_fir_fff_armv7_a.h3
-rw-r--r--gnuradio-core/src/lib/filter/gr_fir_fff_simd.h3
-rw-r--r--gnuradio-core/src/lib/filter/gr_fir_fff_x86.h5
-rw-r--r--gnuradio-core/src/lib/filter/gr_fir_filter_XXX.h.t7
-rw-r--r--gnuradio-core/src/lib/filter/gr_fir_fsf_simd.h3
-rw-r--r--gnuradio-core/src/lib/filter/gr_fir_fsf_x86.h5
-rw-r--r--gnuradio-core/src/lib/filter/gr_fir_scc_simd.h3
-rw-r--r--gnuradio-core/src/lib/filter/gr_fir_scc_x86.h7
-rw-r--r--gnuradio-core/src/lib/filter/gr_fir_sysconfig_armv7_a.h3
-rw-r--r--gnuradio-core/src/lib/filter/gr_fir_sysconfig_powerpc.h3
-rw-r--r--gnuradio-core/src/lib/filter/gr_fir_sysconfig_x86.h3
-rw-r--r--gnuradio-core/src/lib/filter/gr_fractional_interpolator_cc.h7
-rw-r--r--gnuradio-core/src/lib/filter/gr_fractional_interpolator_ff.h7
-rw-r--r--gnuradio-core/src/lib/filter/gr_freq_xlating_fir_filter_XXX.h.t7
-rw-r--r--gnuradio-core/src/lib/filter/gr_goertzel_fc.h7
-rw-r--r--gnuradio-core/src/lib/filter/gr_hilbert_fc.h7
-rw-r--r--gnuradio-core/src/lib/filter/gr_iir_filter_ffd.h7
-rw-r--r--gnuradio-core/src/lib/filter/gr_interp_fir_filter_XXX.h.t7
-rw-r--r--gnuradio-core/src/lib/filter/gr_pfb_arb_resampler_ccf.h7
-rw-r--r--gnuradio-core/src/lib/filter/gr_pfb_arb_resampler_fff.h7
-rw-r--r--gnuradio-core/src/lib/filter/gr_pfb_channelizer_ccf.h7
-rw-r--r--gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h7
-rw-r--r--gnuradio-core/src/lib/filter/gr_pfb_clock_sync_fff.h7
-rw-r--r--gnuradio-core/src/lib/filter/gr_pfb_decimator_ccf.h7
-rw-r--r--gnuradio-core/src/lib/filter/gr_pfb_interpolator_ccf.h7
-rw-r--r--gnuradio-core/src/lib/filter/gr_pfb_synthesis_filterbank_ccf.h7
-rw-r--r--gnuradio-core/src/lib/filter/gr_rational_resampler_base_XXX.h.t7
-rw-r--r--gnuradio-core/src/lib/filter/gr_rotator.h3
-rw-r--r--gnuradio-core/src/lib/filter/gr_sincos.h6
-rw-r--r--gnuradio-core/src/lib/filter/gr_single_pole_iir.h1
-rw-r--r--gnuradio-core/src/lib/filter/gr_single_pole_iir_filter_cc.h7
-rw-r--r--gnuradio-core/src/lib/filter/gr_single_pole_iir_filter_ff.h7
-rw-r--r--gnuradio-core/src/lib/filter/gri_fft_filter_ccc_generic.h3
-rw-r--r--gnuradio-core/src/lib/filter/gri_fft_filter_ccc_sse.h3
-rw-r--r--gnuradio-core/src/lib/filter/gri_fft_filter_fff_generic.h3
-rw-r--r--gnuradio-core/src/lib/filter/gri_fft_filter_fff_sse.h3
-rw-r--r--gnuradio-core/src/lib/filter/gri_fir_filter_with_buffer_XXX.h.t3
-rw-r--r--gnuradio-core/src/lib/filter/gri_goertzel.h3
-rw-r--r--gnuradio-core/src/lib/filter/gri_iir.h1
-rw-r--r--gnuradio-core/src/lib/filter/gri_mmse_fir_interpolator.h3
-rw-r--r--gnuradio-core/src/lib/filter/gri_mmse_fir_interpolator_cc.h3
-rw-r--r--gnuradio-core/src/lib/filter/qa_filter.h3
-rw-r--r--gnuradio-core/src/lib/general/CMakeLists.txt294
-rw-r--r--gnuradio-core/src/lib/general/complex_vec_test.h17
-rw-r--r--gnuradio-core/src/lib/general/gr_additive_scrambler_bb.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_agc2_cc.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_agc2_ff.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_agc_cc.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_agc_ff.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_align_on_samplenumbers_ss.h9
-rw-r--r--gnuradio-core/src/lib/general/gr_annotator_1to1.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_annotator_alltoall.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_bin_statistics_f.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_burst_tagger.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_bytes_to_syms.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_char_to_float.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_check_counting_s.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_check_lfsr_32k_s.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_circular_file.h6
-rw-r--r--gnuradio-core/src/lib/general/gr_complex_to_interleaved_short.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_complex_to_xxx.h37
-rw-r--r--gnuradio-core/src/lib/general/gr_conjugate_cc.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_constants.h11
-rw-r--r--gnuradio-core/src/lib/general/gr_constellation_decoder_cb.h66
-rw-r--r--gnuradio-core/src/lib/general/gr_copy.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_core_api.h33
-rw-r--r--gnuradio-core/src/lib/general/gr_correlate_access_code_tag_bb.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_costas_loop_cc.h146
-rw-r--r--gnuradio-core/src/lib/general/gr_count_bits.h10
-rw-r--r--gnuradio-core/src/lib/general/gr_cpfsk_bc.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_cpm.cc8
-rw-r--r--gnuradio-core/src/lib/general/gr_cpm.h3
-rw-r--r--gnuradio-core/src/lib/general/gr_ctcss_squelch_ff.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_decode_ccsds_27_fb.h9
-rw-r--r--gnuradio-core/src/lib/general/gr_deinterleave.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_delay.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_descrambler_bb.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_diff_decoder_bb.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_diff_encoder_bb.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_diff_phasor_cc.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_dpll_bb.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_encode_ccsds_27_bb.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_expj.h1
-rw-r--r--gnuradio-core/src/lib/general/gr_fake_channel_coder_pp.h13
-rw-r--r--gnuradio-core/src/lib/general/gr_feedforward_agc_cc.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_feval.h17
-rw-r--r--gnuradio-core/src/lib/general/gr_fft_vcc.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_fft_vcc_fftw.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_fft_vfc.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_firdes.h3
-rw-r--r--gnuradio-core/src/lib/general/gr_float_to_char.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_float_to_complex.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_float_to_short.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_float_to_uchar.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_fmdet_cf.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_framer_sink_1.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_frequency_modulator_fc.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_fxpt.h5
-rw-r--r--gnuradio-core/src/lib/general/gr_fxpt_nco.h3
-rw-r--r--gnuradio-core/src/lib/general/gr_fxpt_vco.h3
-rw-r--r--gnuradio-core/src/lib/general/gr_glfsr_source_b.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_glfsr_source_f.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_head.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_int_to_float.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_interleave.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_interleaved_short_to_complex.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_iqcomp_cc.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_keep_one_in_n.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_kludge_copy.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_lfsr_32k_source_s.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_lms_dfe_cc.h65
-rw-r--r--gnuradio-core/src/lib/general/gr_lms_dfe_ff.h63
-rw-r--r--gnuradio-core/src/lib/general/gr_log2_const.h1
-rw-r--r--gnuradio-core/src/lib/general/gr_map_bb.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_math.h3
-rw-r--r--gnuradio-core/src/lib/general/gr_misc.h9
-rw-r--r--gnuradio-core/src/lib/general/gr_nlog10_ff.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_nop.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_null_sink.h8
-rw-r--r--gnuradio-core/src/lib/general/gr_null_source.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_ofdm_bpsk_demapper.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_ofdm_frame_sink2.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_pa_2x2_phase_combiner.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_packet_sink.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_peak_detector2_fb.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_phase_modulator_fc.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_pll_carriertracking_cc.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_pll_freqdet_cf.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_pll_refout_cc.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_pn_correlator_cc.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_prefs.h3
-rw-r--r--gnuradio-core/src/lib/general/gr_probe_avg_mag_sqrd_c.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_probe_avg_mag_sqrd_cf.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_probe_avg_mag_sqrd_f.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_probe_density_b.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_probe_mpsk_snr_c.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_probe_signal_f.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_pwr_squelch_cc.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_pwr_squelch_ff.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_quadrature_demod_cf.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_rail_ff.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_random.h3
-rw-r--r--gnuradio-core/src/lib/general/gr_regenerate_bb.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_remez.h3
-rw-r--r--gnuradio-core/src/lib/general/gr_repeat.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_reverse.h1
-rw-r--r--gnuradio-core/src/lib/general/gr_rms_cf.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_rms_ff.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_scrambler_bb.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_short_to_float.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_simple_correlator.cc9
-rw-r--r--gnuradio-core/src/lib/general/gr_simple_correlator.h8
-rw-r--r--gnuradio-core/src/lib/general/gr_simple_framer.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_simple_squelch_cc.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_skiphead.h12
-rw-r--r--gnuradio-core/src/lib/general/gr_squash_ff.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_squelch_base_cc.h3
-rw-r--r--gnuradio-core/src/lib/general/gr_squelch_base_ff.h3
-rw-r--r--gnuradio-core/src/lib/general/gr_stream_mux.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_stream_to_streams.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_stream_to_vector.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_streams_to_stream.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_streams_to_vector.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_stretch_ff.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_test.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_threshold_ff.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_throttle.h5
-rw-r--r--gnuradio-core/src/lib/general/gr_transcendental.h5
-rw-r--r--gnuradio-core/src/lib/general/gr_uchar_to_float.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_unpack_k_bits_bb.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_vco_f.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_vector_to_stream.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_vector_to_streams.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_wavelet_ff.h7
-rw-r--r--gnuradio-core/src/lib/general/gr_wvps_ff.h7
-rw-r--r--gnuradio-core/src/lib/general/gri_agc2_cc.h3
-rw-r--r--gnuradio-core/src/lib/general/gri_agc2_ff.h3
-rw-r--r--gnuradio-core/src/lib/general/gri_agc_cc.h3
-rw-r--r--gnuradio-core/src/lib/general/gri_agc_ff.h3
-rw-r--r--gnuradio-core/src/lib/general/gri_char_to_float.h6
-rw-r--r--gnuradio-core/src/lib/general/gri_control_loop.cc4
-rw-r--r--gnuradio-core/src/lib/general/gri_control_loop.h4
-rw-r--r--gnuradio-core/src/lib/general/gri_debugger_hook.h6
-rw-r--r--gnuradio-core/src/lib/general/gri_fft.cc13
-rw-r--r--gnuradio-core/src/lib/general/gri_fft.h9
-rw-r--r--gnuradio-core/src/lib/general/gri_float_to_char.h5
-rw-r--r--gnuradio-core/src/lib/general/gri_float_to_short.h5
-rw-r--r--gnuradio-core/src/lib/general/gri_float_to_uchar.h5
-rw-r--r--gnuradio-core/src/lib/general/gri_glfsr.h6
-rw-r--r--gnuradio-core/src/lib/general/gri_interleaved_short_to_complex.h3
-rw-r--r--gnuradio-core/src/lib/general/gri_lfsr.h3
-rw-r--r--gnuradio-core/src/lib/general/gri_lfsr_15_1_0.h6
-rw-r--r--gnuradio-core/src/lib/general/gri_lfsr_32k.h3
-rw-r--r--gnuradio-core/src/lib/general/gri_short_to_float.h6
-rw-r--r--gnuradio-core/src/lib/general/gri_uchar_to_float.h6
-rw-r--r--gnuradio-core/src/lib/general/malloc16.c1
-rw-r--r--gnuradio-core/src/lib/general/malloc16.h8
-rw-r--r--gnuradio-core/src/lib/general/qa_general.h3
-rw-r--r--gnuradio-core/src/lib/general/qa_gri_lfsr.cc9
-rw-r--r--gnuradio-core/src/lib/gengen/CMakeLists.txt179
-rw-r--r--gnuradio-core/src/lib/gengen/gr_add_XX.h.t7
-rw-r--r--gnuradio-core/src/lib/gengen/gr_add_const_XX.h.t7
-rw-r--r--[-rwxr-xr-x]gnuradio-core/src/lib/gengen/gr_add_const_vXX.h.t7
-rw-r--r--gnuradio-core/src/lib/gengen/gr_and_XX.h.t7
-rw-r--r--gnuradio-core/src/lib/gengen/gr_and_const_XX.h.t7
-rw-r--r--gnuradio-core/src/lib/gengen/gr_argmax_XX.h.t7
-rw-r--r--gnuradio-core/src/lib/gengen/gr_chunks_to_symbols_XX.h.t7
-rw-r--r--gnuradio-core/src/lib/gengen/gr_divide_XX.h.t7
-rw-r--r--gnuradio-core/src/lib/gengen/gr_integrate_XX.h.t7
-rw-r--r--gnuradio-core/src/lib/gengen/gr_max_XX.h.t7
-rw-r--r--gnuradio-core/src/lib/gengen/gr_moving_average_XX.h.t7
-rw-r--r--gnuradio-core/src/lib/gengen/gr_multiply_XX.h.t7
-rw-r--r--gnuradio-core/src/lib/gengen/gr_multiply_const_XX.h.t7
-rw-r--r--[-rwxr-xr-x]gnuradio-core/src/lib/gengen/gr_multiply_const_vXX.h.t7
-rw-r--r--gnuradio-core/src/lib/gengen/gr_mute_XX.h.t7
-rw-r--r--gnuradio-core/src/lib/gengen/gr_noise_source_X.h.t7
-rw-r--r--gnuradio-core/src/lib/gengen/gr_not_XX.h.t7
-rw-r--r--gnuradio-core/src/lib/gengen/gr_or_XX.h.t7
-rw-r--r--gnuradio-core/src/lib/gengen/gr_packed_to_unpacked_XX.h.t7
-rw-r--r--gnuradio-core/src/lib/gengen/gr_peak_detector_XX.h.t7
-rw-r--r--gnuradio-core/src/lib/gengen/gr_sample_and_hold_XX.h.t7
-rw-r--r--gnuradio-core/src/lib/gengen/gr_sig_source_X.h.t7
-rw-r--r--gnuradio-core/src/lib/gengen/gr_sub_XX.h.t7
-rw-r--r--gnuradio-core/src/lib/gengen/gr_unpacked_to_packed_XX.h.t7
-rw-r--r--gnuradio-core/src/lib/gengen/gr_vector_sink_X.h.t7
-rw-r--r--gnuradio-core/src/lib/gengen/gr_vector_source_X.h.t7
-rw-r--r--gnuradio-core/src/lib/gengen/gr_xor_XX.h.t7
-rw-r--r--gnuradio-core/src/lib/hier/CMakeLists.txt42
-rw-r--r--gnuradio-core/src/lib/hier/gr_channel_model.h7
-rw-r--r--gnuradio-core/src/lib/io/CMakeLists.txt108
-rw-r--r--gnuradio-core/src/lib/io/gr_file_descriptor_sink.h7
-rw-r--r--gnuradio-core/src/lib/io/gr_file_descriptor_source.h7
-rw-r--r--gnuradio-core/src/lib/io/gr_file_sink.h7
-rw-r--r--gnuradio-core/src/lib/io/gr_file_sink_base.h3
-rw-r--r--gnuradio-core/src/lib/io/gr_file_source.h7
-rw-r--r--gnuradio-core/src/lib/io/gr_histo_sink_f.h7
-rw-r--r--gnuradio-core/src/lib/io/gr_message_sink.h7
-rw-r--r--gnuradio-core/src/lib/io/gr_message_source.h11
-rw-r--r--gnuradio-core/src/lib/io/gr_oscope_guts.h3
-rw-r--r--gnuradio-core/src/lib/io/gr_oscope_sink_f.h7
-rw-r--r--gnuradio-core/src/lib/io/gr_oscope_sink_x.h3
-rw-r--r--gnuradio-core/src/lib/io/gr_tagged_file_sink.h7
-rw-r--r--gnuradio-core/src/lib/io/gr_udp_sink.h7
-rw-r--r--gnuradio-core/src/lib/io/gr_udp_source.h7
-rw-r--r--gnuradio-core/src/lib/io/gr_wavfile_sink.h7
-rw-r--r--gnuradio-core/src/lib/io/gr_wavfile_source.h7
-rw-r--r--gnuradio-core/src/lib/io/gri_wavfile.h1
-rw-r--r--gnuradio-core/src/lib/io/i2c.h3
-rw-r--r--gnuradio-core/src/lib/io/i2c_bbio.h3
-rw-r--r--gnuradio-core/src/lib/io/i2c_bbio_pp.h7
-rw-r--r--gnuradio-core/src/lib/io/i2c_bitbang.h7
-rw-r--r--gnuradio-core/src/lib/io/microtune_4702.h3
-rw-r--r--gnuradio-core/src/lib/io/microtune_4702_eval_board.h3
-rw-r--r--gnuradio-core/src/lib/io/microtune_4937.h3
-rw-r--r--gnuradio-core/src/lib/io/microtune_4937_eval_board.h3
-rw-r--r--gnuradio-core/src/lib/io/microtune_xxxx.h3
-rw-r--r--gnuradio-core/src/lib/io/microtune_xxxx_eval_board.h3
-rw-r--r--gnuradio-core/src/lib/io/ppio.h5
-rw-r--r--gnuradio-core/src/lib/io/ppio_ppdev.h5
-rw-r--r--gnuradio-core/src/lib/io/sdr_1000.h3
-rw-r--r--gnuradio-core/src/lib/missing/CMakeLists.txt32
-rw-r--r--gnuradio-core/src/lib/reed-solomon/CMakeLists.txt62
-rw-r--r--gnuradio-core/src/lib/reed-solomon/char.h11
-rw-r--r--gnuradio-core/src/lib/reed-solomon/decode_rs.c9
-rw-r--r--gnuradio-core/src/lib/reed-solomon/encode_rs.c1
-rw-r--r--gnuradio-core/src/lib/reed-solomon/exercise.c9
-rw-r--r--gnuradio-core/src/lib/reed-solomon/fixed.h6
-rw-r--r--gnuradio-core/src/lib/reed-solomon/int.h11
-rw-r--r--gnuradio-core/src/lib/reed-solomon/rs.h21
-rw-r--r--gnuradio-core/src/lib/runtime/CMakeLists.txt162
-rw-r--r--gnuradio-core/src/lib/runtime/gr_basic_block.h5
-rw-r--r--gnuradio-core/src/lib/runtime/gr_block.h5
-rw-r--r--gnuradio-core/src/lib/runtime/gr_block_detail.h11
-rw-r--r--gnuradio-core/src/lib/runtime/gr_block_executor.cc6
-rw-r--r--gnuradio-core/src/lib/runtime/gr_block_executor.h3
-rw-r--r--gnuradio-core/src/lib/runtime/gr_buffer.h19
-rw-r--r--gnuradio-core/src/lib/runtime/gr_dispatcher.h9
-rw-r--r--gnuradio-core/src/lib/runtime/gr_error_handler.h7
-rw-r--r--gnuradio-core/src/lib/runtime/gr_flat_flowgraph.h7
-rw-r--r--gnuradio-core/src/lib/runtime/gr_flowgraph.h11
-rw-r--r--gnuradio-core/src/lib/runtime/gr_hier_block2.h7
-rw-r--r--gnuradio-core/src/lib/runtime/gr_hier_block2_detail.h3
-rw-r--r--gnuradio-core/src/lib/runtime/gr_io_signature.h13
-rw-r--r--gnuradio-core/src/lib/runtime/gr_local_sighandler.h5
-rw-r--r--gnuradio-core/src/lib/runtime/gr_message.h13
-rw-r--r--gnuradio-core/src/lib/runtime/gr_msg_accepter.h3
-rw-r--r--gnuradio-core/src/lib/runtime/gr_msg_handler.h3
-rw-r--r--gnuradio-core/src/lib/runtime/gr_msg_queue.h5
-rw-r--r--gnuradio-core/src/lib/runtime/gr_pagesize.h6
-rw-r--r--gnuradio-core/src/lib/runtime/gr_preferences.h6
-rw-r--r--gnuradio-core/src/lib/runtime/gr_realtime.h3
-rw-r--r--gnuradio-core/src/lib/runtime/gr_runtime_types.h1
-rw-r--r--gnuradio-core/src/lib/runtime/gr_scheduler.h3
-rw-r--r--gnuradio-core/src/lib/runtime/gr_scheduler_sts.h3
-rw-r--r--gnuradio-core/src/lib/runtime/gr_scheduler_tpb.h3
-rw-r--r--gnuradio-core/src/lib/runtime/gr_select_handler.h3
-rw-r--r--gnuradio-core/src/lib/runtime/gr_single_threaded_scheduler.cc6
-rw-r--r--gnuradio-core/src/lib/runtime/gr_single_threaded_scheduler.h7
-rw-r--r--gnuradio-core/src/lib/runtime/gr_sptr_magic.h3
-rw-r--r--gnuradio-core/src/lib/runtime/gr_sync_block.h3
-rw-r--r--gnuradio-core/src/lib/runtime/gr_sync_decimator.h3
-rw-r--r--gnuradio-core/src/lib/runtime/gr_sync_interpolator.h3
-rw-r--r--gnuradio-core/src/lib/runtime/gr_sys_paths.h6
-rw-r--r--gnuradio-core/src/lib/runtime/gr_timer.h9
-rw-r--r--gnuradio-core/src/lib/runtime/gr_top_block.h7
-rw-r--r--gnuradio-core/src/lib/runtime/gr_top_block_impl.h3
-rw-r--r--gnuradio-core/src/lib/runtime/gr_tpb_detail.h3
-rw-r--r--gnuradio-core/src/lib/runtime/gr_tpb_thread_body.h3
-rw-r--r--gnuradio-core/src/lib/runtime/gr_types.h1
-rw-r--r--gnuradio-core/src/lib/runtime/gr_unittests.h2
-rw-r--r--gnuradio-core/src/lib/runtime/gr_vmcircbuf.cc25
-rw-r--r--gnuradio-core/src/lib/runtime/gr_vmcircbuf.h7
-rw-r--r--gnuradio-core/src/lib/runtime/gr_vmcircbuf_createfilemapping.cc13
-rw-r--r--gnuradio-core/src/lib/runtime/gr_vmcircbuf_createfilemapping.h5
-rw-r--r--gnuradio-core/src/lib/runtime/gr_vmcircbuf_mmap_shm_open.h5
-rw-r--r--gnuradio-core/src/lib/runtime/gr_vmcircbuf_mmap_tmpfile.h5
-rw-r--r--gnuradio-core/src/lib/runtime/gr_vmcircbuf_sysv_shm.h5
-rw-r--r--gnuradio-core/src/lib/runtime/qa_runtime.h3
-rw-r--r--gnuradio-core/src/lib/swig/CMakeLists.txt93
-rw-r--r--gnuradio-core/src/lib/swig/gnuradio_core_general.i2
-rw-r--r--gnuradio-core/src/lib/viterbi/CMakeLists.txt63
-rw-r--r--gnuradio-core/src/lib/viterbi/Makefile.am2
-rw-r--r--gnuradio-core/src/lib/viterbi/metrics.c3
-rw-r--r--gnuradio-core/src/lib/viterbi/viterbi.h14
-rw-r--r--gnuradio-core/src/python/build_utils.py2
-rw-r--r--gnuradio-core/src/python/gnuradio/CMakeLists.txt39
-rw-r--r--gnuradio-core/src/python/gnuradio/blks2/CMakeLists.txt26
-rw-r--r--gnuradio-core/src/python/gnuradio/blks2impl/CMakeLists.txt46
-rw-r--r--gnuradio-core/src/python/gnuradio/gr/CMakeLists.txt52
-rw-r--r--gnuradio-core/src/python/gnuradio/gru/CMakeLists.txt26
-rw-r--r--gnuradio-core/src/python/gnuradio/gruimpl/CMakeLists.txt38
-rw-r--r--gnuradio-core/src/tests/CMakeLists.txt69
359 files changed, 3663 insertions, 847 deletions
diff --git a/gnuradio-core/src/lib/CMakeLists.txt b/gnuradio-core/src/lib/CMakeLists.txt
new file mode 100644
index 000000000..2e0d95798
--- /dev/null
+++ b/gnuradio-core/src/lib/CMakeLists.txt
@@ -0,0 +1,106 @@
+# Copyright 2010-2011 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+
+########################################################################
+# Setup compatibility checks and defines
+########################################################################
+include(${CMAKE_CURRENT_SOURCE_DIR}/ConfigChecks.cmake)
+
+########################################################################
+# Include subdirs rather to populate to the sources lists.
+########################################################################
+GR_INCLUDE_SUBDIRECTORY(missing)
+GR_INCLUDE_SUBDIRECTORY(runtime)
+GR_INCLUDE_SUBDIRECTORY(filter)
+GR_INCLUDE_SUBDIRECTORY(viterbi)
+GR_INCLUDE_SUBDIRECTORY(general)
+GR_INCLUDE_SUBDIRECTORY(gengen)
+GR_INCLUDE_SUBDIRECTORY(reed-solomon)
+GR_INCLUDE_SUBDIRECTORY(io)
+GR_INCLUDE_SUBDIRECTORY(hier)
+
+list(APPEND gnuradio_core_sources bug_work_around_6.cc)
+list(APPEND test_gnuradio_core_sources bug_work_around_6.cc)
+
+########################################################################
+# Setup the include and linker paths
+########################################################################
+include_directories(${GNURADIO_CORE_INCLUDE_DIRS})
+
+include_directories(${Boost_INCLUDE_DIRS})
+link_directories(${Boost_LIBRARY_DIRS})
+
+add_definitions(${GSL_DEFINITIONS})
+include_directories(${GSL_INCLUDE_DIRS})
+link_directories(${GSL_LIBRARY_DIRS})
+
+include_directories(${FFTW3F_INCLUDE_DIRS})
+link_directories(${FFTW3F_LIBRARY_DIRS})
+
+########################################################################
+# Setup library
+########################################################################
+list(APPEND gnuradio_core_libs
+ gruel
+ ${Boost_LIBRARIES}
+ ${GSL_LIBRARIES}
+ ${FFTW3F_LIBRARIES}
+)
+
+#need to link with librt on ubuntu 11.10 for shm_*
+if(LINUX)
+ list(APPEND gnuradio_core_libs rt)
+endif()
+
+add_library(gnuradio-core SHARED ${gnuradio_core_sources})
+target_link_libraries(gnuradio-core ${gnuradio_core_libs})
+set_target_properties(gnuradio-core PROPERTIES DEFINE_SYMBOL "gnuradio_core_EXPORTS")
+set_target_properties(gnuradio-core PROPERTIES SOVERSION ${LIBVER})
+#avoid fftw and gsl link in dependent libraries:
+set_target_properties(gnuradio-core PROPERTIES LINK_INTERFACE_LIBRARIES "gruel")
+
+install(TARGETS gnuradio-core
+ LIBRARY DESTINATION ${GR_LIBRARY_DIR} COMPONENT "core_runtime" # .so/.dylib file
+ ARCHIVE DESTINATION ${GR_LIBRARY_DIR} COMPONENT "core_devel" # .lib file
+ RUNTIME DESTINATION ${GR_RUNTIME_DIR} COMPONENT "core_runtime" # .dll file
+)
+
+########################################################################
+# Setup executables
+########################################################################
+add_executable(gnuradio-config-info gnuradio-config-info.cc)
+target_link_libraries(gnuradio-config-info gnuradio-core ${Boost_LIBRARIES})
+install(
+ TARGETS gnuradio-config-info
+ DESTINATION ${GR_RUNTIME_DIR}
+ COMPONENT "core_runtime"
+)
+
+########################################################################
+# Setup tests
+########################################################################
+if(ENABLE_TESTING)
+
+include_directories(${CPPUNIT_INCLUDE_DIRS})
+link_directories(${CPPUNIT_LIBRARY_DIRS})
+
+add_library(test-gnuradio-core SHARED ${test_gnuradio_core_sources})
+target_link_libraries(test-gnuradio-core gnuradio-core ${CPPUNIT_LIBRARIES} ${Boost_LIBRARIES})
+
+endif(ENABLE_TESTING)
diff --git a/gnuradio-core/src/lib/ConfigChecks.cmake b/gnuradio-core/src/lib/ConfigChecks.cmake
new file mode 100644
index 000000000..30a1011e4
--- /dev/null
+++ b/gnuradio-core/src/lib/ConfigChecks.cmake
@@ -0,0 +1,212 @@
+# Copyright 2010-2011 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+
+########################################################################
+INCLUDE(GrMiscUtils)
+INCLUDE(CheckCXXSourceCompiles)
+
+IF(MSVC) #add this directory for our provided headers
+LIST(APPEND CMAKE_REQUIRED_INCLUDES ${CMAKE_SOURCE_DIR}/msvc)
+ENDIF(MSVC)
+
+GR_CHECK_HDR_N_DEF(netdb.h HAVE_NETDB_H)
+GR_CHECK_HDR_N_DEF(sys/time.h HAVE_SYS_TIME_H)
+GR_CHECK_HDR_N_DEF(sys/types.h HAVE_SYS_TYPES_H)
+GR_CHECK_HDR_N_DEF(sys/select.h HAVE_SYS_SELECT_H)
+GR_CHECK_HDR_N_DEF(sys/socket.h HAVE_SYS_SOCKET_H)
+GR_CHECK_HDR_N_DEF(io.h HAVE_IO_H)
+GR_CHECK_HDR_N_DEF(sys/mman.h HAVE_SYS_MMAN_H)
+GR_CHECK_HDR_N_DEF(sys/ipc.h HAVE_SYS_IPC_H)
+GR_CHECK_HDR_N_DEF(sys/shm.h HAVE_SYS_SHM_H)
+GR_CHECK_HDR_N_DEF(signal.h HAVE_SIGNAL_H)
+GR_CHECK_HDR_N_DEF(netinet/in.h HAVE_NETINET_IN_H)
+GR_CHECK_HDR_N_DEF(arpa/inet.h HAVE_ARPA_INET_H)
+GR_CHECK_HDR_N_DEF(byteswap.h HAVE_BYTESWAP_H)
+GR_CHECK_HDR_N_DEF(linux/ppdev.h HAVE_LINUX_PPDEV_H)
+GR_CHECK_HDR_N_DEF(dev/ppbus/ppi.h HAVE_DEV_PPBUS_PPI_H)
+GR_CHECK_HDR_N_DEF(unistd.h HAVE_UNISTD_H)
+GR_CHECK_HDR_N_DEF(malloc.h HAVE_MALLOC_H)
+
+
+########################################################################
+CHECK_CXX_SOURCE_COMPILES("
+ #include <stdio.h>
+ int main(){snprintf(0, 0, 0); return 0;}
+ " HAVE_SNPRINTF
+)
+GR_ADD_COND_DEF(HAVE_SNPRINTF)
+
+########################################################################
+CHECK_CXX_SOURCE_COMPILES("
+ #include <signal.h>
+ int main(){sigaction(0, 0, 0); return 0;}
+ " HAVE_SIGACTION
+)
+GR_ADD_COND_DEF(HAVE_SIGACTION)
+
+########################################################################
+CHECK_CXX_SOURCE_COMPILES("
+ #include <sys/select.h>
+ int main(){select(0, 0, 0, 0, 0); return 0;}
+ " HAVE_SELECT
+)
+GR_ADD_COND_DEF(HAVE_SELECT)
+
+
+########################################################################
+CHECK_CXX_SOURCE_COMPILES("
+ #include <unistd.h>
+ int main(){sysconf(0); return 0;}
+ " HAVE_SYSCONF
+)
+GR_ADD_COND_DEF(HAVE_SYSCONF)
+
+CHECK_CXX_SOURCE_COMPILES("
+ #include <unistd.h>
+ int main(){getpagesize(); return 0;}
+ " HAVE_GETPAGESIZE
+)
+GR_ADD_COND_DEF(HAVE_GETPAGESIZE)
+
+
+########################################################################
+CHECK_CXX_SOURCE_COMPILES("
+ #include <Winbase.h>
+ int main(){Sleep(0); return 0;}
+ " HAVE_SSLEEP
+)
+GR_ADD_COND_DEF(HAVE_SSLEEP)
+
+CHECK_CXX_SOURCE_COMPILES("
+ #include <time.h>
+ int main(){nanosleep(0, 0); return 0;}
+ " HAVE_NANOSLEEP
+)
+GR_ADD_COND_DEF(HAVE_NANOSLEEP)
+
+CHECK_CXX_SOURCE_COMPILES("
+ #include <sys/time.h>
+ int main(){gettimeofday(0, 0); return 0;}
+ " HAVE_GETTIMEOFDAY
+)
+GR_ADD_COND_DEF(HAVE_GETTIMEOFDAY)
+
+########################################################################
+CHECK_CXX_SOURCE_COMPILES("
+ #include <stdlib.h>
+ int main(){posix_memalign(0, 0, 0); return 0;}
+ " HAVE_POSIX_MEMALIGN
+)
+GR_ADD_COND_DEF(HAVE_POSIX_MEMALIGN)
+
+CHECK_CXX_SOURCE_COMPILES("
+ #include <malloc.h>
+ int main(){valloc(0); return 0;}
+ " HAVE_VALLOC
+)
+GR_ADD_COND_DEF(HAVE_VALLOC)
+
+ADD_DEFINITIONS(-DALIGNED_MALLOC=0)
+
+########################################################################
+SET(CMAKE_REQUIRED_LIBRARIES -lpthread)
+CHECK_CXX_SOURCE_COMPILES("
+ #include <signal.h>
+ int main(){pthread_sigmask(0, 0, 0); return 0;}
+ " HAVE_PTHREAD_SIGMASK
+)
+GR_ADD_COND_DEF(HAVE_PTHREAD_SIGMASK)
+SET(CMAKE_REQUIRED_LIBRARIES)
+
+########################################################################
+CHECK_CXX_SOURCE_COMPILES("
+ #include <windows.h>
+ int main(){
+ HANDLE handle;
+ int size;
+ LPCTSTR lpName;
+ handle = CreateFileMapping(
+ INVALID_HANDLE_VALUE, // use paging file
+ NULL, // default security
+ PAGE_READWRITE, // read/write access
+ 0, // max. object size
+ size, // buffer size
+ lpName); // name of mapping object
+ return 0;
+ } " HAVE_CREATEFILEMAPPING
+)
+GR_ADD_COND_DEF(HAVE_CREATEFILEMAPPING)
+
+########################################################################
+CHECK_INCLUDE_FILE_CXX(windows.h HAVE_WINDOWS_H)
+IF(HAVE_WINDOWS_H)
+ ADD_DEFINITIONS(-DHAVE_WINDOWS_H -DUSING_WINSOCK)
+ MESSAGE(STATUS "Adding windows libs to gnuradio core libs...")
+ LIST(APPEND gnuradio_core_libs WS2_32.lib WSock32.lib)
+ENDIF(HAVE_WINDOWS_H)
+
+########################################################################
+SET(CMAKE_REQUIRED_LIBRARIES -lrt)
+CHECK_CXX_SOURCE_COMPILES("
+ #include <sys/types.h>
+ #include <sys/mman.h>
+ int main(){shm_open(0, 0, 0); return 0;}
+ " HAVE_SHM_OPEN
+)
+GR_ADD_COND_DEF(HAVE_SHM_OPEN)
+SET(CMAKE_REQUIRED_LIBRARIES)
+
+########################################################################
+CHECK_CXX_SOURCE_COMPILES("
+ #define _GNU_SOURCE
+ #include <math.h>
+ int main(){double x, sin, cos; sincos(x, &sin, &cos); return 0;}
+ " HAVE_SINCOS
+)
+GR_ADD_COND_DEF(HAVE_SINCOS)
+
+CHECK_CXX_SOURCE_COMPILES("
+ #define _GNU_SOURCE
+ #include <math.h>
+ int main(){float x, sin, cos; sincosf(x, &sin, &cos); return 0;}
+ " HAVE_SINCOSF
+)
+GR_ADD_COND_DEF(HAVE_SINCOSF)
+
+CHECK_CXX_SOURCE_COMPILES("
+ #include <math.h>
+ int main(){sinf(0); return 0;}
+ " HAVE_SINF
+)
+GR_ADD_COND_DEF(HAVE_SINF)
+
+CHECK_CXX_SOURCE_COMPILES("
+ #include <math.h>
+ int main(){cosf(0); return 0;}
+ " HAVE_COSF
+)
+GR_ADD_COND_DEF(HAVE_COSF)
+
+########################################################################
+CHECK_CXX_SOURCE_COMPILES("
+ #include <sys/mman.h>
+ int main(){mmap(0, 0, 0, 0, 0, 0); return 0;}
+ " HAVE_MMAP
+)
+GR_ADD_COND_DEF(HAVE_MMAP)
diff --git a/gnuradio-core/src/lib/filter/CMakeLists.txt b/gnuradio-core/src/lib/filter/CMakeLists.txt
new file mode 100644
index 000000000..da16cd60b
--- /dev/null
+++ b/gnuradio-core/src/lib/filter/CMakeLists.txt
@@ -0,0 +1,351 @@
+# Copyright 2010-2011 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+
+########################################################################
+# This file included, use CMake directory variables
+########################################################################
+
+#set the C language property on the assembly files so the compiler will pick them up
+file(GLOB gr_core_filter_asms ${CMAKE_CURRENT_SOURCE_DIR}/*.S)
+foreach(gr_core_filter_asm ${gr_core_filter_asms})
+ set_property(SOURCE ${gr_core_filter_asm} PROPERTY LANGUAGE C)
+endforeach(gr_core_filter_asm)
+
+#detect 32 or 64 bit compiler
+if(CMAKE_SYSTEM_PROCESSOR MATCHES "^(i.86|x86|x86_64)$")
+ include(CheckTypeSize)
+ check_type_size("void*" SIZEOF_VOID_P BUILTIN_TYPES_ONLY)
+ if (${SIZEOF_VOID_P} EQUAL 8)
+ set(CMAKE_SYSTEM_PROCESSOR_x86 64)
+ else()
+ set(CMAKE_SYSTEM_PROCESSOR_x86 32)
+ endif()
+endif()
+
+########################################################################
+# Generate the makefile.gen, then extract its sources:
+# This is a round-about way to extract the sources,
+# but it requires minimum changed to the python utils.
+#
+# The recommended way to do this:
+# - Make a generation macro that registers the sources command.
+# - List the generation macro with each templated source file.
+# - Create a python script (very generic) to perform generation.
+# - This way the targets would depend only on their sources.
+########################################################################
+execute_process(
+ COMMAND ${PYTHON_EXECUTABLE} ${PYTHON_DASH_B} -c "
+import os, sys
+sys.path.append('${GR_CORE_PYTHONPATH}')
+sys.path.append('${CMAKE_CURRENT_SOURCE_DIR}')
+os.environ['srcdir'] = '${CMAKE_CURRENT_SOURCE_DIR}'
+os.environ['gendir'] = '${CMAKE_CURRENT_BINARY_DIR}'
+os.environ['do_makefile'] = '1'
+os.environ['do_sources'] = '0'
+from generate_all import generate_all
+generate_all()
+ " WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+)
+
+macro(FILTER_GEN_EXTRACT outvar ext)
+ execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "import os; print ';'.join(
+ map(lambda x: os.path.join('${CMAKE_CURRENT_BINARY_DIR}', x.replace('\\\\', '').strip()),
+ filter(lambda f: '${ext}' in f, open('${CMAKE_CURRENT_BINARY_DIR}/Makefile.gen').readlines()
+ )))" OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE ${outvar})
+ file(TO_CMAKE_PATH "${${outvar}}" ${outvar})
+endmacro(FILTER_GEN_EXTRACT)
+
+FILTER_GEN_EXTRACT(generated_filter_sources ".cc")
+FILTER_GEN_EXTRACT(generated_filter_includes ".h")
+FILTER_GEN_EXTRACT(generated_filter_swigs ".i")
+
+#TODO simplify this list with a triple-threat for loop
+set(generated_filter_deps
+ ${CMAKE_CURRENT_SOURCE_DIR}/generate_all.py
+ ${CMAKE_CURRENT_SOURCE_DIR}/generate_gr_fir_XXX.py
+ ${CMAKE_CURRENT_SOURCE_DIR}/generate_gr_fir_filter_XXX.py
+ ${CMAKE_CURRENT_SOURCE_DIR}/generate_gr_interp_fir_filter_XXX.py
+ ${CMAKE_CURRENT_SOURCE_DIR}/generate_gr_rational_resampler_base_XXX.py
+ ${CMAKE_CURRENT_SOURCE_DIR}/generate_gr_fir_sysconfig.py
+ ${CMAKE_CURRENT_SOURCE_DIR}/generate_gr_fir_sysconfig_generic.py
+ ${CMAKE_CURRENT_SOURCE_DIR}/generate_gr_fir_util.py
+ ${CMAKE_CURRENT_SOURCE_DIR}/generate_gr_freq_xlating_fir_filter_XXX.py
+ ${CMAKE_CURRENT_SOURCE_DIR}/generate_gri_fir_filter_with_buffer_XXX.py
+ ${CMAKE_CURRENT_SOURCE_DIR}/generate_utils.py
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_XXX.cc.t
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_XXX.h.t
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_XXX_generic.cc.t
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_XXX_generic.h.t
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_filter_XXX.cc.t
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_filter_XXX.h.t
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_filter_XXX.i.t
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_interp_fir_filter_XXX.cc.t
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_interp_fir_filter_XXX.h.t
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_interp_fir_filter_XXX.i.t
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_rational_resampler_base_XXX.cc.t
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_rational_resampler_base_XXX.h.t
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_rational_resampler_base_XXX.i.t
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_freq_xlating_fir_filter_XXX.cc.t
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_freq_xlating_fir_filter_XXX.h.t
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_freq_xlating_fir_filter_XXX.i.t
+ ${CMAKE_CURRENT_SOURCE_DIR}/gri_fir_filter_with_buffer_XXX.cc.t
+ ${CMAKE_CURRENT_SOURCE_DIR}/gri_fir_filter_with_buffer_XXX.h.t
+)
+
+add_custom_command(
+ OUTPUT
+ ${generated_filter_sources}
+ ${generated_filter_includes}
+ ${generated_filter_swigs}
+ DEPENDS ${generated_filter_deps}
+ COMMAND ${PYTHON_EXECUTABLE} ${PYTHON_DASH_B} -c
+ "import os, sys;sys.path.append('${GR_CORE_PYTHONPATH}');sys.path.append('${CMAKE_CURRENT_SOURCE_DIR}');os.environ['srcdir'] = '${CMAKE_CURRENT_SOURCE_DIR}';from generate_all import generate_all;generate_all()"
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ COMMENT "generating filter files"
+ VERBATIM
+)
+
+add_custom_target(filter_generated DEPENDS
+ ${generated_filter_sources}
+ ${generated_filter_includes}
+ ${generated_filter_swigs}
+)
+
+########################################################################
+# Add target specific files
+# May VOLK put a rest to all the insanity below.
+########################################################################
+if(MSVC)
+ list(APPEND gnuradio_core_sources
+ ${CMAKE_CURRENT_SOURCE_DIR}/sysconfig_generic.cc
+ )
+ list(APPEND test_gnuradio_core_sources
+ ${CMAKE_CURRENT_SOURCE_DIR}/qa_dotprod_generic.cc
+ )
+else(MSVC)
+if(CMAKE_SYSTEM_PROCESSOR_x86)
+ list(APPEND gnuradio_core_sources
+ ${CMAKE_CURRENT_SOURCE_DIR}/sysconfig_x86.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_sysconfig_x86.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_cpu_x86.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_ccc_simd.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_ccc_x86.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_fff_simd.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_fff_x86.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_fsf_simd.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_fsf_x86.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_scc_simd.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_scc_x86.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_fcc_simd.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_fcc_x86.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_ccf_simd.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_ccf_x86.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/sse_debug.c
+ )
+ list(APPEND test_gnuradio_core_sources
+ ${CMAKE_CURRENT_SOURCE_DIR}/qa_dotprod_x86.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/qa_float_dotprod_x86.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/qa_complex_dotprod_x86.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/qa_ccomplex_dotprod_x86.cc
+ )
+endif()
+
+if(CMAKE_SYSTEM_PROCESSOR_x86 AND ${CMAKE_SYSTEM_PROCESSOR_x86} EQUAL 64)
+ list(APPEND gnuradio_core_sources
+ ${CMAKE_CURRENT_SOURCE_DIR}/float_dotprod_sse64.S
+ ${CMAKE_CURRENT_SOURCE_DIR}/float_dotprod_3dnow64.S
+ ${CMAKE_CURRENT_SOURCE_DIR}/complex_dotprod_3dnowext64.S
+ ${CMAKE_CURRENT_SOURCE_DIR}/complex_dotprod_3dnow64.S
+ ${CMAKE_CURRENT_SOURCE_DIR}/complex_dotprod_sse64.S
+ ${CMAKE_CURRENT_SOURCE_DIR}/ccomplex_dotprod_3dnowext64.S
+ ${CMAKE_CURRENT_SOURCE_DIR}/ccomplex_dotprod_3dnow64.S
+ ${CMAKE_CURRENT_SOURCE_DIR}/ccomplex_dotprod_sse64.S
+ ${CMAKE_CURRENT_SOURCE_DIR}/fcomplex_dotprod_3dnow64.S
+ ${CMAKE_CURRENT_SOURCE_DIR}/fcomplex_dotprod_sse64.S
+ ${CMAKE_CURRENT_SOURCE_DIR}/short_dotprod_mmx64.S
+ )
+elseif(CMAKE_SYSTEM_PROCESSOR_x86 AND ${CMAKE_SYSTEM_PROCESSOR_x86} EQUAL 32)
+ list(APPEND gnuradio_core_sources
+ ${CMAKE_CURRENT_SOURCE_DIR}/float_dotprod_sse.S
+ ${CMAKE_CURRENT_SOURCE_DIR}/float_dotprod_3dnow.S
+ ${CMAKE_CURRENT_SOURCE_DIR}/complex_dotprod_3dnowext.S
+ ${CMAKE_CURRENT_SOURCE_DIR}/complex_dotprod_3dnow.S
+ ${CMAKE_CURRENT_SOURCE_DIR}/complex_dotprod_sse.S
+ ${CMAKE_CURRENT_SOURCE_DIR}/ccomplex_dotprod_3dnowext.S
+ ${CMAKE_CURRENT_SOURCE_DIR}/ccomplex_dotprod_3dnow.S
+ ${CMAKE_CURRENT_SOURCE_DIR}/ccomplex_dotprod_sse.S
+ ${CMAKE_CURRENT_SOURCE_DIR}/fcomplex_dotprod_3dnow.S
+ ${CMAKE_CURRENT_SOURCE_DIR}/fcomplex_dotprod_sse.S
+ ${CMAKE_CURRENT_SOURCE_DIR}/short_dotprod_mmx.S
+ )
+elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)")
+ list(APPEND gnuradio_core_sources
+ ${CMAKE_CURRENT_SOURCE_DIR}/sysconfig_powerpc.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_sysconfig_powerpc.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_cpu_powerpc.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_fff_altivec.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_altivec.c
+ ${CMAKE_CURRENT_SOURCE_DIR}/dotprod_fff_altivec.c
+ )
+ list(APPEND test_gnuradio_core_sources
+ ${CMAKE_CURRENT_SOURCE_DIR}/qa_dotprod_powerpc.cc
+ )
+elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^arm")
+ list(APPEND gnuradio_core_sources
+ ${CMAKE_CURRENT_SOURCE_DIR}/sysconfig_armv7_a.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_sysconfig_armv7_a.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_cpu_armv7_a.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_fff_armv7_a.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/dotprod_fff_armv7_a.c
+ ${CMAKE_CURRENT_SOURCE_DIR}/dotprod_ccf_armv7_a.c
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_ccf_armv7_a.cc
+ )
+ list(APPEND test_gnuradio_core_sources
+ ${CMAKE_CURRENT_SOURCE_DIR}/qa_dotprod_armv7_a.cc
+ )
+else()
+ list(APPEND gnuradio_core_sources
+ ${CMAKE_CURRENT_SOURCE_DIR}/sysconfig_generic.cc
+ )
+ list(APPEND test_gnuradio_core_sources
+ ${CMAKE_CURRENT_SOURCE_DIR}/qa_dotprod_generic.cc
+ )
+endif()
+endif(MSVC)
+
+########################################################################
+# Append gnuradio-core library sources
+########################################################################
+list(APPEND gnuradio_core_sources
+ ${generated_filter_sources}
+ ${CMAKE_CURRENT_SOURCE_DIR}/gri_fft_filter_fff_generic.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gri_fft_filter_ccc_generic.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_sincos.c
+ ${CMAKE_CURRENT_SOURCE_DIR}/gri_goertzel.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gri_mmse_fir_interpolator.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gri_mmse_fir_interpolator_cc.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/complex_dotprod_generic.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/ccomplex_dotprod_generic.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/float_dotprod_generic.c
+ ${CMAKE_CURRENT_SOURCE_DIR}/short_dotprod_generic.c
+)
+
+########################################################################
+# Append gnuradio-core test sources
+########################################################################
+list(APPEND test_gnuradio_core_sources
+ ${CMAKE_CURRENT_SOURCE_DIR}/qa_filter.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_fir_ccf.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_fir_fcc.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_fir_fff.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_fir_ccc.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_fir_scc.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_rotator.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/qa_gri_mmse_fir_interpolator.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/qa_gri_mmse_fir_interpolator_cc.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/qa_gri_fir_filter_with_buffer_ccf.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/qa_gri_fir_filter_with_buffer_ccc.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/qa_gri_fir_filter_with_buffer_fcc.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/qa_gri_fir_filter_with_buffer_fff.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/qa_gri_fir_filter_with_buffer_fsf.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/qa_gri_fir_filter_with_buffer_scc.cc
+)
+
+########################################################################
+# Install runtime headers
+########################################################################
+install(FILES
+ ${generated_filter_includes}
+ ${CMAKE_CURRENT_SOURCE_DIR}/complex_dotprod_generic.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/complex_dotprod_x86.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/fcomplex_dotprod_x86.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/ccomplex_dotprod_generic.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/ccomplex_dotprod_x86.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/float_dotprod_generic.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/float_dotprod_x86.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_altivec.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_cpu.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gri_fft_filter_fff_generic.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gri_fft_filter_ccc_generic.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_sysconfig_x86.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_fir_sysconfig_powerpc.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_rotator.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_sincos.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_single_pole_iir.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_vec_types.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gri_goertzel.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gri_iir.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gri_mmse_fir_interpolator.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gri_mmse_fir_interpolator_cc.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/qa_filter.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/short_dotprod_generic.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/short_dotprod_x86.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/sse_debug.h
+ DESTINATION ${GR_INCLUDE_DIR}/gnuradio
+ COMPONENT "core_devel"
+)
+
+########################################################################
+# Install swig headers
+########################################################################
+if(ENABLE_PYTHON)
+install(FILES
+ ${generated_filter_swigs}
+ ${CMAKE_CURRENT_SOURCE_DIR}/filter.i
+ ${CMAKE_CURRENT_BINARY_DIR}/filter_generated.i
+ DESTINATION ${GR_INCLUDE_DIR}/gnuradio/swig
+ COMPONENT "core_swig"
+)
+endif(ENABLE_PYTHON)
+
+########################################################################
+# Handle triple-threat files that have cc, h, and i
+########################################################################
+set(gr_core_filter_triple_threats
+ gr_adaptive_fir_ccc
+ gr_adaptive_fir_ccf
+ gr_dc_blocker_cc
+ gr_dc_blocker_ff
+ gr_fft_filter_ccc
+ gr_fft_filter_fff
+ gr_filter_delay_fc
+ gr_fractional_interpolator_ff
+ gr_fractional_interpolator_cc
+ gr_goertzel_fc
+ gr_hilbert_fc
+ gr_iir_filter_ffd
+ gr_single_pole_iir_filter_ff
+ gr_single_pole_iir_filter_cc
+ gr_pfb_channelizer_ccf
+ gr_pfb_synthesis_filterbank_ccf
+ gr_pfb_decimator_ccf
+ gr_pfb_interpolator_ccf
+ gr_pfb_arb_resampler_ccf
+ gr_pfb_arb_resampler_fff
+ gr_pfb_clock_sync_ccf
+ gr_pfb_clock_sync_fff
+)
+
+foreach(file_tt ${gr_core_filter_triple_threats})
+ list(APPEND gnuradio_core_sources ${CMAKE_CURRENT_SOURCE_DIR}/${file_tt}.cc)
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${file_tt}.h DESTINATION ${GR_INCLUDE_DIR}/gnuradio COMPONENT "core_devel")
+ if(ENABLE_PYTHON)
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${file_tt}.i DESTINATION ${GR_INCLUDE_DIR}/gnuradio/swig COMPONENT "core_swig")
+ endif(ENABLE_PYTHON)
+endforeach(file_tt ${gr_core_filter_triple_threats})
diff --git a/gnuradio-core/src/lib/filter/ccomplex_dotprod_generic.h b/gnuradio-core/src/lib/filter/ccomplex_dotprod_generic.h
index 4637dc706..c03743776 100644
--- a/gnuradio-core/src/lib/filter/ccomplex_dotprod_generic.h
+++ b/gnuradio-core/src/lib/filter/ccomplex_dotprod_generic.h
@@ -23,7 +23,9 @@
#ifndef _CCOMPLEX_DOTPROD_GENERIC_H_
#define _CCOMPLEX_DOTPROD_GENERIC_H_
-void
+#include <gr_core_api.h>
+
+GR_CORE_API void
ccomplex_dotprod_generic (const float *input,
const float *taps, unsigned n_2_ccomplex_blocks,
float *result);
diff --git a/gnuradio-core/src/lib/filter/complex_dotprod_generic.h b/gnuradio-core/src/lib/filter/complex_dotprod_generic.h
index 75d18e7f1..aed82179e 100644
--- a/gnuradio-core/src/lib/filter/complex_dotprod_generic.h
+++ b/gnuradio-core/src/lib/filter/complex_dotprod_generic.h
@@ -23,7 +23,9 @@
#ifndef _COMPLEX_DOTPROD_GENERIC_H_
#define _COMPLEX_DOTPROD_GENERIC_H_
-void
+#include <gr_core_api.h>
+
+GR_CORE_API void
complex_dotprod_generic (const short *input,
const float *taps, unsigned n_2_complex_blocks,
float *result);
diff --git a/gnuradio-core/src/lib/filter/dotprod_fff_altivec.h b/gnuradio-core/src/lib/filter/dotprod_fff_altivec.h
index d9ee52cf0..af9210382 100644
--- a/gnuradio-core/src/lib/filter/dotprod_fff_altivec.h
+++ b/gnuradio-core/src/lib/filter/dotprod_fff_altivec.h
@@ -21,6 +21,7 @@
#ifndef INCLUDED_DOTPROD_FFF_ALTIVEC_H
#define INCLUDED_DOTPROD_FFF_ALTIVEC_H
+#include <gr_core_api.h>
#include <stddef.h>
#ifdef __cplusplus
diff --git a/gnuradio-core/src/lib/filter/dotprod_fff_armv7_a.h b/gnuradio-core/src/lib/filter/dotprod_fff_armv7_a.h
index e72621a0d..667ee5fb6 100644
--- a/gnuradio-core/src/lib/filter/dotprod_fff_armv7_a.h
+++ b/gnuradio-core/src/lib/filter/dotprod_fff_armv7_a.h
@@ -21,6 +21,7 @@
#ifndef INCLUDED_DOTPROD_FFF_ARMV7_A_H
#define INCLUDED_DOTPROD_FFF_ARMV7_A_H
+#include <gr_core_api.h>
#include <stddef.h>
#ifdef __cplusplus
diff --git a/gnuradio-core/src/lib/filter/generate_gr_fir_util.py b/gnuradio-core/src/lib/filter/generate_gr_fir_util.py
index 4f5f5ce06..06001695e 100755
--- a/gnuradio-core/src/lib/filter/generate_gr_fir_util.py
+++ b/gnuradio-core/src/lib/filter/generate_gr_fir_util.py
@@ -25,7 +25,7 @@ from generate_utils import *
def make_info_struct (out, sig):
out.write (
'''
-struct gr_fir_%s_info {
+struct GR_CORE_API gr_fir_%s_info {
const char *name; // implementation name, e.g., "generic", "SSE", "3DNow!"
gr_fir_%s *(*create)(const std::vector<%s> &taps);
};
@@ -74,6 +74,7 @@ def make_gr_fir_util_h ():
* 'i' (short)
*/
+#include <gr_core_api.h>
#include <gr_types.h>
''')
@@ -87,7 +88,7 @@ def make_gr_fir_util_h ():
make_info_struct (out, sig)
out.write ('''
-struct gr_fir_util {
+struct GR_CORE_API gr_fir_util {
// create a fast version of gr_fir_XXX.
diff --git a/gnuradio-core/src/lib/filter/gr_adaptive_fir_ccc.h b/gnuradio-core/src/lib/filter/gr_adaptive_fir_ccc.h
index 8678255b7..aa5422a07 100644
--- a/gnuradio-core/src/lib/filter/gr_adaptive_fir_ccc.h
+++ b/gnuradio-core/src/lib/filter/gr_adaptive_fir_ccc.h
@@ -23,13 +23,14 @@
#ifndef INCLUDED_GR_ADAPTIVE_FIR_CCC_H
#define INCLUDED_GR_ADAPTIVE_FIR_CCC_H
+#include <gr_core_api.h>
#include <gr_sync_decimator.h>
/*!
* \brief Adaptive FIR filter with gr_complex input, gr_complex output and float taps
* \ingroup filter_blk
*/
-class gr_adaptive_fir_ccc : public gr_sync_decimator
+class GR_CORE_API gr_adaptive_fir_ccc : public gr_sync_decimator
{
private:
std::vector<gr_complex> d_new_taps;
diff --git a/gnuradio-core/src/lib/filter/gr_adaptive_fir_ccf.h b/gnuradio-core/src/lib/filter/gr_adaptive_fir_ccf.h
index f860f4faa..87854201c 100644
--- a/gnuradio-core/src/lib/filter/gr_adaptive_fir_ccf.h
+++ b/gnuradio-core/src/lib/filter/gr_adaptive_fir_ccf.h
@@ -23,13 +23,14 @@
#ifndef INCLUDED_GR_ADAPTIVE_FIR_CCF_H
#define INCLUDED_GR_ADAPTIVE_FIR_CCF_H
+#include <gr_core_api.h>
#include <gr_sync_decimator.h>
/*!
* \brief Adaptive FIR filter with gr_complex input, gr_complex output and float taps
* \ingroup filter_blk
*/
-class gr_adaptive_fir_ccf : public gr_sync_decimator
+class GR_CORE_API gr_adaptive_fir_ccf : public gr_sync_decimator
{
private:
std::vector<float> d_new_taps;
diff --git a/gnuradio-core/src/lib/filter/gr_altivec.h b/gnuradio-core/src/lib/filter/gr_altivec.h
index c0d7cfb34..eb941ce42 100644
--- a/gnuradio-core/src/lib/filter/gr_altivec.h
+++ b/gnuradio-core/src/lib/filter/gr_altivec.h
@@ -29,6 +29,7 @@
* (included below)
*/
+#include <gr_core_api.h>
#include <altivec.h>
#undef bool // repair namespace pollution
#undef vector // repair namespace pollution
@@ -55,8 +56,8 @@ union v_float_u {
float f[FLOATS_PER_VEC];
};
-void gr_print_vector_float(FILE *fp, vec_float4 v);
-void gr_pvf(FILE *fp, const char *label, vec_float4 v);
+GR_CORE_API void gr_print_vector_float(FILE *fp, vec_float4 v);
+GR_CORE_API void gr_pvf(FILE *fp, const char *label, vec_float4 v);
static inline float
horizontal_add_f(vec_float4 v)
diff --git a/gnuradio-core/src/lib/filter/gr_cma_equalizer_cc.h b/gnuradio-core/src/lib/filter/gr_cma_equalizer_cc.h
new file mode 100644
index 000000000..73916a315
--- /dev/null
+++ b/gnuradio-core/src/lib/filter/gr_cma_equalizer_cc.h
@@ -0,0 +1,63 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2006 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_GR_CMA_EQUALIZER_CC_H
+#define INCLUDED_GR_CMA_EQUALIZER_CC_H
+
+#include <gr_core_api.h>
+#include <gr_adaptive_fir_ccf.h>
+
+class gr_cma_equalizer_cc;
+typedef boost::shared_ptr<gr_cma_equalizer_cc> gr_cma_equalizer_cc_sptr;
+
+GR_CORE_API gr_cma_equalizer_cc_sptr
+gr_make_cma_equalizer_cc(int num_taps, float modulus, float mu);
+
+/*!
+ * \brief Implements constant modulus adaptive filter on complex stream
+ * \ingroup eq_blk
+ */
+class GR_CORE_API gr_cma_equalizer_cc : public gr_adaptive_fir_ccf
+{
+private:
+ float d_modulus;
+ float d_mu;
+
+ friend GR_CORE_API gr_cma_equalizer_cc_sptr gr_make_cma_equalizer_cc(int num_taps, float modulus, float mu);
+ gr_cma_equalizer_cc(int num_taps, float modulus, float mu);
+
+protected:
+
+ virtual float error(const gr_complex &out)
+ {
+ return (d_modulus - norm(out));
+ }
+
+ virtual void update_tap(float &tap, const gr_complex &in)
+ {
+ tap += d_mu*d_error*abs(in);
+ }
+
+public:
+};
+
+#endif
diff --git a/gnuradio-core/src/lib/filter/gr_cpu.h b/gnuradio-core/src/lib/filter/gr_cpu.h
index 01d719020..149404082 100644
--- a/gnuradio-core/src/lib/filter/gr_cpu.h
+++ b/gnuradio-core/src/lib/filter/gr_cpu.h
@@ -23,7 +23,9 @@
#ifndef _GR_CPU_H_
#define _GR_CPU_H_
-struct gr_cpu {
+#include <gr_core_api.h>
+
+struct GR_CORE_API gr_cpu {
static bool has_mmx ();
static bool has_sse ();
static bool has_sse2 ();
@@ -37,4 +39,4 @@ struct gr_cpu {
static bool has_armv7_a ();
};
-#endif /* _GR_CPU_H_ */
+#endif /* _GR_CPU_H_ */ \ No newline at end of file
diff --git a/gnuradio-core/src/lib/filter/gr_dc_blocker_cc.h b/gnuradio-core/src/lib/filter/gr_dc_blocker_cc.h
index aa23bc135..cb449f3ec 100644
--- a/gnuradio-core/src/lib/filter/gr_dc_blocker_cc.h
+++ b/gnuradio-core/src/lib/filter/gr_dc_blocker_cc.h
@@ -24,10 +24,11 @@
#ifndef INCLUDED_GR_DC_BLOCKER_CC_H
#define INCLUDED_GR_DC_BLOCKER_CC_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
#include <deque>
-class moving_averager_c
+class GR_CORE_API moving_averager_c
{
public:
moving_averager_c(int D);
@@ -44,7 +45,7 @@ private:
class gr_dc_blocker_cc;
typedef boost::shared_ptr<gr_dc_blocker_cc> gr_dc_blocker_cc_sptr;
-gr_dc_blocker_cc_sptr gr_make_dc_blocker_cc (int D=32, bool long_form=true);
+GR_CORE_API gr_dc_blocker_cc_sptr gr_make_dc_blocker_cc (int D=32, bool long_form=true);
/*!
* \class gr_dc_blocker_cc
@@ -72,7 +73,7 @@ gr_dc_blocker_cc_sptr gr_make_dc_blocker_cc (int D=32, bool long_form=true);
* <B><EM>R. Yates, "DC Blocker Algorithms," IEEE Signal Processing Magazine,
* Mar. 2008, pp 132-134.</EM></B>
*/
-class gr_dc_blocker_cc : public gr_sync_block
+class GR_CORE_API gr_dc_blocker_cc : public gr_sync_block
{
private:
/*!
@@ -80,7 +81,7 @@ class gr_dc_blocker_cc : public gr_sync_block
* \param D (int) the length of the delay line
* \param long_form (bool) whether to use long (true, default) or short form
*/
- friend gr_dc_blocker_cc_sptr gr_make_dc_blocker_cc (int D, bool long_form);
+ friend GR_CORE_API gr_dc_blocker_cc_sptr gr_make_dc_blocker_cc (int D, bool long_form);
int d_length;
bool d_long_form;
diff --git a/gnuradio-core/src/lib/filter/gr_dc_blocker_ff.h b/gnuradio-core/src/lib/filter/gr_dc_blocker_ff.h
index 231710a53..a7e8f1c27 100644
--- a/gnuradio-core/src/lib/filter/gr_dc_blocker_ff.h
+++ b/gnuradio-core/src/lib/filter/gr_dc_blocker_ff.h
@@ -24,10 +24,11 @@
#ifndef INCLUDED_GR_DC_BLOCKER_FF_H
#define INCLUDED_GR_DC_BLOCKER_FF_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
#include <deque>
-class moving_averager_f
+class GR_CORE_API moving_averager_f
{
public:
moving_averager_f(int D);
@@ -45,7 +46,7 @@ private:
class gr_dc_blocker_ff;
typedef boost::shared_ptr<gr_dc_blocker_ff> gr_dc_blocker_ff_sptr;
-gr_dc_blocker_ff_sptr gr_make_dc_blocker_ff (int D=32, bool long_form=true);
+GR_CORE_API gr_dc_blocker_ff_sptr gr_make_dc_blocker_ff (int D=32, bool long_form=true);
/*!
* \class gr_dc_blocker_ff
@@ -73,7 +74,7 @@ gr_dc_blocker_ff_sptr gr_make_dc_blocker_ff (int D=32, bool long_form=true);
* <B><EM>R. Yates, "DC Blocker Algorithms," IEEE Signal Processing Magazine,
* Mar. 2008, pp 132-134.</EM></B>
*/
-class gr_dc_blocker_ff : public gr_sync_block
+class GR_CORE_API gr_dc_blocker_ff : public gr_sync_block
{
private:
/*!
@@ -81,7 +82,7 @@ class gr_dc_blocker_ff : public gr_sync_block
* \param D (int) the length of the delay line
* \param long_form (bool) whether to use long (true, default) or short form
*/
- friend gr_dc_blocker_ff_sptr gr_make_dc_blocker_ff (int D, bool long_form);
+ friend GR_CORE_API gr_dc_blocker_ff_sptr gr_make_dc_blocker_ff (int D, bool long_form);
int d_length;
bool d_long_form;
diff --git a/gnuradio-core/src/lib/filter/gr_fft_filter_ccc.h b/gnuradio-core/src/lib/filter/gr_fft_filter_ccc.h
index 68b19e775..721a44a83 100644
--- a/gnuradio-core/src/lib/filter/gr_fft_filter_ccc.h
+++ b/gnuradio-core/src/lib/filter/gr_fft_filter_ccc.h
@@ -22,11 +22,12 @@
#ifndef INCLUDED_GR_FFT_FILTER_CCC_H
#define INCLUDED_GR_FFT_FILTER_CCC_H
+#include <gr_core_api.h>
#include <gr_sync_decimator.h>
class gr_fft_filter_ccc;
typedef boost::shared_ptr<gr_fft_filter_ccc> gr_fft_filter_ccc_sptr;
-gr_fft_filter_ccc_sptr gr_make_fft_filter_ccc (int decimation, const std::vector<gr_complex> &taps);
+GR_CORE_API gr_fft_filter_ccc_sptr gr_make_fft_filter_ccc (int decimation, const std::vector<gr_complex> &taps);
//class gri_fft_filter_ccc_sse;
class gri_fft_filter_ccc_generic;
@@ -35,10 +36,10 @@ class gri_fft_filter_ccc_generic;
* \brief Fast FFT filter with gr_complex input, gr_complex output and gr_complex taps
* \ingroup filter_blk
*/
-class gr_fft_filter_ccc : public gr_sync_decimator
+class GR_CORE_API gr_fft_filter_ccc : public gr_sync_decimator
{
private:
- friend gr_fft_filter_ccc_sptr gr_make_fft_filter_ccc (int decimation, const std::vector<gr_complex> &taps);
+ friend GR_CORE_API gr_fft_filter_ccc_sptr gr_make_fft_filter_ccc (int decimation, const std::vector<gr_complex> &taps);
int d_nsamples;
bool d_updated;
diff --git a/gnuradio-core/src/lib/filter/gr_fft_filter_fff.h b/gnuradio-core/src/lib/filter/gr_fft_filter_fff.h
index 6eaa21500..b0dc74883 100644
--- a/gnuradio-core/src/lib/filter/gr_fft_filter_fff.h
+++ b/gnuradio-core/src/lib/filter/gr_fft_filter_fff.h
@@ -22,11 +22,12 @@
#ifndef INCLUDED_GR_FFT_FILTER_FFF_H
#define INCLUDED_GR_FFT_FILTER_FFF_H
+#include <gr_core_api.h>
#include <gr_sync_decimator.h>
class gr_fft_filter_fff;
typedef boost::shared_ptr<gr_fft_filter_fff> gr_fft_filter_fff_sptr;
-gr_fft_filter_fff_sptr gr_make_fft_filter_fff (int decimation, const std::vector<float> &taps);
+GR_CORE_API gr_fft_filter_fff_sptr gr_make_fft_filter_fff (int decimation, const std::vector<float> &taps);
class gri_fft_filter_fff_generic;
//class gri_fft_filter_fff_sse;
@@ -35,10 +36,10 @@ class gri_fft_filter_fff_generic;
* \brief Fast FFT filter with float input, float output and float taps
* \ingroup filter_blk
*/
-class gr_fft_filter_fff : public gr_sync_decimator
+class GR_CORE_API gr_fft_filter_fff : public gr_sync_decimator
{
private:
- friend gr_fft_filter_fff_sptr gr_make_fft_filter_fff (int decimation, const std::vector<float> &taps);
+ friend GR_CORE_API gr_fft_filter_fff_sptr gr_make_fft_filter_fff (int decimation, const std::vector<float> &taps);
int d_nsamples;
bool d_updated;
diff --git a/gnuradio-core/src/lib/filter/gr_filter_delay_fc.h b/gnuradio-core/src/lib/filter/gr_filter_delay_fc.h
index 946edf2c7..e09e4f0df 100644
--- a/gnuradio-core/src/lib/filter/gr_filter_delay_fc.h
+++ b/gnuradio-core/src/lib/filter/gr_filter_delay_fc.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_GR_FILTER_DELAY_FC_H
#define INCLUDED_GR_FILTER_DELAY_FC_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
#include <gr_io_signature.h>
#include <gr_types.h>
@@ -31,7 +32,7 @@ class gr_filter_delay_fc;
typedef boost::shared_ptr<gr_filter_delay_fc> gr_filter_delay_fc_sptr;
// public constructor
-gr_filter_delay_fc_sptr gr_make_filter_delay_fc (const std::vector<float> &taps);
+GR_CORE_API gr_filter_delay_fc_sptr gr_make_filter_delay_fc (const std::vector<float> &taps);
class gr_fir_fff;
@@ -50,7 +51,7 @@ class gr_fir_fff;
* before initializing this block.
*
*/
-class gr_filter_delay_fc : public gr_sync_block
+class GR_CORE_API gr_filter_delay_fc : public gr_sync_block
{
public:
~gr_filter_delay_fc ();
@@ -66,7 +67,7 @@ class gr_filter_delay_fc : public gr_sync_block
unsigned int d_delay;
gr_fir_fff *d_fir;
- friend gr_filter_delay_fc_sptr gr_make_filter_delay_fc (const std::vector<float> &taps);
+ friend GR_CORE_API gr_filter_delay_fc_sptr gr_make_filter_delay_fc (const std::vector<float> &taps);
};
#endif /* INCLUDED_GR_FILTER_DELAY_FC_H */
diff --git a/gnuradio-core/src/lib/filter/gr_fir_XXX.h.t b/gnuradio-core/src/lib/filter/gr_fir_XXX.h.t
index eeee716ec..f6019ea40 100644
--- a/gnuradio-core/src/lib/filter/gr_fir_XXX.h.t
+++ b/gnuradio-core/src/lib/filter/gr_fir_XXX.h.t
@@ -29,6 +29,7 @@
#ifndef @GUARD_NAME@
#define @GUARD_NAME@
+#include <gr_core_api.h>
#include <vector>
@VRCOMPLEX_INCLUDE@
#include <gr_reverse.h>
@@ -44,7 +45,7 @@
* I,O,T are elements of the set 's' (short), 'f' (float), 'c' (gr_complex), 'i' (int)
*/
-class @FIR_TYPE@ {
+class GR_CORE_API @FIR_TYPE@ {
protected:
std::vector<@TAP_TYPE@> d_taps; // reversed taps
diff --git a/gnuradio-core/src/lib/filter/gr_fir_XXX_generic.h.t b/gnuradio-core/src/lib/filter/gr_fir_XXX_generic.h.t
index fc0f4f8b2..b3594b7ad 100644
--- a/gnuradio-core/src/lib/filter/gr_fir_XXX_generic.h.t
+++ b/gnuradio-core/src/lib/filter/gr_fir_XXX_generic.h.t
@@ -22,6 +22,7 @@
#ifndef @GUARD_NAME@
#define @GUARD_NAME@
+#include <gr_core_api.h>
#include <@FIR_TYPE@.h>
/*!
@@ -32,7 +33,7 @@
* I,O,T are elements of the set 's' (short), 'f' (float), 'c' (gr_complex), 'i' (int)
*/
-class @FIR_TYPE@_generic : public @FIR_TYPE@ {
+class GR_CORE_API @FIR_TYPE@_generic : public @FIR_TYPE@ {
public:
diff --git a/gnuradio-core/src/lib/filter/gr_fir_ccc_simd.h b/gnuradio-core/src/lib/filter/gr_fir_ccc_simd.h
index 14ff1e6b1..af61ce274 100644
--- a/gnuradio-core/src/lib/filter/gr_fir_ccc_simd.h
+++ b/gnuradio-core/src/lib/filter/gr_fir_ccc_simd.h
@@ -22,6 +22,7 @@
#ifndef INCLUDED_GR_FIR_CCC_SIMD_H
#define INCLUDED_GR_FIR_CCC_SIMD_H
+#include <gr_core_api.h>
#include <gr_fir_ccc_generic.h>
/*!
@@ -32,7 +33,7 @@
* subclasses.
*/
-class gr_fir_ccc_simd : public gr_fir_ccc_generic
+class GR_CORE_API gr_fir_ccc_simd : public gr_fir_ccc_generic
{
protected:
typedef void (*ccomplex_dotprod_t)(const float *input,
diff --git a/gnuradio-core/src/lib/filter/gr_fir_ccc_x86.h b/gnuradio-core/src/lib/filter/gr_fir_ccc_x86.h
index 06d6b616c..262cc80e3 100644
--- a/gnuradio-core/src/lib/filter/gr_fir_ccc_x86.h
+++ b/gnuradio-core/src/lib/filter/gr_fir_ccc_x86.h
@@ -23,19 +23,20 @@
#ifndef INCLUDED_GR_FIR_CCC_X86_H
#define INCLUDED_GR_FIR_CCC_X86_H
+#include <gr_core_api.h>
#include <gr_fir_ccc_simd.h>
/*!
* \brief 3DNow! version of gr_fir_ccc
*/
-class gr_fir_ccc_3dnow : public gr_fir_ccc_simd
+class GR_CORE_API gr_fir_ccc_3dnow : public gr_fir_ccc_simd
{
public:
gr_fir_ccc_3dnow ();
gr_fir_ccc_3dnow (const std::vector<gr_complex> &taps);
};
-class gr_fir_ccc_3dnowext : public gr_fir_ccc_simd
+class GR_CORE_API gr_fir_ccc_3dnowext : public gr_fir_ccc_simd
{
public:
gr_fir_ccc_3dnowext ();
@@ -45,7 +46,7 @@ public:
/*!
* \brief SSE version of gr_fir_ccc
*/
-class gr_fir_ccc_sse : public gr_fir_ccc_simd
+class GR_CORE_API gr_fir_ccc_sse : public gr_fir_ccc_simd
{
public:
gr_fir_ccc_sse ();
diff --git a/gnuradio-core/src/lib/filter/gr_fir_ccf_simd.h b/gnuradio-core/src/lib/filter/gr_fir_ccf_simd.h
index ebc6a1bc0..31d70288e 100644
--- a/gnuradio-core/src/lib/filter/gr_fir_ccf_simd.h
+++ b/gnuradio-core/src/lib/filter/gr_fir_ccf_simd.h
@@ -22,6 +22,7 @@
#ifndef INCLUDED_GR_FIR_CCF_SIMD_H
#define INCLUDED_GR_FIR_CCF_SIMD_H
+#include <gr_core_api.h>
#include <gr_fir_ccf_generic.h>
@@ -33,7 +34,7 @@
* subclasses.
*/
-class gr_fir_ccf_simd : public gr_fir_ccf_generic
+class GR_CORE_API gr_fir_ccf_simd : public gr_fir_ccf_generic
{
protected:
typedef void (*fcomplex_dotprod_t)(const float *taps,
diff --git a/gnuradio-core/src/lib/filter/gr_fir_ccf_x86.h b/gnuradio-core/src/lib/filter/gr_fir_ccf_x86.h
index 7f936546f..38d82060c 100644
--- a/gnuradio-core/src/lib/filter/gr_fir_ccf_x86.h
+++ b/gnuradio-core/src/lib/filter/gr_fir_ccf_x86.h
@@ -23,13 +23,14 @@
#ifndef INCLUDED_GR_FIR_CCF_X86_H
#define INCLUDED_GR_FIR_CCF_X86_H
+#include <gr_core_api.h>
#include <gr_fir_ccf_simd.h>
/*!
* \brief 3DNow! version of gr_fir_ccf
* \ingroup filter_primitive
*/
-class gr_fir_ccf_3dnow : public gr_fir_ccf_simd
+class GR_CORE_API gr_fir_ccf_3dnow : public gr_fir_ccf_simd
{
public:
gr_fir_ccf_3dnow ();
@@ -40,7 +41,7 @@ public:
* \brief SSE version of gr_fir_ccf
* \ingroup filter_primitive
*/
-class gr_fir_ccf_sse : public gr_fir_ccf_simd
+class GR_CORE_API gr_fir_ccf_sse : public gr_fir_ccf_simd
{
public:
gr_fir_ccf_sse ();
diff --git a/gnuradio-core/src/lib/filter/gr_fir_fcc_simd.h b/gnuradio-core/src/lib/filter/gr_fir_fcc_simd.h
index e2ed8bcae..7be3776e3 100644
--- a/gnuradio-core/src/lib/filter/gr_fir_fcc_simd.h
+++ b/gnuradio-core/src/lib/filter/gr_fir_fcc_simd.h
@@ -22,6 +22,7 @@
#ifndef INCLUDED_GR_FIR_FCC_SIMD_H
#define INCLUDED_GR_FIR_FCC_SIMD_H
+#include <gr_core_api.h>
#include <gr_fir_fcc_generic.h>
@@ -33,7 +34,7 @@
* subclasses.
*/
-class gr_fir_fcc_simd : public gr_fir_fcc_generic
+class GR_CORE_API gr_fir_fcc_simd : public gr_fir_fcc_generic
{
protected:
typedef void (*fcomplex_dotprod_t)(const float *input,
diff --git a/gnuradio-core/src/lib/filter/gr_fir_fcc_x86.h b/gnuradio-core/src/lib/filter/gr_fir_fcc_x86.h
index 49386c35d..98ace66de 100644
--- a/gnuradio-core/src/lib/filter/gr_fir_fcc_x86.h
+++ b/gnuradio-core/src/lib/filter/gr_fir_fcc_x86.h
@@ -23,13 +23,14 @@
#ifndef INCLUDED_GR_FIR_FCC_X86_H
#define INCLUDED_GR_FIR_FCC_X86_H
+#include <gr_core_api.h>
#include <gr_fir_fcc_simd.h>
/*!
* \brief 3DNow! version of gr_fir_fcc
* \ingroup filter_primitive
*/
-class gr_fir_fcc_3dnow : public gr_fir_fcc_simd
+class GR_CORE_API gr_fir_fcc_3dnow : public gr_fir_fcc_simd
{
public:
gr_fir_fcc_3dnow ();
@@ -40,7 +41,7 @@ public:
* \brief SSE version of gr_fir_fcc
* \ingroup filter_blk
*/
-class gr_fir_fcc_sse : public gr_fir_fcc_simd
+class GR_CORE_API gr_fir_fcc_sse : public gr_fir_fcc_simd
{
public:
gr_fir_fcc_sse ();
diff --git a/gnuradio-core/src/lib/filter/gr_fir_fff_altivec.h b/gnuradio-core/src/lib/filter/gr_fir_fff_altivec.h
index 1694f5524..29bb3a899 100644
--- a/gnuradio-core/src/lib/filter/gr_fir_fff_altivec.h
+++ b/gnuradio-core/src/lib/filter/gr_fir_fff_altivec.h
@@ -21,12 +21,13 @@
#ifndef INCLUDED_GR_FIR_FFF_ALTIVEC_H
#define INCLUDED_GR_FIR_FFF_ALTIVEC_H
+#include <gr_core_api.h>
#include <gr_fir_fff_generic.h>
/*!
* \brief altivec version of gr_fir_fff
*/
-class gr_fir_fff_altivec : public gr_fir_fff_generic
+class GR_CORE_API gr_fir_fff_altivec : public gr_fir_fff_generic
{
protected:
diff --git a/gnuradio-core/src/lib/filter/gr_fir_fff_armv7_a.h b/gnuradio-core/src/lib/filter/gr_fir_fff_armv7_a.h
index d6097cf50..5c80c930f 100644
--- a/gnuradio-core/src/lib/filter/gr_fir_fff_armv7_a.h
+++ b/gnuradio-core/src/lib/filter/gr_fir_fff_armv7_a.h
@@ -21,12 +21,13 @@
#ifndef INCLUDED_GR_FIR_FFF_ARMV7_A_H
#define INCLUDED_GR_FIR_FFF_ARMV7_A_H
+#include <gr_core_api.h>
#include <gr_fir_fff_generic.h>
/*!
* \brief armv7_a using NEON coprocessor version of gr_fir_fff
*/
-class gr_fir_fff_armv7_a : public gr_fir_fff_generic
+class GR_CORE_API gr_fir_fff_armv7_a : public gr_fir_fff_generic
{
protected:
diff --git a/gnuradio-core/src/lib/filter/gr_fir_fff_simd.h b/gnuradio-core/src/lib/filter/gr_fir_fff_simd.h
index 82d3e3b99..781e4e7b9 100644
--- a/gnuradio-core/src/lib/filter/gr_fir_fff_simd.h
+++ b/gnuradio-core/src/lib/filter/gr_fir_fff_simd.h
@@ -22,6 +22,7 @@
#ifndef INCLUDED_GR_FIR_FFF_SIMD_H
#define INCLUDED_GR_FIR_FFF_SIMD_H
+#include <gr_core_api.h>
#include <gr_fir_fff_generic.h>
/*!
@@ -32,7 +33,7 @@
* subclasses.
*/
-class gr_fir_fff_simd : public gr_fir_fff_generic
+class GR_CORE_API gr_fir_fff_simd : public gr_fir_fff_generic
{
protected:
typedef float (*float_dotprod_t)(const float *input,
diff --git a/gnuradio-core/src/lib/filter/gr_fir_fff_x86.h b/gnuradio-core/src/lib/filter/gr_fir_fff_x86.h
index c288035ba..4e2f33181 100644
--- a/gnuradio-core/src/lib/filter/gr_fir_fff_x86.h
+++ b/gnuradio-core/src/lib/filter/gr_fir_fff_x86.h
@@ -23,12 +23,13 @@
#ifndef INCLUDED_GR_FIR_FFF_X86_H
#define INCLUDED_GR_FIR_FFF_X86_H
+#include <gr_core_api.h>
#include <gr_fir_fff_simd.h>
/*!
* \brief 3DNow! version of gr_fir_fff
*/
-class gr_fir_fff_3dnow : public gr_fir_fff_simd
+class GR_CORE_API gr_fir_fff_3dnow : public gr_fir_fff_simd
{
public:
gr_fir_fff_3dnow ();
@@ -38,7 +39,7 @@ public:
/*!
* \brief SSE version of gr_fir_fff
*/
-class gr_fir_fff_sse : public gr_fir_fff_simd
+class GR_CORE_API gr_fir_fff_sse : public gr_fir_fff_simd
{
public:
gr_fir_fff_sse ();
diff --git a/gnuradio-core/src/lib/filter/gr_fir_filter_XXX.h.t b/gnuradio-core/src/lib/filter/gr_fir_filter_XXX.h.t
index f2e56c901..db0625504 100644
--- a/gnuradio-core/src/lib/filter/gr_fir_filter_XXX.h.t
+++ b/gnuradio-core/src/lib/filter/gr_fir_filter_XXX.h.t
@@ -28,11 +28,12 @@
#ifndef @GUARD_NAME@
#define @GUARD_NAME@
+#include <gr_core_api.h>
#include <gr_sync_decimator.h>
class @NAME@;
typedef boost::shared_ptr<@NAME@> @SPTR_NAME@;
-@SPTR_NAME@ gr_make_@BASE_NAME@ (int decimation, const std::vector<@TAP_TYPE@> &taps);
+GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (int decimation, const std::vector<@TAP_TYPE@> &taps);
class @FIR_TYPE@;
@@ -40,10 +41,10 @@ class @FIR_TYPE@;
* \brief FIR filter with @I_TYPE@ input, @O_TYPE@ output and @TAP_TYPE@ taps
* \ingroup filter_blk
*/
-class @NAME@ : public gr_sync_decimator
+class GR_CORE_API @NAME@ : public gr_sync_decimator
{
private:
- friend @SPTR_NAME@ gr_make_@BASE_NAME@ (int decimation, const std::vector<@TAP_TYPE@> &taps);
+ friend GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (int decimation, const std::vector<@TAP_TYPE@> &taps);
@FIR_TYPE@ *d_fir;
std::vector<@TAP_TYPE@> d_new_taps;
diff --git a/gnuradio-core/src/lib/filter/gr_fir_fsf_simd.h b/gnuradio-core/src/lib/filter/gr_fir_fsf_simd.h
index ad689407d..6fcb6bd35 100644
--- a/gnuradio-core/src/lib/filter/gr_fir_fsf_simd.h
+++ b/gnuradio-core/src/lib/filter/gr_fir_fsf_simd.h
@@ -22,6 +22,7 @@
#ifndef _GR_FIR_FSF_SIMD_H_
#define _GR_FIR_FSF_SIMD_H_
+#include <gr_core_api.h>
#include <gr_fir_fsf_generic.h>
/*!
@@ -32,7 +33,7 @@
* subclasses.
*/
-class gr_fir_fsf_simd : public gr_fir_fsf_generic
+class GR_CORE_API gr_fir_fsf_simd : public gr_fir_fsf_generic
{
protected:
typedef float (*float_dotprod_t)(const float *input,
diff --git a/gnuradio-core/src/lib/filter/gr_fir_fsf_x86.h b/gnuradio-core/src/lib/filter/gr_fir_fsf_x86.h
index 78fdf73c0..0e11059b3 100644
--- a/gnuradio-core/src/lib/filter/gr_fir_fsf_x86.h
+++ b/gnuradio-core/src/lib/filter/gr_fir_fsf_x86.h
@@ -23,13 +23,14 @@
#ifndef INCLUDED_GR_FIR_FSF_X86_H
#define INCLUDED_GR_FIR_FSF_X86_H
+#include <gr_core_api.h>
#include <gr_fir_fsf_simd.h>
/*!
* \brief 3DNow! version of gr_fir_fsf
* \ingroup filter_primitive
*/
-class gr_fir_fsf_3dnow : public gr_fir_fsf_simd
+class GR_CORE_API gr_fir_fsf_3dnow : public gr_fir_fsf_simd
{
public:
gr_fir_fsf_3dnow ();
@@ -40,7 +41,7 @@ public:
* \brief SSE version of gr_fir_fsf
* \ingroup filter_primitive
*/
-class gr_fir_fsf_sse : public gr_fir_fsf_simd
+class GR_CORE_API gr_fir_fsf_sse : public gr_fir_fsf_simd
{
public:
gr_fir_fsf_sse ();
diff --git a/gnuradio-core/src/lib/filter/gr_fir_scc_simd.h b/gnuradio-core/src/lib/filter/gr_fir_scc_simd.h
index 2af45c8f4..9dced1578 100644
--- a/gnuradio-core/src/lib/filter/gr_fir_scc_simd.h
+++ b/gnuradio-core/src/lib/filter/gr_fir_scc_simd.h
@@ -22,6 +22,7 @@
#ifndef INCLUDED_GR_FIR_SCC_SIMD_H
#define INCLUDED_GR_FIR_SCC_SIMD_H
+#include <gr_core_api.h>
#include <gr_fir_scc_generic.h>
@@ -32,7 +33,7 @@
* This base class handles alignment issues common to SSE and 3DNOW
* subclasses.
*/
-class gr_fir_scc_simd : public gr_fir_scc_generic
+class GR_CORE_API gr_fir_scc_simd : public gr_fir_scc_generic
{
protected:
typedef void (*complex_dotprod_t)(const short *input,
diff --git a/gnuradio-core/src/lib/filter/gr_fir_scc_x86.h b/gnuradio-core/src/lib/filter/gr_fir_scc_x86.h
index 0cb5e3f7c..484bdc5a0 100644
--- a/gnuradio-core/src/lib/filter/gr_fir_scc_x86.h
+++ b/gnuradio-core/src/lib/filter/gr_fir_scc_x86.h
@@ -23,12 +23,13 @@
#ifndef INCLUDED_GR_FIR_SCC_X86_H
#define INCLUDED_GR_FIR_SCC_X86_H
+#include <gr_core_api.h>
#include <gr_fir_scc_simd.h>
/*!
* \brief 3DNow! version of gr_fir_scc
*/
-class gr_fir_scc_3dnow : public gr_fir_scc_simd
+class GR_CORE_API gr_fir_scc_3dnow : public gr_fir_scc_simd
{
public:
gr_fir_scc_3dnow ();
@@ -38,7 +39,7 @@ public:
/*!
* \brief 3DNow! Ext version of gr_fir_scc
*/
-class gr_fir_scc_3dnowext : public gr_fir_scc_simd
+class GR_CORE_API gr_fir_scc_3dnowext : public gr_fir_scc_simd
{
public:
gr_fir_scc_3dnowext ();
@@ -48,7 +49,7 @@ public:
/*!
* \brief SSE version of gr_fir_scc
*/
-class gr_fir_scc_sse : public gr_fir_scc_simd
+class GR_CORE_API gr_fir_scc_sse : public gr_fir_scc_simd
{
public:
gr_fir_scc_sse ();
diff --git a/gnuradio-core/src/lib/filter/gr_fir_sysconfig_armv7_a.h b/gnuradio-core/src/lib/filter/gr_fir_sysconfig_armv7_a.h
index c77b81026..69ee46019 100644
--- a/gnuradio-core/src/lib/filter/gr_fir_sysconfig_armv7_a.h
+++ b/gnuradio-core/src/lib/filter/gr_fir_sysconfig_armv7_a.h
@@ -22,9 +22,10 @@
#ifndef INCLUDED_GR_FIR_SYSCONFIG_ARMV7_A_H
#define INCLUDED_GR_FIR_SYSCONFIG_ARMV7_A_H
+#include <gr_core_api.h>
#include <gr_fir_sysconfig_generic.h>
-class gr_fir_sysconfig_armv7_a : public gr_fir_sysconfig_generic {
+class GR_CORE_API gr_fir_sysconfig_armv7_a : public gr_fir_sysconfig_generic {
public:
virtual gr_fir_ccf *create_gr_fir_ccf (const std::vector<float> &taps);
virtual gr_fir_fcc *create_gr_fir_fcc (const std::vector<gr_complex> &taps);
diff --git a/gnuradio-core/src/lib/filter/gr_fir_sysconfig_powerpc.h b/gnuradio-core/src/lib/filter/gr_fir_sysconfig_powerpc.h
index 9c31cdf1b..d6be7653f 100644
--- a/gnuradio-core/src/lib/filter/gr_fir_sysconfig_powerpc.h
+++ b/gnuradio-core/src/lib/filter/gr_fir_sysconfig_powerpc.h
@@ -22,9 +22,10 @@
#ifndef INCLUDED_GR_FIR_SYSCONFIG_POWERPC_H
#define INCLUDED_GR_FIR_SYSCONFIG_POWERPC_H
+#include <gr_core_api.h>
#include <gr_fir_sysconfig_generic.h>
-class gr_fir_sysconfig_powerpc : public gr_fir_sysconfig_generic {
+class GR_CORE_API gr_fir_sysconfig_powerpc : public gr_fir_sysconfig_generic {
public:
virtual gr_fir_ccf *create_gr_fir_ccf (const std::vector<float> &taps);
virtual gr_fir_fcc *create_gr_fir_fcc (const std::vector<gr_complex> &taps);
diff --git a/gnuradio-core/src/lib/filter/gr_fir_sysconfig_x86.h b/gnuradio-core/src/lib/filter/gr_fir_sysconfig_x86.h
index a4d0f92b0..49899d895 100644
--- a/gnuradio-core/src/lib/filter/gr_fir_sysconfig_x86.h
+++ b/gnuradio-core/src/lib/filter/gr_fir_sysconfig_x86.h
@@ -22,9 +22,10 @@
#ifndef INCLUDED_GR_FIR_SYSCONFIG_X86_H
#define INCLUDED_GR_FIR_SYSCONFIG_X86_H
+#include <gr_core_api.h>
#include <gr_fir_sysconfig_generic.h>
-class gr_fir_sysconfig_x86 : public gr_fir_sysconfig_generic {
+class GR_CORE_API gr_fir_sysconfig_x86 : public gr_fir_sysconfig_generic {
public:
virtual gr_fir_ccf *create_gr_fir_ccf (const std::vector<float> &taps);
virtual gr_fir_fcc *create_gr_fir_fcc (const std::vector<gr_complex> &taps);
diff --git a/gnuradio-core/src/lib/filter/gr_fractional_interpolator_cc.h b/gnuradio-core/src/lib/filter/gr_fractional_interpolator_cc.h
index c8378c43e..29c67895a 100644
--- a/gnuradio-core/src/lib/filter/gr_fractional_interpolator_cc.h
+++ b/gnuradio-core/src/lib/filter/gr_fractional_interpolator_cc.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_GR_FRACTIONAL_INTERPOLATOR_CC_H
#define INCLUDED_GR_FRACTIONAL_INTERPOLATOR_CC_H
+#include <gr_core_api.h>
#include <gr_block.h>
class gri_mmse_fir_interpolator_cc;
@@ -31,13 +32,13 @@ class gr_fractional_interpolator_cc;
typedef boost::shared_ptr<gr_fractional_interpolator_cc> gr_fractional_interpolator_cc_sptr;
// public constructor
-gr_fractional_interpolator_cc_sptr gr_make_fractional_interpolator_cc (float phase_shift, float interp_ratio);
+GR_CORE_API gr_fractional_interpolator_cc_sptr gr_make_fractional_interpolator_cc (float phase_shift, float interp_ratio);
/*!
* \brief Interpolating mmse filter with gr_complex input, gr_complex output
* \ingroup filter_blk
*/
-class gr_fractional_interpolator_cc : public gr_block
+class GR_CORE_API gr_fractional_interpolator_cc : public gr_block
{
public:
~gr_fractional_interpolator_cc ();
@@ -60,7 +61,7 @@ private:
float d_mu_inc;
gri_mmse_fir_interpolator_cc *d_interp;
- friend gr_fractional_interpolator_cc_sptr
+ friend GR_CORE_API gr_fractional_interpolator_cc_sptr
gr_make_fractional_interpolator_cc (float phase_shift, float interp_ratio);
};
diff --git a/gnuradio-core/src/lib/filter/gr_fractional_interpolator_ff.h b/gnuradio-core/src/lib/filter/gr_fractional_interpolator_ff.h
index f50129289..7e000a6d1 100644
--- a/gnuradio-core/src/lib/filter/gr_fractional_interpolator_ff.h
+++ b/gnuradio-core/src/lib/filter/gr_fractional_interpolator_ff.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_GR_FRACTIONAL_INTERPOLATOR_FF_H
#define INCLUDED_GR_FRACTIONAL_INTERPOLATOR_FF_H
+#include <gr_core_api.h>
#include <gr_block.h>
class gri_mmse_fir_interpolator;
@@ -31,13 +32,13 @@ class gr_fractional_interpolator_ff;
typedef boost::shared_ptr<gr_fractional_interpolator_ff> gr_fractional_interpolator_ff_sptr;
// public constructor
-gr_fractional_interpolator_ff_sptr gr_make_fractional_interpolator_ff (float phase_shift, float interp_ratio);
+GR_CORE_API gr_fractional_interpolator_ff_sptr gr_make_fractional_interpolator_ff (float phase_shift, float interp_ratio);
/*!
* \brief Interpolating mmse filter with float input, float output
* \ingroup filter_blk
*/
-class gr_fractional_interpolator_ff : public gr_block
+class GR_CORE_API gr_fractional_interpolator_ff : public gr_block
{
public:
~gr_fractional_interpolator_ff ();
@@ -60,7 +61,7 @@ private:
float d_mu_inc;
gri_mmse_fir_interpolator *d_interp;
- friend gr_fractional_interpolator_ff_sptr
+ friend GR_CORE_API gr_fractional_interpolator_ff_sptr
gr_make_fractional_interpolator_ff (float phase_shift, float interp_ratio);
};
diff --git a/gnuradio-core/src/lib/filter/gr_freq_xlating_fir_filter_XXX.h.t b/gnuradio-core/src/lib/filter/gr_freq_xlating_fir_filter_XXX.h.t
index 1205e8a08..bb05c138b 100644
--- a/gnuradio-core/src/lib/filter/gr_freq_xlating_fir_filter_XXX.h.t
+++ b/gnuradio-core/src/lib/filter/gr_freq_xlating_fir_filter_XXX.h.t
@@ -29,6 +29,7 @@
#ifndef @GUARD_NAME@
#define @GUARD_NAME@
+#include <gr_core_api.h>
#include <gr_sync_decimator.h>
#include <gr_rotator.h>
@@ -40,7 +41,7 @@ typedef boost::shared_ptr<@NAME@> @SPTR_NAME@;
* translation that shifts center_freq down to zero Hz. The frequency
* translation logically comes before the filtering operation.
*/
-@SPTR_NAME@
+GR_CORE_API @SPTR_NAME@
gr_make_@BASE_NAME@ (int decimation, const std::vector<@TAP_TYPE@> &taps,
double center_freq, double sampling_freq);
@@ -60,7 +61,7 @@ class @FIR_TYPE@;
* Uses a single input array to produce a single output array.
* Additional inputs and/or outputs are ignored.
*/
-class @NAME@ : public gr_sync_decimator
+class GR_CORE_API @NAME@ : public gr_sync_decimator
{
public:
virtual ~@NAME@ ();
@@ -73,7 +74,7 @@ class @NAME@ : public gr_sync_decimator
gr_vector_void_star &output_items);
private:
- friend @SPTR_NAME@
+ friend GR_CORE_API @SPTR_NAME@
gr_make_@BASE_NAME@ (int decimation, const std::vector<@TAP_TYPE@> &taps,
double center_freq, double sampling_freq);
diff --git a/gnuradio-core/src/lib/filter/gr_goertzel_fc.h b/gnuradio-core/src/lib/filter/gr_goertzel_fc.h
index c60b63d88..6b5d8527c 100644
--- a/gnuradio-core/src/lib/filter/gr_goertzel_fc.h
+++ b/gnuradio-core/src/lib/filter/gr_goertzel_fc.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_GR_GOERTZEL_FC_H
#define INCLUDED_GR_GOERTZEL_FC_H
+#include <gr_core_api.h>
#include <gri_goertzel.h>
#include <gr_sync_decimator.h>
@@ -30,16 +31,16 @@ class gr_goertzel_fc;
typedef boost::shared_ptr<gr_goertzel_fc> gr_goertzel_fc_sptr;
// public constructor
-gr_goertzel_fc_sptr gr_make_goertzel_fc(int rate, int len, float freq);
+GR_CORE_API gr_goertzel_fc_sptr gr_make_goertzel_fc(int rate, int len, float freq);
/*!
* \brief Goertzel single-bin DFT calculation.
* \ingroup dft_blk
*/
-class gr_goertzel_fc : public gr_sync_decimator
+class GR_CORE_API gr_goertzel_fc : public gr_sync_decimator
{
private:
- friend gr_goertzel_fc_sptr gr_make_goertzel_fc (int rate, int len, float freq);
+ friend GR_CORE_API gr_goertzel_fc_sptr gr_make_goertzel_fc (int rate, int len, float freq);
gr_goertzel_fc(int rate, int len, float freq);
gri_goertzel d_goertzel;
diff --git a/gnuradio-core/src/lib/filter/gr_hilbert_fc.h b/gnuradio-core/src/lib/filter/gr_hilbert_fc.h
index adcac7793..ba73324ee 100644
--- a/gnuradio-core/src/lib/filter/gr_hilbert_fc.h
+++ b/gnuradio-core/src/lib/filter/gr_hilbert_fc.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_GR_HILBERT_FC_H
#define INCLUDED_GR_HILBERT_FC_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
#include <gr_io_signature.h>
#include <gr_types.h>
@@ -31,7 +32,7 @@ class gr_hilbert_fc;
typedef boost::shared_ptr<gr_hilbert_fc> gr_hilbert_fc_sptr;
// public constructor
-gr_hilbert_fc_sptr gr_make_hilbert_fc (unsigned int ntaps);
+GR_CORE_API gr_hilbert_fc_sptr gr_make_hilbert_fc (unsigned int ntaps);
class gr_fir_fff;
@@ -44,7 +45,7 @@ class gr_fir_fff;
* imaginary output is hilbert filtered (90 degree phase shift)
* version of input.
*/
-class gr_hilbert_fc : public gr_sync_block
+class GR_CORE_API gr_hilbert_fc : public gr_sync_block
{
public:
~gr_hilbert_fc ();
@@ -60,7 +61,7 @@ class gr_hilbert_fc : public gr_sync_block
unsigned int d_ntaps;
gr_fir_fff *d_hilb;
- friend gr_hilbert_fc_sptr gr_make_hilbert_fc (unsigned int ntaps);
+ friend GR_CORE_API gr_hilbert_fc_sptr gr_make_hilbert_fc (unsigned int ntaps);
};
diff --git a/gnuradio-core/src/lib/filter/gr_iir_filter_ffd.h b/gnuradio-core/src/lib/filter/gr_iir_filter_ffd.h
index 0382646f1..386d056e5 100644
--- a/gnuradio-core/src/lib/filter/gr_iir_filter_ffd.h
+++ b/gnuradio-core/src/lib/filter/gr_iir_filter_ffd.h
@@ -23,13 +23,14 @@
#ifndef INCLUDED_GR_IIR_FILTER_FFD_H
#define INCLUDED_GR_IIR_FILTER_FFD_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
#include <gri_iir.h>
#include <stdexcept>
class gr_iir_filter_ffd;
typedef boost::shared_ptr<gr_iir_filter_ffd> gr_iir_filter_ffd_sptr;
-gr_iir_filter_ffd_sptr
+GR_CORE_API gr_iir_filter_ffd_sptr
gr_make_iir_filter_ffd (const std::vector<double> &fftaps,
const std::vector<double> &fbtaps) throw (std::invalid_argument);
@@ -56,10 +57,10 @@ gr_make_iir_filter_ffd (const std::vector<double> &fftaps,
* Note that some texts define the system function with a + in the denominator.
* If you're using that convention, you'll need to negate the feedback taps.
*/
-class gr_iir_filter_ffd : public gr_sync_block
+class GR_CORE_API gr_iir_filter_ffd : public gr_sync_block
{
private:
- friend gr_iir_filter_ffd_sptr
+ friend GR_CORE_API gr_iir_filter_ffd_sptr
gr_make_iir_filter_ffd (const std::vector<double> &fftaps,
const std::vector<double> &fbtaps) throw (std::invalid_argument);
diff --git a/gnuradio-core/src/lib/filter/gr_interp_fir_filter_XXX.h.t b/gnuradio-core/src/lib/filter/gr_interp_fir_filter_XXX.h.t
index 790e0b908..4a3590fc7 100644
--- a/gnuradio-core/src/lib/filter/gr_interp_fir_filter_XXX.h.t
+++ b/gnuradio-core/src/lib/filter/gr_interp_fir_filter_XXX.h.t
@@ -28,11 +28,12 @@
#ifndef @GUARD_NAME@
#define @GUARD_NAME@
+#include <gr_core_api.h>
#include <gr_sync_interpolator.h>
class @NAME@;
typedef boost::shared_ptr<@NAME@> @SPTR_NAME@;
-@SPTR_NAME@ gr_make_@BASE_NAME@ (unsigned interpolation, const std::vector<@TAP_TYPE@> &taps);
+GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (unsigned interpolation, const std::vector<@TAP_TYPE@> &taps);
class @FIR_TYPE@;
@@ -40,10 +41,10 @@ class @FIR_TYPE@;
* \brief Interpolating FIR filter with @I_TYPE@ input, @O_TYPE@ output and @TAP_TYPE@ taps
* \ingroup filter_blk
*/
-class @NAME@ : public gr_sync_interpolator
+class GR_CORE_API @NAME@ : public gr_sync_interpolator
{
private:
- friend @SPTR_NAME@ gr_make_@BASE_NAME@ (unsigned interpolation, const std::vector<@TAP_TYPE@> &taps);
+ friend GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (unsigned interpolation, const std::vector<@TAP_TYPE@> &taps);
std::vector<@TAP_TYPE@> d_new_taps;
bool d_updated;
diff --git a/gnuradio-core/src/lib/filter/gr_pfb_arb_resampler_ccf.h b/gnuradio-core/src/lib/filter/gr_pfb_arb_resampler_ccf.h
index 806c33d92..749db937e 100644
--- a/gnuradio-core/src/lib/filter/gr_pfb_arb_resampler_ccf.h
+++ b/gnuradio-core/src/lib/filter/gr_pfb_arb_resampler_ccf.h
@@ -24,11 +24,12 @@
#ifndef INCLUDED_GR_PFB_ARB_RESAMPLER_CCF_H
#define INCLUDED_GR_PFB_ARB_RESAMPLER_CCF_H
+#include <gr_core_api.h>
#include <gr_block.h>
class gr_pfb_arb_resampler_ccf;
typedef boost::shared_ptr<gr_pfb_arb_resampler_ccf> gr_pfb_arb_resampler_ccf_sptr;
-gr_pfb_arb_resampler_ccf_sptr gr_make_pfb_arb_resampler_ccf (float rate,
+GR_CORE_API gr_pfb_arb_resampler_ccf_sptr gr_make_pfb_arb_resampler_ccf (float rate,
const std::vector<float> &taps,
unsigned int filter_size=32);
@@ -96,7 +97,7 @@ class gr_fir_ccf;
* Systems", Upper Saddle River, NJ: Prentice Hall, Inc. 2004.</EM></B>
*/
-class gr_pfb_arb_resampler_ccf : public gr_block
+class GR_CORE_API gr_pfb_arb_resampler_ccf : public gr_block
{
private:
/*!
@@ -108,7 +109,7 @@ class gr_pfb_arb_resampler_ccf : public gr_block
related to quantization noise introduced during the resampling.
Defaults to 32 filters.
*/
- friend gr_pfb_arb_resampler_ccf_sptr gr_make_pfb_arb_resampler_ccf (float rate,
+ friend GR_CORE_API gr_pfb_arb_resampler_ccf_sptr gr_make_pfb_arb_resampler_ccf (float rate,
const std::vector<float> &taps,
unsigned int filter_size);
diff --git a/gnuradio-core/src/lib/filter/gr_pfb_arb_resampler_fff.h b/gnuradio-core/src/lib/filter/gr_pfb_arb_resampler_fff.h
index 69331a2c6..7fef06143 100644
--- a/gnuradio-core/src/lib/filter/gr_pfb_arb_resampler_fff.h
+++ b/gnuradio-core/src/lib/filter/gr_pfb_arb_resampler_fff.h
@@ -24,11 +24,12 @@
#ifndef INCLUDED_GR_PFB_ARB_RESAMPLER_FFF_H
#define INCLUDED_GR_PFB_ARB_RESAMPLER_FFF_H
+#include <gr_core_api.h>
#include <gr_block.h>
class gr_pfb_arb_resampler_fff;
typedef boost::shared_ptr<gr_pfb_arb_resampler_fff> gr_pfb_arb_resampler_fff_sptr;
-gr_pfb_arb_resampler_fff_sptr gr_make_pfb_arb_resampler_fff (float rate,
+GR_CORE_API gr_pfb_arb_resampler_fff_sptr gr_make_pfb_arb_resampler_fff (float rate,
const std::vector<float> &taps,
unsigned int filter_size=32);
@@ -96,7 +97,7 @@ class gr_fir_fff;
* Systems", Upper Saddle River, NJ: Prentice Hall, Inc. 2004.</EM></B>
*/
-class gr_pfb_arb_resampler_fff : public gr_block
+class GR_CORE_API gr_pfb_arb_resampler_fff : public gr_block
{
private:
/*!
@@ -108,7 +109,7 @@ class gr_pfb_arb_resampler_fff : public gr_block
related to quantization noise introduced during the resampling.
Defaults to 32 filters.
*/
- friend gr_pfb_arb_resampler_fff_sptr gr_make_pfb_arb_resampler_fff (float rate,
+ friend GR_CORE_API gr_pfb_arb_resampler_fff_sptr gr_make_pfb_arb_resampler_fff (float rate,
const std::vector<float> &taps,
unsigned int filter_size);
diff --git a/gnuradio-core/src/lib/filter/gr_pfb_channelizer_ccf.h b/gnuradio-core/src/lib/filter/gr_pfb_channelizer_ccf.h
index 68476ed3c..8fd5c4f78 100644
--- a/gnuradio-core/src/lib/filter/gr_pfb_channelizer_ccf.h
+++ b/gnuradio-core/src/lib/filter/gr_pfb_channelizer_ccf.h
@@ -24,11 +24,12 @@
#ifndef INCLUDED_GR_PFB_CHANNELIZER_CCF_H
#define INCLUDED_GR_PFB_CHANNELIZER_CCF_H
+#include <gr_core_api.h>
#include <gr_block.h>
class gr_pfb_channelizer_ccf;
typedef boost::shared_ptr<gr_pfb_channelizer_ccf> gr_pfb_channelizer_ccf_sptr;
-gr_pfb_channelizer_ccf_sptr gr_make_pfb_channelizer_ccf (unsigned int numchans,
+GR_CORE_API gr_pfb_channelizer_ccf_sptr gr_make_pfb_channelizer_ccf (unsigned int numchans,
const std::vector<float> &taps,
float oversample_rate=1);
@@ -111,7 +112,7 @@ class gri_fft_complex;
*
*/
-class gr_pfb_channelizer_ccf : public gr_block
+class GR_CORE_API gr_pfb_channelizer_ccf : public gr_block
{
private:
/*!
@@ -131,7 +132,7 @@ class gr_pfb_channelizer_ccf : public gr_block
* sample rate of a 6/1 oversample ratio is 6000 Hz, or
* 6 times the normal 1000 Hz.
*/
- friend gr_pfb_channelizer_ccf_sptr gr_make_pfb_channelizer_ccf (unsigned int numchans,
+ friend GR_CORE_API gr_pfb_channelizer_ccf_sptr gr_make_pfb_channelizer_ccf (unsigned int numchans,
const std::vector<float> &taps,
float oversample_rate);
diff --git a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h
index 674dee181..514f580ba 100644
--- a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h
+++ b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_ccf.h
@@ -24,11 +24,12 @@
#ifndef INCLUDED_GR_PFB_CLOCK_SYNC_CCF_H
#define INCLUDED_GR_PFB_CLOCK_SYNC_CCF_H
+#include <gr_core_api.h>
#include <gr_block.h>
class gr_pfb_clock_sync_ccf;
typedef boost::shared_ptr<gr_pfb_clock_sync_ccf> gr_pfb_clock_sync_ccf_sptr;
-gr_pfb_clock_sync_ccf_sptr gr_make_pfb_clock_sync_ccf (double sps, float loop_bw,
+GR_CORE_API gr_pfb_clock_sync_ccf_sptr gr_make_pfb_clock_sync_ccf (double sps, float loop_bw,
const std::vector<float> &taps,
unsigned int filter_size=32,
float init_phase=0,
@@ -125,7 +126,7 @@ class gr_fir_ccf;
*
*/
-class gr_pfb_clock_sync_ccf : public gr_block
+class GR_CORE_API gr_pfb_clock_sync_ccf : public gr_block
{
private:
/*!
@@ -140,7 +141,7 @@ class gr_pfb_clock_sync_ccf : public gr_block
* \param osps (int) The number of output samples per symbol (default=1).
*
*/
- friend gr_pfb_clock_sync_ccf_sptr gr_make_pfb_clock_sync_ccf (double sps, float loop_bw,
+ friend GR_CORE_API gr_pfb_clock_sync_ccf_sptr gr_make_pfb_clock_sync_ccf (double sps, float loop_bw,
const std::vector<float> &taps,
unsigned int filter_size,
float init_phase,
diff --git a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_fff.h b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_fff.h
index d7c646801..447d3e59d 100644
--- a/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_fff.h
+++ b/gnuradio-core/src/lib/filter/gr_pfb_clock_sync_fff.h
@@ -24,11 +24,12 @@
#ifndef INCLUDED_GR_PFB_CLOCK_SYNC_FFF_H
#define INCLUDED_GR_PFB_CLOCK_SYNC_FFF_H
+#include <gr_core_api.h>
#include <gr_block.h>
class gr_pfb_clock_sync_fff;
typedef boost::shared_ptr<gr_pfb_clock_sync_fff> gr_pfb_clock_sync_fff_sptr;
-gr_pfb_clock_sync_fff_sptr gr_make_pfb_clock_sync_fff (double sps, float gain,
+GR_CORE_API gr_pfb_clock_sync_fff_sptr gr_make_pfb_clock_sync_fff (double sps, float gain,
const std::vector<float> &taps,
unsigned int filter_size=32,
float init_phase=0,
@@ -124,7 +125,7 @@ class gr_fir_fff;
*
*/
-class gr_pfb_clock_sync_fff : public gr_block
+class GR_CORE_API gr_pfb_clock_sync_fff : public gr_block
{
private:
/*!
@@ -138,7 +139,7 @@ class gr_pfb_clock_sync_fff : public gr_block
* \param max_rate_deviation (float) Distance from 0 d_rate can get (default = 1.5).
*
*/
- friend gr_pfb_clock_sync_fff_sptr gr_make_pfb_clock_sync_fff (double sps, float gain,
+ friend GR_CORE_API gr_pfb_clock_sync_fff_sptr gr_make_pfb_clock_sync_fff (double sps, float gain,
const std::vector<float> &taps,
unsigned int filter_size,
float init_phase,
diff --git a/gnuradio-core/src/lib/filter/gr_pfb_decimator_ccf.h b/gnuradio-core/src/lib/filter/gr_pfb_decimator_ccf.h
index 6b75c5859..0ae054685 100644
--- a/gnuradio-core/src/lib/filter/gr_pfb_decimator_ccf.h
+++ b/gnuradio-core/src/lib/filter/gr_pfb_decimator_ccf.h
@@ -24,11 +24,12 @@
#ifndef INCLUDED_GR_PFB_DECIMATOR_CCF_H
#define INCLUDED_GR_PFB_DECIMATOR_CCF_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class gr_pfb_decimator_ccf;
typedef boost::shared_ptr<gr_pfb_decimator_ccf> gr_pfb_decimator_ccf_sptr;
-gr_pfb_decimator_ccf_sptr gr_make_pfb_decimator_ccf (unsigned int decim,
+GR_CORE_API gr_pfb_decimator_ccf_sptr gr_make_pfb_decimator_ccf (unsigned int decim,
const std::vector<float> &taps,
unsigned int channel=0);
@@ -93,7 +94,7 @@ class gri_fft_complex;
* Systems," Upper Saddle River, NJ: Prentice Hall, Inc. 2004.</EM></B>
*/
-class gr_pfb_decimator_ccf : public gr_sync_block
+class GR_CORE_API gr_pfb_decimator_ccf : public gr_sync_block
{
private:
/*!
@@ -102,7 +103,7 @@ class gr_pfb_decimator_ccf : public gr_sync_block
* \param taps (vector/list of floats) The prototype filter to populate the filterbank.
* \param channel (unsigned integer) Selects the channel to return [default=0].
*/
- friend gr_pfb_decimator_ccf_sptr gr_make_pfb_decimator_ccf (unsigned int decim,
+ friend GR_CORE_API gr_pfb_decimator_ccf_sptr gr_make_pfb_decimator_ccf (unsigned int decim,
const std::vector<float> &taps,
unsigned int channel);
diff --git a/gnuradio-core/src/lib/filter/gr_pfb_interpolator_ccf.h b/gnuradio-core/src/lib/filter/gr_pfb_interpolator_ccf.h
index 3dc52938e..6885881e9 100644
--- a/gnuradio-core/src/lib/filter/gr_pfb_interpolator_ccf.h
+++ b/gnuradio-core/src/lib/filter/gr_pfb_interpolator_ccf.h
@@ -24,11 +24,12 @@
#ifndef INCLUDED_GR_PFB_INTERPOLATOR_CCF_H
#define INCLUDED_GR_PFB_INTERPOLATOR_CCF_H
+#include <gr_core_api.h>
#include <gr_sync_interpolator.h>
class gr_pfb_interpolator_ccf;
typedef boost::shared_ptr<gr_pfb_interpolator_ccf> gr_pfb_interpolator_ccf_sptr;
-gr_pfb_interpolator_ccf_sptr gr_make_pfb_interpolator_ccf (unsigned int interp,
+GR_CORE_API gr_pfb_interpolator_ccf_sptr gr_make_pfb_interpolator_ccf (unsigned int interp,
const std::vector<float> &taps);
class gr_fir_ccf;
@@ -80,7 +81,7 @@ class gr_fir_ccf;
* Inc. 2004.</EM></B>
*/
-class gr_pfb_interpolator_ccf : public gr_sync_interpolator
+class GR_CORE_API gr_pfb_interpolator_ccf : public gr_sync_interpolator
{
private:
/*!
@@ -89,7 +90,7 @@ class gr_pfb_interpolator_ccf : public gr_sync_interpolator
* \param taps (vector/list of floats) The prototype filter to populate the filterbank. The taps
* should be generated at the interpolated sampling rate.
*/
- friend gr_pfb_interpolator_ccf_sptr gr_make_pfb_interpolator_ccf (unsigned int interp,
+ friend GR_CORE_API gr_pfb_interpolator_ccf_sptr gr_make_pfb_interpolator_ccf (unsigned int interp,
const std::vector<float> &taps);
std::vector<gr_fir_ccf*> d_filters;
diff --git a/gnuradio-core/src/lib/filter/gr_pfb_synthesis_filterbank_ccf.h b/gnuradio-core/src/lib/filter/gr_pfb_synthesis_filterbank_ccf.h
index 7e3700921..1f772b1dd 100644
--- a/gnuradio-core/src/lib/filter/gr_pfb_synthesis_filterbank_ccf.h
+++ b/gnuradio-core/src/lib/filter/gr_pfb_synthesis_filterbank_ccf.h
@@ -24,12 +24,13 @@
#ifndef INCLUDED_GR_PFB_SYNTHESIS_FILTERBANK_CCF_H
#define INCLUDED_GR_PFB_SYNTHESIS_FILTERBANK_CCF_H
+#include <gr_core_api.h>
#include <gr_sync_interpolator.h>
#include <gri_fir_filter_with_buffer_ccf.h>
class gr_pfb_synthesis_filterbank_ccf;
typedef boost::shared_ptr<gr_pfb_synthesis_filterbank_ccf> gr_pfb_synthesis_filterbank_ccf_sptr;
-gr_pfb_synthesis_filterbank_ccf_sptr gr_make_pfb_synthesis_filterbank_ccf
+GR_CORE_API gr_pfb_synthesis_filterbank_ccf_sptr gr_make_pfb_synthesis_filterbank_ccf
(unsigned int numchans, const std::vector<float> &taps);
class gri_fft_complex;
@@ -45,7 +46,7 @@ class gri_fft_complex;
* \ingroup pfb_blk
*/
-class gr_pfb_synthesis_filterbank_ccf : public gr_sync_interpolator
+class GR_CORE_API gr_pfb_synthesis_filterbank_ccf : public gr_sync_interpolator
{
private:
/*!
@@ -55,7 +56,7 @@ class gr_pfb_synthesis_filterbank_ccf : public gr_sync_interpolator
* \param taps (vector/list of floats) The prototype filter to
populate the filterbank.
*/
- friend gr_pfb_synthesis_filterbank_ccf_sptr gr_make_pfb_synthesis_filterbank_ccf
+ friend GR_CORE_API gr_pfb_synthesis_filterbank_ccf_sptr gr_make_pfb_synthesis_filterbank_ccf
(unsigned int numchans, const std::vector<float> &taps);
bool d_updated;
diff --git a/gnuradio-core/src/lib/filter/gr_rational_resampler_base_XXX.h.t b/gnuradio-core/src/lib/filter/gr_rational_resampler_base_XXX.h.t
index 983b350fa..8f50acc72 100644
--- a/gnuradio-core/src/lib/filter/gr_rational_resampler_base_XXX.h.t
+++ b/gnuradio-core/src/lib/filter/gr_rational_resampler_base_XXX.h.t
@@ -29,11 +29,12 @@
#ifndef @GUARD_NAME@
#define @GUARD_NAME@
+#include <gr_core_api.h>
#include <gr_block.h>
class @NAME@;
typedef boost::shared_ptr<@NAME@> @SPTR_NAME@;
-@SPTR_NAME@
+GR_CORE_API @SPTR_NAME@
gr_make_@BASE_NAME@ (unsigned interpolation,
unsigned decimation,
const std::vector<@TAP_TYPE@> &taps);
@@ -44,7 +45,7 @@ class @FIR_TYPE@;
* \brief Rational Resampling Polyphase FIR filter with @I_TYPE@ input, @O_TYPE@ output and @TAP_TYPE@ taps
* \ingroup filter_blk
*/
-class @NAME@ : public gr_block
+class GR_CORE_API @NAME@ : public gr_block
{
private:
unsigned d_history;
@@ -54,7 +55,7 @@ class @NAME@ : public gr_block
bool d_updated;
std::vector<@FIR_TYPE@ *> d_firs;
- friend @SPTR_NAME@
+ friend GR_CORE_API @SPTR_NAME@
gr_make_@BASE_NAME@ (unsigned interpolation, unsigned decimation, const std::vector<@TAP_TYPE@> &taps);
diff --git a/gnuradio-core/src/lib/filter/gr_rotator.h b/gnuradio-core/src/lib/filter/gr_rotator.h
index cb8f21a40..23c7a2830 100644
--- a/gnuradio-core/src/lib/filter/gr_rotator.h
+++ b/gnuradio-core/src/lib/filter/gr_rotator.h
@@ -23,9 +23,10 @@
#ifndef _GR_ROTATOR_H_
#define _GR_ROTATOR_H_
+#include <gr_core_api.h>
#include <gr_complex.h>
-class gr_rotator {
+class GR_CORE_API gr_rotator {
gr_complex d_phase;
gr_complex d_phase_incr;
unsigned int d_counter;
diff --git a/gnuradio-core/src/lib/filter/gr_sincos.h b/gnuradio-core/src/lib/filter/gr_sincos.h
index a8e267951..3d5c99083 100644
--- a/gnuradio-core/src/lib/filter/gr_sincos.h
+++ b/gnuradio-core/src/lib/filter/gr_sincos.h
@@ -23,14 +23,16 @@
#ifndef INCLUDED_GR_SINCOS_H
#define INCLUDED_GR_SINCOS_H
+#include <gr_core_api.h>
+
#ifdef __cplusplus
extern "C" {
#endif
// compute sine and cosine at the same time
-void gr_sincos (double x, double *sin, double *cos);
-void gr_sincosf (float x, float *sin, float *cos);
+GR_CORE_API void gr_sincos (double x, double *sin, double *cos);
+GR_CORE_API void gr_sincosf (float x, float *sin, float *cos);
#ifdef __cplusplus
};
diff --git a/gnuradio-core/src/lib/filter/gr_single_pole_iir.h b/gnuradio-core/src/lib/filter/gr_single_pole_iir.h
index 8781065d4..fb52e29e9 100644
--- a/gnuradio-core/src/lib/filter/gr_single_pole_iir.h
+++ b/gnuradio-core/src/lib/filter/gr_single_pole_iir.h
@@ -22,6 +22,7 @@
#ifndef _GR_SINGLE_POLE_IIR_H_
#define _GR_SINGLE_POLE_IIR_H_
+#include <gr_core_api.h>
#include <stdexcept>
#include <gr_complex.h>
/*!
diff --git a/gnuradio-core/src/lib/filter/gr_single_pole_iir_filter_cc.h b/gnuradio-core/src/lib/filter/gr_single_pole_iir_filter_cc.h
index 1f1073424..3ce468db2 100644
--- a/gnuradio-core/src/lib/filter/gr_single_pole_iir_filter_cc.h
+++ b/gnuradio-core/src/lib/filter/gr_single_pole_iir_filter_cc.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_GR_SINGLE_POLE_IIR_FILTER_CC_H
#define INCLUDED_GR_SINGLE_POLE_IIR_FILTER_CC_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
#include <gr_single_pole_iir.h>
#include <gr_complex.h>
@@ -31,7 +32,7 @@
class gr_single_pole_iir_filter_cc;
typedef boost::shared_ptr<gr_single_pole_iir_filter_cc> gr_single_pole_iir_filter_cc_sptr;
-gr_single_pole_iir_filter_cc_sptr
+GR_CORE_API gr_single_pole_iir_filter_cc_sptr
gr_make_single_pole_iir_filter_cc (double alpha, unsigned int vlen=1);
/*!
@@ -53,10 +54,10 @@ gr_make_single_pole_iir_filter_cc (double alpha, unsigned int vlen=1);
* Note that some texts define the system function with a + in the denominator.
* If you're using that convention, you'll need to negate the feedback tap.
*/
-class gr_single_pole_iir_filter_cc : public gr_sync_block
+class GR_CORE_API gr_single_pole_iir_filter_cc : public gr_sync_block
{
private:
- friend gr_single_pole_iir_filter_cc_sptr
+ friend GR_CORE_API gr_single_pole_iir_filter_cc_sptr
gr_make_single_pole_iir_filter_cc (double alpha, unsigned int vlen);
unsigned int d_vlen;
diff --git a/gnuradio-core/src/lib/filter/gr_single_pole_iir_filter_ff.h b/gnuradio-core/src/lib/filter/gr_single_pole_iir_filter_ff.h
index f676e94bc..d376587df 100644
--- a/gnuradio-core/src/lib/filter/gr_single_pole_iir_filter_ff.h
+++ b/gnuradio-core/src/lib/filter/gr_single_pole_iir_filter_ff.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_GR_SINGLE_POLE_IIR_FILTER_FF_H
#define INCLUDED_GR_SINGLE_POLE_IIR_FILTER_FF_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
#include <gr_single_pole_iir.h>
#include <stdexcept>
@@ -30,7 +31,7 @@
class gr_single_pole_iir_filter_ff;
typedef boost::shared_ptr<gr_single_pole_iir_filter_ff> gr_single_pole_iir_filter_ff_sptr;
-gr_single_pole_iir_filter_ff_sptr
+GR_CORE_API gr_single_pole_iir_filter_ff_sptr
gr_make_single_pole_iir_filter_ff (double alpha, unsigned int vlen=1);
/*!
@@ -52,10 +53,10 @@ gr_make_single_pole_iir_filter_ff (double alpha, unsigned int vlen=1);
* Note that some texts define the system function with a + in the denominator.
* If you're using that convention, you'll need to negate the feedback tap.
*/
-class gr_single_pole_iir_filter_ff : public gr_sync_block
+class GR_CORE_API gr_single_pole_iir_filter_ff : public gr_sync_block
{
private:
- friend gr_single_pole_iir_filter_ff_sptr
+ friend GR_CORE_API gr_single_pole_iir_filter_ff_sptr
gr_make_single_pole_iir_filter_ff (double alpha, unsigned int vlen);
unsigned int d_vlen;
diff --git a/gnuradio-core/src/lib/filter/gri_fft_filter_ccc_generic.h b/gnuradio-core/src/lib/filter/gri_fft_filter_ccc_generic.h
index 3cd9105c7..4db7ba50f 100644
--- a/gnuradio-core/src/lib/filter/gri_fft_filter_ccc_generic.h
+++ b/gnuradio-core/src/lib/filter/gri_fft_filter_ccc_generic.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_GRI_FFT_FILTER_CCC_GENERIC_H
#define INCLUDED_GRI_FFT_FILTER_CCC_GENERIC_H
+#include <gr_core_api.h>
#include <gr_complex.h>
#include <vector>
@@ -32,7 +33,7 @@ class gri_fft_complex;
* \brief Fast FFT filter with gr_complex input, gr_complex output and gr_complex taps
* \ingroup filter_blk
*/
-class gri_fft_filter_ccc_generic
+class GR_CORE_API gri_fft_filter_ccc_generic
{
private:
int d_ntaps;
diff --git a/gnuradio-core/src/lib/filter/gri_fft_filter_ccc_sse.h b/gnuradio-core/src/lib/filter/gri_fft_filter_ccc_sse.h
index d1c54f01f..6c96152c0 100644
--- a/gnuradio-core/src/lib/filter/gri_fft_filter_ccc_sse.h
+++ b/gnuradio-core/src/lib/filter/gri_fft_filter_ccc_sse.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_GRI_FFT_FILTER_CCC_SSE_H
#define INCLUDED_GRI_FFT_FILTER_CCC_SSE_H
+#include <gr_core_api.h>
#include <gr_complex.h>
#include <vector>
@@ -32,7 +33,7 @@ class gri_fft_complex;
* \brief Fast FFT filter with gr_complex input, gr_complex output and gr_complex taps
* \ingroup filter_blk
*/
-class gri_fft_filter_ccc_sse
+class GR_CORE_API gri_fft_filter_ccc_sse
{
private:
int d_ntaps;
diff --git a/gnuradio-core/src/lib/filter/gri_fft_filter_fff_generic.h b/gnuradio-core/src/lib/filter/gri_fft_filter_fff_generic.h
index 6c31632d5..86658043a 100644
--- a/gnuradio-core/src/lib/filter/gri_fft_filter_fff_generic.h
+++ b/gnuradio-core/src/lib/filter/gri_fft_filter_fff_generic.h
@@ -23,13 +23,14 @@
#ifndef INCLUDED_GRI_FFT_FILTER_FFF_GENERIC_H
#define INCLUDED_GRI_FFT_FILTER_FFF_GENERIC_H
+#include <gr_core_api.h>
#include <gr_complex.h>
#include <vector>
class gri_fft_real_fwd;
class gri_fft_real_rev;
-class gri_fft_filter_fff_generic
+class GR_CORE_API gri_fft_filter_fff_generic
{
private:
int d_ntaps;
diff --git a/gnuradio-core/src/lib/filter/gri_fft_filter_fff_sse.h b/gnuradio-core/src/lib/filter/gri_fft_filter_fff_sse.h
index 8258bb824..bd87358e2 100644
--- a/gnuradio-core/src/lib/filter/gri_fft_filter_fff_sse.h
+++ b/gnuradio-core/src/lib/filter/gri_fft_filter_fff_sse.h
@@ -23,13 +23,14 @@
#ifndef INCLUDED_GRI_FFT_FILTER_FFF_SSE_H
#define INCLUDED_GRI_FFT_FILTER_FFF_SSE_H
+#include <gr_core_api.h>
#include <gr_complex.h>
#include <vector>
class gri_fft_real_fwd;
class gri_fft_real_rev;
-class gri_fft_filter_fff_sse
+class GR_CORE_API gri_fft_filter_fff_sse
{
private:
int d_ntaps;
diff --git a/gnuradio-core/src/lib/filter/gri_fir_filter_with_buffer_XXX.h.t b/gnuradio-core/src/lib/filter/gri_fir_filter_with_buffer_XXX.h.t
index 23d64b65d..f209a8849 100644
--- a/gnuradio-core/src/lib/filter/gri_fir_filter_with_buffer_XXX.h.t
+++ b/gnuradio-core/src/lib/filter/gri_fir_filter_with_buffer_XXX.h.t
@@ -29,6 +29,7 @@
#ifndef @GUARD_NAME@
#define @GUARD_NAME@
+#include <gr_core_api.h>
#include <vector>
#include <gr_types.h>
#include <gr_reverse.h>
@@ -42,7 +43,7 @@
*
*/
-class @NAME@ {
+class GR_CORE_API @NAME@ {
protected:
std::vector<@TAP_TYPE@> d_taps; // reversed taps
diff --git a/gnuradio-core/src/lib/filter/gri_goertzel.h b/gnuradio-core/src/lib/filter/gri_goertzel.h
index e062f000e..6fb64b942 100644
--- a/gnuradio-core/src/lib/filter/gri_goertzel.h
+++ b/gnuradio-core/src/lib/filter/gri_goertzel.h
@@ -23,13 +23,14 @@
#ifndef INCLUDED_GRI_GOERTZEL_H
#define INCLUDED_GRI_GOERTZEL_H
+#include <gr_core_api.h>
#include <gr_types.h>
/*!
* \brief Implements Goertzel single-bin DFT calculation
* \ingroup misc
*/
-class gri_goertzel
+class GR_CORE_API gri_goertzel
{
public:
gri_goertzel() {}
diff --git a/gnuradio-core/src/lib/filter/gri_iir.h b/gnuradio-core/src/lib/filter/gri_iir.h
index 5bc67df53..ddd8f9b81 100644
--- a/gnuradio-core/src/lib/filter/gri_iir.h
+++ b/gnuradio-core/src/lib/filter/gri_iir.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_GRI_IIR_H
#define INCLUDED_GRI_IIR_H
+#include <gr_core_api.h>
#include <vector>
#include <stdexcept>
diff --git a/gnuradio-core/src/lib/filter/gri_mmse_fir_interpolator.h b/gnuradio-core/src/lib/filter/gri_mmse_fir_interpolator.h
index 616520ad6..b2832b3f6 100644
--- a/gnuradio-core/src/lib/filter/gri_mmse_fir_interpolator.h
+++ b/gnuradio-core/src/lib/filter/gri_mmse_fir_interpolator.h
@@ -22,6 +22,7 @@
#ifndef _GRI_MMSE_FIR_INTERPOLATOR_H_
#define _GRI_MMSE_FIR_INTERPOLATOR_H_
+#include <gr_core_api.h>
#include <vector>
class gr_fir_fff;
@@ -39,7 +40,7 @@ class gr_fir_fff;
* method to 32nd's of a sample.
*/
-class gri_mmse_fir_interpolator {
+class GR_CORE_API gri_mmse_fir_interpolator {
public:
gri_mmse_fir_interpolator ();
~gri_mmse_fir_interpolator ();
diff --git a/gnuradio-core/src/lib/filter/gri_mmse_fir_interpolator_cc.h b/gnuradio-core/src/lib/filter/gri_mmse_fir_interpolator_cc.h
index daf8b19b8..2feef114b 100644
--- a/gnuradio-core/src/lib/filter/gri_mmse_fir_interpolator_cc.h
+++ b/gnuradio-core/src/lib/filter/gri_mmse_fir_interpolator_cc.h
@@ -22,6 +22,7 @@
#ifndef _GRI_MMSE_FIR_INTERPOLATOR_CC_H_
#define _GRI_MMSE_FIR_INTERPOLATOR_CC_H_
+#include <gr_core_api.h>
#include <gr_complex.h>
#include <vector>
@@ -40,7 +41,7 @@ class gr_fir_ccf;
* method to 32nd's of a sample.
*/
-class gri_mmse_fir_interpolator_cc {
+class GR_CORE_API gri_mmse_fir_interpolator_cc {
public:
gri_mmse_fir_interpolator_cc ();
~gri_mmse_fir_interpolator_cc ();
diff --git a/gnuradio-core/src/lib/filter/qa_filter.h b/gnuradio-core/src/lib/filter/qa_filter.h
index a51a88238..a10782068 100644
--- a/gnuradio-core/src/lib/filter/qa_filter.h
+++ b/gnuradio-core/src/lib/filter/qa_filter.h
@@ -23,11 +23,12 @@
#ifndef _QA_FILTER_H_
#define _QA_FILTER_H_
+#include <gruel/attributes.h>
#include <cppunit/TestSuite.h>
//! collect all the tests for the gr directory
-class qa_filter {
+class __GR_ATTR_EXPORT qa_filter {
public:
//! return suite of tests for all of gr directory
static CppUnit::TestSuite *suite ();
diff --git a/gnuradio-core/src/lib/general/CMakeLists.txt b/gnuradio-core/src/lib/general/CMakeLists.txt
new file mode 100644
index 000000000..cd850ca30
--- /dev/null
+++ b/gnuradio-core/src/lib/general/CMakeLists.txt
@@ -0,0 +1,294 @@
+# Copyright 2010-2011 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+
+########################################################################
+# This file included, use CMake directory variables
+########################################################################
+
+########################################################################
+# Handle the generated sine table
+########################################################################
+add_custom_command(
+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/sine_table.h
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/gen_sine_table.py
+ COMMAND ${PYTHON_EXECUTABLE}
+ ${CMAKE_CURRENT_SOURCE_DIR}/gen_sine_table.py >
+ ${CMAKE_CURRENT_BINARY_DIR}/sine_table.h
+)
+
+include(AddFileDependencies)
+ADD_FILE_DEPENDENCIES(${CMAKE_CURRENT_SOURCE_DIR}/gr_fxpt.cc
+ ${CMAKE_CURRENT_BINARY_DIR}/sine_table.h
+)
+
+########################################################################
+# Handle the generated constants
+########################################################################
+execute_process(COMMAND ${PYTHON_EXECUTABLE} -c
+ "import time;print time.strftime('%a, %d %b %Y %H:%M:%S', time.gmtime())"
+ OUTPUT_VARIABLE BUILD_DATE OUTPUT_STRIP_TRAILING_WHITESPACE
+)
+message(STATUS "Loading build date ${BUILD_DATE} into gr_constants...")
+
+message(STATUS "Loading version ${VERSION} into gr_constants...")
+
+file(TO_NATIVE_PATH "${CMAKE_INSTALL_PREFIX}/${GR_CONF_DIR}" SYSCONFDIR)
+file(TO_NATIVE_PATH "${CMAKE_INSTALL_PREFIX}/${GR_PKG_CONF_DIR}" GR_PREFSDIR)
+
+#double escape for windows backslash path separators
+string(REPLACE "\\" "\\\\" prefix ${prefix})
+string(REPLACE "\\" "\\\\" SYSCONFDIR ${SYSCONFDIR})
+string(REPLACE "\\" "\\\\" GR_PREFSDIR ${GR_PREFSDIR})
+
+configure_file(
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_constants.cc.in
+ ${CMAKE_CURRENT_BINARY_DIR}/gr_constants.cc
+@ONLY)
+
+list(APPEND gnuradio_core_sources ${CMAKE_CURRENT_BINARY_DIR}/gr_constants.cc)
+
+########################################################################
+# Append gnuradio-core library sources
+########################################################################
+list(APPEND gnuradio_core_sources
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_circular_file.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_count_bits.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_fast_atan2f.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_fft_vcc_fftw.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_fxpt.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_misc.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_random.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_reverse.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gri_add_const_ss_generic.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gri_char_to_float.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gri_control_loop.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gri_debugger_hook.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gri_fft.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gri_float_to_char.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gri_float_to_short.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gri_float_to_uchar.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gri_glfsr.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gri_interleaved_short_to_complex.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gri_short_to_float.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gri_uchar_to_float.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/malloc16.c
+)
+
+########################################################################
+# Append gnuradio-core test sources
+########################################################################
+list(APPEND test_gnuradio_core_sources
+ ${CMAKE_CURRENT_SOURCE_DIR}/qa_general.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_circular_file.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_cpm.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_firdes.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_fxpt.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_fxpt_nco.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_fxpt_vco.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_math.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/qa_gri_lfsr.cc
+)
+
+########################################################################
+# Install runtime headers
+########################################################################
+install(FILES
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_core_api.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_circular_file.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_constants.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_count_bits.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_expj.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_fft_vcc_fftw.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_fxpt.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_fxpt_nco.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_fxpt_vco.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_log2_const.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_math.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_misc.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_nco.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_random.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_reverse.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_simple_framer_sync.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_test_types.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_vco.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gri_add_const_ss.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gri_agc_cc.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gri_agc_ff.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gri_agc2_cc.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gri_agc2_ff.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gri_char_to_float.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gri_control_loop.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gri_debugger_hook.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gri_fft.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gri_float_to_char.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gri_float_to_short.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gri_float_to_uchar.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gri_lfsr.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gri_glfsr.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gri_interleaved_short_to_complex.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gri_lfsr_15_1_0.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gri_lfsr_32k.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gri_short_to_float.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gri_uchar_to_float.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/malloc16.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/random.h
+ DESTINATION ${GR_INCLUDE_DIR}/gnuradio
+ COMPONENT "core_devel"
+)
+
+########################################################################
+# Install swig headers
+########################################################################
+if(ENABLE_PYTHON)
+install(FILES
+ ${CMAKE_CURRENT_SOURCE_DIR}/general.i
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_constants.i
+ ${CMAKE_CURRENT_SOURCE_DIR}/gri_agc_cc.i
+ ${CMAKE_CURRENT_SOURCE_DIR}/gri_agc_ff.i
+ ${CMAKE_CURRENT_SOURCE_DIR}/gri_agc2_cc.i
+ ${CMAKE_CURRENT_SOURCE_DIR}/gri_agc2_ff.i
+ ${CMAKE_CURRENT_SOURCE_DIR}/gri_control_loop.i
+ DESTINATION ${GR_INCLUDE_DIR}/gnuradio/swig
+ COMPONENT "core_swig"
+)
+endif(ENABLE_PYTHON)
+
+########################################################################
+# Handle triple-threat files that have cc, h, and i
+########################################################################
+set(gr_core_general_triple_threats
+ complex_vec_test
+ gr_additive_scrambler_bb
+ gr_agc_cc
+ gr_agc_ff
+ gr_agc2_cc
+ gr_agc2_ff
+ gr_align_on_samplenumbers_ss
+ gr_bin_statistics_f
+ gr_bytes_to_syms
+ gr_char_to_float
+ gr_check_counting_s
+ gr_check_lfsr_32k_s
+ gr_complex_to_interleaved_short
+ gr_complex_to_xxx
+ gr_conjugate_cc
+ gr_copy
+ gr_cpfsk_bc
+ gr_cpm
+ gr_ctcss_squelch_ff
+ gr_decode_ccsds_27_fb
+ gr_diff_decoder_bb
+ gr_diff_encoder_bb
+ gr_diff_phasor_cc
+ gr_dpll_bb
+ gr_deinterleave
+ gr_delay
+ gr_encode_ccsds_27_bb
+ gr_fake_channel_coder_pp
+ gr_feedforward_agc_cc
+ gr_feval
+ gr_fft_vcc
+ gr_fft_vfc
+ gr_firdes
+ gr_float_to_char
+ gr_float_to_complex
+ gr_float_to_short
+ gr_float_to_uchar
+ gr_fmdet_cf
+ gr_frequency_modulator_fc
+ gr_framer_sink_1
+ gr_glfsr_source_b
+ gr_glfsr_source_f
+ gr_head
+ gr_int_to_float
+ gr_interleave
+ gr_interleaved_short_to_complex
+ gr_iqcomp_cc
+ gr_keep_one_in_n
+ gr_kludge_copy
+ gr_lfsr_32k_source_s
+ gr_map_bb
+ gr_nlog10_ff
+ gr_nop
+ gr_null_sink
+ gr_null_source
+ gr_pa_2x2_phase_combiner
+ gr_packet_sink
+ gr_peak_detector2_fb
+ gr_phase_modulator_fc
+ gr_pll_carriertracking_cc
+ gr_pll_freqdet_cf
+ gr_pll_refout_cc
+ gr_pn_correlator_cc
+ gr_prefs
+ gr_probe_avg_mag_sqrd_c
+ gr_probe_avg_mag_sqrd_cf
+ gr_probe_avg_mag_sqrd_f
+ gr_probe_signal_f
+ gr_pwr_squelch_cc
+ gr_pwr_squelch_ff
+ gr_quadrature_demod_cf
+ gr_rail_ff
+ gr_regenerate_bb
+ gr_remez
+ gr_rms_cf
+ gr_rms_ff
+ gr_repeat
+ gr_short_to_float
+ gr_simple_correlator
+ gr_simple_framer
+ gr_simple_squelch_cc
+ gr_skiphead
+ gr_squash_ff
+ gr_squelch_base_cc
+ gr_squelch_base_ff
+ gr_stream_mux
+ gr_stream_to_streams
+ gr_stream_to_vector
+ gr_streams_to_stream
+ gr_streams_to_vector
+ gr_stretch_ff
+ gr_test
+ gr_threshold_ff
+ gr_throttle
+ gr_transcendental
+ gr_uchar_to_float
+ gr_vco_f
+ gr_vector_to_stream
+ gr_vector_to_streams
+ gr_unpack_k_bits_bb
+ gr_wavelet_ff
+ gr_wvps_ff
+ gr_descrambler_bb
+ gr_scrambler_bb
+ gr_probe_mpsk_snr_c
+ gr_probe_density_b
+ gr_annotator_alltoall
+ gr_annotator_1to1
+ gr_burst_tagger
+ gr_correlate_access_code_tag_bb
+)
+
+foreach(file_tt ${gr_core_general_triple_threats})
+ list(APPEND gnuradio_core_sources ${CMAKE_CURRENT_SOURCE_DIR}/${file_tt}.cc)
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${file_tt}.h DESTINATION ${GR_INCLUDE_DIR}/gnuradio COMPONENT "core_devel")
+ if(ENABLE_PYTHON)
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${file_tt}.i DESTINATION ${GR_INCLUDE_DIR}/gnuradio/swig COMPONENT "core_swig")
+ endif(ENABLE_PYTHON)
+endforeach(file_tt ${gr_core_general_triple_threats})
diff --git a/gnuradio-core/src/lib/general/complex_vec_test.h b/gnuradio-core/src/lib/general/complex_vec_test.h
index d13dedf63..be4de41fb 100644
--- a/gnuradio-core/src/lib/general/complex_vec_test.h
+++ b/gnuradio-core/src/lib/general/complex_vec_test.h
@@ -1,27 +1,28 @@
+#include <gr_core_api.h>
#include <vector>
#include <complex>
-std::vector<std::complex<float> >
+GR_CORE_API std::vector<std::complex<float> >
complex_vec_test0();
-std::vector<std::complex<float> >
+GR_CORE_API std::vector<std::complex<float> >
complex_vec_test1(const std::vector<std::complex<float> > &input);
-std::complex<float>
+GR_CORE_API std::complex<float>
complex_scalar_test0();
-std::complex<float>
+GR_CORE_API std::complex<float>
complex_scalar_test1(std::complex<float> input);
-std::vector<int>
+GR_CORE_API std::vector<int>
int_vec_test0();
-std::vector<int>
+GR_CORE_API std::vector<int>
int_vec_test1(const std::vector<int> &input);
-std::vector<float>
+GR_CORE_API std::vector<float>
float_vec_test0();
-std::vector<float>
+GR_CORE_API std::vector<float>
float_vec_test1(const std::vector<float> &input);
diff --git a/gnuradio-core/src/lib/general/gr_additive_scrambler_bb.h b/gnuradio-core/src/lib/general/gr_additive_scrambler_bb.h
index 6c9493050..4c7c8f87e 100644
--- a/gnuradio-core/src/lib/general/gr_additive_scrambler_bb.h
+++ b/gnuradio-core/src/lib/general/gr_additive_scrambler_bb.h
@@ -22,13 +22,14 @@
#ifndef INCLUDED_GR_ADDITIVE_SCRAMBLER_BB_H
#define INCLUDED_GR_ADDITIVE_SCRAMBLER_BB_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
#include "gri_lfsr.h"
class gr_additive_scrambler_bb;
typedef boost::shared_ptr<gr_additive_scrambler_bb> gr_additive_scrambler_bb_sptr;
-gr_additive_scrambler_bb_sptr gr_make_additive_scrambler_bb(int mask, int seed, int len, int count=0);
+GR_CORE_API gr_additive_scrambler_bb_sptr gr_make_additive_scrambler_bb(int mask, int seed, int len, int count=0);
/*!
* Scramble an input stream using an LFSR. This block works on the LSB only
@@ -48,9 +49,9 @@ gr_additive_scrambler_bb_sptr gr_make_additive_scrambler_bb(int mask, int seed,
* \ingroup coding_blk
*/
-class gr_additive_scrambler_bb : public gr_sync_block
+class GR_CORE_API gr_additive_scrambler_bb : public gr_sync_block
{
- friend gr_additive_scrambler_bb_sptr gr_make_additive_scrambler_bb(int mask, int seed, int len, int count);
+ friend GR_CORE_API gr_additive_scrambler_bb_sptr gr_make_additive_scrambler_bb(int mask, int seed, int len, int count);
gri_lfsr d_lfsr;
int d_count;
diff --git a/gnuradio-core/src/lib/general/gr_agc2_cc.h b/gnuradio-core/src/lib/general/gr_agc2_cc.h
index 0eb20afb9..6127c3aa7 100644
--- a/gnuradio-core/src/lib/general/gr_agc2_cc.h
+++ b/gnuradio-core/src/lib/general/gr_agc2_cc.h
@@ -23,13 +23,14 @@
#ifndef INCLUDED_GR_AGC2_CC_H
#define INCLUDED_GR_AGC2_CC_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
#include <gri_agc2_cc.h>
class gr_agc2_cc;
typedef boost::shared_ptr<gr_agc2_cc> gr_agc2_cc_sptr;
-gr_agc2_cc_sptr
+GR_CORE_API gr_agc2_cc_sptr
gr_make_agc2_cc (float attack_rate = 1e-1, float decay_rate = 1e-2, float reference = 1.0,
float gain = 1.0, float max_gain = 0.0);
/*!
@@ -39,9 +40,9 @@ gr_make_agc2_cc (float attack_rate = 1e-1, float decay_rate = 1e-2, float refere
* For Power the absolute value of the complex number is used.
*/
-class gr_agc2_cc : public gr_sync_block, public gri_agc2_cc
+class GR_CORE_API gr_agc2_cc : public gr_sync_block, public gri_agc2_cc
{
- friend gr_agc2_cc_sptr gr_make_agc2_cc (float attack_rate, float decay_rate, float reference,
+ friend GR_CORE_API gr_agc2_cc_sptr gr_make_agc2_cc (float attack_rate, float decay_rate, float reference,
float gain, float max_gain);
gr_agc2_cc (float attack_rate, float decay_rate, float reference,
float gain, float max_gain);
diff --git a/gnuradio-core/src/lib/general/gr_agc2_ff.h b/gnuradio-core/src/lib/general/gr_agc2_ff.h
index ef470765f..269d940d4 100644
--- a/gnuradio-core/src/lib/general/gr_agc2_ff.h
+++ b/gnuradio-core/src/lib/general/gr_agc2_ff.h
@@ -23,12 +23,13 @@
#ifndef INCLUDED_GR_AGC2_FF_H
#define INCLUDED_GR_AGC2_FF_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
#include <gri_agc2_ff.h>
class gr_agc2_ff;
typedef boost::shared_ptr<gr_agc2_ff> gr_agc2_ff_sptr;
-gr_agc2_ff_sptr
+GR_CORE_API gr_agc2_ff_sptr
gr_make_agc2_ff (float attack_rate = 1e-1, float decay_rate = 1e-2, float reference = 1.0,
float gain = 1.0, float max_gain = 0.0);
/*!
@@ -38,9 +39,9 @@ gr_make_agc2_ff (float attack_rate = 1e-1, float decay_rate = 1e-2, float refere
* Power is approximated by absolute value
*/
-class gr_agc2_ff : public gr_sync_block, public gri_agc2_ff
+class GR_CORE_API gr_agc2_ff : public gr_sync_block, public gri_agc2_ff
{
- friend gr_agc2_ff_sptr gr_make_agc2_ff (float attack_rate, float decay_rate,
+ friend GR_CORE_API gr_agc2_ff_sptr gr_make_agc2_ff (float attack_rate, float decay_rate,
float reference, float gain, float max_gain);
gr_agc2_ff (float attack_rate, float decay_rate, float reference, float gain, float max_gain);
diff --git a/gnuradio-core/src/lib/general/gr_agc_cc.h b/gnuradio-core/src/lib/general/gr_agc_cc.h
index 43a5de6c7..f348fff91 100644
--- a/gnuradio-core/src/lib/general/gr_agc_cc.h
+++ b/gnuradio-core/src/lib/general/gr_agc_cc.h
@@ -23,12 +23,13 @@
#ifndef INCLUDED_GR_AGC_CC_H
#define INCLUDED_GR_AGC_CC_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
#include <gri_agc_cc.h>
class gr_agc_cc;
typedef boost::shared_ptr<gr_agc_cc> gr_agc_cc_sptr;
-gr_agc_cc_sptr
+GR_CORE_API gr_agc_cc_sptr
gr_make_agc_cc (float rate = 1e-4, float reference = 1.0,
float gain = 1.0, float max_gain = 0.0);
/*!
@@ -38,9 +39,9 @@ gr_make_agc_cc (float rate = 1e-4, float reference = 1.0,
* For Power the absolute value of the complex number is used.
*/
-class gr_agc_cc : public gr_sync_block, public gri_agc_cc
+class GR_CORE_API gr_agc_cc : public gr_sync_block, public gri_agc_cc
{
- friend gr_agc_cc_sptr gr_make_agc_cc (float rate, float reference,
+ friend GR_CORE_API gr_agc_cc_sptr gr_make_agc_cc (float rate, float reference,
float gain, float max_gain);
gr_agc_cc (float rate, float reference,
float gain, float max_gain);
diff --git a/gnuradio-core/src/lib/general/gr_agc_ff.h b/gnuradio-core/src/lib/general/gr_agc_ff.h
index 7cb167fca..94db9eef5 100644
--- a/gnuradio-core/src/lib/general/gr_agc_ff.h
+++ b/gnuradio-core/src/lib/general/gr_agc_ff.h
@@ -23,12 +23,13 @@
#ifndef INCLUDED_GR_AGC_FF_H
#define INCLUDED_GR_AGC_FF_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
#include <gri_agc_ff.h>
class gr_agc_ff;
typedef boost::shared_ptr<gr_agc_ff> gr_agc_ff_sptr;
-gr_agc_ff_sptr
+GR_CORE_API gr_agc_ff_sptr
gr_make_agc_ff (float rate = 1e-4, float reference = 1.0,
float gain = 1.0, float max_gain = 0.0);
@@ -39,9 +40,9 @@ gr_make_agc_ff (float rate = 1e-4, float reference = 1.0,
* Power is approximated by absolute value
*/
-class gr_agc_ff : public gr_sync_block, public gri_agc_ff
+class GR_CORE_API gr_agc_ff : public gr_sync_block, public gri_agc_ff
{
- friend gr_agc_ff_sptr gr_make_agc_ff (float rate, float reference,
+ friend GR_CORE_API gr_agc_ff_sptr gr_make_agc_ff (float rate, float reference,
float gain, float max_gain);
gr_agc_ff (float rate, float reference, float gain, float max_gain);
diff --git a/gnuradio-core/src/lib/general/gr_align_on_samplenumbers_ss.h b/gnuradio-core/src/lib/general/gr_align_on_samplenumbers_ss.h
index 5038e168b..61f70ee96 100644
--- a/gnuradio-core/src/lib/general/gr_align_on_samplenumbers_ss.h
+++ b/gnuradio-core/src/lib/general/gr_align_on_samplenumbers_ss.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_GR_ALIGN_ON_SAMPLE_NUMBERS_SS_H
#define INCLUDED_GR_ALIGN_ON_SAMPLE_NUMBERS_SS_H
+#include <gr_core_api.h>
#include <gr_block.h>
/*!
@@ -45,19 +46,19 @@
class gr_align_on_samplenumbers_ss;
typedef boost::shared_ptr<gr_align_on_samplenumbers_ss> gr_align_on_samplenumbers_ss_sptr;
-gr_align_on_samplenumbers_ss_sptr gr_make_align_on_samplenumbers_ss (int nchan=2, int align_interval=128);
+GR_CORE_API gr_align_on_samplenumbers_ss_sptr gr_make_align_on_samplenumbers_ss (int nchan=2, int align_interval=128);
-class gr_align_on_samplenumbers_ss : public gr_block
+class GR_CORE_API gr_align_on_samplenumbers_ss : public gr_block
{
int d_align_interval;
int d_sample_counter;
int d_nchan;
bool d_in_presync;
unsigned int d_ninputs;
- class align_state {
+ class GR_CORE_API align_state {
public:
unsigned int ucounter_end;
unsigned int ucounter_begin;
@@ -72,7 +73,7 @@ class gr_align_on_samplenumbers_ss : public gr_block
};
std::vector<align_state> d_state;
- friend gr_align_on_samplenumbers_ss_sptr gr_make_align_on_samplenumbers_ss (int nchan,int align_interval);
+ friend GR_CORE_API gr_align_on_samplenumbers_ss_sptr gr_make_align_on_samplenumbers_ss (int nchan,int align_interval);
gr_align_on_samplenumbers_ss (int nchan,int align_interval);
public:
diff --git a/gnuradio-core/src/lib/general/gr_annotator_1to1.h b/gnuradio-core/src/lib/general/gr_annotator_1to1.h
index 4abc5b051..d866407fe 100644
--- a/gnuradio-core/src/lib/general/gr_annotator_1to1.h
+++ b/gnuradio-core/src/lib/general/gr_annotator_1to1.h
@@ -23,13 +23,14 @@
#ifndef INCLUDED_GR_ANNOTATOR_1TO1_H
#define INCLUDED_GR_ANNOTATOR_1TO1_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class gr_annotator_1to1;
typedef boost::shared_ptr<gr_annotator_1to1> gr_annotator_1to1_sptr;
// public constructor
-gr_annotator_1to1_sptr
+GR_CORE_API gr_annotator_1to1_sptr
gr_make_annotator_1to1 (int when, size_t sizeof_stream_item);
/*!
@@ -45,7 +46,7 @@ gr_make_annotator_1to1 (int when, size_t sizeof_stream_item);
*
* This block is only meant for testing and showing how to use the tags.
*/
-class gr_annotator_1to1 : public gr_sync_block
+class GR_CORE_API gr_annotator_1to1 : public gr_sync_block
{
public:
~gr_annotator_1to1 ();
@@ -67,7 +68,7 @@ protected:
uint64_t d_tag_counter;
std::vector<pmt::pmt_t> d_stored_tags;
- friend gr_annotator_1to1_sptr
+ friend GR_CORE_API gr_annotator_1to1_sptr
gr_make_annotator_1to1 (int when, size_t sizeof_stream_item);
};
diff --git a/gnuradio-core/src/lib/general/gr_annotator_alltoall.h b/gnuradio-core/src/lib/general/gr_annotator_alltoall.h
index e1e51ebf3..259b2e54c 100644
--- a/gnuradio-core/src/lib/general/gr_annotator_alltoall.h
+++ b/gnuradio-core/src/lib/general/gr_annotator_alltoall.h
@@ -23,13 +23,14 @@
#ifndef INCLUDED_GR_ANNOTATOR_ALLTOALL_H
#define INCLUDED_GR_ANNOTATOR_ALLTOALL_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class gr_annotator_alltoall;
typedef boost::shared_ptr<gr_annotator_alltoall> gr_annotator_alltoall_sptr;
// public constructor
-gr_annotator_alltoall_sptr
+GR_CORE_API gr_annotator_alltoall_sptr
gr_make_annotator_alltoall (int when, size_t sizeof_stream_item);
/*!
@@ -45,7 +46,7 @@ gr_make_annotator_alltoall (int when, size_t sizeof_stream_item);
*
* This block is only meant for testing and showing how to use the tags.
*/
-class gr_annotator_alltoall : public gr_sync_block
+class GR_CORE_API gr_annotator_alltoall : public gr_sync_block
{
public:
~gr_annotator_alltoall ();
@@ -68,7 +69,7 @@ protected:
uint64_t d_tag_counter;
std::vector<pmt::pmt_t> d_stored_tags;
- friend gr_annotator_alltoall_sptr
+ friend GR_CORE_API gr_annotator_alltoall_sptr
gr_make_annotator_alltoall (int when, size_t sizeof_stream_item);
};
diff --git a/gnuradio-core/src/lib/general/gr_bin_statistics_f.h b/gnuradio-core/src/lib/general/gr_bin_statistics_f.h
index d8c4c2fae..f7eea7d5f 100644
--- a/gnuradio-core/src/lib/general/gr_bin_statistics_f.h
+++ b/gnuradio-core/src/lib/general/gr_bin_statistics_f.h
@@ -24,6 +24,7 @@
#define INCLUDED_GR_BIN_STATISTICS_F_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
#include <gr_feval.h>
#include <gr_message.h>
@@ -33,7 +34,7 @@ class gr_bin_statistics_f;
typedef boost::shared_ptr<gr_bin_statistics_f> gr_bin_statistics_f_sptr;
-gr_bin_statistics_f_sptr
+GR_CORE_API gr_bin_statistics_f_sptr
gr_make_bin_statistics_f(unsigned int vlen, // vector length
gr_msg_queue_sptr msgq,
gr_feval_dd *tune, // callback
@@ -44,9 +45,9 @@ gr_make_bin_statistics_f(unsigned int vlen, // vector length
* \brief control scanning and record frequency domain statistics
* \ingroup sink_blk
*/
-class gr_bin_statistics_f : public gr_sync_block
+class GR_CORE_API gr_bin_statistics_f : public gr_sync_block
{
- friend gr_bin_statistics_f_sptr
+ friend GR_CORE_API gr_bin_statistics_f_sptr
gr_make_bin_statistics_f(unsigned int vlen, // vector length
gr_msg_queue_sptr msgq,
gr_feval_dd *tune, // callback
diff --git a/gnuradio-core/src/lib/general/gr_burst_tagger.h b/gnuradio-core/src/lib/general/gr_burst_tagger.h
index 8f814bea0..7547ba9cc 100644
--- a/gnuradio-core/src/lib/general/gr_burst_tagger.h
+++ b/gnuradio-core/src/lib/general/gr_burst_tagger.h
@@ -23,26 +23,27 @@
#ifndef INCLUDED_GR_BURST_TAGGER_H
#define INCLUDED_GR_BURST_TAGGER_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class gr_burst_tagger;
typedef boost::shared_ptr<gr_burst_tagger> gr_burst_tagger_sptr;
-gr_burst_tagger_sptr gr_make_burst_tagger(size_t itemsize);
+GR_CORE_API gr_burst_tagger_sptr gr_make_burst_tagger(size_t itemsize);
/*!
* \brief output[i] = input[i]
* \ingroup misc_blk
*
*/
-class gr_burst_tagger : public gr_sync_block
+class GR_CORE_API gr_burst_tagger : public gr_sync_block
{
size_t d_itemsize;
bool d_state;
pmt::pmt_t d_key;
pmt::pmt_t d_id;
- friend gr_burst_tagger_sptr gr_make_burst_tagger(size_t itemsize);
+ friend GR_CORE_API gr_burst_tagger_sptr gr_make_burst_tagger(size_t itemsize);
gr_burst_tagger(size_t itemsize);
public:
diff --git a/gnuradio-core/src/lib/general/gr_bytes_to_syms.h b/gnuradio-core/src/lib/general/gr_bytes_to_syms.h
index 1531de02a..33b98d4fd 100644
--- a/gnuradio-core/src/lib/general/gr_bytes_to_syms.h
+++ b/gnuradio-core/src/lib/general/gr_bytes_to_syms.h
@@ -22,12 +22,13 @@
#ifndef INCLUDED_GR_BYTES_TO_SYMS_H
#define INCLUDED_GR_BYTES_TO_SYMS_H
+#include <gr_core_api.h>
#include <gr_sync_interpolator.h>
class gr_bytes_to_syms;
typedef boost::shared_ptr<gr_bytes_to_syms> gr_bytes_to_syms_sptr;
-gr_bytes_to_syms_sptr gr_make_bytes_to_syms ();
+GR_CORE_API gr_bytes_to_syms_sptr gr_make_bytes_to_syms ();
/*!
* \brief Convert stream of bytes to stream of +/- 1 symbols
@@ -45,9 +46,9 @@ gr_bytes_to_syms_sptr gr_make_bytes_to_syms ();
* \sa gr_packed_to_unpacked_bb, gr_unpacked_to_packed_bb,
* \sa gr_chunks_to_symbols_bf, gr_chunks_to_symbols_bc.
*/
-class gr_bytes_to_syms : public gr_sync_interpolator
+class GR_CORE_API gr_bytes_to_syms : public gr_sync_interpolator
{
- friend gr_bytes_to_syms_sptr gr_make_bytes_to_syms ();
+ friend GR_CORE_API gr_bytes_to_syms_sptr gr_make_bytes_to_syms ();
gr_bytes_to_syms ();
diff --git a/gnuradio-core/src/lib/general/gr_char_to_float.h b/gnuradio-core/src/lib/general/gr_char_to_float.h
index 482e479d6..b20d2066f 100644
--- a/gnuradio-core/src/lib/general/gr_char_to_float.h
+++ b/gnuradio-core/src/lib/general/gr_char_to_float.h
@@ -23,12 +23,13 @@
#ifndef INCLUDED_GR_CHAR_TO_FLOAT_H
#define INCLUDED_GR_CHAR_TO_FLOAT_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class gr_char_to_float;
typedef boost::shared_ptr<gr_char_to_float> gr_char_to_float_sptr;
-gr_char_to_float_sptr
+GR_CORE_API gr_char_to_float_sptr
gr_make_char_to_float ();
/*!
@@ -36,9 +37,9 @@ gr_make_char_to_float ();
* \ingroup converter_blk
*/
-class gr_char_to_float : public gr_sync_block
+class GR_CORE_API gr_char_to_float : public gr_sync_block
{
- friend gr_char_to_float_sptr gr_make_char_to_float ();
+ friend GR_CORE_API gr_char_to_float_sptr gr_make_char_to_float ();
gr_char_to_float ();
public:
diff --git a/gnuradio-core/src/lib/general/gr_check_counting_s.h b/gnuradio-core/src/lib/general/gr_check_counting_s.h
index da35ab8e2..cd4dcb24e 100644
--- a/gnuradio-core/src/lib/general/gr_check_counting_s.h
+++ b/gnuradio-core/src/lib/general/gr_check_counting_s.h
@@ -22,12 +22,13 @@
#ifndef INCLUDED_GR_CHECK_COUNTING_S_H
#define INCLUDED_GR_CHECK_COUNTING_S_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class gr_check_counting_s;
typedef boost::shared_ptr<gr_check_counting_s> gr_check_counting_s_sptr;
-gr_check_counting_s_sptr gr_make_check_counting_s (bool do_32bit=false);
+GR_CORE_API gr_check_counting_s_sptr gr_make_check_counting_s (bool do_32bit=false);
/*!
* \brief sink that checks if its input stream consists of a counting sequence.
@@ -36,9 +37,9 @@ gr_check_counting_s_sptr gr_make_check_counting_s (bool do_32bit=false);
*
* This sink is typically used to test the USRP "Counting Mode" or "Counting mode 32 bit".
*/
-class gr_check_counting_s : public gr_sync_block
+class GR_CORE_API gr_check_counting_s : public gr_sync_block
{
- friend gr_check_counting_s_sptr gr_make_check_counting_s (bool do_32bit);
+ friend GR_CORE_API gr_check_counting_s_sptr gr_make_check_counting_s (bool do_32bit);
enum state {
SEARCHING, // searching for synchronization
diff --git a/gnuradio-core/src/lib/general/gr_check_lfsr_32k_s.h b/gnuradio-core/src/lib/general/gr_check_lfsr_32k_s.h
index e2bff46d2..939675db8 100644
--- a/gnuradio-core/src/lib/general/gr_check_lfsr_32k_s.h
+++ b/gnuradio-core/src/lib/general/gr_check_lfsr_32k_s.h
@@ -22,6 +22,7 @@
#ifndef INCLUDED_GR_CHECK_LFSR_32K_S_H
#define INCLUDED_GR_CHECK_LFSR_32K_S_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
#include <gri_lfsr_32k.h>
@@ -29,7 +30,7 @@
class gr_check_lfsr_32k_s;
typedef boost::shared_ptr<gr_check_lfsr_32k_s> gr_check_lfsr_32k_s_sptr;
-gr_check_lfsr_32k_s_sptr gr_make_check_lfsr_32k_s ();
+GR_CORE_API gr_check_lfsr_32k_s_sptr gr_make_check_lfsr_32k_s ();
/*!
* \brief sink that checks if its input stream consists of a lfsr_32k sequence.
@@ -38,9 +39,9 @@ gr_check_lfsr_32k_s_sptr gr_make_check_lfsr_32k_s ();
* This sink is typically used along with gr_lfsr_32k_source_s to test
* the USRP using its digital loopback mode.
*/
-class gr_check_lfsr_32k_s : public gr_sync_block
+class GR_CORE_API gr_check_lfsr_32k_s : public gr_sync_block
{
- friend gr_check_lfsr_32k_s_sptr gr_make_check_lfsr_32k_s ();
+ friend GR_CORE_API gr_check_lfsr_32k_s_sptr gr_make_check_lfsr_32k_s ();
enum state {
SEARCHING, // searching for synchronization
diff --git a/gnuradio-core/src/lib/general/gr_circular_file.h b/gnuradio-core/src/lib/general/gr_circular_file.h
index 70f4b4b11..3d3f33a8d 100644
--- a/gnuradio-core/src/lib/general/gr_circular_file.h
+++ b/gnuradio-core/src/lib/general/gr_circular_file.h
@@ -23,6 +23,8 @@
#ifndef _GR_CIRCULAR_FILE_H_
#define _GR_CIRCULAR_FILE_H_
+#include <gr_core_api.h>
+
/*
* writes input data into a circular buffer on disk.
*
@@ -35,7 +37,7 @@
* current start of data
*
*/
-class gr_circular_file {
+class GR_CORE_API gr_circular_file {
int d_fd;
int *d_header;
unsigned char *d_buffer;
@@ -55,4 +57,4 @@ public:
void reset_read_pointer ();
};
-#endif /* _GR_CIRCULAR_FILE_H_ */
+#endif /* _GR_CIRCULAR_FILE_H_ */ \ No newline at end of file
diff --git a/gnuradio-core/src/lib/general/gr_complex_to_interleaved_short.h b/gnuradio-core/src/lib/general/gr_complex_to_interleaved_short.h
index 0a91eddd6..a3e2d38ad 100644
--- a/gnuradio-core/src/lib/general/gr_complex_to_interleaved_short.h
+++ b/gnuradio-core/src/lib/general/gr_complex_to_interleaved_short.h
@@ -23,13 +23,14 @@
#ifndef INCLUDED_GR_COMPLEX_TO_INTERLEAVED_SHORT_H
#define INCLUDED_GR_COMPLEX_TO_INTERLEAVED_SHORT_H
+#include <gr_core_api.h>
#include <gr_sync_interpolator.h>
class gr_complex_to_interleaved_short;
typedef boost::shared_ptr<gr_complex_to_interleaved_short>
gr_complex_to_interleaved_short_sptr;
-gr_complex_to_interleaved_short_sptr
+GR_CORE_API gr_complex_to_interleaved_short_sptr
gr_make_complex_to_interleaved_short ();
/*!
@@ -37,9 +38,9 @@ gr_make_complex_to_interleaved_short ();
* \ingroup converter_blk
*/
-class gr_complex_to_interleaved_short : public gr_sync_interpolator
+class GR_CORE_API gr_complex_to_interleaved_short : public gr_sync_interpolator
{
- friend gr_complex_to_interleaved_short_sptr gr_make_complex_to_interleaved_short ();
+ friend GR_CORE_API gr_complex_to_interleaved_short_sptr gr_make_complex_to_interleaved_short ();
gr_complex_to_interleaved_short ();
public:
diff --git a/gnuradio-core/src/lib/general/gr_complex_to_xxx.h b/gnuradio-core/src/lib/general/gr_complex_to_xxx.h
index 1851c67d9..166403259 100644
--- a/gnuradio-core/src/lib/general/gr_complex_to_xxx.h
+++ b/gnuradio-core/src/lib/general/gr_complex_to_xxx.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_GR_COMPLEX_TO_XXX_H
#define INCLUDED_GR_COMPLEX_TO_XXX_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
#include <gr_complex.h>
@@ -40,21 +41,21 @@ typedef boost::shared_ptr<gr_complex_to_mag> gr_complex_to_mag_sptr;
typedef boost::shared_ptr<gr_complex_to_mag_squared> gr_complex_to_mag_squared_sptr;
typedef boost::shared_ptr<gr_complex_to_arg> gr_complex_to_arg_sptr;
-gr_complex_to_float_sptr gr_make_complex_to_float (unsigned int vlen=1);
-gr_complex_to_real_sptr gr_make_complex_to_real (unsigned int vlen=1);
-gr_complex_to_imag_sptr gr_make_complex_to_imag (unsigned int vlen=1);
-gr_complex_to_mag_sptr gr_make_complex_to_mag (unsigned int vlen=1);
-gr_complex_to_mag_squared_sptr gr_make_complex_to_mag_squared (unsigned int vlen=1);
-gr_complex_to_arg_sptr gr_make_complex_to_arg (unsigned int vlen=1);
+GR_CORE_API gr_complex_to_float_sptr gr_make_complex_to_float (unsigned int vlen=1);
+GR_CORE_API gr_complex_to_real_sptr gr_make_complex_to_real (unsigned int vlen=1);
+GR_CORE_API gr_complex_to_imag_sptr gr_make_complex_to_imag (unsigned int vlen=1);
+GR_CORE_API gr_complex_to_mag_sptr gr_make_complex_to_mag (unsigned int vlen=1);
+GR_CORE_API gr_complex_to_mag_squared_sptr gr_make_complex_to_mag_squared (unsigned int vlen=1);
+GR_CORE_API gr_complex_to_arg_sptr gr_make_complex_to_arg (unsigned int vlen=1);
/*!
* \brief convert a stream of gr_complex to 1 or 2 streams of float
* \ingroup converter_blk
* \param vlen vector len (default 1)
*/
-class gr_complex_to_float : public gr_sync_block
+class GR_CORE_API gr_complex_to_float : public gr_sync_block
{
- friend gr_complex_to_float_sptr gr_make_complex_to_float (unsigned int vlen);
+ friend GR_CORE_API gr_complex_to_float_sptr gr_make_complex_to_float (unsigned int vlen);
gr_complex_to_float (unsigned int vlen);
unsigned int d_vlen;
@@ -70,9 +71,9 @@ class gr_complex_to_float : public gr_sync_block
* \ingroup converter_blk
* \param vlen vector len (default 1)
*/
-class gr_complex_to_real : public gr_sync_block
+class GR_CORE_API gr_complex_to_real : public gr_sync_block
{
- friend gr_complex_to_real_sptr gr_make_complex_to_real (unsigned int vlen);
+ friend GR_CORE_API gr_complex_to_real_sptr gr_make_complex_to_real (unsigned int vlen);
gr_complex_to_real (unsigned int vlen);
unsigned int d_vlen;
@@ -88,9 +89,9 @@ class gr_complex_to_real : public gr_sync_block
* \ingroup converter_blk
* \param vlen vector len (default 1)
*/
-class gr_complex_to_imag : public gr_sync_block
+class GR_CORE_API gr_complex_to_imag : public gr_sync_block
{
- friend gr_complex_to_imag_sptr gr_make_complex_to_imag (unsigned int vlen);
+ friend GR_CORE_API gr_complex_to_imag_sptr gr_make_complex_to_imag (unsigned int vlen);
gr_complex_to_imag (unsigned int vlen);
unsigned int d_vlen;
@@ -106,9 +107,9 @@ class gr_complex_to_imag : public gr_sync_block
* \ingroup converter_blk
* \param vlen vector len (default 1)
*/
-class gr_complex_to_mag : public gr_sync_block
+class GR_CORE_API gr_complex_to_mag : public gr_sync_block
{
- friend gr_complex_to_mag_sptr gr_make_complex_to_mag (unsigned int vlen);
+ friend GR_CORE_API gr_complex_to_mag_sptr gr_make_complex_to_mag (unsigned int vlen);
gr_complex_to_mag (unsigned int vlen);
unsigned int d_vlen;
@@ -124,9 +125,9 @@ class gr_complex_to_mag : public gr_sync_block
* \ingroup converter_blk
* \param vlen vector len (default 1)
*/
-class gr_complex_to_mag_squared : public gr_sync_block
+class GR_CORE_API gr_complex_to_mag_squared : public gr_sync_block
{
- friend gr_complex_to_mag_squared_sptr gr_make_complex_to_mag_squared (unsigned int vlen);
+ friend GR_CORE_API gr_complex_to_mag_squared_sptr gr_make_complex_to_mag_squared (unsigned int vlen);
gr_complex_to_mag_squared (unsigned int vlen);
unsigned int d_vlen;
@@ -142,9 +143,9 @@ class gr_complex_to_mag_squared : public gr_sync_block
* \ingroup converter_blk
* \param vlen vector len (default 1)
*/
-class gr_complex_to_arg : public gr_sync_block
+class GR_CORE_API gr_complex_to_arg : public gr_sync_block
{
- friend gr_complex_to_arg_sptr gr_make_complex_to_arg (unsigned int vlen);
+ friend GR_CORE_API gr_complex_to_arg_sptr gr_make_complex_to_arg (unsigned int vlen);
gr_complex_to_arg (unsigned int vlen);
unsigned int d_vlen;
diff --git a/gnuradio-core/src/lib/general/gr_conjugate_cc.h b/gnuradio-core/src/lib/general/gr_conjugate_cc.h
index 783019adb..16e76e153 100644
--- a/gnuradio-core/src/lib/general/gr_conjugate_cc.h
+++ b/gnuradio-core/src/lib/general/gr_conjugate_cc.h
@@ -25,20 +25,21 @@
#ifndef INCLUDED_GR_CONJUGATE_CC_H
#define INCLUDED_GR_CONJUGATE_CC_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class gr_conjugate_cc;
typedef boost::shared_ptr<gr_conjugate_cc> gr_conjugate_cc_sptr;
-gr_conjugate_cc_sptr gr_make_conjugate_cc ();
+GR_CORE_API gr_conjugate_cc_sptr gr_make_conjugate_cc ();
/*!
* \brief output = complex conjugate of input
* \ingroup math_blk
*/
-class gr_conjugate_cc : public gr_sync_block
+class GR_CORE_API gr_conjugate_cc : public gr_sync_block
{
- friend gr_conjugate_cc_sptr gr_make_conjugate_cc ();
+ friend GR_CORE_API gr_conjugate_cc_sptr gr_make_conjugate_cc ();
gr_conjugate_cc ();
diff --git a/gnuradio-core/src/lib/general/gr_constants.h b/gnuradio-core/src/lib/general/gr_constants.h
index 449d41c17..3d21fe1d6 100644
--- a/gnuradio-core/src/lib/general/gr_constants.h
+++ b/gnuradio-core/src/lib/general/gr_constants.h
@@ -22,31 +22,32 @@
#ifndef INCLUDED_GR_CONSTANTS_H
#define INCLUDED_GR_CONSTANTS_H
+#include <gr_core_api.h>
#include <string>
/*!
* \brief return ./configure --prefix argument. Typically /usr/local
*/
-const std::string gr_prefix();
+GR_CORE_API const std::string gr_prefix();
/*!
* \brief return ./configure --sysconfdir argument. Typically $prefix/etc or /etc
*/
-const std::string gr_sysconfdir();
+GR_CORE_API const std::string gr_sysconfdir();
/*!
* \brief return preferences file directory. Typically $sysconfdir/etc/conf.d
*/
-const std::string gr_prefsdir();
+GR_CORE_API const std::string gr_prefsdir();
/*!
* \brief return date/time of build, as set when 'bootstrap' is run
*/
-const std::string gr_build_date();
+GR_CORE_API const std::string gr_build_date();
/*!
* \brief return version string defined in configure.ac
*/
-const std::string gr_version();
+GR_CORE_API const std::string gr_version();
#endif /* INCLUDED_GR_CONSTANTS_H */
diff --git a/gnuradio-core/src/lib/general/gr_constellation_decoder_cb.h b/gnuradio-core/src/lib/general/gr_constellation_decoder_cb.h
new file mode 100644
index 000000000..d1d29847c
--- /dev/null
+++ b/gnuradio-core/src/lib/general/gr_constellation_decoder_cb.h
@@ -0,0 +1,66 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2006 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_GR_CONSTELLATION_DECODER_CB_H
+#define INCLUDED_GR_CONSTELLATION_DECODER_CB_H
+
+#include <gr_core_api.h>
+#include <gr_sync_block.h>
+#include <vector>
+
+class gr_constellation_decoder_cb;
+typedef boost::shared_ptr<gr_constellation_decoder_cb> gr_constellation_decoder_cb_sptr;
+
+GR_CORE_API gr_constellation_decoder_cb_sptr
+ gr_make_constellation_decoder_cb (const std::vector<gr_complex> &sym_position,
+ const std::vector<unsigned char> &sym_value_out);
+
+/*!
+ * \brief Constellation Decoder
+ * \ingroup coding_blk
+ *
+ */
+class GR_CORE_API gr_constellation_decoder_cb : public gr_sync_block
+{
+
+ private:
+ std::vector<gr_complex> d_sym_position;
+ std::vector<unsigned char> d_sym_value_out;
+
+ friend GR_CORE_API gr_constellation_decoder_cb_sptr
+ gr_make_constellation_decoder_cb (const std::vector<gr_complex> &sym_position, const std::vector<unsigned char> &sym_value_out);
+
+ gr_constellation_decoder_cb (const std::vector<gr_complex> &sym_position,
+ const std::vector<unsigned char> &sym_value_out); //constructor
+
+ public:
+ bool set_constellation(const std::vector<gr_complex> &sym_position,
+ const std::vector<unsigned char> &sym_value_out);
+
+ ~gr_constellation_decoder_cb(); //destructor
+
+ int work (int noutput_items,
+ gr_vector_const_void_star &input_items,
+ gr_vector_void_star &output_items);
+};
+
+#endif
diff --git a/gnuradio-core/src/lib/general/gr_copy.h b/gnuradio-core/src/lib/general/gr_copy.h
index d99aef8b7..7fb13bf68 100644
--- a/gnuradio-core/src/lib/general/gr_copy.h
+++ b/gnuradio-core/src/lib/general/gr_copy.h
@@ -23,12 +23,13 @@
#ifndef INCLUDED_GR_COPY_H
#define INCLUDED_GR_COPY_H
+#include <gr_core_api.h>
#include <gr_block.h>
class gr_copy;
typedef boost::shared_ptr<gr_copy> gr_copy_sptr;
-gr_copy_sptr gr_make_copy(size_t itemsize);
+GR_CORE_API gr_copy_sptr gr_make_copy(size_t itemsize);
/*!
* \brief output[i] = input[i]
@@ -38,12 +39,12 @@ gr_copy_sptr gr_make_copy(size_t itemsize);
* When disabled, this block drops its input on the floor.
*
*/
-class gr_copy : public gr_block
+class GR_CORE_API gr_copy : public gr_block
{
size_t d_itemsize;
bool d_enabled;
- friend gr_copy_sptr gr_make_copy(size_t itemsize);
+ friend GR_CORE_API gr_copy_sptr gr_make_copy(size_t itemsize);
gr_copy(size_t itemsize);
public:
diff --git a/gnuradio-core/src/lib/general/gr_core_api.h b/gnuradio-core/src/lib/general/gr_core_api.h
new file mode 100644
index 000000000..74c802857
--- /dev/null
+++ b/gnuradio-core/src/lib/general/gr_core_api.h
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2010-2011 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_GR_CORE_API_H
+#define INCLUDED_GR_CORE_API_H
+
+#include <gruel/attributes.h>
+
+#ifdef gnuradio_core_EXPORTS
+# define GR_CORE_API __GR_ATTR_EXPORT
+#else
+# define GR_CORE_API __GR_ATTR_IMPORT
+#endif
+
+#endif /* INCLUDED_GR_CORE_API_H */
diff --git a/gnuradio-core/src/lib/general/gr_correlate_access_code_tag_bb.h b/gnuradio-core/src/lib/general/gr_correlate_access_code_tag_bb.h
index 1067bbc56..e543f5cfb 100644
--- a/gnuradio-core/src/lib/general/gr_correlate_access_code_tag_bb.h
+++ b/gnuradio-core/src/lib/general/gr_correlate_access_code_tag_bb.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_gr_correlate_access_code_tag_bb_H
#define INCLUDED_gr_correlate_access_code_tag_bb_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
#include <string>
@@ -34,7 +35,7 @@ typedef boost::shared_ptr<gr_correlate_access_code_tag_bb> gr_correlate_access_c
* \param threshold maximum number of bits that may be wrong
* \param tag_name key of the tag inserted into the tag stream
*/
-gr_correlate_access_code_tag_bb_sptr
+GR_CORE_API gr_correlate_access_code_tag_bb_sptr
gr_make_correlate_access_code_tag_bb (const std::string &access_code, int threshold,
const std::string &tag_name);
@@ -49,9 +50,9 @@ gr_make_correlate_access_code_tag_bb (const std::string &access_code, int thresh
* name [tag_name], specified in the constructor. Used for searching
* an input data stream for preambles, etc.
*/
-class gr_correlate_access_code_tag_bb : public gr_sync_block
+class GR_CORE_API gr_correlate_access_code_tag_bb : public gr_sync_block
{
- friend gr_correlate_access_code_tag_bb_sptr
+ friend GR_CORE_API gr_correlate_access_code_tag_bb_sptr
gr_make_correlate_access_code_tag_bb (const std::string &access_code, int threshold,
const std::string &tag_name);
private:
diff --git a/gnuradio-core/src/lib/general/gr_costas_loop_cc.h b/gnuradio-core/src/lib/general/gr_costas_loop_cc.h
new file mode 100644
index 000000000..13b33d96c
--- /dev/null
+++ b/gnuradio-core/src/lib/general/gr_costas_loop_cc.h
@@ -0,0 +1,146 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2006 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+
+#ifndef INCLUDED_GR_COSTAS_LOOP_CC_H
+#define INCLUDED_GR_COSTAS_LOOP_CC_H
+
+#include <gr_core_api.h>
+#include <gr_sync_block.h>
+#include <stdexcept>
+#include <fstream>
+
+
+/*! \brief A Costas loop carrier recovery module.
+ * \ingroup sync_blk
+ *
+ * The Costas loop locks to the center frequency of a signal and
+ * downconverts it to baseband. The second (order=2) order loop is
+ * used for BPSK where the real part of the output signal is the
+ * baseband BPSK signal and the imaginary part is the error
+ * signal. When order=4, it can be used for quadrature modulations
+ * where both I and Q (real and imaginary) are outputted.
+ *
+ * More details can be found online:
+ *
+ * J. Feigin, "Practical Costas loop design: Designing a simple and inexpensive
+ * BPSK Costas loop carrier recovery circuit," RF signal processing, pp. 20-36,
+ * 2002.
+ *
+ * http://rfdesign.com/images/archive/0102Feigin20.pdf
+ *
+ * \param alpha the loop gain used for phase adjustment
+ * \param beta the loop gain for frequency adjustments
+ * \param max_freq the maximum frequency deviation (radians/sample) the loop can handle
+ * \param min_freq the minimum frequency deviation (radians/sample) the loop can handle
+ * \param order the loop order, either 2 or 4
+ */
+class gr_costas_loop_cc;
+typedef boost::shared_ptr<gr_costas_loop_cc> gr_costas_loop_cc_sptr;
+
+
+GR_CORE_API gr_costas_loop_cc_sptr
+gr_make_costas_loop_cc (float alpha, float beta,
+ float max_freq, float min_freq,
+ int order
+ ) throw (std::invalid_argument);
+
+
+/*!
+ * \brief Carrier tracking PLL for QPSK
+ * \ingroup sync_blk
+ * input: complex; output: complex
+ * <br>The Costas loop can have two output streams:
+ * stream 1 is the baseband I and Q;
+ * stream 2 is the normalized frequency of the loop
+ *
+ * \p order must be 2 or 4.
+ */
+class GR_CORE_API gr_costas_loop_cc : public gr_sync_block
+{
+ friend GR_CORE_API gr_costas_loop_cc_sptr gr_make_costas_loop_cc (float alpha, float beta,
+ float max_freq, float min_freq,
+ int order
+ ) throw (std::invalid_argument);
+
+ float d_alpha, d_beta, d_max_freq, d_min_freq, d_phase, d_freq;
+ int d_order;
+
+ gr_costas_loop_cc (float alpha, float beta,
+ float max_freq, float min_freq,
+ int order
+ ) throw (std::invalid_argument);
+
+ /*! \brief the phase detector circuit for 8th-order PSK loops
+ * \param sample complex sample
+ * \return the phase error
+ */
+ float phase_detector_8(gr_complex sample) const; // for 8PSK
+
+ /*! \brief the phase detector circuit for fourth-order loops
+ * \param sample complex sample
+ * \return the phase error
+ */
+ float phase_detector_4(gr_complex sample) const; // for QPSK
+
+ /*! \brief the phase detector circuit for second-order loops
+ * \param sample a complex sample
+ * \return the phase error
+ */
+ float phase_detector_2(gr_complex sample) const; // for BPSK
+
+
+ float (gr_costas_loop_cc::*d_phase_detector)(gr_complex sample) const;
+
+public:
+
+ /*! \brief set the first order gain
+ * \param alpha
+ */
+ void set_alpha(float alpha);
+
+ /*! \brief get the first order gain
+ *
+ */
+ float alpha() const { return d_alpha; }
+
+ /*! \brief set the second order gain
+ * \param beta
+ */
+ void set_beta(float beta);
+
+ /*! \brief get the second order gain
+ *
+ */
+ float beta() const { return d_beta; }
+
+ int work (int noutput_items,
+ gr_vector_const_void_star &input_items,
+ gr_vector_void_star &output_items);
+
+ /*! \brief returns the current NCO frequency in radians/sample
+ *
+ */
+ float freq() const { return d_freq; }
+};
+
+#endif
diff --git a/gnuradio-core/src/lib/general/gr_count_bits.h b/gnuradio-core/src/lib/general/gr_count_bits.h
index a8b52d3ac..f0cec2a11 100644
--- a/gnuradio-core/src/lib/general/gr_count_bits.h
+++ b/gnuradio-core/src/lib/general/gr_count_bits.h
@@ -23,9 +23,11 @@
#ifndef _GR_COUNT_BITS_H_
#define _GR_COUNT_BITS_H_
-unsigned int gr_count_bits8(unsigned int x); // return number of set bits in the low 8 bits of x
-unsigned int gr_count_bits16(unsigned int x); // return number of set bits in the low 16 bits of x
-unsigned int gr_count_bits32(unsigned int x); // return number of set bits in the low 32 bits of x
-unsigned int gr_count_bits64(unsigned long long int x);
+#include <gr_core_api.h>
+
+GR_CORE_API unsigned int gr_count_bits8(unsigned int x); // return number of set bits in the low 8 bits of x
+GR_CORE_API unsigned int gr_count_bits16(unsigned int x); // return number of set bits in the low 16 bits of x
+GR_CORE_API unsigned int gr_count_bits32(unsigned int x); // return number of set bits in the low 32 bits of x
+GR_CORE_API unsigned int gr_count_bits64(unsigned long long int x);
#endif /* _GR_COUNT_BITS_H_ */
diff --git a/gnuradio-core/src/lib/general/gr_cpfsk_bc.h b/gnuradio-core/src/lib/general/gr_cpfsk_bc.h
index 29bcfed65..4afba4fb4 100644
--- a/gnuradio-core/src/lib/general/gr_cpfsk_bc.h
+++ b/gnuradio-core/src/lib/general/gr_cpfsk_bc.h
@@ -20,13 +20,14 @@
#ifndef INCLUDED_GR_CPFSK_BC_H
#define INCLUDED_GR_CPFSK_BC_H
+#include <gr_core_api.h>
#include <gr_sync_interpolator.h>
class gr_cpfsk_bc;
typedef boost::shared_ptr<gr_cpfsk_bc> gr_cpfsk_bc_sptr;
-gr_cpfsk_bc_sptr gr_make_cpfsk_bc(float k, float ampl, int samples_per_sym);
+GR_CORE_API gr_cpfsk_bc_sptr gr_make_cpfsk_bc(float k, float ampl, int samples_per_sym);
/*!
* \brief Perform continuous phase 2-level frequency shift keying modulation
@@ -38,10 +39,10 @@ gr_cpfsk_bc_sptr gr_make_cpfsk_bc(float k, float ampl, int samples_per_sym);
* \param samples_per_sym number of output samples per input bit
*/
-class gr_cpfsk_bc : public gr_sync_interpolator
+class GR_CORE_API gr_cpfsk_bc : public gr_sync_interpolator
{
private:
- friend gr_cpfsk_bc_sptr gr_make_cpfsk_bc(float k, float ampl, int samples_per_sym);
+ friend GR_CORE_API gr_cpfsk_bc_sptr gr_make_cpfsk_bc(float k, float ampl, int samples_per_sym);
gr_cpfsk_bc(float k, float ampl, int samples_per_sym);
diff --git a/gnuradio-core/src/lib/general/gr_cpm.cc b/gnuradio-core/src/lib/general/gr_cpm.cc
index a00526b52..94a428c58 100644
--- a/gnuradio-core/src/lib/general/gr_cpm.cc
+++ b/gnuradio-core/src/lib/general/gr_cpm.cc
@@ -28,6 +28,10 @@
#include <cfloat>
#include <gr_cpm.h>
+//gives us erf on compilers without it
+#include <boost/math/special_functions/erf.hpp>
+namespace bm = boost::math;
+
#ifndef M_TWOPI
# define M_TWOPI (2*M_PI)
#endif
@@ -178,8 +182,8 @@ generate_cpm_gaussian_taps(unsigned samples_per_sym, unsigned L, double bt)
double alpha = 5.336446256636997 * bt;
for (unsigned i = 0; i < samples_per_sym * L; i++) {
double k = i - Ls/2; // Causal to acausal
- taps_d[i] = (erf(alpha * (k / samples_per_sym + 0.5)) -
- erf(alpha * (k / samples_per_sym - 0.5)))
+ taps_d[i] = (bm::erf(alpha * (k / samples_per_sym + 0.5)) -
+ bm::erf(alpha * (k / samples_per_sym - 0.5)))
* 0.5 / samples_per_sym;
taps[i] = (float) taps_d[i];
}
diff --git a/gnuradio-core/src/lib/general/gr_cpm.h b/gnuradio-core/src/lib/general/gr_cpm.h
index cae6fe313..ef2ff8414 100644
--- a/gnuradio-core/src/lib/general/gr_cpm.h
+++ b/gnuradio-core/src/lib/general/gr_cpm.h
@@ -22,9 +22,10 @@
#ifndef INCLUDED_GR_CPM_H
#define INCLUDED_GR_CPM_H
+#include <gr_core_api.h>
#include <vector>
-class gr_cpm
+class GR_CORE_API gr_cpm
{
public:
enum cpm_type {
diff --git a/gnuradio-core/src/lib/general/gr_ctcss_squelch_ff.h b/gnuradio-core/src/lib/general/gr_ctcss_squelch_ff.h
index 49df785ff..664c40846 100644
--- a/gnuradio-core/src/lib/general/gr_ctcss_squelch_ff.h
+++ b/gnuradio-core/src/lib/general/gr_ctcss_squelch_ff.h
@@ -23,20 +23,21 @@
#ifndef INCLUDED_GR_CTCSS_SQUELCH_FF_H
#define INCLUDED_GR_CTCSS_SQUELCH_FF_H
+#include <gr_core_api.h>
#include <gr_squelch_base_ff.h>
#include <gri_goertzel.h>
class gr_ctcss_squelch_ff;
typedef boost::shared_ptr<gr_ctcss_squelch_ff> gr_ctcss_squelch_ff_sptr;
-gr_ctcss_squelch_ff_sptr
+GR_CORE_API gr_ctcss_squelch_ff_sptr
gr_make_ctcss_squelch_ff(int rate, float freq, float level=0.01, int len=0, int ramp=0, bool gate=false);
/*!
* \brief gate or zero output if ctcss tone not present
* \ingroup level_blk
*/
-class gr_ctcss_squelch_ff : public gr_squelch_base_ff
+class GR_CORE_API gr_ctcss_squelch_ff : public gr_squelch_base_ff
{
private:
float d_freq;
@@ -48,7 +49,7 @@ private:
gri_goertzel d_goertzel_c;
gri_goertzel d_goertzel_r;
- friend gr_ctcss_squelch_ff_sptr gr_make_ctcss_squelch_ff(int rate, float freq, float level, int len, int ramp, bool gate);
+ friend GR_CORE_API gr_ctcss_squelch_ff_sptr gr_make_ctcss_squelch_ff(int rate, float freq, float level, int len, int ramp, bool gate);
gr_ctcss_squelch_ff(int rate, float freq, float level, int len, int ramp, bool gate);
int find_tone(float freq);
diff --git a/gnuradio-core/src/lib/general/gr_decode_ccsds_27_fb.h b/gnuradio-core/src/lib/general/gr_decode_ccsds_27_fb.h
index 50a6c9d89..3db250101 100644
--- a/gnuradio-core/src/lib/general/gr_decode_ccsds_27_fb.h
+++ b/gnuradio-core/src/lib/general/gr_decode_ccsds_27_fb.h
@@ -20,17 +20,18 @@
#ifndef INCLUDED_GR_DECODE_CCSDS_27_FB_H
#define INCLUDED_GR_DECODE_CCSDS_27_FB_H
+#include <gr_core_api.h>
#include <gr_sync_decimator.h>
extern "C" {
-#include "../viterbi/viterbi.h"
+#include <viterbi.h>
}
class gr_decode_ccsds_27_fb;
typedef boost::shared_ptr<gr_decode_ccsds_27_fb> gr_decode_ccsds_27_fb_sptr;
-gr_decode_ccsds_27_fb_sptr gr_make_decode_ccsds_27_fb();
+GR_CORE_API gr_decode_ccsds_27_fb_sptr gr_make_decode_ccsds_27_fb();
/*! \brief A rate 1/2, k=7 convolutional decoder for the CCSDS standard
* \ingroup ecc
@@ -51,10 +52,10 @@ gr_decode_ccsds_27_fb_sptr gr_make_decode_ccsds_27_fb();
* from the corresponding inputs.
*/
-class gr_decode_ccsds_27_fb : public gr_sync_decimator
+class GR_CORE_API gr_decode_ccsds_27_fb : public gr_sync_decimator
{
private:
- friend gr_decode_ccsds_27_fb_sptr gr_make_decode_ccsds_27_fb();
+ friend GR_CORE_API gr_decode_ccsds_27_fb_sptr gr_make_decode_ccsds_27_fb();
gr_decode_ccsds_27_fb();
diff --git a/gnuradio-core/src/lib/general/gr_deinterleave.h b/gnuradio-core/src/lib/general/gr_deinterleave.h
index 59c310bdc..3dd913911 100644
--- a/gnuradio-core/src/lib/general/gr_deinterleave.h
+++ b/gnuradio-core/src/lib/general/gr_deinterleave.h
@@ -23,20 +23,21 @@
#ifndef INCLUDED_GR_DEINTERLEAVE_H
#define INCLUDED_GR_DEINTERLEAVE_H
+#include <gr_core_api.h>
#include <gr_sync_decimator.h>
class gr_deinterleave;
typedef boost::shared_ptr<gr_deinterleave> gr_deinterleave_sptr;
-gr_deinterleave_sptr gr_make_deinterleave (size_t itemsize);
+GR_CORE_API gr_deinterleave_sptr gr_make_deinterleave (size_t itemsize);
/*!
* \brief deinterleave a single input into N outputs
* \ingroup slicedice_blk
*/
-class gr_deinterleave : public gr_sync_decimator
+class GR_CORE_API gr_deinterleave : public gr_sync_decimator
{
- friend gr_deinterleave_sptr gr_make_deinterleave (size_t itemsize);
+ friend GR_CORE_API gr_deinterleave_sptr gr_make_deinterleave (size_t itemsize);
size_t d_itemsize;
diff --git a/gnuradio-core/src/lib/general/gr_delay.h b/gnuradio-core/src/lib/general/gr_delay.h
index d7e8252a2..14de9af1f 100644
--- a/gnuradio-core/src/lib/general/gr_delay.h
+++ b/gnuradio-core/src/lib/general/gr_delay.h
@@ -23,20 +23,21 @@
#ifndef INCLUDED_GR_DELAY_H
#define INCLUDED_GR_DELAY_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class gr_delay;
typedef boost::shared_ptr<gr_delay> gr_delay_sptr;
-gr_delay_sptr gr_make_delay (size_t itemsize, int delay);
+GR_CORE_API gr_delay_sptr gr_make_delay (size_t itemsize, int delay);
/*!
* \brief delay the input by a certain number of samples
* \ingroup misc_blk
*/
-class gr_delay : public gr_sync_block
+class GR_CORE_API gr_delay : public gr_sync_block
{
- friend gr_delay_sptr gr_make_delay (size_t itemsize, int delay);
+ friend GR_CORE_API gr_delay_sptr gr_make_delay (size_t itemsize, int delay);
gr_delay (size_t itemsize, int delay);
diff --git a/gnuradio-core/src/lib/general/gr_descrambler_bb.h b/gnuradio-core/src/lib/general/gr_descrambler_bb.h
index 19787690c..d7a49b5f1 100644
--- a/gnuradio-core/src/lib/general/gr_descrambler_bb.h
+++ b/gnuradio-core/src/lib/general/gr_descrambler_bb.h
@@ -22,13 +22,14 @@
#ifndef INCLUDED_GR_DESCRAMBLER_BB_H
#define INCLUDED_GR_DESCRAMBLER_BB_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
#include "gri_lfsr.h"
class gr_descrambler_bb;
typedef boost::shared_ptr<gr_descrambler_bb> gr_descrambler_bb_sptr;
-gr_descrambler_bb_sptr gr_make_descrambler_bb(int mask, int seed, int len);
+GR_CORE_API gr_descrambler_bb_sptr gr_make_descrambler_bb(int mask, int seed, int len);
/*!
* Descramble an input stream using an LFSR. This block works on the LSB only
@@ -42,9 +43,9 @@ gr_descrambler_bb_sptr gr_make_descrambler_bb(int mask, int seed, int len);
* \ingroup coding_blk
*/
-class gr_descrambler_bb : public gr_sync_block
+class GR_CORE_API gr_descrambler_bb : public gr_sync_block
{
- friend gr_descrambler_bb_sptr gr_make_descrambler_bb(int mask, int seed, int len);
+ friend GR_CORE_API gr_descrambler_bb_sptr gr_make_descrambler_bb(int mask, int seed, int len);
gri_lfsr d_lfsr;
diff --git a/gnuradio-core/src/lib/general/gr_diff_decoder_bb.h b/gnuradio-core/src/lib/general/gr_diff_decoder_bb.h
index 6fd08ec4b..0337c3dbd 100644
--- a/gnuradio-core/src/lib/general/gr_diff_decoder_bb.h
+++ b/gnuradio-core/src/lib/general/gr_diff_decoder_bb.h
@@ -23,12 +23,13 @@
#ifndef INCLUDED_GR_DIFF_DECODER_BB_H
#define INCLUDED_GR_DIFF_DECODER_BB_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class gr_diff_decoder_bb;
typedef boost::shared_ptr<gr_diff_decoder_bb> gr_diff_decoder_bb_sptr;
-gr_diff_decoder_bb_sptr gr_make_diff_decoder_bb (unsigned int modulus);
+GR_CORE_API gr_diff_decoder_bb_sptr gr_make_diff_decoder_bb (unsigned int modulus);
/*!
* \brief y[0] = (x[0] - x[-1]) % M
@@ -36,9 +37,9 @@ gr_diff_decoder_bb_sptr gr_make_diff_decoder_bb (unsigned int modulus);
*
* Differential decoder
*/
-class gr_diff_decoder_bb : public gr_sync_block
+class GR_CORE_API gr_diff_decoder_bb : public gr_sync_block
{
- friend gr_diff_decoder_bb_sptr gr_make_diff_decoder_bb (unsigned int modulus);
+ friend GR_CORE_API gr_diff_decoder_bb_sptr gr_make_diff_decoder_bb (unsigned int modulus);
gr_diff_decoder_bb(unsigned int modulus);
unsigned int d_modulus;
diff --git a/gnuradio-core/src/lib/general/gr_diff_encoder_bb.h b/gnuradio-core/src/lib/general/gr_diff_encoder_bb.h
index 50aff73cf..c99e226da 100644
--- a/gnuradio-core/src/lib/general/gr_diff_encoder_bb.h
+++ b/gnuradio-core/src/lib/general/gr_diff_encoder_bb.h
@@ -23,12 +23,13 @@
#ifndef INCLUDED_GR_DIFF_ENCODER_BB_H
#define INCLUDED_GR_DIFF_ENCODER_BB_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class gr_diff_encoder_bb;
typedef boost::shared_ptr<gr_diff_encoder_bb> gr_diff_encoder_bb_sptr;
-gr_diff_encoder_bb_sptr gr_make_diff_encoder_bb (unsigned int modulus);
+GR_CORE_API gr_diff_encoder_bb_sptr gr_make_diff_encoder_bb (unsigned int modulus);
/*!
* \brief y[0] = (x[0] + y[-1]) % M
@@ -36,9 +37,9 @@ gr_diff_encoder_bb_sptr gr_make_diff_encoder_bb (unsigned int modulus);
*
* Differential encoder
*/
-class gr_diff_encoder_bb : public gr_sync_block
+class GR_CORE_API gr_diff_encoder_bb : public gr_sync_block
{
- friend gr_diff_encoder_bb_sptr gr_make_diff_encoder_bb (unsigned int modulus);
+ friend GR_CORE_API gr_diff_encoder_bb_sptr gr_make_diff_encoder_bb (unsigned int modulus);
gr_diff_encoder_bb(unsigned int modulus);
unsigned int d_last_out;
diff --git a/gnuradio-core/src/lib/general/gr_diff_phasor_cc.h b/gnuradio-core/src/lib/general/gr_diff_phasor_cc.h
index 1070ba183..8af2699a7 100644
--- a/gnuradio-core/src/lib/general/gr_diff_phasor_cc.h
+++ b/gnuradio-core/src/lib/general/gr_diff_phasor_cc.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_GR_DIFF_PHASOR_CC_H
#define INCLUDED_GR_DIFF_PHASOR_CC_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
/*!
@@ -32,12 +33,12 @@
class gr_diff_phasor_cc;
typedef boost::shared_ptr<gr_diff_phasor_cc> gr_diff_phasor_cc_sptr;
-gr_diff_phasor_cc_sptr gr_make_diff_phasor_cc ();
+GR_CORE_API gr_diff_phasor_cc_sptr gr_make_diff_phasor_cc ();
-class gr_diff_phasor_cc : public gr_sync_block
+class GR_CORE_API gr_diff_phasor_cc : public gr_sync_block
{
- friend gr_diff_phasor_cc_sptr gr_make_diff_phasor_cc ();
+ friend GR_CORE_API gr_diff_phasor_cc_sptr gr_make_diff_phasor_cc ();
gr_diff_phasor_cc (); //constructor
diff --git a/gnuradio-core/src/lib/general/gr_dpll_bb.h b/gnuradio-core/src/lib/general/gr_dpll_bb.h
index e6b5fc0fa..8e748dddb 100644
--- a/gnuradio-core/src/lib/general/gr_dpll_bb.h
+++ b/gnuradio-core/src/lib/general/gr_dpll_bb.h
@@ -23,12 +23,13 @@
#ifndef INCLUDED_GR_DPLL_BB_H
#define INCLUDED_GR_DPLL_BB_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class gr_dpll_bb;
typedef boost::shared_ptr<gr_dpll_bb> gr_dpll_bb_sptr;
-gr_dpll_bb_sptr gr_make_dpll_bb (float period, float gain);
+GR_CORE_API gr_dpll_bb_sptr gr_make_dpll_bb (float period, float gain);
/*!
* \brief Detect the peak of a signal
@@ -37,9 +38,9 @@ gr_dpll_bb_sptr gr_make_dpll_bb (float period, float gain);
* If a peak is detected, this block outputs a 1,
* or it outputs 0's.
*/
-class gr_dpll_bb : public gr_sync_block
+class GR_CORE_API gr_dpll_bb : public gr_sync_block
{
- friend gr_dpll_bb_sptr gr_make_dpll_bb (float period, float gain);
+ friend GR_CORE_API gr_dpll_bb_sptr gr_make_dpll_bb (float period, float gain);
gr_dpll_bb (float period, float gain);
diff --git a/gnuradio-core/src/lib/general/gr_encode_ccsds_27_bb.h b/gnuradio-core/src/lib/general/gr_encode_ccsds_27_bb.h
index 86832ee05..e24ae9151 100644
--- a/gnuradio-core/src/lib/general/gr_encode_ccsds_27_bb.h
+++ b/gnuradio-core/src/lib/general/gr_encode_ccsds_27_bb.h
@@ -20,13 +20,14 @@
#ifndef INCLUDED_GR_ENCODE_CCSDS_27_BB_H
#define INCLUDED_GR_ENCODE_CCSDS_27_BB_H
+#include <gr_core_api.h>
#include <gr_sync_interpolator.h>
class gr_encode_ccsds_27_bb;
typedef boost::shared_ptr<gr_encode_ccsds_27_bb> gr_encode_ccsds_27_bb_sptr;
-gr_encode_ccsds_27_bb_sptr gr_make_encode_ccsds_27_bb();
+GR_CORE_API gr_encode_ccsds_27_bb_sptr gr_make_encode_ccsds_27_bb();
/*! \brief A rate 1/2, k=7 convolutional encoder for the CCSDS standard
* \ingroup ecc
@@ -44,10 +45,10 @@ gr_encode_ccsds_27_bb_sptr gr_make_encode_ccsds_27_bb();
* There is no provision to "flush" the encoder.
*/
-class gr_encode_ccsds_27_bb : public gr_sync_interpolator
+class GR_CORE_API gr_encode_ccsds_27_bb : public gr_sync_interpolator
{
private:
- friend gr_encode_ccsds_27_bb_sptr gr_make_encode_ccsds_27_bb();
+ friend GR_CORE_API gr_encode_ccsds_27_bb_sptr gr_make_encode_ccsds_27_bb();
gr_encode_ccsds_27_bb();
unsigned char d_encstate;
diff --git a/gnuradio-core/src/lib/general/gr_expj.h b/gnuradio-core/src/lib/general/gr_expj.h
index 7adf3a0c6..6f1d56eb3 100644
--- a/gnuradio-core/src/lib/general/gr_expj.h
+++ b/gnuradio-core/src/lib/general/gr_expj.h
@@ -22,6 +22,7 @@
#ifndef INCLUDED_GR_EXPJ_H
#define INCLUDED_GR_EXPJ_H
+#include <gr_core_api.h>
#include <gr_sincos.h>
#include <gr_types.h>
diff --git a/gnuradio-core/src/lib/general/gr_fake_channel_coder_pp.h b/gnuradio-core/src/lib/general/gr_fake_channel_coder_pp.h
index 480fb8e78..2560c6105 100644
--- a/gnuradio-core/src/lib/general/gr_fake_channel_coder_pp.h
+++ b/gnuradio-core/src/lib/general/gr_fake_channel_coder_pp.h
@@ -23,12 +23,13 @@
#ifndef INCLUDED_GR_FAKE_CHANNEL_CODER_PP_H
#define INCLUDED_GR_FAKE_CHANNEL_CODER_PP_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class gr_fake_channel_encoder_pp;
typedef boost::shared_ptr<gr_fake_channel_encoder_pp> gr_fake_channel_encoder_pp_sptr;
-gr_fake_channel_encoder_pp_sptr
+GR_CORE_API gr_fake_channel_encoder_pp_sptr
gr_make_fake_channel_encoder_pp(int input_vlen, int output_vlen);
/*!
@@ -37,14 +38,14 @@ gr_make_fake_channel_encoder_pp(int input_vlen, int output_vlen);
*
* input: stream of byte vectors; output: stream of byte vectors
*/
-class gr_fake_channel_encoder_pp : public gr_sync_block
+class GR_CORE_API gr_fake_channel_encoder_pp : public gr_sync_block
{
int d_input_vlen;
int d_output_vlen;
gr_fake_channel_encoder_pp(int input_vlen, int output_vlen);
- friend gr_fake_channel_encoder_pp_sptr
+ friend GR_CORE_API gr_fake_channel_encoder_pp_sptr
gr_make_fake_channel_encoder_pp(int input_vlen, int output_vlen);
public:
@@ -60,7 +61,7 @@ public:
class gr_fake_channel_decoder_pp;
typedef boost::shared_ptr<gr_fake_channel_decoder_pp> gr_fake_channel_decoder_pp_sptr;
-gr_fake_channel_decoder_pp_sptr
+GR_CORE_API gr_fake_channel_decoder_pp_sptr
gr_make_fake_channel_decoder_pp(int input_vlen, int output_vlen);
/*!
@@ -69,14 +70,14 @@ gr_make_fake_channel_decoder_pp(int input_vlen, int output_vlen);
*
* input: stream of byte vectors; output: stream of byte vectors
*/
-class gr_fake_channel_decoder_pp : public gr_sync_block
+class GR_CORE_API gr_fake_channel_decoder_pp : public gr_sync_block
{
int d_input_vlen;
int d_output_vlen;
gr_fake_channel_decoder_pp(int input_vlen, int output_vlen);
- friend gr_fake_channel_decoder_pp_sptr
+ friend GR_CORE_API gr_fake_channel_decoder_pp_sptr
gr_make_fake_channel_decoder_pp(int input_vlen, int output_vlen);
public:
diff --git a/gnuradio-core/src/lib/general/gr_feedforward_agc_cc.h b/gnuradio-core/src/lib/general/gr_feedforward_agc_cc.h
index 8c600d3d1..a97dbd958 100644
--- a/gnuradio-core/src/lib/general/gr_feedforward_agc_cc.h
+++ b/gnuradio-core/src/lib/general/gr_feedforward_agc_cc.h
@@ -23,21 +23,22 @@
#ifndef INCLUDED_GR_FEEDFORWARD_AGC_CC_H
#define INCLUDED_GR_FEEDFORWARD_AGC_CC_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class gr_feedforward_agc_cc;
typedef boost::shared_ptr<gr_feedforward_agc_cc> gr_feedforward_agc_cc_sptr;
-gr_feedforward_agc_cc_sptr
+GR_CORE_API gr_feedforward_agc_cc_sptr
gr_make_feedforward_agc_cc(int nsamples, float reference = 1.0);
/*!
* \brief Non-causal AGC which computes required gain based on max absolute value over nsamples
* \ingroup level_blk
*/
-class gr_feedforward_agc_cc : public gr_sync_block
+class GR_CORE_API gr_feedforward_agc_cc : public gr_sync_block
{
- friend gr_feedforward_agc_cc_sptr
+ friend GR_CORE_API gr_feedforward_agc_cc_sptr
gr_make_feedforward_agc_cc(int nsamples, float reference);
int d_nsamples;
diff --git a/gnuradio-core/src/lib/general/gr_feval.h b/gnuradio-core/src/lib/general/gr_feval.h
index cc4209af0..a0e448ebf 100644
--- a/gnuradio-core/src/lib/general/gr_feval.h
+++ b/gnuradio-core/src/lib/general/gr_feval.h
@@ -22,6 +22,7 @@
#ifndef INCLUDED_GR_FEVAL_H
#define INCLUDED_GR_FEVAL_H
+#include <gr_core_api.h>
#include <gr_complex.h>
/*!
@@ -37,7 +38,7 @@
* Use calleval to invoke eval (this kludge is required to allow a
* python specific "shim" to be inserted.
*/
-class gr_feval_dd
+class GR_CORE_API gr_feval_dd
{
protected:
/*!
@@ -65,7 +66,7 @@ public:
* Use calleval to invoke eval (this kludge is required to allow a
* python specific "shim" to be inserted.
*/
-class gr_feval_cc
+class GR_CORE_API gr_feval_cc
{
protected:
/*!
@@ -93,7 +94,7 @@ public:
* Use calleval to invoke eval (this kludge is required to allow a
* python specific "shim" to be inserted.
*/
-class gr_feval_ll
+class GR_CORE_API gr_feval_ll
{
protected:
/*!
@@ -121,7 +122,7 @@ public:
* Use calleval to invoke eval (this kludge is required to allow a
* python specific "shim" to be inserted.
*/
-class gr_feval
+class GR_CORE_API gr_feval
{
protected:
/*!
@@ -139,9 +140,9 @@ public:
/*!
* \brief trivial examples / test cases showing C++ calling Python code
*/
-double gr_feval_dd_example(gr_feval_dd *f, double x);
-gr_complex gr_feval_cc_example(gr_feval_cc *f, gr_complex x);
-long gr_feval_ll_example(gr_feval_ll *f, long x);
-void gr_feval_example(gr_feval *f);
+GR_CORE_API double gr_feval_dd_example(gr_feval_dd *f, double x);
+GR_CORE_API gr_complex gr_feval_cc_example(gr_feval_cc *f, gr_complex x);
+GR_CORE_API long gr_feval_ll_example(gr_feval_ll *f, long x);
+GR_CORE_API void gr_feval_example(gr_feval *f);
#endif /* INCLUDED_GR_FEVAL_H */
diff --git a/gnuradio-core/src/lib/general/gr_fft_vcc.h b/gnuradio-core/src/lib/general/gr_fft_vcc.h
index 2ab9241ec..a7c8e1162 100644
--- a/gnuradio-core/src/lib/general/gr_fft_vcc.h
+++ b/gnuradio-core/src/lib/general/gr_fft_vcc.h
@@ -23,12 +23,13 @@
#ifndef INCLUDED_GR_FFT_VCC_H
#define INCLUDED_GR_FFT_VCC_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class gr_fft_vcc;
typedef boost::shared_ptr<gr_fft_vcc> gr_fft_vcc_sptr;
-gr_fft_vcc_sptr
+GR_CORE_API gr_fft_vcc_sptr
gr_make_fft_vcc (int fft_size, bool forward, const std::vector<float> &window, bool shift=false);
/*!
@@ -37,10 +38,10 @@ gr_make_fft_vcc (int fft_size, bool forward, const std::vector<float> &window, b
*
* Abstract base class
*/
-class gr_fft_vcc : public gr_sync_block
+class GR_CORE_API gr_fft_vcc : public gr_sync_block
{
protected:
- friend gr_fft_vcc_sptr
+ friend GR_CORE_API gr_fft_vcc_sptr
gr_make_fft_vcc (int fft_size, bool forward, const std::vector<float> &window, bool shift);
unsigned int d_fft_size;
diff --git a/gnuradio-core/src/lib/general/gr_fft_vcc_fftw.h b/gnuradio-core/src/lib/general/gr_fft_vcc_fftw.h
index c026162ee..8535d133c 100644
--- a/gnuradio-core/src/lib/general/gr_fft_vcc_fftw.h
+++ b/gnuradio-core/src/lib/general/gr_fft_vcc_fftw.h
@@ -23,11 +23,12 @@
#ifndef INCLUDED_GR_FFT_VCC_FFTW_H
#define INCLUDED_GR_FFT_VCC_FFTW_H
+#include <gr_core_api.h>
#include <gr_fft_vcc.h>
class gri_fft_complex;
-gr_fft_vcc_sptr
+GR_CORE_API gr_fft_vcc_sptr
gr_make_fft_vcc_fftw (int fft_size, bool forward, const std::vector<float> &window, bool shift=false);
/*!
@@ -36,9 +37,9 @@ gr_make_fft_vcc_fftw (int fft_size, bool forward, const std::vector<float> &wind
*
* Concrete class that uses FFTW.
*/
-class gr_fft_vcc_fftw : public gr_fft_vcc
+class GR_CORE_API gr_fft_vcc_fftw : public gr_fft_vcc
{
- friend gr_fft_vcc_sptr
+ friend GR_CORE_API gr_fft_vcc_sptr
gr_make_fft_vcc_fftw (int fft_size, bool forward, const std::vector<float> &window, bool shift);
gri_fft_complex *d_fft;
diff --git a/gnuradio-core/src/lib/general/gr_fft_vfc.h b/gnuradio-core/src/lib/general/gr_fft_vfc.h
index 074574477..6cf6b9037 100644
--- a/gnuradio-core/src/lib/general/gr_fft_vfc.h
+++ b/gnuradio-core/src/lib/general/gr_fft_vfc.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_GR_FFT_VFC_H
#define INCLUDED_GR_FFT_VFC_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class gri_fft_complex;
@@ -30,7 +31,7 @@ class gri_fft_complex;
class gr_fft_vfc;
typedef boost::shared_ptr<gr_fft_vfc> gr_fft_vfc_sptr;
-gr_fft_vfc_sptr
+GR_CORE_API gr_fft_vfc_sptr
gr_make_fft_vfc (int fft_size, bool forward, const std::vector<float> &window);
/*!
@@ -38,9 +39,9 @@ gr_make_fft_vfc (int fft_size, bool forward, const std::vector<float> &window);
* \ingroup dft_blk
*/
-class gr_fft_vfc : public gr_sync_block
+class GR_CORE_API gr_fft_vfc : public gr_sync_block
{
- friend gr_fft_vfc_sptr
+ friend GR_CORE_API gr_fft_vfc_sptr
gr_make_fft_vfc (int fft_size, bool forward, const std::vector<float> &window);
unsigned int d_fft_size;
diff --git a/gnuradio-core/src/lib/general/gr_firdes.h b/gnuradio-core/src/lib/general/gr_firdes.h
index de775bd07..83fa7e119 100644
--- a/gnuradio-core/src/lib/general/gr_firdes.h
+++ b/gnuradio-core/src/lib/general/gr_firdes.h
@@ -23,6 +23,7 @@
#ifndef _GR_FIRDES_H_
#define _GR_FIRDES_H_
+#include <gr_core_api.h>
#include <vector>
#include <cmath>
#include <gr_complex.h>
@@ -32,7 +33,7 @@
* \ingroup filter_design
*/
-class gr_firdes {
+class GR_CORE_API gr_firdes {
public:
enum win_type {
diff --git a/gnuradio-core/src/lib/general/gr_float_to_char.h b/gnuradio-core/src/lib/general/gr_float_to_char.h
index e65072bf0..434e2e9d0 100644
--- a/gnuradio-core/src/lib/general/gr_float_to_char.h
+++ b/gnuradio-core/src/lib/general/gr_float_to_char.h
@@ -23,12 +23,13 @@
#ifndef INCLUDED_GR_FLOAT_TO_CHAR_H
#define INCLUDED_GR_FLOAT_TO_CHAR_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class gr_float_to_char;
typedef boost::shared_ptr<gr_float_to_char> gr_float_to_char_sptr;
-gr_float_to_char_sptr
+GR_CORE_API gr_float_to_char_sptr
gr_make_float_to_char ();
/*!
@@ -36,9 +37,9 @@ gr_make_float_to_char ();
* \ingroup converter_blk
*/
-class gr_float_to_char : public gr_sync_block
+class GR_CORE_API gr_float_to_char : public gr_sync_block
{
- friend gr_float_to_char_sptr gr_make_float_to_char ();
+ friend GR_CORE_API gr_float_to_char_sptr gr_make_float_to_char ();
gr_float_to_char ();
public:
diff --git a/gnuradio-core/src/lib/general/gr_float_to_complex.h b/gnuradio-core/src/lib/general/gr_float_to_complex.h
index f6cc24852..596b595f3 100644
--- a/gnuradio-core/src/lib/general/gr_float_to_complex.h
+++ b/gnuradio-core/src/lib/general/gr_float_to_complex.h
@@ -23,13 +23,14 @@
#ifndef INCLUDED_GR_FLOAT_TO_COMPLEX_H
#define INCLUDED_GR_FLOAT_TO_COMPLEX_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
#include <gr_complex.h>
class gr_float_to_complex;
typedef boost::shared_ptr<gr_float_to_complex> gr_float_to_complex_sptr;
-gr_float_to_complex_sptr
+GR_CORE_API gr_float_to_complex_sptr
gr_make_float_to_complex (size_t vlen = 1);
/*!
@@ -37,9 +38,9 @@ gr_make_float_to_complex (size_t vlen = 1);
* \ingroup converter_blk
*/
-class gr_float_to_complex : public gr_sync_block
+class GR_CORE_API gr_float_to_complex : public gr_sync_block
{
- friend gr_float_to_complex_sptr gr_make_float_to_complex (size_t vlen);
+ friend GR_CORE_API gr_float_to_complex_sptr gr_make_float_to_complex (size_t vlen);
gr_float_to_complex (size_t vlen);
size_t d_vlen;
diff --git a/gnuradio-core/src/lib/general/gr_float_to_short.h b/gnuradio-core/src/lib/general/gr_float_to_short.h
index e85343929..010d61141 100644
--- a/gnuradio-core/src/lib/general/gr_float_to_short.h
+++ b/gnuradio-core/src/lib/general/gr_float_to_short.h
@@ -23,12 +23,13 @@
#ifndef INCLUDED_GR_FLOAT_TO_SHORT_H
#define INCLUDED_GR_FLOAT_TO_SHORT_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class gr_float_to_short;
typedef boost::shared_ptr<gr_float_to_short> gr_float_to_short_sptr;
-gr_float_to_short_sptr
+GR_CORE_API gr_float_to_short_sptr
gr_make_float_to_short ();
/*!
@@ -36,9 +37,9 @@ gr_make_float_to_short ();
* \ingroup converter_blk
*/
-class gr_float_to_short : public gr_sync_block
+class GR_CORE_API gr_float_to_short : public gr_sync_block
{
- friend gr_float_to_short_sptr gr_make_float_to_short ();
+ friend GR_CORE_API gr_float_to_short_sptr gr_make_float_to_short ();
gr_float_to_short ();
public:
diff --git a/gnuradio-core/src/lib/general/gr_float_to_uchar.h b/gnuradio-core/src/lib/general/gr_float_to_uchar.h
index 3bca9c555..fca8eb07b 100644
--- a/gnuradio-core/src/lib/general/gr_float_to_uchar.h
+++ b/gnuradio-core/src/lib/general/gr_float_to_uchar.h
@@ -23,12 +23,13 @@
#ifndef INCLUDED_GR_FLOAT_TO_UCHAR_H
#define INCLUDED_GR_FLOAT_TO_UCHAR_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class gr_float_to_uchar;
typedef boost::shared_ptr<gr_float_to_uchar> gr_float_to_uchar_sptr;
-gr_float_to_uchar_sptr
+GR_CORE_API gr_float_to_uchar_sptr
gr_make_float_to_uchar ();
/*!
@@ -36,9 +37,9 @@ gr_make_float_to_uchar ();
* \ingroup converter_blk
*/
-class gr_float_to_uchar : public gr_sync_block
+class GR_CORE_API gr_float_to_uchar : public gr_sync_block
{
- friend gr_float_to_uchar_sptr gr_make_float_to_uchar ();
+ friend GR_CORE_API gr_float_to_uchar_sptr gr_make_float_to_uchar ();
gr_float_to_uchar ();
public:
diff --git a/gnuradio-core/src/lib/general/gr_fmdet_cf.h b/gnuradio-core/src/lib/general/gr_fmdet_cf.h
index 792646bef..7bf3baa3f 100644
--- a/gnuradio-core/src/lib/general/gr_fmdet_cf.h
+++ b/gnuradio-core/src/lib/general/gr_fmdet_cf.h
@@ -23,12 +23,13 @@
#ifndef INCLUDED_GR_FMDET_CF_H
#define INCLUDED_GR_FMDET_CF_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class gr_fmdet_cf;
typedef boost::shared_ptr<gr_fmdet_cf> gr_fmdet_cf_sptr;
-gr_fmdet_cf_sptr gr_make_fmdet_cf (float samplerate, float freq_low, float freq_high, float scl);
+GR_CORE_API gr_fmdet_cf_sptr gr_make_fmdet_cf (float samplerate, float freq_low, float freq_high, float scl);
class gr_fir_ccf;
@@ -43,9 +44,9 @@ class gr_fir_ccf;
* normalization by the magnitude of the sample
*/
-class gr_fmdet_cf : public gr_sync_block
+class GR_CORE_API gr_fmdet_cf : public gr_sync_block
{
- friend gr_fmdet_cf_sptr gr_make_fmdet_cf (float samplerate, float freq_low,
+ friend GR_CORE_API gr_fmdet_cf_sptr gr_make_fmdet_cf (float samplerate, float freq_low,
float freq_high, float scl);
gr_complex d_S1,d_S2,d_S3,d_S4;
diff --git a/gnuradio-core/src/lib/general/gr_framer_sink_1.h b/gnuradio-core/src/lib/general/gr_framer_sink_1.h
index 3f2e8aa88..95ad6ced7 100644
--- a/gnuradio-core/src/lib/general/gr_framer_sink_1.h
+++ b/gnuradio-core/src/lib/general/gr_framer_sink_1.h
@@ -23,13 +23,14 @@
#ifndef INCLUDED_GR_FRAMER_SINK_1_H
#define INCLUDED_GR_FRAMER_SINK_1_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
#include <gr_msg_queue.h>
class gr_framer_sink_1;
typedef boost::shared_ptr<gr_framer_sink_1> gr_framer_sink_1_sptr;
-gr_framer_sink_1_sptr
+GR_CORE_API gr_framer_sink_1_sptr
gr_make_framer_sink_1 (gr_msg_queue_sptr target_queue);
/*!
@@ -50,9 +51,9 @@ gr_make_framer_sink_1 (gr_msg_queue_sptr target_queue);
* the first bit of the packet. That is, this bit is the first
* one after the access code.
*/
-class gr_framer_sink_1 : public gr_sync_block
+class GR_CORE_API gr_framer_sink_1 : public gr_sync_block
{
- friend gr_framer_sink_1_sptr
+ friend GR_CORE_API gr_framer_sink_1_sptr
gr_make_framer_sink_1 (gr_msg_queue_sptr target_queue);
private:
diff --git a/gnuradio-core/src/lib/general/gr_frequency_modulator_fc.h b/gnuradio-core/src/lib/general/gr_frequency_modulator_fc.h
index 385f447b7..932e7da36 100644
--- a/gnuradio-core/src/lib/general/gr_frequency_modulator_fc.h
+++ b/gnuradio-core/src/lib/general/gr_frequency_modulator_fc.h
@@ -23,12 +23,13 @@
#ifndef INCLUDED_GR_FREQUENCY_MODULATOR_FC_H
#define INCLUDED_GR_FREQUENCY_MODULATOR_FC_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class gr_frequency_modulator_fc;
typedef boost::shared_ptr<gr_frequency_modulator_fc> gr_frequency_modulator_fc_sptr;
-gr_frequency_modulator_fc_sptr gr_make_frequency_modulator_fc (double sensitivity);
+GR_CORE_API gr_frequency_modulator_fc_sptr gr_make_frequency_modulator_fc (double sensitivity);
/*!
* \brief Frequency modulator block
@@ -36,12 +37,12 @@ gr_frequency_modulator_fc_sptr gr_make_frequency_modulator_fc (double sensitivit
*
* float input; complex baseband output
*/
-class gr_frequency_modulator_fc : public gr_sync_block
+class GR_CORE_API gr_frequency_modulator_fc : public gr_sync_block
{
double d_sensitivity;
double d_phase;
- friend gr_frequency_modulator_fc_sptr
+ friend GR_CORE_API gr_frequency_modulator_fc_sptr
gr_make_frequency_modulator_fc (double sensitivity);
gr_frequency_modulator_fc (double sensitivity);
diff --git a/gnuradio-core/src/lib/general/gr_fxpt.h b/gnuradio-core/src/lib/general/gr_fxpt.h
index c98d31b27..5cf736dfb 100644
--- a/gnuradio-core/src/lib/general/gr_fxpt.h
+++ b/gnuradio-core/src/lib/general/gr_fxpt.h
@@ -22,10 +22,11 @@
#ifndef INCLUDED_GR_FXPT_H
#define INCLUDED_GR_FXPT_H
+#include <gr_core_api.h>
#include <gr_types.h>
/*!
- * \brief fixed point sine and cosine and friends.
+ * \brief fixed point sine and cosine and friend GR_CORE_APIs.
* \ingroup misc
*
* fixed pt radians
@@ -35,7 +36,7 @@
* 2**31-1 pi - epsilon
*
*/
-class gr_fxpt
+class GR_CORE_API gr_fxpt
{
static const int WORDBITS = 32;
static const int NBITS = 10;
diff --git a/gnuradio-core/src/lib/general/gr_fxpt_nco.h b/gnuradio-core/src/lib/general/gr_fxpt_nco.h
index ca0d54f02..5597efb4f 100644
--- a/gnuradio-core/src/lib/general/gr_fxpt_nco.h
+++ b/gnuradio-core/src/lib/general/gr_fxpt_nco.h
@@ -22,6 +22,7 @@
#ifndef INCLUDED_GR_FXPT_NCO_H
#define INCLUDED_GR_FXPT_NCO_H
+#include <gr_core_api.h>
#include <gr_fxpt.h>
#include <gr_complex.h>
@@ -29,7 +30,7 @@
* \brief Numerically Controlled Oscillator (NCO)
* \ingroup misc
*/
-class gr_fxpt_nco {
+class GR_CORE_API gr_fxpt_nco {
gr_uint32 d_phase;
gr_int32 d_phase_inc;
diff --git a/gnuradio-core/src/lib/general/gr_fxpt_vco.h b/gnuradio-core/src/lib/general/gr_fxpt_vco.h
index 1ff968b79..a77a31311 100644
--- a/gnuradio-core/src/lib/general/gr_fxpt_vco.h
+++ b/gnuradio-core/src/lib/general/gr_fxpt_vco.h
@@ -22,6 +22,7 @@
#ifndef INCLUDED_GR_FXPT_VCO_H
#define INCLUDED_GR_FXPT_VCO_H
+#include <gr_core_api.h>
#include <gr_fxpt.h>
#include <gr_complex.h>
@@ -29,7 +30,7 @@
* \brief Voltage Controlled Oscillator (VCO)
* \ingroup misc
*/
-class gr_fxpt_vco {
+class GR_CORE_API gr_fxpt_vco {
gr_int32 d_phase;
public:
diff --git a/gnuradio-core/src/lib/general/gr_glfsr_source_b.h b/gnuradio-core/src/lib/general/gr_glfsr_source_b.h
index cff8df11b..bd66912ed 100644
--- a/gnuradio-core/src/lib/general/gr_glfsr_source_b.h
+++ b/gnuradio-core/src/lib/general/gr_glfsr_source_b.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_GR_GLFSR_SOURCE_B_H
#define INCLUDED_GR_GLFSR_SOURCE_B_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class gri_glfsr;
@@ -30,16 +31,16 @@ class gri_glfsr;
class gr_glfsr_source_b;
typedef boost::shared_ptr<gr_glfsr_source_b> gr_glfsr_source_b_sptr;
-gr_glfsr_source_b_sptr gr_make_glfsr_source_b(int degree, bool repeat=true, int mask=0, int seed=1);
+GR_CORE_API gr_glfsr_source_b_sptr gr_make_glfsr_source_b(int degree, bool repeat=true, int mask=0, int seed=1);
/*!
* \brief Galois LFSR pseudo-random source
* \ingroup source_blk
*/
-class gr_glfsr_source_b : public gr_sync_block
+class GR_CORE_API gr_glfsr_source_b : public gr_sync_block
{
private:
- friend gr_glfsr_source_b_sptr
+ friend GR_CORE_API gr_glfsr_source_b_sptr
gr_make_glfsr_source_b(int degree, bool repeat, int mask, int seed);
gri_glfsr *d_glfsr;
diff --git a/gnuradio-core/src/lib/general/gr_glfsr_source_f.h b/gnuradio-core/src/lib/general/gr_glfsr_source_f.h
index 007970806..2dd09c5ac 100644
--- a/gnuradio-core/src/lib/general/gr_glfsr_source_f.h
+++ b/gnuradio-core/src/lib/general/gr_glfsr_source_f.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_GR_GLFSR_SOURCE_F_H
#define INCLUDED_GR_GLFSR_SOURCE_F_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class gri_glfsr;
@@ -30,16 +31,16 @@ class gri_glfsr;
class gr_glfsr_source_f;
typedef boost::shared_ptr<gr_glfsr_source_f> gr_glfsr_source_f_sptr;
-gr_glfsr_source_f_sptr gr_make_glfsr_source_f(int degree, bool repeat=true, int mask=0, int seed=1);
+GR_CORE_API gr_glfsr_source_f_sptr gr_make_glfsr_source_f(int degree, bool repeat=true, int mask=0, int seed=1);
/*!
* \brief Galois LFSR pseudo-random source generating float outputs -1.0 - 1.0
* \ingroup source_blk
*/
-class gr_glfsr_source_f : public gr_sync_block
+class GR_CORE_API gr_glfsr_source_f : public gr_sync_block
{
private:
- friend gr_glfsr_source_f_sptr
+ friend GR_CORE_API gr_glfsr_source_f_sptr
gr_make_glfsr_source_f(int degree, bool repeat, int mask, int seed);
gri_glfsr *d_glfsr;
diff --git a/gnuradio-core/src/lib/general/gr_head.h b/gnuradio-core/src/lib/general/gr_head.h
index f7eee1064..f66d43308 100644
--- a/gnuradio-core/src/lib/general/gr_head.h
+++ b/gnuradio-core/src/lib/general/gr_head.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_GR_HEAD_H
#define INCLUDED_GR_HEAD_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
#include <stddef.h> // size_t
@@ -36,9 +37,9 @@ typedef boost::shared_ptr<gr_head> gr_head_sptr;
* Useful for building test cases
*/
-class gr_head : public gr_sync_block
+class GR_CORE_API gr_head : public gr_sync_block
{
- friend gr_head_sptr gr_make_head (size_t sizeof_stream_item, unsigned long long nitems);
+ friend GR_CORE_API gr_head_sptr gr_make_head (size_t sizeof_stream_item, unsigned long long nitems);
gr_head (size_t sizeof_stream_item, unsigned long long nitems);
unsigned long long d_nitems;
@@ -52,7 +53,7 @@ class gr_head : public gr_sync_block
void reset() { d_ncopied_items = 0; }
};
-gr_head_sptr
+GR_CORE_API gr_head_sptr
gr_make_head (size_t sizeof_stream_item, unsigned long long nitems);
diff --git a/gnuradio-core/src/lib/general/gr_int_to_float.h b/gnuradio-core/src/lib/general/gr_int_to_float.h
index e63ed3ba3..9af381ba9 100644
--- a/gnuradio-core/src/lib/general/gr_int_to_float.h
+++ b/gnuradio-core/src/lib/general/gr_int_to_float.h
@@ -23,12 +23,13 @@
#ifndef INCLUDED_GR_INT_TO_FLOAT_H
#define INCLUDED_GR_INT_TO_FLOAT_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class gr_int_to_float;
typedef boost::shared_ptr<gr_int_to_float> gr_int_to_float_sptr;
-gr_int_to_float_sptr
+GR_CORE_API gr_int_to_float_sptr
gr_make_int_to_float ();
/*!
@@ -36,9 +37,9 @@ gr_make_int_to_float ();
* \ingroup converter_blk
*/
-class gr_int_to_float : public gr_sync_block
+class GR_CORE_API gr_int_to_float : public gr_sync_block
{
- friend gr_int_to_float_sptr gr_make_int_to_float ();
+ friend GR_CORE_API gr_int_to_float_sptr gr_make_int_to_float ();
gr_int_to_float ();
public:
diff --git a/gnuradio-core/src/lib/general/gr_interleave.h b/gnuradio-core/src/lib/general/gr_interleave.h
index faffdd757..ef7bce07a 100644
--- a/gnuradio-core/src/lib/general/gr_interleave.h
+++ b/gnuradio-core/src/lib/general/gr_interleave.h
@@ -23,20 +23,21 @@
#ifndef INCLUDED_GR_INTERLEAVE_H
#define INCLUDED_GR_INTERLEAVE_H
+#include <gr_core_api.h>
#include <gr_sync_interpolator.h>
class gr_interleave;
typedef boost::shared_ptr<gr_interleave> gr_interleave_sptr;
-gr_interleave_sptr gr_make_interleave (size_t itemsize);
+GR_CORE_API gr_interleave_sptr gr_make_interleave (size_t itemsize);
/*!
* \brief interleave N inputs to a single output
* \ingroup slicedice_blk
*/
-class gr_interleave : public gr_sync_interpolator
+class GR_CORE_API gr_interleave : public gr_sync_interpolator
{
- friend gr_interleave_sptr gr_make_interleave (size_t itemsize);
+ friend GR_CORE_API gr_interleave_sptr gr_make_interleave (size_t itemsize);
size_t d_itemsize;
diff --git a/gnuradio-core/src/lib/general/gr_interleaved_short_to_complex.h b/gnuradio-core/src/lib/general/gr_interleaved_short_to_complex.h
index c79a9370f..40f1636bd 100644
--- a/gnuradio-core/src/lib/general/gr_interleaved_short_to_complex.h
+++ b/gnuradio-core/src/lib/general/gr_interleaved_short_to_complex.h
@@ -23,13 +23,14 @@
#ifndef INCLUDED_GR_INTERLEAVED_SHORT_TO_COMPLEX_H
#define INCLUDED_GR_INTERLEAVED_SHORT_TO_COMPLEX_H
+#include <gr_core_api.h>
#include <gr_sync_decimator.h>
class gr_interleaved_short_to_complex;
typedef boost::shared_ptr<gr_interleaved_short_to_complex>
gr_interleaved_short_to_complex_sptr;
-gr_interleaved_short_to_complex_sptr
+GR_CORE_API gr_interleaved_short_to_complex_sptr
gr_make_interleaved_short_to_complex ();
/*!
@@ -37,9 +38,9 @@ gr_make_interleaved_short_to_complex ();
* \ingroup converter_blk
*/
-class gr_interleaved_short_to_complex : public gr_sync_decimator
+class GR_CORE_API gr_interleaved_short_to_complex : public gr_sync_decimator
{
- friend gr_interleaved_short_to_complex_sptr gr_make_interleaved_short_to_complex ();
+ friend GR_CORE_API gr_interleaved_short_to_complex_sptr gr_make_interleaved_short_to_complex ();
gr_interleaved_short_to_complex ();
public:
diff --git a/gnuradio-core/src/lib/general/gr_iqcomp_cc.h b/gnuradio-core/src/lib/general/gr_iqcomp_cc.h
index f4c6cf8ea..c01e2a6ba 100644
--- a/gnuradio-core/src/lib/general/gr_iqcomp_cc.h
+++ b/gnuradio-core/src/lib/general/gr_iqcomp_cc.h
@@ -24,20 +24,21 @@
#ifndef INCLUDED_GR_IQCOMP_CC_H
#define INCLUDED_GR_IQCOMP_CC_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class gr_iqcomp_cc;
typedef boost::shared_ptr<gr_iqcomp_cc> gr_iqcomp_cc_sptr;
-gr_iqcomp_cc_sptr gr_make_iqcomp_cc (float mu);
+GR_CORE_API gr_iqcomp_cc_sptr gr_make_iqcomp_cc (float mu);
/*!
* \brief
* \ingroup misc_blk
*/
-class gr_iqcomp_cc : public gr_sync_block
+class GR_CORE_API gr_iqcomp_cc : public gr_sync_block
{
- friend gr_iqcomp_cc_sptr gr_make_iqcomp_cc (float mu);
+ friend GR_CORE_API gr_iqcomp_cc_sptr gr_make_iqcomp_cc (float mu);
float d_mu, d_wi, d_wq;
gr_iqcomp_cc (float mu);
diff --git a/gnuradio-core/src/lib/general/gr_keep_one_in_n.h b/gnuradio-core/src/lib/general/gr_keep_one_in_n.h
index ba573618e..c32ed2a26 100644
--- a/gnuradio-core/src/lib/general/gr_keep_one_in_n.h
+++ b/gnuradio-core/src/lib/general/gr_keep_one_in_n.h
@@ -23,12 +23,13 @@
#ifndef INCLUDED_GR_KEEP_ONE_IN_N_H
#define INCLUDED_GR_KEEP_ONE_IN_N_H
+#include <gr_core_api.h>
#include <gr_sync_decimator.h>
class gr_keep_one_in_n;
typedef boost::shared_ptr<gr_keep_one_in_n> gr_keep_one_in_n_sptr;
-gr_keep_one_in_n_sptr
+GR_CORE_API gr_keep_one_in_n_sptr
gr_make_keep_one_in_n (size_t item_size, int n);
@@ -36,9 +37,9 @@ gr_make_keep_one_in_n (size_t item_size, int n);
* \brief decimate a stream, keeping one item out of every n.
* \ingroup slicedice_blk
*/
-class gr_keep_one_in_n : public gr_block
+class GR_CORE_API gr_keep_one_in_n : public gr_block
{
- friend gr_keep_one_in_n_sptr
+ friend GR_CORE_API gr_keep_one_in_n_sptr
gr_make_keep_one_in_n (size_t item_size, int n);
int d_n;
diff --git a/gnuradio-core/src/lib/general/gr_kludge_copy.h b/gnuradio-core/src/lib/general/gr_kludge_copy.h
index 90fd047df..5c1e461a8 100644
--- a/gnuradio-core/src/lib/general/gr_kludge_copy.h
+++ b/gnuradio-core/src/lib/general/gr_kludge_copy.h
@@ -23,12 +23,13 @@
#ifndef INCLUDED_GR_KLUDGE_COPY_H
#define INCLUDED_GR_KLUDGE_COPY_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class gr_kludge_copy;
typedef boost::shared_ptr<gr_kludge_copy> gr_kludge_copy_sptr;
-gr_kludge_copy_sptr gr_make_kludge_copy(size_t itemsize);
+GR_CORE_API gr_kludge_copy_sptr gr_make_kludge_copy(size_t itemsize);
/*!
* \brief output[i] = input[i]
@@ -36,11 +37,11 @@ gr_kludge_copy_sptr gr_make_kludge_copy(size_t itemsize);
*
* This is a short term kludge to work around a problem with the hierarchical block impl.
*/
-class gr_kludge_copy : public gr_sync_block
+class GR_CORE_API gr_kludge_copy : public gr_sync_block
{
size_t d_itemsize;
- friend gr_kludge_copy_sptr gr_make_kludge_copy(size_t itemsize);
+ friend GR_CORE_API gr_kludge_copy_sptr gr_make_kludge_copy(size_t itemsize);
gr_kludge_copy(size_t itemsize);
public:
diff --git a/gnuradio-core/src/lib/general/gr_lfsr_32k_source_s.h b/gnuradio-core/src/lib/general/gr_lfsr_32k_source_s.h
index f8497e4cb..aa7ad7b1f 100644
--- a/gnuradio-core/src/lib/general/gr_lfsr_32k_source_s.h
+++ b/gnuradio-core/src/lib/general/gr_lfsr_32k_source_s.h
@@ -23,13 +23,14 @@
#ifndef INCLUDED_GR_LFSR_32K_SOURCE_S_H
#define INCLUDED_GR_LFSR_32K_SOURCE_S_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
#include <gri_lfsr_32k.h>
class gr_lfsr_32k_source_s;
typedef boost::shared_ptr<gr_lfsr_32k_source_s> gr_lfsr_32k_source_s_sptr;
-gr_lfsr_32k_source_s_sptr gr_make_lfsr_32k_source_s ();
+GR_CORE_API gr_lfsr_32k_source_s_sptr gr_make_lfsr_32k_source_s ();
/*!
* \brief LFSR pseudo-random source with period of 2^15 bits (2^11 shorts)
@@ -38,9 +39,9 @@ gr_lfsr_32k_source_s_sptr gr_make_lfsr_32k_source_s ();
* This source is typically used along with gr_check_lfsr_32k_s to test
* the USRP using its digital loopback mode.
*/
-class gr_lfsr_32k_source_s : public gr_sync_block
+class GR_CORE_API gr_lfsr_32k_source_s : public gr_sync_block
{
- friend gr_lfsr_32k_source_s_sptr gr_make_lfsr_32k_source_s ();
+ friend GR_CORE_API gr_lfsr_32k_source_s_sptr gr_make_lfsr_32k_source_s ();
static const int BUFSIZE = 2048 - 1; // ensure pattern isn't packet aligned
diff --git a/gnuradio-core/src/lib/general/gr_lms_dfe_cc.h b/gnuradio-core/src/lib/general/gr_lms_dfe_cc.h
new file mode 100644
index 000000000..335b1883c
--- /dev/null
+++ b/gnuradio-core/src/lib/general/gr_lms_dfe_cc.h
@@ -0,0 +1,65 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2005 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_GR_LMS_DFE_CC_H
+#define INCLUDED_GR_LMS_DFE_CC_H
+
+#include <gr_core_api.h>
+#include <gr_sync_block.h>
+
+class gr_lms_dfe_cc;
+typedef boost::shared_ptr<gr_lms_dfe_cc> gr_lms_dfe_cc_sptr;
+
+GR_CORE_API gr_lms_dfe_cc_sptr gr_make_lms_dfe_cc (float lambda_ff, float lambda_fb,
+ unsigned int num_fftaps, unsigned int num_fbtaps);
+
+/*!
+ * \brief Least-Mean-Square Decision Feedback Equalizer (complex in/out)
+ * \ingroup eq_blk
+ */
+class GR_CORE_API gr_lms_dfe_cc : public gr_sync_block
+{
+ friend GR_CORE_API gr_lms_dfe_cc_sptr gr_make_lms_dfe_cc (float lambda_ff, float lambda_fb,
+ unsigned int num_fftaps, unsigned int num_fbtaps);
+
+ float d_lambda_ff;
+ float d_lambda_fb;
+ std::vector<gr_complex> d_ff_delayline;
+ std::vector<gr_complex> d_fb_delayline;
+ std::vector<gr_complex> d_ff_taps;
+ std::vector<gr_complex> d_fb_taps;
+ unsigned int d_ff_index;
+ unsigned int d_fb_index;
+
+ gr_lms_dfe_cc (float lambda_ff, float lambda_fb,
+ unsigned int num_fftaps, unsigned int num_fbtaps);
+ gr_complex slicer_0deg(gr_complex baud);
+ gr_complex slicer_45deg(gr_complex baud);
+
+ public:
+
+ int work (int noutput_items,
+ gr_vector_const_void_star &input_items,
+ gr_vector_void_star &output_items);
+};
+
+#endif
diff --git a/gnuradio-core/src/lib/general/gr_lms_dfe_ff.h b/gnuradio-core/src/lib/general/gr_lms_dfe_ff.h
new file mode 100644
index 000000000..ed2aa9844
--- /dev/null
+++ b/gnuradio-core/src/lib/general/gr_lms_dfe_ff.h
@@ -0,0 +1,63 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2005 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_GR_LMS_DFE_FF_H
+#define INCLUDED_GR_LMS_DFE_FF_H
+
+#include <gr_core_api.h>
+#include <gr_sync_block.h>
+
+class gr_lms_dfe_ff;
+typedef boost::shared_ptr<gr_lms_dfe_ff> gr_lms_dfe_ff_sptr;
+
+GR_CORE_API gr_lms_dfe_ff_sptr gr_make_lms_dfe_ff (float lambda_ff, float lambda_fb,
+ unsigned int num_fftaps, unsigned int num_fbtaps);
+
+/*!
+ * \brief Least-Mean-Square Decision Feedback Equalizer (float in/out)
+ * \ingroup eq_blk
+ */
+class GR_CORE_API gr_lms_dfe_ff : public gr_sync_block
+{
+ friend GR_CORE_API gr_lms_dfe_ff_sptr gr_make_lms_dfe_ff (float lambda_ff, float lambda_fb,
+ unsigned int num_fftaps, unsigned int num_fbtaps);
+
+ float d_lambda_ff;
+ float d_lambda_fb;
+ std::vector<float> d_ff_delayline;
+ std::vector<float> d_fb_delayline;
+ std::vector<float> d_ff_taps;
+ std::vector<float> d_fb_taps;
+ unsigned int d_ff_index;
+ unsigned int d_fb_index;
+
+ gr_lms_dfe_ff (float lambda_ff, float lambda_fb,
+ unsigned int num_fftaps, unsigned int num_fbtaps);
+
+ public:
+
+ int work (int noutput_items,
+ gr_vector_const_void_star &input_items,
+ gr_vector_void_star &output_items);
+};
+
+#endif
diff --git a/gnuradio-core/src/lib/general/gr_log2_const.h b/gnuradio-core/src/lib/general/gr_log2_const.h
index 4ea420920..8e4a0860b 100644
--- a/gnuradio-core/src/lib/general/gr_log2_const.h
+++ b/gnuradio-core/src/lib/general/gr_log2_const.h
@@ -27,6 +27,7 @@
#ifndef INCLUDED_GR_LOG2_CONST_H
#define INCLUDED_GR_LOG2_CONST_H
+#include <gr_core_api.h>
#include <assert.h>
template<unsigned int k> static inline int gr_log2_const() { assert(0); return 0; }
diff --git a/gnuradio-core/src/lib/general/gr_map_bb.h b/gnuradio-core/src/lib/general/gr_map_bb.h
index 4986ab181..0820c6a16 100644
--- a/gnuradio-core/src/lib/general/gr_map_bb.h
+++ b/gnuradio-core/src/lib/general/gr_map_bb.h
@@ -22,21 +22,22 @@
#ifndef INCLUDED_GR_MAP_BB_H
#define INCLUDED_GR_MAP_BB_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class gr_map_bb;
typedef boost::shared_ptr<gr_map_bb> gr_map_bb_sptr;
-gr_map_bb_sptr gr_make_map_bb(const std::vector<int> &map);
+GR_CORE_API gr_map_bb_sptr gr_make_map_bb(const std::vector<int> &map);
/*!
* \brief output[i] = map[input[i]]
* \ingroup coding_blk
*/
-class gr_map_bb : public gr_sync_block
+class GR_CORE_API gr_map_bb : public gr_sync_block
{
- friend gr_map_bb_sptr gr_make_map_bb(const std::vector<int> &map);
+ friend GR_CORE_API gr_map_bb_sptr gr_make_map_bb(const std::vector<int> &map);
unsigned char d_map[0x100];
diff --git a/gnuradio-core/src/lib/general/gr_math.h b/gnuradio-core/src/lib/general/gr_math.h
index f5935c1da..9c61942cd 100644
--- a/gnuradio-core/src/lib/general/gr_math.h
+++ b/gnuradio-core/src/lib/general/gr_math.h
@@ -27,6 +27,7 @@
#ifndef _GR_MATH_H_
#define _GR_MATH_H_
+#include <gr_core_api.h>
#include <gr_complex.h>
static inline bool
@@ -51,7 +52,7 @@ gr_is_power_of_2(long x)
* to zero. This routine calculates the arc tangent with an average
* error of +/- 0.045 degrees.
*/
-float gr_fast_atan2f(float y, float x);
+GR_CORE_API float gr_fast_atan2f(float y, float x);
static inline float gr_fast_atan2f(gr_complex z)
{
diff --git a/gnuradio-core/src/lib/general/gr_misc.h b/gnuradio-core/src/lib/general/gr_misc.h
index 55cc7eda6..78f7e18ac 100644
--- a/gnuradio-core/src/lib/general/gr_misc.h
+++ b/gnuradio-core/src/lib/general/gr_misc.h
@@ -23,16 +23,17 @@
#ifndef INCLUDED_GR_MISC_H
#define INCLUDED_GR_MISC_H
+#include <gr_core_api.h>
#include <gr_types.h>
unsigned int
gr_rounduppow2(unsigned int n);
// FIXME should be template
-void gr_zero_vector(std::vector<float> &v);
-void gr_zero_vector(std::vector<double> &v);
-void gr_zero_vector(std::vector<int> &v);
-void gr_zero_vector(std::vector<gr_complex> &v);
+GR_CORE_API void gr_zero_vector(std::vector<float> &v);
+GR_CORE_API void gr_zero_vector(std::vector<double> &v);
+GR_CORE_API void gr_zero_vector(std::vector<int> &v);
+GR_CORE_API void gr_zero_vector(std::vector<gr_complex> &v);
#endif /* INCLUDED_GR_MISC_H */
diff --git a/gnuradio-core/src/lib/general/gr_nlog10_ff.h b/gnuradio-core/src/lib/general/gr_nlog10_ff.h
index 1cb50f3ca..cea56f87e 100644
--- a/gnuradio-core/src/lib/general/gr_nlog10_ff.h
+++ b/gnuradio-core/src/lib/general/gr_nlog10_ff.h
@@ -22,20 +22,21 @@
#ifndef INCLUDED_GR_NLOG10_FF_H
#define INCLUDED_GR_NLOG10_FF_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class gr_nlog10_ff;
typedef boost::shared_ptr<gr_nlog10_ff> gr_nlog10_ff_sptr;
-gr_nlog10_ff_sptr gr_make_nlog10_ff (float n=1.0, unsigned vlen=1, float k=0);
+GR_CORE_API gr_nlog10_ff_sptr gr_make_nlog10_ff (float n=1.0, unsigned vlen=1, float k=0);
/*!
* \brief output = n*log10(input) + k
* \ingroup math_blk
*/
-class gr_nlog10_ff : public gr_sync_block
+class GR_CORE_API gr_nlog10_ff : public gr_sync_block
{
- friend gr_nlog10_ff_sptr gr_make_nlog10_ff (float n, unsigned vlen, float k);
+ friend GR_CORE_API gr_nlog10_ff_sptr gr_make_nlog10_ff (float n, unsigned vlen, float k);
unsigned int d_vlen;
float d_n;
diff --git a/gnuradio-core/src/lib/general/gr_nop.h b/gnuradio-core/src/lib/general/gr_nop.h
index 354c2f9fc..b8398befc 100644
--- a/gnuradio-core/src/lib/general/gr_nop.h
+++ b/gnuradio-core/src/lib/general/gr_nop.h
@@ -23,22 +23,23 @@
#ifndef INCLUDED_GR_NOP_H
#define INCLUDED_GR_NOP_H
+#include <gr_core_api.h>
#include <gr_block.h>
#include <stddef.h> // size_t
class gr_nop;
typedef boost::shared_ptr<gr_nop> gr_nop_sptr;
-gr_nop_sptr
+GR_CORE_API gr_nop_sptr
gr_make_nop (size_t sizeof_stream_item);
/*!
* \brief Does nothing. Used for testing only.
* \ingroup misc_blk
*/
-class gr_nop : public gr_block
+class GR_CORE_API gr_nop : public gr_block
{
- friend gr_nop_sptr gr_make_nop (size_t sizeof_stream_item);
+ friend GR_CORE_API gr_nop_sptr gr_make_nop (size_t sizeof_stream_item);
gr_nop (size_t sizeof_stream_item);
protected:
diff --git a/gnuradio-core/src/lib/general/gr_null_sink.h b/gnuradio-core/src/lib/general/gr_null_sink.h
index 6d00382a5..c6c4f36fb 100644
--- a/gnuradio-core/src/lib/general/gr_null_sink.h
+++ b/gnuradio-core/src/lib/general/gr_null_sink.h
@@ -23,23 +23,23 @@
#ifndef INCLUDED_GR_NULL_SINK_H
#define INCLUDED_GR_NULL_SINK_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
#include <stddef.h> // size_t
class gr_null_sink;
typedef boost::shared_ptr<gr_null_sink> gr_null_sink_sptr;
-gr_null_sink_sptr
+GR_CORE_API gr_null_sink_sptr
gr_make_null_sink (size_t sizeof_stream_item);
-
/*!
* \brief Bit bucket
* \ingroup sink_blk
*/
-class gr_null_sink : public gr_sync_block
+class GR_CORE_API gr_null_sink : public gr_sync_block
{
- friend gr_null_sink_sptr gr_make_null_sink (size_t sizeof_stream_item);
+ friend GR_CORE_API gr_null_sink_sptr gr_make_null_sink (size_t sizeof_stream_item);
gr_null_sink (size_t sizeof_stream_item);
public:
diff --git a/gnuradio-core/src/lib/general/gr_null_source.h b/gnuradio-core/src/lib/general/gr_null_source.h
index b1a46a195..33687fbaa 100644
--- a/gnuradio-core/src/lib/general/gr_null_source.h
+++ b/gnuradio-core/src/lib/general/gr_null_source.h
@@ -23,21 +23,22 @@
#ifndef INCLUDED_GR_NULL_SOURCE_H
#define INCLUDED_GR_NULL_SOURCE_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class gr_null_source;
typedef boost::shared_ptr<gr_null_source> gr_null_source_sptr;
-gr_null_source_sptr
+GR_CORE_API gr_null_source_sptr
gr_make_null_source (size_t sizeof_stream_item);
/*!
* \brief A source of zeros.
* \ingroup source_blk
*/
-class gr_null_source : public gr_sync_block
+class GR_CORE_API gr_null_source : public gr_sync_block
{
- friend gr_null_source_sptr gr_make_null_source (size_t sizeof_stream_item);
+ friend GR_CORE_API gr_null_source_sptr gr_make_null_source (size_t sizeof_stream_item);
gr_null_source (size_t sizeof_stream_item);
diff --git a/gnuradio-core/src/lib/general/gr_ofdm_bpsk_demapper.h b/gnuradio-core/src/lib/general/gr_ofdm_bpsk_demapper.h
index 12ae6a8f6..6d532d50f 100644
--- a/gnuradio-core/src/lib/general/gr_ofdm_bpsk_demapper.h
+++ b/gnuradio-core/src/lib/general/gr_ofdm_bpsk_demapper.h
@@ -24,13 +24,14 @@
#define INCLUDED_GR_OFDM_BPSK_DEMAPPER_H
+#include <gr_core_api.h>
#include <gr_block.h>
#include <vector>
class gr_ofdm_bpsk_demapper;
typedef boost::shared_ptr<gr_ofdm_bpsk_demapper> gr_ofdm_bpsk_demapper_sptr;
-gr_ofdm_bpsk_demapper_sptr
+GR_CORE_API gr_ofdm_bpsk_demapper_sptr
gr_make_ofdm_bpsk_demapper (unsigned int occupied_carriers);
@@ -39,9 +40,9 @@ gr_make_ofdm_bpsk_demapper (unsigned int occupied_carriers);
* and demodulate to a stream of bits. Simple BPSK version.
* \ingroup ofdm_blk
*/
-class gr_ofdm_bpsk_demapper : public gr_block
+class GR_CORE_API gr_ofdm_bpsk_demapper : public gr_block
{
- friend gr_ofdm_bpsk_demapper_sptr
+ friend GR_CORE_API gr_ofdm_bpsk_demapper_sptr
gr_make_ofdm_bpsk_demapper (unsigned int occupied_carriers);
protected:
diff --git a/gnuradio-core/src/lib/general/gr_ofdm_frame_sink2.h b/gnuradio-core/src/lib/general/gr_ofdm_frame_sink2.h
index de8c6a37e..9595303b1 100644
--- a/gnuradio-core/src/lib/general/gr_ofdm_frame_sink2.h
+++ b/gnuradio-core/src/lib/general/gr_ofdm_frame_sink2.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_GR_OFDM_FRAME_SINK2_H
#define INCLUDED_GR_OFDM_FRAME_SINK2_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
#include <gr_msg_queue.h>
#include <gr_constellation.h>
@@ -30,7 +31,7 @@
class gr_ofdm_frame_sink2;
typedef boost::shared_ptr<gr_ofdm_frame_sink2> gr_ofdm_frame_sink2_sptr;
-gr_ofdm_frame_sink2_sptr
+GR_CORE_API gr_ofdm_frame_sink2_sptr
gr_make_ofdm_frame_sink2 (gr_constellation_sptr constell,
gr_msg_queue_sptr target_queue, unsigned int occupied_tones,
float phase_gain=0.25, float freq_gain=0.25*0.25/4.0);
@@ -45,9 +46,9 @@ gr_make_ofdm_frame_sink2 (gr_constellation_sptr constell,
* we want to be able to pass in a reference to an object to do the demapping and slicing
* for a given modulation type.
*/
-class gr_ofdm_frame_sink2 : public gr_sync_block
+class GR_CORE_API gr_ofdm_frame_sink2 : public gr_sync_block
{
- friend gr_ofdm_frame_sink2_sptr
+ friend GR_CORE_API gr_ofdm_frame_sink2_sptr
gr_make_ofdm_frame_sink2 (gr_constellation_sptr constell,
gr_msg_queue_sptr target_queue, unsigned int occupied_tones,
float phase_gain, float freq_gain);
diff --git a/gnuradio-core/src/lib/general/gr_pa_2x2_phase_combiner.h b/gnuradio-core/src/lib/general/gr_pa_2x2_phase_combiner.h
index ec163911a..abb23e002 100644
--- a/gnuradio-core/src/lib/general/gr_pa_2x2_phase_combiner.h
+++ b/gnuradio-core/src/lib/general/gr_pa_2x2_phase_combiner.h
@@ -22,12 +22,13 @@
#ifndef INCLUDED_GR_PA_2X2_PHASE_COMBINER_H
#define INCLUDED_GR_PA_2X2_PHASE_COMBINER_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class gr_pa_2x2_phase_combiner;
typedef boost::shared_ptr<gr_pa_2x2_phase_combiner> gr_pa_2x2_phase_combiner_sptr;
-gr_pa_2x2_phase_combiner_sptr gr_make_pa_2x2_phase_combiner ();
+GR_CORE_API gr_pa_2x2_phase_combiner_sptr gr_make_pa_2x2_phase_combiner ();
/*!
* \brief pa_2x2 phase combiner
@@ -40,7 +41,7 @@ gr_pa_2x2_phase_combiner_sptr gr_make_pa_2x2_phase_combiner ();
*
* dx and dy are lambda/2.
*/
-class gr_pa_2x2_phase_combiner : public gr_sync_block
+class GR_CORE_API gr_pa_2x2_phase_combiner : public gr_sync_block
{
static const int NM = 4;
@@ -48,7 +49,7 @@ class gr_pa_2x2_phase_combiner : public gr_sync_block
gr_complex d_phase[NM];
gr_pa_2x2_phase_combiner ();
- friend gr_pa_2x2_phase_combiner_sptr gr_make_pa_2x2_phase_combiner();
+ friend GR_CORE_API gr_pa_2x2_phase_combiner_sptr gr_make_pa_2x2_phase_combiner();
public:
float theta() const { return d_theta; }
diff --git a/gnuradio-core/src/lib/general/gr_packet_sink.h b/gnuradio-core/src/lib/general/gr_packet_sink.h
index 73c5d6c52..89a95f3e3 100644
--- a/gnuradio-core/src/lib/general/gr_packet_sink.h
+++ b/gnuradio-core/src/lib/general/gr_packet_sink.h
@@ -23,13 +23,14 @@
#ifndef INCLUDED_GR_PACKET_SINK_H
#define INCLUDED_GR_PACKET_SINK_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
#include <gr_msg_queue.h>
class gr_packet_sink;
typedef boost::shared_ptr<gr_packet_sink> gr_packet_sink_sptr;
-gr_packet_sink_sptr
+GR_CORE_API gr_packet_sink_sptr
gr_make_packet_sink (const std::vector<unsigned char>& sync_vector,
gr_msg_queue_sptr target_queue,
int threshold = -1 // -1 -> use default
@@ -38,9 +39,9 @@ gr_make_packet_sink (const std::vector<unsigned char>& sync_vector,
* \brief process received bits looking for packet sync, header, and process bits into packet
* \ingroup sink_blk
*/
-class gr_packet_sink : public gr_sync_block
+class GR_CORE_API gr_packet_sink : public gr_sync_block
{
- friend gr_packet_sink_sptr
+ friend GR_CORE_API gr_packet_sink_sptr
gr_make_packet_sink (const std::vector<unsigned char>& sync_vector,
gr_msg_queue_sptr target_queue,
int threshold);
diff --git a/gnuradio-core/src/lib/general/gr_peak_detector2_fb.h b/gnuradio-core/src/lib/general/gr_peak_detector2_fb.h
index 58a006246..5bb97fc5d 100644
--- a/gnuradio-core/src/lib/general/gr_peak_detector2_fb.h
+++ b/gnuradio-core/src/lib/general/gr_peak_detector2_fb.h
@@ -23,12 +23,13 @@
#ifndef INCLUDED_gr_peak_detector2_FB_H
#define INCLUDED_gr_peak_detector2_FB_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class gr_peak_detector2_fb;
typedef boost::shared_ptr<gr_peak_detector2_fb> gr_peak_detector2_fb_sptr;
-gr_peak_detector2_fb_sptr gr_make_peak_detector2_fb (float threshold_factor_rise = 7,
+GR_CORE_API gr_peak_detector2_fb_sptr gr_make_peak_detector2_fb (float threshold_factor_rise = 7,
int look_ahead = 1000,
float alpha = 0.001);
@@ -49,9 +50,9 @@ gr_peak_detector2_fb_sptr gr_make_peak_detector2_fb (float threshold_factor_rise
* \param alpha The gain value of a single-pole moving average filter
*/
-class gr_peak_detector2_fb : public gr_sync_block
+class GR_CORE_API gr_peak_detector2_fb : public gr_sync_block
{
- friend gr_peak_detector2_fb_sptr
+ friend GR_CORE_API gr_peak_detector2_fb_sptr
gr_make_peak_detector2_fb (float threshold_factor_rise, int look_ahead, float alpha);
gr_peak_detector2_fb (float threshold_factor_rise, int look_ahead, float alpha);
diff --git a/gnuradio-core/src/lib/general/gr_phase_modulator_fc.h b/gnuradio-core/src/lib/general/gr_phase_modulator_fc.h
index 50157534b..dd6e300a8 100644
--- a/gnuradio-core/src/lib/general/gr_phase_modulator_fc.h
+++ b/gnuradio-core/src/lib/general/gr_phase_modulator_fc.h
@@ -23,24 +23,25 @@
#ifndef INCLUDED_GR_PHASE_MODULATOR_FC_H
#define INCLUDED_GR_PHASE_MODULATOR_FC_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class gr_phase_modulator_fc;
typedef boost::shared_ptr<gr_phase_modulator_fc> gr_phase_modulator_fc_sptr;
-gr_phase_modulator_fc_sptr gr_make_phase_modulator_fc (double sensitivity);
+GR_CORE_API gr_phase_modulator_fc_sptr gr_make_phase_modulator_fc (double sensitivity);
/*!
* \brief Phase modulator block
* \ingroup modulation_blk
* output=complex(cos(in*sensitivity),sin(in*sensitivity))
*/
-class gr_phase_modulator_fc : public gr_sync_block
+class GR_CORE_API gr_phase_modulator_fc : public gr_sync_block
{
double d_sensitivity;
double d_phase;
- friend gr_phase_modulator_fc_sptr
+ friend GR_CORE_API gr_phase_modulator_fc_sptr
gr_make_phase_modulator_fc (double sensitivity);
gr_phase_modulator_fc (double sensitivity);
diff --git a/gnuradio-core/src/lib/general/gr_pll_carriertracking_cc.h b/gnuradio-core/src/lib/general/gr_pll_carriertracking_cc.h
index bcdf543a4..db74bb101 100644
--- a/gnuradio-core/src/lib/general/gr_pll_carriertracking_cc.h
+++ b/gnuradio-core/src/lib/general/gr_pll_carriertracking_cc.h
@@ -23,13 +23,14 @@
#ifndef INCLUDED_GR_PLL_CARRIERTRACKING_CC_H
#define INCLUDED_GR_PLL_CARRIERTRACKING_CC_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
#include <gri_control_loop.h>
class gr_pll_carriertracking_cc;
typedef boost::shared_ptr<gr_pll_carriertracking_cc> gr_pll_carriertracking_cc_sptr;
-gr_pll_carriertracking_cc_sptr gr_make_pll_carriertracking_cc (float loop_bw,
+GR_CORE_API gr_pll_carriertracking_cc_sptr gr_make_pll_carriertracking_cc (float loop_bw,
float max_freq,
float min_freq);
/*!
@@ -48,9 +49,9 @@ gr_pll_carriertracking_cc_sptr gr_make_pll_carriertracking_cc (float loop_bw,
* \sa gr_pll_freqdet_cf, gr_pll_carriertracking_cc
*/
-class gr_pll_carriertracking_cc : public gr_sync_block, public gri_control_loop
+class GR_CORE_API gr_pll_carriertracking_cc : public gr_sync_block, public gri_control_loop
{
- friend gr_pll_carriertracking_cc_sptr gr_make_pll_carriertracking_cc (float loop_bw,
+ friend GR_CORE_API gr_pll_carriertracking_cc_sptr gr_make_pll_carriertracking_cc (float loop_bw,
float max_freq,
float min_freq);
diff --git a/gnuradio-core/src/lib/general/gr_pll_freqdet_cf.h b/gnuradio-core/src/lib/general/gr_pll_freqdet_cf.h
index 0da9fc5c7..336f3fd31 100644
--- a/gnuradio-core/src/lib/general/gr_pll_freqdet_cf.h
+++ b/gnuradio-core/src/lib/general/gr_pll_freqdet_cf.h
@@ -23,13 +23,14 @@
#ifndef INCLUDED_GR_PLL_FREQDET_CF_H
#define INCLUDED_GR_PLL_FREQDET_CF_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
#include <gri_control_loop.h>
class gr_pll_freqdet_cf;
typedef boost::shared_ptr<gr_pll_freqdet_cf> gr_pll_freqdet_cf_sptr;
-gr_pll_freqdet_cf_sptr gr_make_pll_freqdet_cf (float loop_bw,
+GR_CORE_API gr_pll_freqdet_cf_sptr gr_make_pll_freqdet_cf (float loop_bw,
float max_freq,
float min_freq);
/*!
@@ -47,9 +48,9 @@ gr_pll_freqdet_cf_sptr gr_make_pll_freqdet_cf (float loop_bw,
* \sa gr_pll_refout_cc, gr_pll_carriertracking_cc
*/
-class gr_pll_freqdet_cf : public gr_sync_block, public gri_control_loop
+class GR_CORE_API gr_pll_freqdet_cf : public gr_sync_block, public gri_control_loop
{
- friend gr_pll_freqdet_cf_sptr gr_make_pll_freqdet_cf (float loop_bw,
+ friend GR_CORE_API gr_pll_freqdet_cf_sptr gr_make_pll_freqdet_cf (float loop_bw,
float max_freq,
float min_freq);
diff --git a/gnuradio-core/src/lib/general/gr_pll_refout_cc.h b/gnuradio-core/src/lib/general/gr_pll_refout_cc.h
index d3e45882b..dcbeb1efa 100644
--- a/gnuradio-core/src/lib/general/gr_pll_refout_cc.h
+++ b/gnuradio-core/src/lib/general/gr_pll_refout_cc.h
@@ -23,13 +23,14 @@
#ifndef INCLUDED_GR_PLL_REFOUT_CC_H
#define INCLUDED_GR_PLL_REFOUT_CC_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
#include <gri_control_loop.h>
class gr_pll_refout_cc;
typedef boost::shared_ptr<gr_pll_refout_cc> gr_pll_refout_cc_sptr;
-gr_pll_refout_cc_sptr gr_make_pll_refout_cc (float loop_bw,
+GR_CORE_API gr_pll_refout_cc_sptr gr_make_pll_refout_cc (float loop_bw,
float max_freq, float min_freq);
/*!
* \brief Implements a PLL which locks to the input frequency and outputs a carrier
@@ -46,9 +47,9 @@ gr_pll_refout_cc_sptr gr_make_pll_refout_cc (float loop_bw,
* around pi/200 -- 2pi/100.
* \sa gr_pll_freqdet_cf, gr_pll_carriertracking_cc
*/
-class gr_pll_refout_cc : public gr_sync_block, public gri_control_loop
+class GR_CORE_API gr_pll_refout_cc : public gr_sync_block, public gri_control_loop
{
- friend gr_pll_refout_cc_sptr gr_make_pll_refout_cc (float loop_bw,
+ friend GR_CORE_API gr_pll_refout_cc_sptr gr_make_pll_refout_cc (float loop_bw,
float max_freq, float min_freq);
gr_pll_refout_cc (float loop_bw, float max_freq, float min_freq);
diff --git a/gnuradio-core/src/lib/general/gr_pn_correlator_cc.h b/gnuradio-core/src/lib/general/gr_pn_correlator_cc.h
index 73bb7aa8c..75e2d1c7b 100644
--- a/gnuradio-core/src/lib/general/gr_pn_correlator_cc.h
+++ b/gnuradio-core/src/lib/general/gr_pn_correlator_cc.h
@@ -23,13 +23,14 @@
#ifndef INCLUDED_GR_PN_CORRELATOR_CC_H
#define INCLUDED_GR_PN_CORRELATOR_CC_H
+#include <gr_core_api.h>
#include <gr_sync_decimator.h>
#include <gri_glfsr.h>
class gr_pn_correlator_cc;
typedef boost::shared_ptr<gr_pn_correlator_cc> gr_pn_correlator_cc_sptr;
-gr_pn_correlator_cc_sptr
+GR_CORE_API gr_pn_correlator_cc_sptr
gr_make_pn_correlator_cc(int degree, int mask=0, int seed=1);
/*!
* \brief PN code sequential search correlator
@@ -39,9 +40,9 @@ gr_make_pn_correlator_cc(int degree, int mask=0, int seed=1);
* reference PN code, one sample per PN code period
*/
-class gr_pn_correlator_cc : public gr_sync_decimator
+class GR_CORE_API gr_pn_correlator_cc : public gr_sync_decimator
{
- friend gr_pn_correlator_cc_sptr gr_make_pn_correlator_cc(int degree, int mask, int seed);
+ friend GR_CORE_API gr_pn_correlator_cc_sptr gr_make_pn_correlator_cc(int degree, int mask, int seed);
int d_len;
float d_pn;
diff --git a/gnuradio-core/src/lib/general/gr_prefs.h b/gnuradio-core/src/lib/general/gr_prefs.h
index 4396d727c..8ceb5b465 100644
--- a/gnuradio-core/src/lib/general/gr_prefs.h
+++ b/gnuradio-core/src/lib/general/gr_prefs.h
@@ -22,6 +22,7 @@
#ifndef INCLUDED_GR_PREFS_H
#define INCLUDED_GR_PREFS_H
+#include <gr_core_api.h>
#include <string>
/*!
@@ -32,7 +33,7 @@
* via the magic of SWIG directors.
*/
-class gr_prefs
+class GR_CORE_API gr_prefs
{
public:
static gr_prefs *singleton();
diff --git a/gnuradio-core/src/lib/general/gr_probe_avg_mag_sqrd_c.h b/gnuradio-core/src/lib/general/gr_probe_avg_mag_sqrd_c.h
index ee8872010..e857686a8 100644
--- a/gnuradio-core/src/lib/general/gr_probe_avg_mag_sqrd_c.h
+++ b/gnuradio-core/src/lib/general/gr_probe_avg_mag_sqrd_c.h
@@ -22,13 +22,14 @@
#ifndef INCLUDED_GR_PROBE_AVG_MAG_SQRD_C_H
#define INCLUDED_GR_PROBE_AVG_MAG_SQRD_C_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
#include <gr_single_pole_iir.h>
class gr_probe_avg_mag_sqrd_c;
typedef boost::shared_ptr<gr_probe_avg_mag_sqrd_c> gr_probe_avg_mag_sqrd_c_sptr;
-gr_probe_avg_mag_sqrd_c_sptr
+GR_CORE_API gr_probe_avg_mag_sqrd_c_sptr
gr_make_probe_avg_mag_sqrd_c (double threshold_db, double alpha = 0.0001);
/*!
@@ -41,14 +42,14 @@ gr_make_probe_avg_mag_sqrd_c (double threshold_db, double alpha = 0.0001);
* The level and indication as to whether the level exceeds threshold
* can be retrieved with the level and unmuted accessors.
*/
-class gr_probe_avg_mag_sqrd_c : public gr_sync_block
+class GR_CORE_API gr_probe_avg_mag_sqrd_c : public gr_sync_block
{
double d_threshold;
gr_single_pole_iir<double,double,double> d_iir;
bool d_unmuted;
double d_level;
- friend gr_probe_avg_mag_sqrd_c_sptr
+ friend GR_CORE_API gr_probe_avg_mag_sqrd_c_sptr
gr_make_probe_avg_mag_sqrd_c (double threshold_db, double alpha);
gr_probe_avg_mag_sqrd_c (double threshold_db, double alpha);
diff --git a/gnuradio-core/src/lib/general/gr_probe_avg_mag_sqrd_cf.h b/gnuradio-core/src/lib/general/gr_probe_avg_mag_sqrd_cf.h
index 6c536ca5b..a85afcf3b 100644
--- a/gnuradio-core/src/lib/general/gr_probe_avg_mag_sqrd_cf.h
+++ b/gnuradio-core/src/lib/general/gr_probe_avg_mag_sqrd_cf.h
@@ -22,13 +22,14 @@
#ifndef INCLUDED_GR_PROBE_AVG_MAG_SQRD_CF_H
#define INCLUDED_GR_PROBE_AVG_MAG_SQRD_CF_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
#include <gr_single_pole_iir.h>
class gr_probe_avg_mag_sqrd_cf;
typedef boost::shared_ptr<gr_probe_avg_mag_sqrd_cf> gr_probe_avg_mag_sqrd_cf_sptr;
-gr_probe_avg_mag_sqrd_cf_sptr
+GR_CORE_API gr_probe_avg_mag_sqrd_cf_sptr
gr_make_probe_avg_mag_sqrd_cf (double threshold_db, double alpha = 0.0001);
/*!
@@ -43,14 +44,14 @@ gr_make_probe_avg_mag_sqrd_cf (double threshold_db, double alpha = 0.0001);
* can be retrieved with the level and unmuted accessors.
*
*/
-class gr_probe_avg_mag_sqrd_cf : public gr_sync_block
+class GR_CORE_API gr_probe_avg_mag_sqrd_cf : public gr_sync_block
{
double d_threshold;
gr_single_pole_iir<double,double,double> d_iir;
bool d_unmuted;
double d_level;
- friend gr_probe_avg_mag_sqrd_cf_sptr
+ friend GR_CORE_API gr_probe_avg_mag_sqrd_cf_sptr
gr_make_probe_avg_mag_sqrd_cf (double threshold_db, double alpha);
gr_probe_avg_mag_sqrd_cf (double threshold_db, double alpha);
diff --git a/gnuradio-core/src/lib/general/gr_probe_avg_mag_sqrd_f.h b/gnuradio-core/src/lib/general/gr_probe_avg_mag_sqrd_f.h
index b31e54f6b..4181ccf46 100644
--- a/gnuradio-core/src/lib/general/gr_probe_avg_mag_sqrd_f.h
+++ b/gnuradio-core/src/lib/general/gr_probe_avg_mag_sqrd_f.h
@@ -22,13 +22,14 @@
#ifndef INCLUDED_GR_PROBE_AVG_MAG_SQRD_F_H
#define INCLUDED_GR_PROBE_AVG_MAG_SQRD_F_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
#include <gr_single_pole_iir.h>
class gr_probe_avg_mag_sqrd_f;
typedef boost::shared_ptr<gr_probe_avg_mag_sqrd_f> gr_probe_avg_mag_sqrd_f_sptr;
-gr_probe_avg_mag_sqrd_f_sptr
+GR_CORE_API gr_probe_avg_mag_sqrd_f_sptr
gr_make_probe_avg_mag_sqrd_f (double threshold_db, double alpha = 0.0001);
/*!
@@ -41,14 +42,14 @@ gr_make_probe_avg_mag_sqrd_f (double threshold_db, double alpha = 0.0001);
* The level and indication as to whether the level exceeds threshold
* can be retrieved with the level and unmuted accessors.
*/
-class gr_probe_avg_mag_sqrd_f : public gr_sync_block
+class GR_CORE_API gr_probe_avg_mag_sqrd_f : public gr_sync_block
{
double d_threshold;
gr_single_pole_iir<double,double,double> d_iir;
bool d_unmuted;
double d_level;
- friend gr_probe_avg_mag_sqrd_f_sptr
+ friend GR_CORE_API gr_probe_avg_mag_sqrd_f_sptr
gr_make_probe_avg_mag_sqrd_f (double threshold_db, double alpha);
gr_probe_avg_mag_sqrd_f (double threshold_db, double alpha);
diff --git a/gnuradio-core/src/lib/general/gr_probe_density_b.h b/gnuradio-core/src/lib/general/gr_probe_density_b.h
index 92b98d193..0af30c665 100644
--- a/gnuradio-core/src/lib/general/gr_probe_density_b.h
+++ b/gnuradio-core/src/lib/general/gr_probe_density_b.h
@@ -20,13 +20,14 @@
#ifndef INCLUDED_GR_PROBE_DENSITY_B_H
#define INCLUDED_GR_PROBE_DENSITY_B_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class gr_probe_density_b;
typedef boost::shared_ptr<gr_probe_density_b> gr_probe_density_b_sptr;
-gr_probe_density_b_sptr gr_make_probe_density_b(double alpha);
+GR_CORE_API gr_probe_density_b_sptr gr_make_probe_density_b(double alpha);
/*!
* This block maintains a running average of the input stream and
@@ -40,10 +41,10 @@ gr_probe_density_b_sptr gr_make_probe_density_b(double alpha);
*
*/
-class gr_probe_density_b : public gr_sync_block
+class GR_CORE_API gr_probe_density_b : public gr_sync_block
{
private:
- friend gr_probe_density_b_sptr gr_make_probe_density_b(double alpha);
+ friend GR_CORE_API gr_probe_density_b_sptr gr_make_probe_density_b(double alpha);
double d_alpha;
double d_beta;
diff --git a/gnuradio-core/src/lib/general/gr_probe_mpsk_snr_c.h b/gnuradio-core/src/lib/general/gr_probe_mpsk_snr_c.h
index 279a4a5b8..870e46701 100644
--- a/gnuradio-core/src/lib/general/gr_probe_mpsk_snr_c.h
+++ b/gnuradio-core/src/lib/general/gr_probe_mpsk_snr_c.h
@@ -22,12 +22,13 @@
#ifndef INCLUDED_GR_PROBE_MPSK_SNR_C_H
#define INCLUDED_GR_PROBE_MPSK_SNR_C_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class gr_probe_mpsk_snr_c;
typedef boost::shared_ptr<gr_probe_mpsk_snr_c> gr_probe_mpsk_snr_c_sptr;
-gr_probe_mpsk_snr_c_sptr
+GR_CORE_API gr_probe_mpsk_snr_c_sptr
gr_make_probe_mpsk_snr_c(double alpha = 0.0001);
/*!
@@ -46,7 +47,7 @@ gr_make_probe_mpsk_snr_c(double alpha = 0.0001);
* This SNR estimator is inaccurate below about 7dB SNR.
*
*/
-class gr_probe_mpsk_snr_c : public gr_sync_block
+class GR_CORE_API gr_probe_mpsk_snr_c : public gr_sync_block
{
double d_alpha;
double d_beta;
@@ -54,7 +55,7 @@ class gr_probe_mpsk_snr_c : public gr_sync_block
double d_noise_variance;
// Factory function returning shared pointer of this class
- friend gr_probe_mpsk_snr_c_sptr
+ friend GR_CORE_API gr_probe_mpsk_snr_c_sptr
gr_make_probe_mpsk_snr_c(double alpha);
// Private constructor
diff --git a/gnuradio-core/src/lib/general/gr_probe_signal_f.h b/gnuradio-core/src/lib/general/gr_probe_signal_f.h
index 9605bb685..b99c76976 100644
--- a/gnuradio-core/src/lib/general/gr_probe_signal_f.h
+++ b/gnuradio-core/src/lib/general/gr_probe_signal_f.h
@@ -22,23 +22,24 @@
#ifndef INCLUDED_GR_PROBE_SIGNAL_F_H
#define INCLUDED_GR_PROBE_SIGNAL_F_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class gr_probe_signal_f;
typedef boost::shared_ptr<gr_probe_signal_f> gr_probe_signal_f_sptr;
-gr_probe_signal_f_sptr
+GR_CORE_API gr_probe_signal_f_sptr
gr_make_probe_signal_f ();
/*!
* \brief Sink that allows a sample to be grabbed from Python.
* \ingroup sink_blk
*/
-class gr_probe_signal_f : public gr_sync_block
+class GR_CORE_API gr_probe_signal_f : public gr_sync_block
{
float d_level;
- friend gr_probe_signal_f_sptr
+ friend GR_CORE_API gr_probe_signal_f_sptr
gr_make_probe_signal_f();
gr_probe_signal_f();
diff --git a/gnuradio-core/src/lib/general/gr_pwr_squelch_cc.h b/gnuradio-core/src/lib/general/gr_pwr_squelch_cc.h
index 9c519f383..2a008d92d 100644
--- a/gnuradio-core/src/lib/general/gr_pwr_squelch_cc.h
+++ b/gnuradio-core/src/lib/general/gr_pwr_squelch_cc.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_GR_PWR_SQUELCH_CC_H
#define INCLUDED_GR_PWR_SQUELCH_CC_H
+#include <gr_core_api.h>
#include <cmath>
#include <gr_squelch_base_cc.h>
#include <gr_single_pole_iir.h>
@@ -30,21 +31,21 @@
class gr_pwr_squelch_cc;
typedef boost::shared_ptr<gr_pwr_squelch_cc> gr_pwr_squelch_cc_sptr;
-gr_pwr_squelch_cc_sptr
+GR_CORE_API gr_pwr_squelch_cc_sptr
gr_make_pwr_squelch_cc(double db, double alpha = 0.0001, int ramp=0, bool gate=false);
/*!
* \brief gate or zero output when input power below threshold
* \ingroup level_blk
*/
-class gr_pwr_squelch_cc : public gr_squelch_base_cc
+class GR_CORE_API gr_pwr_squelch_cc : public gr_squelch_base_cc
{
private:
double d_threshold;
double d_pwr;
gr_single_pole_iir<double,double,double> d_iir;
- friend gr_pwr_squelch_cc_sptr gr_make_pwr_squelch_cc(double db, double alpha, int ramp, bool gate);
+ friend GR_CORE_API gr_pwr_squelch_cc_sptr gr_make_pwr_squelch_cc(double db, double alpha, int ramp, bool gate);
gr_pwr_squelch_cc(double db, double alpha, int ramp, bool gate);
protected:
diff --git a/gnuradio-core/src/lib/general/gr_pwr_squelch_ff.h b/gnuradio-core/src/lib/general/gr_pwr_squelch_ff.h
index 6952dbce2..27a7306b3 100644
--- a/gnuradio-core/src/lib/general/gr_pwr_squelch_ff.h
+++ b/gnuradio-core/src/lib/general/gr_pwr_squelch_ff.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_GR_PWR_SQUELCH_FF_H
#define INCLUDED_GR_PWR_SQUELCH_FF_H
+#include <gr_core_api.h>
#include <cmath>
#include <gr_squelch_base_ff.h>
#include <gr_single_pole_iir.h>
@@ -30,21 +31,21 @@
class gr_pwr_squelch_ff;
typedef boost::shared_ptr<gr_pwr_squelch_ff> gr_pwr_squelch_ff_sptr;
-gr_pwr_squelch_ff_sptr
+GR_CORE_API gr_pwr_squelch_ff_sptr
gr_make_pwr_squelch_ff(double db, double alpha = 0.0001, int ramp=0, bool gate=false);
/*!
* \brief gate or zero output when input power below threshold
* \ingroup level_blk
*/
-class gr_pwr_squelch_ff : public gr_squelch_base_ff
+class GR_CORE_API gr_pwr_squelch_ff : public gr_squelch_base_ff
{
private:
double d_threshold;
double d_pwr;
gr_single_pole_iir<double,double,double> d_iir;
- friend gr_pwr_squelch_ff_sptr gr_make_pwr_squelch_ff(double db, double alpha, int ramp, bool gate);
+ friend GR_CORE_API gr_pwr_squelch_ff_sptr gr_make_pwr_squelch_ff(double db, double alpha, int ramp, bool gate);
gr_pwr_squelch_ff(double db, double alpha, int ramp, bool gate);
protected:
diff --git a/gnuradio-core/src/lib/general/gr_quadrature_demod_cf.h b/gnuradio-core/src/lib/general/gr_quadrature_demod_cf.h
index df6de93d5..755f2839a 100644
--- a/gnuradio-core/src/lib/general/gr_quadrature_demod_cf.h
+++ b/gnuradio-core/src/lib/general/gr_quadrature_demod_cf.h
@@ -23,11 +23,12 @@
#ifndef INCLUDED_GR_QUADRATURE_DEMOD_CF_H
#define INCLUDED_GR_QUADRATURE_DEMOD_CF_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class gr_quadrature_demod_cf;
typedef boost::shared_ptr<gr_quadrature_demod_cf> gr_quadrature_demod_cf_sptr;
-gr_quadrature_demod_cf_sptr gr_make_quadrature_demod_cf (float gain);
+GR_CORE_API gr_quadrature_demod_cf_sptr gr_make_quadrature_demod_cf (float gain);
/*!
* \brief quadrature demodulator: complex in, float out
@@ -36,9 +37,9 @@ gr_quadrature_demod_cf_sptr gr_make_quadrature_demod_cf (float gain);
* This can be used to demod FM, FSK, GMSK, etc.
* The input is complex baseband.
*/
-class gr_quadrature_demod_cf : public gr_sync_block
+class GR_CORE_API gr_quadrature_demod_cf : public gr_sync_block
{
- friend gr_quadrature_demod_cf_sptr gr_make_quadrature_demod_cf (float gain);
+ friend GR_CORE_API gr_quadrature_demod_cf_sptr gr_make_quadrature_demod_cf (float gain);
gr_quadrature_demod_cf (float gain);
float d_gain;
diff --git a/gnuradio-core/src/lib/general/gr_rail_ff.h b/gnuradio-core/src/lib/general/gr_rail_ff.h
index d9e19a964..225bdf36e 100644
--- a/gnuradio-core/src/lib/general/gr_rail_ff.h
+++ b/gnuradio-core/src/lib/general/gr_rail_ff.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_GR_RAIL_FF_H_
# define INCLUDED_GR_RAIL_FF_H_
+#include <gr_core_api.h>
#include <gr_sync_block.h>
/*!
@@ -33,11 +34,11 @@
class gr_rail_ff;
typedef boost::shared_ptr<gr_rail_ff> gr_rail_ff_sptr;
-gr_rail_ff_sptr gr_make_rail_ff(float lo, float hi);
+GR_CORE_API gr_rail_ff_sptr gr_make_rail_ff(float lo, float hi);
-class gr_rail_ff : public gr_sync_block
+class GR_CORE_API gr_rail_ff : public gr_sync_block
{
- friend gr_rail_ff_sptr gr_make_rail_ff (float lo, float hi);
+ friend GR_CORE_API gr_rail_ff_sptr gr_make_rail_ff (float lo, float hi);
float d_lo, d_hi; // the constant
gr_rail_ff(float lo, float hi);
diff --git a/gnuradio-core/src/lib/general/gr_random.h b/gnuradio-core/src/lib/general/gr_random.h
index e5002fd33..13dbbfb04 100644
--- a/gnuradio-core/src/lib/general/gr_random.h
+++ b/gnuradio-core/src/lib/general/gr_random.h
@@ -23,13 +23,14 @@
#ifndef INCLUDED_GR_RANDOM_H
#define INCLUDED_GR_RANDOM_H
+#include <gr_core_api.h>
#include <gr_complex.h>
/*!
* \brief pseudo random number generator
* \ingroup math_blk
*/
-class gr_random {
+class GR_CORE_API gr_random {
protected:
static const int NTAB = 32;
long d_seed;
diff --git a/gnuradio-core/src/lib/general/gr_regenerate_bb.h b/gnuradio-core/src/lib/general/gr_regenerate_bb.h
index db511b228..67cfedac7 100644
--- a/gnuradio-core/src/lib/general/gr_regenerate_bb.h
+++ b/gnuradio-core/src/lib/general/gr_regenerate_bb.h
@@ -23,12 +23,13 @@
#ifndef INCLUDED_GR_REGENERATE_BB_H
#define INCLUDED_GR_REGENERATE_BB_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class gr_regenerate_bb;
typedef boost::shared_ptr<gr_regenerate_bb> gr_regenerate_bb_sptr;
-gr_regenerate_bb_sptr gr_make_regenerate_bb (int period, unsigned int max_regen=500);
+GR_CORE_API gr_regenerate_bb_sptr gr_make_regenerate_bb (int period, unsigned int max_regen=500);
/*!
* \brief Detect the peak of a signal and repeat every period samples
@@ -40,7 +41,7 @@ gr_regenerate_bb_sptr gr_make_regenerate_bb (int period, unsigned int max_regen=
*
* Note that if max_regen=(-1)/ULONG_MAX then the regeneration will run forever.
*/
-class gr_regenerate_bb : public gr_sync_block
+class GR_CORE_API gr_regenerate_bb : public gr_sync_block
{
/*!
* \brief Make a regenerate block
@@ -48,7 +49,7 @@ class gr_regenerate_bb : public gr_sync_block
* \param max_regen The maximum number of regenerations to perform; if set to
* ULONG_MAX, it will regenerate continuously.
*/
- friend gr_regenerate_bb_sptr gr_make_regenerate_bb (int period, unsigned int max_regen);
+ friend GR_CORE_API gr_regenerate_bb_sptr gr_make_regenerate_bb (int period, unsigned int max_regen);
gr_regenerate_bb (int period, unsigned int max_regen);
diff --git a/gnuradio-core/src/lib/general/gr_remez.h b/gnuradio-core/src/lib/general/gr_remez.h
index 85e1516a5..f7b8a72a3 100644
--- a/gnuradio-core/src/lib/general/gr_remez.h
+++ b/gnuradio-core/src/lib/general/gr_remez.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_GR_REMEZ_H
#define INCLUDED_GR_REMEZ_H
+#include <gr_core_api.h>
#include <gr_types.h>
#include <string>
#include <stdexcept>
@@ -51,7 +52,7 @@
* \throws std::runtime_error if args are invalid or calculation fails to converge.
*/
-std::vector<double>
+GR_CORE_API std::vector<double>
gr_remez (int order,
const std::vector<double> &bands,
const std::vector<double> &ampl,
diff --git a/gnuradio-core/src/lib/general/gr_repeat.h b/gnuradio-core/src/lib/general/gr_repeat.h
index f323fc375..b90f2f51d 100644
--- a/gnuradio-core/src/lib/general/gr_repeat.h
+++ b/gnuradio-core/src/lib/general/gr_repeat.h
@@ -22,23 +22,24 @@
#ifndef INCLUDED_GR_REPEAT_H
#define INCLUDED_GR_REPEAT_H
+#include <gr_core_api.h>
#include <gr_sync_interpolator.h>
class gr_repeat;
typedef boost::shared_ptr<gr_repeat> gr_repeat_sptr;
-gr_repeat_sptr gr_make_repeat(size_t itemsize, int interp);
+GR_CORE_API gr_repeat_sptr gr_make_repeat(size_t itemsize, int interp);
/*!
* \brief Repeat a sample 'interp' times in output stream
* \ingroup misc_blk
*/
-class gr_repeat : public gr_sync_interpolator
+class GR_CORE_API gr_repeat : public gr_sync_interpolator
{
private:
- friend gr_repeat_sptr gr_make_repeat(size_t itemsize, int interp);
+ friend GR_CORE_API gr_repeat_sptr gr_make_repeat(size_t itemsize, int interp);
gr_repeat(size_t itemsize, int interp);
diff --git a/gnuradio-core/src/lib/general/gr_reverse.h b/gnuradio-core/src/lib/general/gr_reverse.h
index d79d34e91..43d84fda7 100644
--- a/gnuradio-core/src/lib/general/gr_reverse.h
+++ b/gnuradio-core/src/lib/general/gr_reverse.h
@@ -22,6 +22,7 @@
#ifndef INCLUDED_GR_REVERSE_H
#define INCLUDED_GR_REVERSE_H
+#include <gr_core_api.h>
#include <vector>
#include <gr_complex.h>
diff --git a/gnuradio-core/src/lib/general/gr_rms_cf.h b/gnuradio-core/src/lib/general/gr_rms_cf.h
index 86c4bdbac..f1bd9802c 100644
--- a/gnuradio-core/src/lib/general/gr_rms_cf.h
+++ b/gnuradio-core/src/lib/general/gr_rms_cf.h
@@ -22,25 +22,26 @@
#ifndef INCLUDED_GR_RMS_CF_H
#define INCLUDED_GR_RMS_CF_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
#include <gr_single_pole_iir.h>
class gr_rms_cf;
typedef boost::shared_ptr<gr_rms_cf> gr_rms_cf_sptr;
-gr_rms_cf_sptr
+GR_CORE_API gr_rms_cf_sptr
gr_make_rms_cf (double alpha = 0.0001);
/*!
* \brief RMS average power
* \ingroup math_blk
*/
-class gr_rms_cf : public gr_sync_block
+class GR_CORE_API gr_rms_cf : public gr_sync_block
{
gr_single_pole_iir<double,double,double> d_iir;
bool d_unmuted;
- friend gr_rms_cf_sptr
+ friend GR_CORE_API gr_rms_cf_sptr
gr_make_rms_cf (double alpha);
gr_rms_cf (double alpha);
diff --git a/gnuradio-core/src/lib/general/gr_rms_ff.h b/gnuradio-core/src/lib/general/gr_rms_ff.h
index ed1635eb1..0bbd53b70 100644
--- a/gnuradio-core/src/lib/general/gr_rms_ff.h
+++ b/gnuradio-core/src/lib/general/gr_rms_ff.h
@@ -22,25 +22,26 @@
#ifndef INCLUDED_GR_RMS_FF_H
#define INCLUDED_GR_RMS_FF_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
#include <gr_single_pole_iir.h>
class gr_rms_ff;
typedef boost::shared_ptr<gr_rms_ff> gr_rms_ff_sptr;
-gr_rms_ff_sptr
+GR_CORE_API gr_rms_ff_sptr
gr_make_rms_ff (double alpha = 0.0001);
/*!
* \brief RMS average power
* \ingroup math_blk
*/
-class gr_rms_ff : public gr_sync_block
+class GR_CORE_API gr_rms_ff : public gr_sync_block
{
gr_single_pole_iir<double,double,double> d_iir;
bool d_unmuted;
- friend gr_rms_ff_sptr
+ friend GR_CORE_API gr_rms_ff_sptr
gr_make_rms_ff (double alpha);
gr_rms_ff (double alpha);
diff --git a/gnuradio-core/src/lib/general/gr_scrambler_bb.h b/gnuradio-core/src/lib/general/gr_scrambler_bb.h
index 7efe8b598..79905933d 100644
--- a/gnuradio-core/src/lib/general/gr_scrambler_bb.h
+++ b/gnuradio-core/src/lib/general/gr_scrambler_bb.h
@@ -22,13 +22,14 @@
#ifndef INCLUDED_GR_SCRAMBLER_BB_H
#define INCLUDED_GR_SCRAMBLER_BB_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
#include "gri_lfsr.h"
class gr_scrambler_bb;
typedef boost::shared_ptr<gr_scrambler_bb> gr_scrambler_bb_sptr;
-gr_scrambler_bb_sptr gr_make_scrambler_bb(int mask, int seed, int len);
+GR_CORE_API gr_scrambler_bb_sptr gr_make_scrambler_bb(int mask, int seed, int len);
/*!
* Scramble an input stream using an LFSR. This block works on the LSB only
@@ -42,9 +43,9 @@ gr_scrambler_bb_sptr gr_make_scrambler_bb(int mask, int seed, int len);
* \ingroup coding_blk
*/
-class gr_scrambler_bb : public gr_sync_block
+class GR_CORE_API gr_scrambler_bb : public gr_sync_block
{
- friend gr_scrambler_bb_sptr gr_make_scrambler_bb(int mask, int seed, int len);
+ friend GR_CORE_API gr_scrambler_bb_sptr gr_make_scrambler_bb(int mask, int seed, int len);
gri_lfsr d_lfsr;
diff --git a/gnuradio-core/src/lib/general/gr_short_to_float.h b/gnuradio-core/src/lib/general/gr_short_to_float.h
index ccb19d9f2..b40c966ea 100644
--- a/gnuradio-core/src/lib/general/gr_short_to_float.h
+++ b/gnuradio-core/src/lib/general/gr_short_to_float.h
@@ -23,12 +23,13 @@
#ifndef INCLUDED_GR_SHORT_TO_FLOAT_H
#define INCLUDED_GR_SHORT_TO_FLOAT_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class gr_short_to_float;
typedef boost::shared_ptr<gr_short_to_float> gr_short_to_float_sptr;
-gr_short_to_float_sptr
+GR_CORE_API gr_short_to_float_sptr
gr_make_short_to_float ();
/*!
@@ -36,9 +37,9 @@ gr_make_short_to_float ();
* \ingroup converter_blk
*/
-class gr_short_to_float : public gr_sync_block
+class GR_CORE_API gr_short_to_float : public gr_sync_block
{
- friend gr_short_to_float_sptr gr_make_short_to_float ();
+ friend GR_CORE_API gr_short_to_float_sptr gr_make_short_to_float ();
gr_short_to_float ();
public:
diff --git a/gnuradio-core/src/lib/general/gr_simple_correlator.cc b/gnuradio-core/src/lib/general/gr_simple_correlator.cc
index 01c007122..bdfa73ef3 100644
--- a/gnuradio-core/src/lib/general/gr_simple_correlator.cc
+++ b/gnuradio-core/src/lib/general/gr_simple_correlator.cc
@@ -50,6 +50,7 @@ gr_simple_correlator::gr_simple_correlator (int payload_bytesize)
d_state (ST_LOOKING), d_osi (0),
d_bblen ((payload_bytesize + GRSF_PAYLOAD_OVERHEAD) * GRSF_BITS_PER_BYTE),
d_bitbuf (new unsigned char [d_bblen]),
+ d_pktbuf (new unsigned char [d_bblen/GRSF_BITS_PER_BYTE]),
d_bbi (0)
{
d_avbi = 0;
@@ -71,6 +72,7 @@ gr_simple_correlator::~gr_simple_correlator ()
fclose(d_debug_fp);
#endif
delete [] d_bitbuf;
+ delete [] d_pktbuf;
}
@@ -184,10 +186,9 @@ gr_simple_correlator::general_work (int noutput_items,
d_bbi++;
if (d_bbi >= d_bblen){
// printf ("got whole packet\n");
- unsigned char pktbuf[d_bblen/GRSF_BITS_PER_BYTE];
- packit (pktbuf, d_bitbuf, d_bbi);
- printf ("seqno %3d\n", pktbuf[0]);
- memcpy (out, &pktbuf[GRSF_PAYLOAD_OVERHEAD], d_payload_bytesize);
+ packit (d_pktbuf, d_bitbuf, d_bbi);
+ printf ("seqno %3d\n", d_pktbuf[0]);
+ memcpy (out, &d_pktbuf[GRSF_PAYLOAD_OVERHEAD], d_payload_bytesize);
enter_looking ();
consume_each (n + 1);
return d_payload_bytesize;
diff --git a/gnuradio-core/src/lib/general/gr_simple_correlator.h b/gnuradio-core/src/lib/general/gr_simple_correlator.h
index b21d38a04..4c5f060cd 100644
--- a/gnuradio-core/src/lib/general/gr_simple_correlator.h
+++ b/gnuradio-core/src/lib/general/gr_simple_correlator.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_GR_SIMPLE_CORRELATOR_H
#define INCLUDED_GR_SIMPLE_CORRELATOR_H
+#include <gr_core_api.h>
#include <gr_block.h>
#include <assert.h>
@@ -31,13 +32,13 @@
class gr_simple_correlator;
typedef boost::shared_ptr<gr_simple_correlator> gr_simple_correlator_sptr;
-gr_simple_correlator_sptr gr_make_simple_correlator (int payload_bytesize);
+GR_CORE_API gr_simple_correlator_sptr gr_make_simple_correlator (int payload_bytesize);
/*!
* \brief inverse of gr_simple_framer (more or less)
* \ingroup sync_blk
*/
-class gr_simple_correlator : public gr_block
+class GR_CORE_API gr_simple_correlator : public gr_block
{
static const int OVERSAMPLE = 8;
enum state_t { ST_LOOKING, ST_UNDER_THRESHOLD, ST_LOCKED };
@@ -50,6 +51,7 @@ class gr_simple_correlator : public gr_block
unsigned long long int d_shift_reg[OVERSAMPLE];
int d_bblen; // length of bitbuf
unsigned char *d_bitbuf; // demodulated bits
+ unsigned char *d_pktbuf; // temp packet buf
int d_bbi; // bitbuf index
static const int AVG_PERIOD = 512; // must be power of 2 (for freq offset correction)
@@ -62,7 +64,7 @@ class gr_simple_correlator : public gr_block
FILE *d_debug_fp; // binary log file
#endif
- friend gr_simple_correlator_sptr gr_make_simple_correlator (int payload_bytesize);
+ friend GR_CORE_API gr_simple_correlator_sptr gr_make_simple_correlator (int payload_bytesize);
gr_simple_correlator (int payload_bytesize);
diff --git a/gnuradio-core/src/lib/general/gr_simple_framer.h b/gnuradio-core/src/lib/general/gr_simple_framer.h
index d930da33b..15f392e4a 100644
--- a/gnuradio-core/src/lib/general/gr_simple_framer.h
+++ b/gnuradio-core/src/lib/general/gr_simple_framer.h
@@ -23,25 +23,26 @@
#ifndef INCLUDED_GR_SIMPLE_FRAMER_H
#define INCLUDED_GR_SIMPLE_FRAMER_H
+#include <gr_core_api.h>
#include <gr_block.h>
class gr_simple_framer;
typedef boost::shared_ptr<gr_simple_framer> gr_simple_framer_sptr;
-gr_simple_framer_sptr gr_make_simple_framer (int payload_bytesize);
+GR_CORE_API gr_simple_framer_sptr gr_make_simple_framer (int payload_bytesize);
/*!
* \brief add sync field, seq number and command field to payload
* \ingroup sync_blk
*/
-class gr_simple_framer : public gr_block
+class GR_CORE_API gr_simple_framer : public gr_block
{
int d_seqno;
int d_payload_bytesize;
int d_input_block_size; // bytes
int d_output_block_size; // bytes
- friend gr_simple_framer_sptr gr_make_simple_framer (int payload_bytesize);
+ friend GR_CORE_API gr_simple_framer_sptr gr_make_simple_framer (int payload_bytesize);
gr_simple_framer (int payload_bytesize);
public:
diff --git a/gnuradio-core/src/lib/general/gr_simple_squelch_cc.h b/gnuradio-core/src/lib/general/gr_simple_squelch_cc.h
index 30744f6fb..590b86de8 100644
--- a/gnuradio-core/src/lib/general/gr_simple_squelch_cc.h
+++ b/gnuradio-core/src/lib/general/gr_simple_squelch_cc.h
@@ -22,26 +22,27 @@
#ifndef INCLUDED_GR_SIMPLE_SQUELCH_CC_H
#define INCLUDED_GR_SIMPLE_SQUELCH_CC_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
#include <gr_single_pole_iir.h>
class gr_simple_squelch_cc;
typedef boost::shared_ptr<gr_simple_squelch_cc> gr_simple_squelch_cc_sptr;
-gr_simple_squelch_cc_sptr
+GR_CORE_API gr_simple_squelch_cc_sptr
gr_make_simple_squelch_cc (double threshold_db, double alpha = 0.0001);
/*!
* \brief simple squelch block based on average signal power and threshold in dB.
* \ingroup level_blk
*/
-class gr_simple_squelch_cc : public gr_sync_block
+class GR_CORE_API gr_simple_squelch_cc : public gr_sync_block
{
double d_threshold;
gr_single_pole_iir<double,double,double> d_iir;
bool d_unmuted;
- friend gr_simple_squelch_cc_sptr
+ friend GR_CORE_API gr_simple_squelch_cc_sptr
gr_make_simple_squelch_cc (double threshold_db, double alpha);
gr_simple_squelch_cc (double threshold_db, double alpha);
diff --git a/gnuradio-core/src/lib/general/gr_skiphead.h b/gnuradio-core/src/lib/general/gr_skiphead.h
index 933c126e3..2beaaeab0 100644
--- a/gnuradio-core/src/lib/general/gr_skiphead.h
+++ b/gnuradio-core/src/lib/general/gr_skiphead.h
@@ -23,12 +23,16 @@
#ifndef INCLUDED_GR_SKIPHEAD_H
#define INCLUDED_GR_SKIPHEAD_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
#include <stddef.h> // size_t
class gr_skiphead;
typedef boost::shared_ptr<gr_skiphead> gr_skiphead_sptr;
+GR_CORE_API gr_skiphead_sptr
+gr_make_skiphead (size_t itemsize, uint64_t nitems_to_skip);
+
/*!
* \brief skips the first N items, from then on copies items to the output
@@ -37,9 +41,9 @@ typedef boost::shared_ptr<gr_skiphead> gr_skiphead_sptr;
* Useful for building test cases and sources which have metadata or junk at the start
*/
-class gr_skiphead : public gr_block
+class GR_CORE_API gr_skiphead : public gr_block
{
- friend gr_skiphead_sptr gr_make_skiphead (size_t itemsize, uint64_t nitems_to_skip);
+ friend GR_CORE_API gr_skiphead_sptr gr_make_skiphead (size_t itemsize, uint64_t nitems_to_skip);
gr_skiphead (size_t itemsize, uint64_t nitems_to_skip);
uint64_t d_nitems_to_skip;
@@ -53,8 +57,4 @@ class gr_skiphead : public gr_block
gr_vector_void_star &output_items);
};
-gr_skiphead_sptr
-gr_make_skiphead (size_t itemsize, uint64_t nitems_to_skip);
-
-
#endif /* INCLUDED_GR_SKIPHEAD_H */
diff --git a/gnuradio-core/src/lib/general/gr_squash_ff.h b/gnuradio-core/src/lib/general/gr_squash_ff.h
index ee3426cae..f7fea1648 100644
--- a/gnuradio-core/src/lib/general/gr_squash_ff.h
+++ b/gnuradio-core/src/lib/general/gr_squash_ff.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_GR_SQUASH_FF_H_
# define INCLUDED_GR_SQUASH_FF_H_
+#include <gr_core_api.h>
#include <gr_sync_block.h>
#include <gsl/gsl_errno.h>
#include <gsl/gsl_interp.h>
@@ -36,12 +37,12 @@
class gr_squash_ff;
typedef boost::shared_ptr<gr_squash_ff> gr_squash_ff_sptr;
-gr_squash_ff_sptr gr_make_squash_ff(const std::vector<float> &igrid,
+GR_CORE_API gr_squash_ff_sptr gr_make_squash_ff(const std::vector<float> &igrid,
const std::vector<float> &ogrid);
-class gr_squash_ff : public gr_sync_block
+class GR_CORE_API gr_squash_ff : public gr_sync_block
{
- friend gr_squash_ff_sptr gr_make_squash_ff(const std::vector<float> &igrid,
+ friend GR_CORE_API gr_squash_ff_sptr gr_make_squash_ff(const std::vector<float> &igrid,
const std::vector<float> &ogrid);
size_t d_inum;
diff --git a/gnuradio-core/src/lib/general/gr_squelch_base_cc.h b/gnuradio-core/src/lib/general/gr_squelch_base_cc.h
index 51e2e14e5..7c15e0121 100644
--- a/gnuradio-core/src/lib/general/gr_squelch_base_cc.h
+++ b/gnuradio-core/src/lib/general/gr_squelch_base_cc.h
@@ -23,9 +23,10 @@
#ifndef INCLUDED_GR_SQUELCH_BASE_CC_H
#define INCLUDED_GR_SQUELCH_BASE_CC_H
+#include <gr_core_api.h>
#include <gr_block.h>
-class gr_squelch_base_cc : public gr_block
+class GR_CORE_API gr_squelch_base_cc : public gr_block
{
private:
int d_ramp;
diff --git a/gnuradio-core/src/lib/general/gr_squelch_base_ff.h b/gnuradio-core/src/lib/general/gr_squelch_base_ff.h
index 2ca108c75..92a064e63 100644
--- a/gnuradio-core/src/lib/general/gr_squelch_base_ff.h
+++ b/gnuradio-core/src/lib/general/gr_squelch_base_ff.h
@@ -23,9 +23,10 @@
#ifndef INCLUDED_GR_SQUELCH_BASE_FF_H
#define INCLUDED_GR_SQUELCH_BASE_FF_H
+#include <gr_core_api.h>
#include <gr_block.h>
-class gr_squelch_base_ff : public gr_block
+class GR_CORE_API gr_squelch_base_ff : public gr_block
{
private:
int d_ramp;
diff --git a/gnuradio-core/src/lib/general/gr_stream_mux.h b/gnuradio-core/src/lib/general/gr_stream_mux.h
index 29829339e..68415ab1d 100644
--- a/gnuradio-core/src/lib/general/gr_stream_mux.h
+++ b/gnuradio-core/src/lib/general/gr_stream_mux.h
@@ -24,6 +24,7 @@
#define INCLUDED_GR_STREAM_MUX_H
+#include <gr_core_api.h>
#include <gr_block.h>
#include <vector>
@@ -45,7 +46,7 @@ typedef boost::shared_ptr<gr_stream_mux> gr_stream_mux_sptr;
-gr_stream_mux_sptr
+GR_CORE_API gr_stream_mux_sptr
gr_make_stream_mux (size_t itemsize, const std::vector<int> &lengths);
@@ -60,9 +61,9 @@ gr_make_stream_mux (size_t itemsize, const std::vector<int> &lengths);
* [N0, N1, N2, ..., Nm, N0, N1, ...]
*/
-class gr_stream_mux : public gr_block
+class GR_CORE_API gr_stream_mux : public gr_block
{
- friend gr_stream_mux_sptr
+ friend GR_CORE_API gr_stream_mux_sptr
gr_make_stream_mux (size_t itemsize, const std::vector<int> &lengths);
protected:
diff --git a/gnuradio-core/src/lib/general/gr_stream_to_streams.h b/gnuradio-core/src/lib/general/gr_stream_to_streams.h
index 2fdd39e4a..905d3c556 100644
--- a/gnuradio-core/src/lib/general/gr_stream_to_streams.h
+++ b/gnuradio-core/src/lib/general/gr_stream_to_streams.h
@@ -22,12 +22,13 @@
#ifndef INCLUDED_GR_STREAM_TO_STREAMS_H
#define INCLUDED_GR_STREAM_TO_STREAMS_H
+#include <gr_core_api.h>
#include <gr_sync_decimator.h>
class gr_stream_to_streams;
typedef boost::shared_ptr<gr_stream_to_streams> gr_stream_to_streams_sptr;
-gr_stream_to_streams_sptr
+GR_CORE_API gr_stream_to_streams_sptr
gr_make_stream_to_streams (size_t item_size, size_t nstreams);
@@ -38,9 +39,9 @@ gr_make_stream_to_streams (size_t item_size, size_t nstreams);
* Converts a stream of N items into N streams of 1 item.
* Repeat ad infinitum.
*/
-class gr_stream_to_streams : public gr_sync_decimator
+class GR_CORE_API gr_stream_to_streams : public gr_sync_decimator
{
- friend gr_stream_to_streams_sptr
+ friend GR_CORE_API gr_stream_to_streams_sptr
gr_make_stream_to_streams (size_t item_size, size_t nstreams);
protected:
diff --git a/gnuradio-core/src/lib/general/gr_stream_to_vector.h b/gnuradio-core/src/lib/general/gr_stream_to_vector.h
index 2cb03f6a8..77272b96b 100644
--- a/gnuradio-core/src/lib/general/gr_stream_to_vector.h
+++ b/gnuradio-core/src/lib/general/gr_stream_to_vector.h
@@ -23,12 +23,13 @@
#ifndef INCLUDED_GR_STREAM_TO_VECTOR_H
#define INCLUDED_GR_STREAM_TO_VECTOR_H
+#include <gr_core_api.h>
#include <gr_sync_decimator.h>
class gr_stream_to_vector;
typedef boost::shared_ptr<gr_stream_to_vector> gr_stream_to_vector_sptr;
-gr_stream_to_vector_sptr
+GR_CORE_API gr_stream_to_vector_sptr
gr_make_stream_to_vector (size_t item_size, size_t nitems_per_block);
@@ -36,9 +37,9 @@ gr_make_stream_to_vector (size_t item_size, size_t nitems_per_block);
* \brief convert a stream of items into a stream of blocks containing nitems_per_block
* \ingroup slicedice_blk
*/
-class gr_stream_to_vector : public gr_sync_decimator
+class GR_CORE_API gr_stream_to_vector : public gr_sync_decimator
{
- friend gr_stream_to_vector_sptr
+ friend GR_CORE_API gr_stream_to_vector_sptr
gr_make_stream_to_vector (size_t item_size, size_t nitems_per_block);
protected:
diff --git a/gnuradio-core/src/lib/general/gr_streams_to_stream.h b/gnuradio-core/src/lib/general/gr_streams_to_stream.h
index 044af6cd2..8207fed42 100644
--- a/gnuradio-core/src/lib/general/gr_streams_to_stream.h
+++ b/gnuradio-core/src/lib/general/gr_streams_to_stream.h
@@ -22,12 +22,13 @@
#ifndef INCLUDED_GR_STREAMS_TO_STREAM_H
#define INCLUDED_GR_STREAMS_TO_STREAM_H
+#include <gr_core_api.h>
#include <gr_sync_interpolator.h>
class gr_streams_to_stream;
typedef boost::shared_ptr<gr_streams_to_stream> gr_streams_to_stream_sptr;
-gr_streams_to_stream_sptr
+GR_CORE_API gr_streams_to_stream_sptr
gr_make_streams_to_stream (size_t item_size, size_t nstreams);
@@ -38,9 +39,9 @@ gr_make_streams_to_stream (size_t item_size, size_t nstreams);
* Convert N streams of 1 item into 1 stream of N items.
* Repeat ad infinitum.
*/
-class gr_streams_to_stream : public gr_sync_interpolator
+class GR_CORE_API gr_streams_to_stream : public gr_sync_interpolator
{
- friend gr_streams_to_stream_sptr
+ friend GR_CORE_API gr_streams_to_stream_sptr
gr_make_streams_to_stream (size_t item_size, size_t nstreams);
protected:
diff --git a/gnuradio-core/src/lib/general/gr_streams_to_vector.h b/gnuradio-core/src/lib/general/gr_streams_to_vector.h
index 1b2e3ebf7..6a05ac90a 100644
--- a/gnuradio-core/src/lib/general/gr_streams_to_vector.h
+++ b/gnuradio-core/src/lib/general/gr_streams_to_vector.h
@@ -23,12 +23,13 @@
#ifndef INCLUDED_GR_STREAMS_TO_VECTOR_H
#define INCLUDED_GR_STREAMS_TO_VECTOR_H
+#include <gr_core_api.h>
#include <gr_sync_interpolator.h>
class gr_streams_to_vector;
typedef boost::shared_ptr<gr_streams_to_vector> gr_streams_to_vector_sptr;
-gr_streams_to_vector_sptr
+GR_CORE_API gr_streams_to_vector_sptr
gr_make_streams_to_vector (size_t item_size, size_t nstreams);
@@ -36,9 +37,9 @@ gr_make_streams_to_vector (size_t item_size, size_t nstreams);
* \brief convert N streams of items to 1 stream of vector length N
* \ingroup slicedice_blk
*/
-class gr_streams_to_vector : public gr_sync_block
+class GR_CORE_API gr_streams_to_vector : public gr_sync_block
{
- friend gr_streams_to_vector_sptr
+ friend GR_CORE_API gr_streams_to_vector_sptr
gr_make_streams_to_vector (size_t item_size, size_t nstreams);
protected:
diff --git a/gnuradio-core/src/lib/general/gr_stretch_ff.h b/gnuradio-core/src/lib/general/gr_stretch_ff.h
index e75e1969f..578634dd8 100644
--- a/gnuradio-core/src/lib/general/gr_stretch_ff.h
+++ b/gnuradio-core/src/lib/general/gr_stretch_ff.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_GR_STRETCH_FF_H_
# define INCLUDED_GR_STRETCH_FF_H_
+#include <gr_core_api.h>
#include <gr_sync_block.h>
/*!
@@ -36,11 +37,11 @@
class gr_stretch_ff;
typedef boost::shared_ptr<gr_stretch_ff> gr_stretch_ff_sptr;
-gr_stretch_ff_sptr gr_make_stretch_ff(float lo, size_t vlen);
+GR_CORE_API gr_stretch_ff_sptr gr_make_stretch_ff(float lo, size_t vlen);
-class gr_stretch_ff : public gr_sync_block
+class GR_CORE_API gr_stretch_ff : public gr_sync_block
{
- friend gr_stretch_ff_sptr gr_make_stretch_ff(float lo, size_t vlen);
+ friend GR_CORE_API gr_stretch_ff_sptr gr_make_stretch_ff(float lo, size_t vlen);
float d_lo; // the constant
size_t d_vlen;
diff --git a/gnuradio-core/src/lib/general/gr_test.h b/gnuradio-core/src/lib/general/gr_test.h
index 5438ac701..78e39d518 100644
--- a/gnuradio-core/src/lib/general/gr_test.h
+++ b/gnuradio-core/src/lib/general/gr_test.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_GR_TEST_H
#define INCLUDED_GR_TEST_H
+#include <gr_core_api.h>
#include <gr_block.h>
#include <string>
#include "gr_test_types.h"
@@ -31,7 +32,7 @@ class gr_test;
typedef boost::shared_ptr<gr_test> gr_test_sptr;
// public constructor
-gr_test_sptr gr_make_test (const std::string &name=std::string("gr_test"),
+GR_CORE_API gr_test_sptr gr_make_test (const std::string &name=std::string("gr_test"),
int min_inputs=1, int max_inputs=1, unsigned int sizeof_input_item=1,
int min_outputs=1, int max_outputs=1, unsigned int sizeof_output_item=1,
unsigned int history=1,unsigned int output_multiple=1,double relative_rate=1.0,
@@ -50,7 +51,7 @@ gr_test_sptr gr_make_test (const std::string &name=std::string("gr_test"),
* The runtime system should detect this and create large enough buffers
* all through the signal chain.
*/
-class gr_test : public gr_block {
+class GR_CORE_API gr_test : public gr_block {
public:
@@ -183,7 +184,7 @@ int general_work (int noutput_items,
- friend gr_test_sptr gr_make_test (const std::string &name,int min_inputs, int max_inputs, unsigned int sizeof_input_item,
+ friend GR_CORE_API gr_test_sptr gr_make_test (const std::string &name,int min_inputs, int max_inputs, unsigned int sizeof_input_item,
int min_outputs, int max_outputs, unsigned int sizeof_output_item,
unsigned int history,unsigned int output_multiple,double relative_rate,
bool fixed_rate,gr_consume_type_t cons_type, gr_produce_type_t prod_type);
diff --git a/gnuradio-core/src/lib/general/gr_threshold_ff.h b/gnuradio-core/src/lib/general/gr_threshold_ff.h
index 65b677a77..3bf3058cd 100644
--- a/gnuradio-core/src/lib/general/gr_threshold_ff.h
+++ b/gnuradio-core/src/lib/general/gr_threshold_ff.h
@@ -23,20 +23,21 @@
#ifndef INCLUDED_GR_THRESHOLD_FF_H
#define INCLUDED_GR_THRESHOLD_FF_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class gr_threshold_ff;
typedef boost::shared_ptr<gr_threshold_ff> gr_threshold_ff_sptr;
-gr_threshold_ff_sptr gr_make_threshold_ff (float lo, float hi, float initial_state=0);
+GR_CORE_API gr_threshold_ff_sptr gr_make_threshold_ff (float lo, float hi, float initial_state=0);
/*!
* \brief Please fix my documentation
* \ingroup misc_blk
*/
-class gr_threshold_ff : public gr_sync_block
+class GR_CORE_API gr_threshold_ff : public gr_sync_block
{
- friend gr_threshold_ff_sptr gr_make_threshold_ff (float lo, float hi, float initial_state);
+ friend GR_CORE_API gr_threshold_ff_sptr gr_make_threshold_ff (float lo, float hi, float initial_state);
float d_lo,d_hi; // the constant
float d_last_state;
diff --git a/gnuradio-core/src/lib/general/gr_throttle.h b/gnuradio-core/src/lib/general/gr_throttle.h
index a82821f77..0b6ada995 100644
--- a/gnuradio-core/src/lib/general/gr_throttle.h
+++ b/gnuradio-core/src/lib/general/gr_throttle.h
@@ -22,6 +22,7 @@
#ifndef INCLUDED_GR_THROTTLE_H
#define INCLUDED_GR_THROTTLE_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
/*!
@@ -35,7 +36,7 @@
* controlling the rate of samples. That should be controlled by a
* source or sink tied to sample clock. E.g., a USRP or audio card.
*/
-class gr_throttle : virtual public gr_sync_block
+class GR_CORE_API gr_throttle : virtual public gr_sync_block
{
public:
typedef boost::shared_ptr<gr_throttle> sptr;
@@ -44,6 +45,6 @@ public:
virtual void set_sample_rate(double rate) = 0;
};
-gr_throttle::sptr gr_make_throttle(size_t itemsize, double samples_per_sec);
+GR_CORE_API gr_throttle::sptr gr_make_throttle(size_t itemsize, double samples_per_sec);
#endif /* INCLUDED_GR_THROTTLE_H */
diff --git a/gnuradio-core/src/lib/general/gr_transcendental.h b/gnuradio-core/src/lib/general/gr_transcendental.h
index 1b237c44a..25c6eb75d 100644
--- a/gnuradio-core/src/lib/general/gr_transcendental.h
+++ b/gnuradio-core/src/lib/general/gr_transcendental.h
@@ -22,6 +22,7 @@
#ifndef INCLUDED_GR_TRANSCENDENTAL_H
#define INCLUDED_GR_TRANSCENDENTAL_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
#include <string>
@@ -35,12 +36,12 @@
*
* output[i] = trans_fcn(input[i])
*/
-class gr_transcendental : virtual public gr_sync_block{
+class GR_CORE_API gr_transcendental : virtual public gr_sync_block{
public:
typedef boost::shared_ptr<gr_transcendental> sptr;
};
-gr_transcendental::sptr gr_make_transcendental(
+GR_CORE_API gr_transcendental::sptr gr_make_transcendental(
const std::string &name,
const std::string &type = "float"
);
diff --git a/gnuradio-core/src/lib/general/gr_uchar_to_float.h b/gnuradio-core/src/lib/general/gr_uchar_to_float.h
index 3b83c893f..8e8836c2c 100644
--- a/gnuradio-core/src/lib/general/gr_uchar_to_float.h
+++ b/gnuradio-core/src/lib/general/gr_uchar_to_float.h
@@ -23,12 +23,13 @@
#ifndef INCLUDED_GR_UCHAR_TO_FLOAT_H
#define INCLUDED_GR_UCHAR_TO_FLOAT_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class gr_uchar_to_float;
typedef boost::shared_ptr<gr_uchar_to_float> gr_uchar_to_float_sptr;
-gr_uchar_to_float_sptr
+GR_CORE_API gr_uchar_to_float_sptr
gr_make_uchar_to_float ();
/*!
@@ -36,9 +37,9 @@ gr_make_uchar_to_float ();
* \ingroup converter_blk
*/
-class gr_uchar_to_float : public gr_sync_block
+class GR_CORE_API gr_uchar_to_float : public gr_sync_block
{
- friend gr_uchar_to_float_sptr gr_make_uchar_to_float ();
+ friend GR_CORE_API gr_uchar_to_float_sptr gr_make_uchar_to_float ();
gr_uchar_to_float ();
public:
diff --git a/gnuradio-core/src/lib/general/gr_unpack_k_bits_bb.h b/gnuradio-core/src/lib/general/gr_unpack_k_bits_bb.h
index e2be2c59c..056c69dc1 100644
--- a/gnuradio-core/src/lib/general/gr_unpack_k_bits_bb.h
+++ b/gnuradio-core/src/lib/general/gr_unpack_k_bits_bb.h
@@ -23,11 +23,12 @@
#ifndef INCLUDED_GR_UNPACK_K_BITS_BB_H
#define INCLUDED_GR_UNPACK_K_BITS_BB_H
+#include <gr_core_api.h>
#include <gr_sync_interpolator.h>
class gr_unpack_k_bits_bb;
typedef boost::shared_ptr<gr_unpack_k_bits_bb> gr_unpack_k_bits_bb_sptr;
-gr_unpack_k_bits_bb_sptr gr_make_unpack_k_bits_bb (unsigned k);
+GR_CORE_API gr_unpack_k_bits_bb_sptr gr_make_unpack_k_bits_bb (unsigned k);
class gr_unpack_k_bits_bb;
@@ -35,10 +36,10 @@ class gr_unpack_k_bits_bb;
* \brief Converts a byte with k relevent bits to k output bytes with 1 bit in the LSB.
* \ingroup converter_blk
*/
-class gr_unpack_k_bits_bb : public gr_sync_interpolator
+class GR_CORE_API gr_unpack_k_bits_bb : public gr_sync_interpolator
{
private:
- friend gr_unpack_k_bits_bb_sptr gr_make_unpack_k_bits_bb (unsigned k);
+ friend GR_CORE_API gr_unpack_k_bits_bb_sptr gr_make_unpack_k_bits_bb (unsigned k);
gr_unpack_k_bits_bb (unsigned k);
diff --git a/gnuradio-core/src/lib/general/gr_vco_f.h b/gnuradio-core/src/lib/general/gr_vco_f.h
index 2bdf60899..b7524d581 100644
--- a/gnuradio-core/src/lib/general/gr_vco_f.h
+++ b/gnuradio-core/src/lib/general/gr_vco_f.h
@@ -22,6 +22,7 @@
#ifndef INCLUDED_GR_VCO_F_H
#define INCLUDED_GR_VCO_F_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
#include <gr_fxpt_vco.h>
@@ -37,7 +38,7 @@ class gr_vco_f;
typedef boost::shared_ptr<gr_vco_f> gr_vco_f_sptr;
-gr_vco_f_sptr gr_make_vco_f(double sampling_rate, double sensitivity, double amplitude);
+GR_CORE_API gr_vco_f_sptr gr_make_vco_f(double sampling_rate, double sensitivity, double amplitude);
/*!
* \brief VCO - Voltage controlled oscillator
@@ -45,9 +46,9 @@ gr_vco_f_sptr gr_make_vco_f(double sampling_rate, double sensitivity, double amp
*
* input: float stream of control voltages; output: float oscillator output
*/
-class gr_vco_f : public gr_sync_block
+class GR_CORE_API gr_vco_f : public gr_sync_block
{
- friend gr_vco_f_sptr gr_make_vco_f(double sampling_rate, double sensitivity, double amplitude);
+ friend GR_CORE_API gr_vco_f_sptr gr_make_vco_f(double sampling_rate, double sensitivity, double amplitude);
/*!
* \brief VCO - Voltage controlled oscillator
diff --git a/gnuradio-core/src/lib/general/gr_vector_to_stream.h b/gnuradio-core/src/lib/general/gr_vector_to_stream.h
index de6cc2a8b..d2fa8c7ab 100644
--- a/gnuradio-core/src/lib/general/gr_vector_to_stream.h
+++ b/gnuradio-core/src/lib/general/gr_vector_to_stream.h
@@ -23,12 +23,13 @@
#ifndef INCLUDED_GR_VECTOR_TO_STREAM_H
#define INCLUDED_GR_VECTOR_TO_STREAM_H
+#include <gr_core_api.h>
#include <gr_sync_interpolator.h>
class gr_vector_to_stream;
typedef boost::shared_ptr<gr_vector_to_stream> gr_vector_to_stream_sptr;
-gr_vector_to_stream_sptr
+GR_CORE_API gr_vector_to_stream_sptr
gr_make_vector_to_stream (size_t item_size, size_t nitems_per_block);
@@ -36,9 +37,9 @@ gr_make_vector_to_stream (size_t item_size, size_t nitems_per_block);
* \brief convert a stream of blocks of nitems_per_block items into a stream of items
* \ingroup slicedice_blk
*/
-class gr_vector_to_stream : public gr_sync_interpolator
+class GR_CORE_API gr_vector_to_stream : public gr_sync_interpolator
{
- friend gr_vector_to_stream_sptr
+ friend GR_CORE_API gr_vector_to_stream_sptr
gr_make_vector_to_stream (size_t item_size, size_t nitems_per_block);
protected:
diff --git a/gnuradio-core/src/lib/general/gr_vector_to_streams.h b/gnuradio-core/src/lib/general/gr_vector_to_streams.h
index d5ba7acf9..04ac941a1 100644
--- a/gnuradio-core/src/lib/general/gr_vector_to_streams.h
+++ b/gnuradio-core/src/lib/general/gr_vector_to_streams.h
@@ -23,12 +23,13 @@
#ifndef INCLUDED_GR_VECTOR_TO_STREAMS_H
#define INCLUDED_GR_VECTOR_TO_STREAMS_H
+#include <gr_core_api.h>
#include <gr_sync_interpolator.h>
class gr_vector_to_streams;
typedef boost::shared_ptr<gr_vector_to_streams> gr_vector_to_streams_sptr;
-gr_vector_to_streams_sptr
+GR_CORE_API gr_vector_to_streams_sptr
gr_make_vector_to_streams (size_t item_size, size_t nstreams);
@@ -36,9 +37,9 @@ gr_make_vector_to_streams (size_t item_size, size_t nstreams);
* \brief Convert 1 stream of vectors of length N to N streams of items
* \ingroup slicedice_blk
*/
-class gr_vector_to_streams : public gr_sync_block
+class GR_CORE_API gr_vector_to_streams : public gr_sync_block
{
- friend gr_vector_to_streams_sptr
+ friend GR_CORE_API gr_vector_to_streams_sptr
gr_make_vector_to_streams (size_t item_size, size_t nstreams);
protected:
diff --git a/gnuradio-core/src/lib/general/gr_wavelet_ff.h b/gnuradio-core/src/lib/general/gr_wavelet_ff.h
index dcfb595e5..107a50fe2 100644
--- a/gnuradio-core/src/lib/general/gr_wavelet_ff.h
+++ b/gnuradio-core/src/lib/general/gr_wavelet_ff.h
@@ -22,6 +22,7 @@
#ifndef INCLUDED_GR_WAVELET_FF_H
#define INCLUDED_GR_WAVELET_FF_H
+#include <gr_core_api.h>
#include <iostream>
#include <gr_sync_block.h>
@@ -31,7 +32,7 @@
class gr_wavelet_ff;
typedef boost::shared_ptr<gr_wavelet_ff> gr_wavelet_ff_sptr;
-gr_wavelet_ff_sptr
+GR_CORE_API gr_wavelet_ff_sptr
gr_make_wavelet_ff(int size = 1024,
int order = 20,
bool forward = true);
@@ -41,7 +42,7 @@ gr_make_wavelet_ff(int size = 1024,
* \ingroup wavelet_blk
*/
-class gr_wavelet_ff : public gr_sync_block
+class GR_CORE_API gr_wavelet_ff : public gr_sync_block
{
int d_size;
int d_order;
@@ -50,7 +51,7 @@ class gr_wavelet_ff : public gr_sync_block
gsl_wavelet_workspace *d_workspace;
double *d_temp;
- friend gr_wavelet_ff_sptr
+ friend GR_CORE_API gr_wavelet_ff_sptr
gr_make_wavelet_ff(int size,
int order,
bool forward);
diff --git a/gnuradio-core/src/lib/general/gr_wvps_ff.h b/gnuradio-core/src/lib/general/gr_wvps_ff.h
index af122d0fc..7c8f26066 100644
--- a/gnuradio-core/src/lib/general/gr_wvps_ff.h
+++ b/gnuradio-core/src/lib/general/gr_wvps_ff.h
@@ -23,12 +23,13 @@
#ifndef INCLUDED_GR_WVPS_FF_H
#define INCLUDED_GR_WVPS_FF_H
+#include <gr_core_api.h>
#include <gr_sync_decimator.h>
class gr_wvps_ff;
typedef boost::shared_ptr<gr_wvps_ff> gr_wvps_ff_sptr;
-gr_wvps_ff_sptr
+GR_CORE_API gr_wvps_ff_sptr
gr_make_wvps_ff(int ilen);
@@ -36,9 +37,9 @@ gr_make_wvps_ff(int ilen);
* \brief computes the Wavelet Power Spectrum from a set of wavelet coefficients
* \ingroup wavelet_blk
*/
-class gr_wvps_ff : public gr_sync_block
+class GR_CORE_API gr_wvps_ff : public gr_sync_block
{
- friend gr_wvps_ff_sptr
+ friend GR_CORE_API gr_wvps_ff_sptr
gr_make_wvps_ff(int ilen);
int d_ilen;
diff --git a/gnuradio-core/src/lib/general/gri_agc2_cc.h b/gnuradio-core/src/lib/general/gri_agc2_cc.h
index 441d1e459..b0a027aad 100644
--- a/gnuradio-core/src/lib/general/gri_agc2_cc.h
+++ b/gnuradio-core/src/lib/general/gri_agc2_cc.h
@@ -23,6 +23,7 @@
#ifndef _GRI_AGC2_CC_H_
#define _GRI_AGC2_CC_H_
+#include <gr_core_api.h>
#include <math.h>
/*!
@@ -30,7 +31,7 @@
*
* For Power the absolute value of the complex number is used.
*/
-class gri_agc2_cc {
+class GR_CORE_API gri_agc2_cc {
public:
gri_agc2_cc (float attack_rate = 1e-1, float decay_rate = 1e-2, float reference = 1.0,
diff --git a/gnuradio-core/src/lib/general/gri_agc2_ff.h b/gnuradio-core/src/lib/general/gri_agc2_ff.h
index a06dab78c..ee70c2537 100644
--- a/gnuradio-core/src/lib/general/gri_agc2_ff.h
+++ b/gnuradio-core/src/lib/general/gri_agc2_ff.h
@@ -23,6 +23,7 @@
#ifndef _GRI_AGC2_FF_H_
#define _GRI_AGC2_FF_H_
+#include <gr_core_api.h>
#include <math.h>
/*!
@@ -31,7 +32,7 @@
* Power is approximated by absolute value
*/
-class gri_agc2_ff {
+class GR_CORE_API gri_agc2_ff {
public:
gri_agc2_ff (float attack_rate = 1e-1, float decay_rate = 1e-2, float reference = 1.0,
diff --git a/gnuradio-core/src/lib/general/gri_agc_cc.h b/gnuradio-core/src/lib/general/gri_agc_cc.h
index bc31d9a3d..74dfdf1dc 100644
--- a/gnuradio-core/src/lib/general/gri_agc_cc.h
+++ b/gnuradio-core/src/lib/general/gri_agc_cc.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_GRI_AGC_CC_H
#define INCLUDED_GRI_AGC_CC_H
+#include <gr_core_api.h>
#include <math.h>
/*!
@@ -31,7 +32,7 @@
* For Power the absolute value of the complex number is used.
*/
-class gri_agc_cc {
+class GR_CORE_API gri_agc_cc {
public:
gri_agc_cc (float rate = 1e-4, float reference = 1.0,
diff --git a/gnuradio-core/src/lib/general/gri_agc_ff.h b/gnuradio-core/src/lib/general/gri_agc_ff.h
index de609a8d4..753bbe275 100644
--- a/gnuradio-core/src/lib/general/gri_agc_ff.h
+++ b/gnuradio-core/src/lib/general/gri_agc_ff.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_GRI_AGC_FF_H
#define INCLUDED_GRI_AGC_FF_H
+#include <gr_core_api.h>
#include <math.h>
/*!
@@ -30,7 +31,7 @@
*
* Power is approximated by absolute value
*/
-class gri_agc_ff {
+class GR_CORE_API gri_agc_ff {
public:
gri_agc_ff (float rate = 1e-4, float reference = 1.0,
diff --git a/gnuradio-core/src/lib/general/gri_char_to_float.h b/gnuradio-core/src/lib/general/gri_char_to_float.h
index f4703bef7..890d482b5 100644
--- a/gnuradio-core/src/lib/general/gri_char_to_float.h
+++ b/gnuradio-core/src/lib/general/gri_char_to_float.h
@@ -23,10 +23,12 @@
#ifndef INCLUDED_GRI_CHAR_TO_FLOAT_H
#define INCLUDED_GRI_CHAR_TO_FLOAT_H
+#include <gr_core_api.h>
+
/*
* convert array of chars to floats
*/
-void gri_char_to_float (const char *in, float *out, int nsamples);
+GR_CORE_API void gri_char_to_float (const char *in, float *out, int nsamples);
-#endif /* INCLUDED_GRI_CHAR_TO_FLOAT_H */
+#endif /* INCLUDED_GRI_CHAR_TO_FLOAT_H */ \ No newline at end of file
diff --git a/gnuradio-core/src/lib/general/gri_control_loop.cc b/gnuradio-core/src/lib/general/gri_control_loop.cc
index affdeefc9..4c64bb922 100644
--- a/gnuradio-core/src/lib/general/gri_control_loop.cc
+++ b/gnuradio-core/src/lib/general/gri_control_loop.cc
@@ -20,6 +20,10 @@
* Boston, MA 02110-1301, USA.
*/
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
#include <gri_control_loop.h>
#include <gr_math.h>
#include <stdexcept>
diff --git a/gnuradio-core/src/lib/general/gri_control_loop.h b/gnuradio-core/src/lib/general/gri_control_loop.h
index a85625bbd..3aeac58f7 100644
--- a/gnuradio-core/src/lib/general/gri_control_loop.h
+++ b/gnuradio-core/src/lib/general/gri_control_loop.h
@@ -23,7 +23,9 @@
#ifndef GRI_CONTROL_LOOP
#define GRI_CONTROL_LOOP
-class gri_control_loop
+#include <gr_core_api.h>
+
+class GR_CORE_API gri_control_loop
{
protected:
float d_phase, d_freq;
diff --git a/gnuradio-core/src/lib/general/gri_debugger_hook.h b/gnuradio-core/src/lib/general/gri_debugger_hook.h
index 60c90685e..cf227af8f 100644
--- a/gnuradio-core/src/lib/general/gri_debugger_hook.h
+++ b/gnuradio-core/src/lib/general/gri_debugger_hook.h
@@ -23,6 +23,8 @@
#ifndef INCLUDED_GRI_DEBUGGER_HOOK_H
#define INCLUDED_GRI_DEBUGGER_HOOK_H
-void gri_debugger_hook ();
+#include <gr_core_api.h>
-#endif /* INCLUDED_GRI_DEBUGGER_HOOK_H */
+GR_CORE_API void gri_debugger_hook ();
+
+#endif /* INCLUDED_GRI_DEBUGGER_HOOK_H */ \ No newline at end of file
diff --git a/gnuradio-core/src/lib/general/gri_fft.cc b/gnuradio-core/src/lib/general/gri_fft.cc
index f20b15ca0..0df1af25d 100644
--- a/gnuradio-core/src/lib/general/gri_fft.cc
+++ b/gnuradio-core/src/lib/general/gri_fft.cc
@@ -23,6 +23,19 @@
#include <gri_fft.h>
#include <gr_sys_paths.h>
#include <fftw3.h>
+
+#ifdef _MSC_VER //http://www.fftw.org/install/windows.html#DLLwisdom
+static void my_fftw_write_char(char c, void *f) { fputc(c, (FILE *) f); }
+#define fftw_export_wisdom_to_file(f) fftw_export_wisdom(my_fftw_write_char, (void*) (f))
+#define fftwf_export_wisdom_to_file(f) fftwf_export_wisdom(my_fftw_write_char, (void*) (f))
+#define fftwl_export_wisdom_to_file(f) fftwl_export_wisdom(my_fftw_write_char, (void*) (f))
+
+static int my_fftw_read_char(void *f) { return fgetc((FILE *) f); }
+#define fftw_import_wisdom_from_file(f) fftw_import_wisdom(my_fftw_read_char, (void*) (f))
+#define fftwf_import_wisdom_from_file(f) fftwf_import_wisdom(my_fftw_read_char, (void*) (f))
+#define fftwl_import_wisdom_from_file(f) fftwl_import_wisdom(my_fftw_read_char, (void*) (f))
+#endif //_MSC_VER
+
#include <gr_complex.h>
#include <stdlib.h>
#include <string.h>
diff --git a/gnuradio-core/src/lib/general/gri_fft.h b/gnuradio-core/src/lib/general/gri_fft.h
index 9ffcc5a50..91a82fb55 100644
--- a/gnuradio-core/src/lib/general/gri_fft.h
+++ b/gnuradio-core/src/lib/general/gri_fft.h
@@ -26,6 +26,7 @@
* Wrappers for FFTW single precision 1d dft
*/
+#include <gr_core_api.h>
#include <gr_complex.h>
#include <boost/thread.hpp>
@@ -33,7 +34,7 @@
* \brief Export reference to planner mutex for those apps that
* want to use FFTW w/o using the gri_fftw* classes.
*/
-class gri_fft_planner {
+class GR_CORE_API gri_fft_planner {
public:
typedef boost::mutex::scoped_lock scoped_lock;
/*!
@@ -46,7 +47,7 @@ public:
* \brief FFT: complex in, complex out
* \ingroup misc
*/
-class gri_fft_complex {
+class GR_CORE_API gri_fft_complex {
int d_fft_size;
gr_complex *d_inbuf;
gr_complex *d_outbuf;
@@ -77,7 +78,7 @@ public:
* \brief FFT: real in, complex out
* \ingroup misc
*/
-class gri_fft_real_fwd {
+class GR_CORE_API gri_fft_real_fwd {
int d_fft_size;
float *d_inbuf;
gr_complex *d_outbuf;
@@ -108,7 +109,7 @@ public:
* \brief FFT: complex in, float out
* \ingroup misc
*/
-class gri_fft_real_rev {
+class GR_CORE_API gri_fft_real_rev {
int d_fft_size;
gr_complex *d_inbuf;
float *d_outbuf;
diff --git a/gnuradio-core/src/lib/general/gri_float_to_char.h b/gnuradio-core/src/lib/general/gri_float_to_char.h
index 95cc8ea8d..184592a69 100644
--- a/gnuradio-core/src/lib/general/gri_float_to_char.h
+++ b/gnuradio-core/src/lib/general/gri_float_to_char.h
@@ -23,10 +23,11 @@
#ifndef INCLUDED_GRI_FLOAT_TO_CHAR_H
#define INCLUDED_GRI_FLOAT_TO_CHAR_H
+#include <gr_core_api.h>
+
/*!
* convert array of floats to chars with rounding and saturation.
*/
-void gri_float_to_char (const float *in, char *out, int nsamples);
+GR_CORE_API void gri_float_to_char (const float *in, char *out, int nsamples);
#endif /* INCLUDED_GRI_FLOAT_TO_CHAR_H */
-
diff --git a/gnuradio-core/src/lib/general/gri_float_to_short.h b/gnuradio-core/src/lib/general/gri_float_to_short.h
index e36e25de6..6d814b2b3 100644
--- a/gnuradio-core/src/lib/general/gri_float_to_short.h
+++ b/gnuradio-core/src/lib/general/gri_float_to_short.h
@@ -23,10 +23,11 @@
#ifndef INCLUDED_GRI_FLOAT_TO_SHORT_H
#define INCLUDED_GRI_FLOAT_TO_SHORT_H
+#include <gr_core_api.h>
+
/*!
* convert array of floats to shorts with rounding and saturation.
*/
-void gri_float_to_short (const float *in, short *out, int nsamples);
+GR_CORE_API void gri_float_to_short (const float *in, short *out, int nsamples);
#endif /* INCLUDED_GRI_FLOAT_TO_SHORT_H */
-
diff --git a/gnuradio-core/src/lib/general/gri_float_to_uchar.h b/gnuradio-core/src/lib/general/gri_float_to_uchar.h
index e413e725f..ff549333e 100644
--- a/gnuradio-core/src/lib/general/gri_float_to_uchar.h
+++ b/gnuradio-core/src/lib/general/gri_float_to_uchar.h
@@ -23,10 +23,11 @@
#ifndef INCLUDED_GRI_FLOAT_TO_UCHAR_H
#define INCLUDED_GRI_FLOAT_TO_UCHAR_H
+#include <gr_core_api.h>
+
/*!
* convert array of floats to unsigned chars with rounding and saturation.
*/
-void gri_float_to_uchar (const float *in, unsigned char *out, int nsamples);
+GR_CORE_API void gri_float_to_uchar (const float *in, unsigned char *out, int nsamples);
#endif /* INCLUDED_GRI_FLOAT_TO_UCHAR_H */
-
diff --git a/gnuradio-core/src/lib/general/gri_glfsr.h b/gnuradio-core/src/lib/general/gri_glfsr.h
index 7dd5f8660..e6d28cf45 100644
--- a/gnuradio-core/src/lib/general/gri_glfsr.h
+++ b/gnuradio-core/src/lib/general/gri_glfsr.h
@@ -23,6 +23,8 @@
#ifndef INCLUDED_GRI_GLFSR_H
#define INCLUDED_GRI_GLFSR_H
+#include <gr_core_api.h>
+
/*!
* \brief Galois Linear Feedback Shift Register using specified polynomial mask
* \ingroup misc
@@ -30,7 +32,7 @@
* Generates a maximal length pseudo-random sequence of length 2^degree-1
*/
-class gri_glfsr
+class GR_CORE_API gri_glfsr
{
private:
int d_shift_register;
@@ -52,4 +54,4 @@ class gri_glfsr
int mask() const { return d_mask; }
};
-#endif /* INCLUDED_GRI_GLFSR_H */
+#endif /* INCLUDED_GRI_GLFSR_H */ \ No newline at end of file
diff --git a/gnuradio-core/src/lib/general/gri_interleaved_short_to_complex.h b/gnuradio-core/src/lib/general/gri_interleaved_short_to_complex.h
index 09d915f7a..107e2f778 100644
--- a/gnuradio-core/src/lib/general/gri_interleaved_short_to_complex.h
+++ b/gnuradio-core/src/lib/general/gri_interleaved_short_to_complex.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_GRI_INTERLEAVED_SHORT_TO_COMPLEX_H
#define INCLUDED_GRI_INTERLEAVED_SHORT_TO_COMPLEX_H
+#include <gr_core_api.h>
#include <gr_complex.h>
/*
@@ -30,7 +31,7 @@
* the shorts contains real, imaginary, real, imaginary...
* nsamples is the number of shorts; it must be even.
*/
-void gri_interleaved_short_to_complex (const short *in, gr_complex *out, int nsamples);
+GR_CORE_API void gri_interleaved_short_to_complex (const short *in, gr_complex *out, int nsamples);
#endif /* INCLUDED_GRI_INTERLEAVED_SHORT_TO_COMPLEX_H */
diff --git a/gnuradio-core/src/lib/general/gri_lfsr.h b/gnuradio-core/src/lib/general/gri_lfsr.h
index f691e36ec..dc9358572 100644
--- a/gnuradio-core/src/lib/general/gri_lfsr.h
+++ b/gnuradio-core/src/lib/general/gri_lfsr.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_GRI_LFSR_H
#define INCLUDED_GRI_LFSR_H
+#include <gr_core_api.h>
#include <stdexcept>
#include <stdint.h>
@@ -81,7 +82,7 @@
*
*/
-class gri_lfsr
+class GR_CORE_API gri_lfsr
{
private:
uint32_t d_shift_register;
diff --git a/gnuradio-core/src/lib/general/gri_lfsr_15_1_0.h b/gnuradio-core/src/lib/general/gri_lfsr_15_1_0.h
index 798f2faad..7405ffbaa 100644
--- a/gnuradio-core/src/lib/general/gri_lfsr_15_1_0.h
+++ b/gnuradio-core/src/lib/general/gri_lfsr_15_1_0.h
@@ -23,6 +23,8 @@
#ifndef INCLUDED_GRI_LFSR_15_1_0_H
#define INCLUDED_GRI_LFSR_15_1_0_H
+#include <gr_core_api.h>
+
/*!
* \brief Linear Feedback Shift Register using primitive polynomial x^15 + x + 1
* \ingroup misc
@@ -30,7 +32,7 @@
* Generates a maximal length pseudo-random sequence of length 2^15 - 1 bits.
*/
-class gri_lfsr_15_1_0 {
+class GR_CORE_API gri_lfsr_15_1_0 {
unsigned long d_sr; // shift register
public:
@@ -55,4 +57,4 @@ class gri_lfsr_15_1_0 {
}
};
-#endif /* INCLUDED_GRI_LFSR_15_1_0_H */
+#endif /* INCLUDED_GRI_LFSR_15_1_0_H */ \ No newline at end of file
diff --git a/gnuradio-core/src/lib/general/gri_lfsr_32k.h b/gnuradio-core/src/lib/general/gri_lfsr_32k.h
index 33e7ae3a1..5c0396b50 100644
--- a/gnuradio-core/src/lib/general/gri_lfsr_32k.h
+++ b/gnuradio-core/src/lib/general/gri_lfsr_32k.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_GRI_LFSR_32k_H
#define INCLUDED_GRI_LFSR_32k_H
+#include <gr_core_api.h>
#include <gri_lfsr_15_1_0.h>
/*!
@@ -33,7 +34,7 @@
* of the sequence.
*/
-class gri_lfsr_32k {
+class GR_CORE_API gri_lfsr_32k {
gri_lfsr_15_1_0 d_lfsr;
unsigned int d_count;
diff --git a/gnuradio-core/src/lib/general/gri_short_to_float.h b/gnuradio-core/src/lib/general/gri_short_to_float.h
index ce4193062..51767efab 100644
--- a/gnuradio-core/src/lib/general/gri_short_to_float.h
+++ b/gnuradio-core/src/lib/general/gri_short_to_float.h
@@ -23,10 +23,12 @@
#ifndef INCLUDED_GRI_SHORT_TO_FLOAT_H
#define INCLUDED_GRI_SHORT_TO_FLOAT_H
+#include <gr_core_api.h>
+
/*
* convert array of shorts to floats
*/
-void gri_short_to_float (const short *in, float *out, int nsamples);
+GR_CORE_API void gri_short_to_float (const short *in, float *out, int nsamples);
-#endif /* INCLUDED_GRI_SHORT_TO_FLOAT_H */
+#endif /* INCLUDED_GRI_SHORT_TO_FLOAT_H */ \ No newline at end of file
diff --git a/gnuradio-core/src/lib/general/gri_uchar_to_float.h b/gnuradio-core/src/lib/general/gri_uchar_to_float.h
index 7a9f11ba6..9f342989d 100644
--- a/gnuradio-core/src/lib/general/gri_uchar_to_float.h
+++ b/gnuradio-core/src/lib/general/gri_uchar_to_float.h
@@ -23,10 +23,12 @@
#ifndef INCLUDED_GRI_UCHAR_TO_FLOAT_H
#define INCLUDED_GRI_UCHAR_TO_FLOAT_H
+#include <gr_core_api.h>
+
/*
* convert array of unsigned chars to floats
*/
-void gri_uchar_to_float (const unsigned char *in, float *out, int nsamples);
+GR_CORE_API void gri_uchar_to_float (const unsigned char *in, float *out, int nsamples);
-#endif /* INCLUDED_GRI_UCHAR_TO_FLOAT_H */
+#endif /* INCLUDED_GRI_UCHAR_TO_FLOAT_H */ \ No newline at end of file
diff --git a/gnuradio-core/src/lib/general/malloc16.c b/gnuradio-core/src/lib/general/malloc16.c
index 331751499..2cc6135e7 100644
--- a/gnuradio-core/src/lib/general/malloc16.c
+++ b/gnuradio-core/src/lib/general/malloc16.c
@@ -7,7 +7,6 @@
#include "malloc16.h"
#include <string.h>
-#include <strings.h>
void *malloc16Align(int size){
void *p;
diff --git a/gnuradio-core/src/lib/general/malloc16.h b/gnuradio-core/src/lib/general/malloc16.h
index fc97f267d..6b1a3fb08 100644
--- a/gnuradio-core/src/lib/general/malloc16.h
+++ b/gnuradio-core/src/lib/general/malloc16.h
@@ -20,15 +20,17 @@
* Boston, MA 02110-1301, USA.
*/
+#include <gr_core_api.h>
+
#ifdef __cplusplus
extern "C" {
#endif
#include <stdlib.h>
-void *malloc16Align(int size);
-void *calloc16Align(size_t nmemb,size_t size);
-void free16Align(void *p);
+GR_CORE_API void *malloc16Align(int size);
+GR_CORE_API void *calloc16Align(size_t nmemb,size_t size);
+GR_CORE_API void free16Align(void *p);
#ifdef __cplusplus
}
diff --git a/gnuradio-core/src/lib/general/qa_general.h b/gnuradio-core/src/lib/general/qa_general.h
index 577c9d7fb..7da188266 100644
--- a/gnuradio-core/src/lib/general/qa_general.h
+++ b/gnuradio-core/src/lib/general/qa_general.h
@@ -23,11 +23,12 @@
#ifndef _QA_GENERAL_H_
#define _QA_GENERAL_H_
+#include <gruel/attributes.h>
#include <cppunit/TestSuite.h>
//! collect all the tests for the gr directory
-class qa_general {
+class __GR_ATTR_EXPORT qa_general {
public:
//! return suite of tests for all of gr directory
static CppUnit::TestSuite *suite ();
diff --git a/gnuradio-core/src/lib/general/qa_gri_lfsr.cc b/gnuradio-core/src/lib/general/qa_gri_lfsr.cc
index 9f8b62dcf..9625071d8 100644
--- a/gnuradio-core/src/lib/general/qa_gri_lfsr.cc
+++ b/gnuradio-core/src/lib/general/qa_gri_lfsr.cc
@@ -24,6 +24,7 @@
#include <cppunit/TestAssert.h>
#include <stdio.h>
#include <string.h>
+#include <vector>
void
qa_gri_lfsr::test_lfsr ()
@@ -90,12 +91,12 @@ qa_gri_lfsr::test_scrambler()
1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, };
int len = sizeof(src);
- unsigned char actual[len];
+ std::vector<unsigned char> actual(len);
for (int i = 0; i < len; i++)
actual[i] = scrambler.next_bit_scramble(src[i]);
- CPPUNIT_ASSERT(memcmp(expected, actual, len) == 0);
+ CPPUNIT_ASSERT(memcmp(expected, &actual[0], len) == 0);
}
void
@@ -132,10 +133,10 @@ qa_gri_lfsr::test_descrambler()
0, 0, 0, 0, 0, 0, 0, 0, 0 };
int len = sizeof(src);
- unsigned char actual[len];
+ std::vector<unsigned char> actual(len);
for (int i = 0; i < len; i++)
actual[i] = descrambler.next_bit_descramble(src[i]);
- CPPUNIT_ASSERT(memcmp(expected, actual, len) == 0);
+ CPPUNIT_ASSERT(memcmp(expected, &actual[0], len) == 0);
}
diff --git a/gnuradio-core/src/lib/gengen/CMakeLists.txt b/gnuradio-core/src/lib/gengen/CMakeLists.txt
new file mode 100644
index 000000000..e3da278f2
--- /dev/null
+++ b/gnuradio-core/src/lib/gengen/CMakeLists.txt
@@ -0,0 +1,179 @@
+# Copyright 2010-2011 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+
+########################################################################
+# This file included, use CMake directory variables
+########################################################################
+
+########################################################################
+# generate the python helper script which calls into the build utils
+########################################################################
+file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/generate_helper.py "
+#!${PYTHON_EXECUTABLE}
+
+import sys, os, re
+sys.path.append('${GR_CORE_PYTHONPATH}')
+os.environ['srcdir'] = '${CMAKE_CURRENT_SOURCE_DIR}'
+os.chdir('${CMAKE_CURRENT_BINARY_DIR}')
+
+if __name__ == '__main__':
+ import build_utils
+ root, inp = sys.argv[1:3]
+ for sig in sys.argv[3:]:
+ name = re.sub ('X+', sig, root)
+ d = build_utils.standard_dict(name, sig)
+ build_utils.expand_template(d, inp)
+
+")
+
+########################################################################
+# generation helper macro to generate various files from template
+########################################################################
+macro(expand_h_cc_i root)
+
+ foreach(ext h cc i)
+ #make a list of all the generated files
+ unset(expanded_files_${ext})
+ foreach(sig ${ARGN})
+ string(REGEX REPLACE "X+" ${sig} name ${root})
+ list(APPEND expanded_files_${ext} ${CMAKE_CURRENT_BINARY_DIR}/${name}.${ext})
+ endforeach(sig)
+
+ #create a command to generate the files
+ add_custom_command(
+ OUTPUT ${expanded_files_${ext}}
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${root}.${ext}.t
+ COMMAND ${PYTHON_EXECUTABLE} ${PYTHON_DASH_B}
+ ${CMAKE_CURRENT_BINARY_DIR}/generate_helper.py
+ ${root} ${root}.${ext}.t ${ARGN}
+ )
+ endforeach(ext)
+
+ #make source files depends on headers to force generation
+ set_source_files_properties(${expanded_files_cc}
+ PROPERTIES OBJECT_DEPENDS "${expanded_files_h}"
+ )
+
+ #install rules for the generated cc, h, and i files
+ list(APPEND generated_gengen_sources ${expanded_files_cc})
+ list(APPEND generated_gengen_includes ${expanded_files_h})
+ list(APPEND generated_gengen_swigs ${expanded_files_i})
+
+endmacro(expand_h_cc_i)
+
+########################################################################
+# Invoke macro to generate various sources
+########################################################################
+expand_h_cc_i(gr_vector_source_X b s i f c)
+expand_h_cc_i(gr_vector_sink_X b s i f c)
+expand_h_cc_i(gr_noise_source_X s i f c)
+expand_h_cc_i(gr_sig_source_X s i f c)
+
+expand_h_cc_i(gr_add_const_XX ss ii ff cc sf)
+expand_h_cc_i(gr_multiply_const_XX ss ii ff cc)
+expand_h_cc_i(gr_add_XX ss ii ff cc)
+expand_h_cc_i(gr_sub_XX ss ii ff cc)
+expand_h_cc_i(gr_multiply_XX ss ii ff cc)
+expand_h_cc_i(gr_divide_XX ss ii ff cc)
+expand_h_cc_i(gr_mute_XX ss ii ff cc)
+expand_h_cc_i(gr_add_const_vXX ss ii ff cc)
+expand_h_cc_i(gr_multiply_const_vXX ss ii ff cc)
+expand_h_cc_i(gr_integrate_XX ss ii ff cc)
+expand_h_cc_i(gr_moving_average_XX ss ii ff cc)
+
+expand_h_cc_i(gr_chunks_to_symbols_XX bf bc sf sc if ic)
+expand_h_cc_i(gr_unpacked_to_packed_XX bb ss ii)
+expand_h_cc_i(gr_packed_to_unpacked_XX bb ss ii)
+expand_h_cc_i(gr_xor_XX bb ss ii)
+expand_h_cc_i(gr_and_XX bb ss ii)
+expand_h_cc_i(gr_and_const_XX bb ss ii)
+expand_h_cc_i(gr_or_XX bb ss ii)
+expand_h_cc_i(gr_not_XX bb ss ii)
+expand_h_cc_i(gr_sample_and_hold_XX bb ss ii ff)
+expand_h_cc_i(gr_argmax_XX fs is ss)
+expand_h_cc_i(gr_max_XX ff ii ss)
+expand_h_cc_i(gr_peak_detector_XX fb ib sb)
+
+add_custom_target(gengen_generated DEPENDS
+ ${generated_gengen_includes}
+ ${generated_gengen_swigs}
+)
+
+########################################################################
+# Create the master gengen swig include files
+########################################################################
+file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/gengen_generated.py "
+import os, sys
+if __name__ == '__main__':
+ incs = sys.argv[2:]
+ h_incs = '\\n'.join(['#include<%s.h>'%(os.path.splitext(os.path.basename(inc))[0]) for inc in incs])
+ i_incs = '\\n'.join(['%%include<%s>'%(os.path.basename(inc)) for inc in incs])
+ open(sys.argv[1], 'w').write('''
+//
+// This file is machine generated. All edits will be overwritten
+//
+
+%%{
+%s
+%%}
+
+%s
+
+'''%(h_incs, i_incs))
+")
+
+add_custom_command(
+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/gengen_generated.i
+ DEPENDS ${generated_gengen_swigs}
+ COMMAND ${PYTHON_EXECUTABLE} ${PYTHON_DASH_B}
+ ${CMAKE_CURRENT_BINARY_DIR}/gengen_generated.py
+ ${CMAKE_CURRENT_BINARY_DIR}/gengen_generated.i
+ ${generated_gengen_swigs}
+)
+
+add_custom_target(gengen_generated_index DEPENDS
+ ${CMAKE_CURRENT_BINARY_DIR}/gengen_generated.i
+)
+
+########################################################################
+# Handle the generated sources + a few non-generated ones
+########################################################################
+list(APPEND gnuradio_core_sources
+ ${generated_gengen_sources}
+)
+
+install(FILES
+ ${generated_gengen_includes}
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_endianness.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_noise_type.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_sig_source_waveform.h
+ DESTINATION ${GR_INCLUDE_DIR}/gnuradio
+ COMPONENT "core_devel"
+)
+
+if(ENABLE_PYTHON)
+ install(FILES
+ ${generated_gengen_swigs}
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_endianness.i
+ ${CMAKE_CURRENT_SOURCE_DIR}/gengen.i
+ ${CMAKE_CURRENT_BINARY_DIR}/gengen_generated.i
+ DESTINATION ${GR_INCLUDE_DIR}/gnuradio/swig
+ COMPONENT "core_swig"
+ )
+endif(ENABLE_PYTHON)
diff --git a/gnuradio-core/src/lib/gengen/gr_add_XX.h.t b/gnuradio-core/src/lib/gengen/gr_add_XX.h.t
index 91dd9196a..f0e857abf 100644
--- a/gnuradio-core/src/lib/gengen/gr_add_XX.h.t
+++ b/gnuradio-core/src/lib/gengen/gr_add_XX.h.t
@@ -25,12 +25,13 @@
#ifndef @GUARD_NAME@
#define @GUARD_NAME@
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class @NAME@;
typedef boost::shared_ptr<@NAME@> @SPTR_NAME@;
-@SPTR_NAME@ gr_make_@BASE_NAME@ (size_t vlen = 1);
+GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (size_t vlen = 1);
/*!
* \brief output = sum (input_0, input_1, ...)
@@ -38,9 +39,9 @@ typedef boost::shared_ptr<@NAME@> @SPTR_NAME@;
*
* Add across all input streams.
*/
-class @NAME@ : public gr_sync_block
+class GR_CORE_API @NAME@ : public gr_sync_block
{
- friend @SPTR_NAME@ gr_make_@BASE_NAME@ (size_t vlen);
+ friend GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (size_t vlen);
@NAME@ (size_t vlen);
diff --git a/gnuradio-core/src/lib/gengen/gr_add_const_XX.h.t b/gnuradio-core/src/lib/gengen/gr_add_const_XX.h.t
index 8e9884104..5b46d0f89 100644
--- a/gnuradio-core/src/lib/gengen/gr_add_const_XX.h.t
+++ b/gnuradio-core/src/lib/gengen/gr_add_const_XX.h.t
@@ -25,20 +25,21 @@
#ifndef @GUARD_NAME@
#define @GUARD_NAME@
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class @NAME@;
typedef boost::shared_ptr<@NAME@> @SPTR_NAME@;
-@SPTR_NAME@ gr_make_@BASE_NAME@ (@O_TYPE@ k);
+GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (@O_TYPE@ k);
/*!
* \brief output = input + constant
* \ingroup math_blk
*/
-class @NAME@ : public gr_sync_block
+class GR_CORE_API @NAME@ : public gr_sync_block
{
- friend @SPTR_NAME@ gr_make_@BASE_NAME@ (@O_TYPE@ k);
+ friend GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (@O_TYPE@ k);
@O_TYPE@ d_k; // the constant
@NAME@ (@O_TYPE@ k);
diff --git a/gnuradio-core/src/lib/gengen/gr_add_const_vXX.h.t b/gnuradio-core/src/lib/gengen/gr_add_const_vXX.h.t
index 574fc686c..9d986e960 100755..100644
--- a/gnuradio-core/src/lib/gengen/gr_add_const_vXX.h.t
+++ b/gnuradio-core/src/lib/gengen/gr_add_const_vXX.h.t
@@ -25,20 +25,21 @@
#ifndef @GUARD_NAME@
#define @GUARD_NAME@
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class @NAME@;
typedef boost::shared_ptr<@NAME@> @SPTR_NAME@;
-@SPTR_NAME@ gr_make_@BASE_NAME@ (const std::vector<@I_TYPE@> &k);
+GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (const std::vector<@I_TYPE@> &k);
/*!
* \brief output vector = input vector + constant vector
* \ingroup math_blk
*/
-class @NAME@ : public gr_sync_block
+class GR_CORE_API @NAME@ : public gr_sync_block
{
- friend @SPTR_NAME@ gr_make_@BASE_NAME@ (const std::vector<@I_TYPE@> &k);
+ friend GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (const std::vector<@I_TYPE@> &k);
std::vector<@I_TYPE@> d_k; // the constant
@NAME@ (const std::vector<@I_TYPE@> &k);
diff --git a/gnuradio-core/src/lib/gengen/gr_and_XX.h.t b/gnuradio-core/src/lib/gengen/gr_and_XX.h.t
index 6152942dd..dbb225907 100644
--- a/gnuradio-core/src/lib/gengen/gr_and_XX.h.t
+++ b/gnuradio-core/src/lib/gengen/gr_and_XX.h.t
@@ -25,12 +25,13 @@
#ifndef @GUARD_NAME@
#define @GUARD_NAME@
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class @NAME@;
typedef boost::shared_ptr<@NAME@> @SPTR_NAME@;
-@SPTR_NAME@ gr_make_@BASE_NAME@ ();
+GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ ();
/*!
* \brief output = input_0 & input_1 & , ... & input_N)
@@ -38,9 +39,9 @@ typedef boost::shared_ptr<@NAME@> @SPTR_NAME@;
*
* bitwise boolean and across all input streams.
*/
-class @NAME@ : public gr_sync_block
+class GR_CORE_API @NAME@ : public gr_sync_block
{
- friend @SPTR_NAME@ gr_make_@BASE_NAME@ ();
+ friend GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ ();
@NAME@ ();
diff --git a/gnuradio-core/src/lib/gengen/gr_and_const_XX.h.t b/gnuradio-core/src/lib/gengen/gr_and_const_XX.h.t
index 3119611f1..ceffc3066 100644
--- a/gnuradio-core/src/lib/gengen/gr_and_const_XX.h.t
+++ b/gnuradio-core/src/lib/gengen/gr_and_const_XX.h.t
@@ -25,12 +25,13 @@
#ifndef @GUARD_NAME@
#define @GUARD_NAME@
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class @NAME@;
typedef boost::shared_ptr<@NAME@> @SPTR_NAME@;
-@SPTR_NAME@ gr_make_@BASE_NAME@ (@O_TYPE@ k);
+GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (@O_TYPE@ k);
/*!
* \brief output_N = input_N & value
@@ -38,9 +39,9 @@ typedef boost::shared_ptr<@NAME@> @SPTR_NAME@;
*
* bitwise boolean and of const to the data stream.
*/
-class @NAME@ : public gr_sync_block
+class GR_CORE_API @NAME@ : public gr_sync_block
{
- friend @SPTR_NAME@ gr_make_@BASE_NAME@ (@O_TYPE@ k);
+ friend GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (@O_TYPE@ k);
@O_TYPE@ d_k; // the constant
@NAME@ (@O_TYPE@ k);
diff --git a/gnuradio-core/src/lib/gengen/gr_argmax_XX.h.t b/gnuradio-core/src/lib/gengen/gr_argmax_XX.h.t
index 2aba94d71..437fa5735 100644
--- a/gnuradio-core/src/lib/gengen/gr_argmax_XX.h.t
+++ b/gnuradio-core/src/lib/gengen/gr_argmax_XX.h.t
@@ -25,17 +25,18 @@
#ifndef @GUARD_NAME@
#define @GUARD_NAME@
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class @NAME@;
typedef boost::shared_ptr<@NAME@> @SPTR_NAME@;
-@SPTR_NAME@ gr_make_@BASE_NAME@ (size_t vlen);
+GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (size_t vlen);
-class @NAME@ : public gr_sync_block
+class GR_CORE_API @NAME@ : public gr_sync_block
{
- friend @SPTR_NAME@ gr_make_@BASE_NAME@ (size_t vlen);
+ friend GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (size_t vlen);
@NAME@ (size_t vlen);
size_t d_vlen;
diff --git a/gnuradio-core/src/lib/gengen/gr_chunks_to_symbols_XX.h.t b/gnuradio-core/src/lib/gengen/gr_chunks_to_symbols_XX.h.t
index a5313d07d..c1393df3f 100644
--- a/gnuradio-core/src/lib/gengen/gr_chunks_to_symbols_XX.h.t
+++ b/gnuradio-core/src/lib/gengen/gr_chunks_to_symbols_XX.h.t
@@ -25,12 +25,13 @@
#ifndef @GUARD_NAME@
#define @GUARD_NAME@
+#include <gr_core_api.h>
#include <gr_sync_interpolator.h>
class @NAME@;
typedef boost::shared_ptr<@NAME@> @SPTR_NAME@;
-@SPTR_NAME@ gr_make_@BASE_NAME@ (const std::vector<@O_TYPE@> &symbol_table, const int D = 1);
+GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (const std::vector<@O_TYPE@> &symbol_table, const int D = 1);
/*!
* \brief Map a stream of symbol indexes (unpacked bytes or shorts) to stream of float or complex onstellation points.in \p D dimensions (\p D = 1 by default)
@@ -51,9 +52,9 @@ typedef boost::shared_ptr<@NAME@> @SPTR_NAME@;
* \sa gr_chunks_to_symbols_sf, gr_chunks_to_symbols_sc.
*/
-class @NAME@ : public gr_sync_interpolator
+class GR_CORE_API @NAME@ : public gr_sync_interpolator
{
- friend @SPTR_NAME@ gr_make_@BASE_NAME@ (const std::vector<@O_TYPE@> &symbol_table, const int D);
+ friend GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (const std::vector<@O_TYPE@> &symbol_table, const int D);
int d_D;
std::vector<@O_TYPE@> d_symbol_table;
diff --git a/gnuradio-core/src/lib/gengen/gr_divide_XX.h.t b/gnuradio-core/src/lib/gengen/gr_divide_XX.h.t
index a59497c8c..ebe5ff5e5 100644
--- a/gnuradio-core/src/lib/gengen/gr_divide_XX.h.t
+++ b/gnuradio-core/src/lib/gengen/gr_divide_XX.h.t
@@ -25,12 +25,13 @@
#ifndef @GUARD_NAME@
#define @GUARD_NAME@
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class @NAME@;
typedef boost::shared_ptr<@NAME@> @SPTR_NAME@;
-@SPTR_NAME@ gr_make_@BASE_NAME@ (size_t vlen = 1);
+GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (size_t vlen = 1);
/*!
* \brief output = input_0 / input_1 / input_x ...)
@@ -38,9 +39,9 @@ typedef boost::shared_ptr<@NAME@> @SPTR_NAME@;
*
* Divide across all input streams.
*/
-class @NAME@ : public gr_sync_block
+class GR_CORE_API @NAME@ : public gr_sync_block
{
- friend @SPTR_NAME@ gr_make_@BASE_NAME@ (size_t vlen);
+ friend GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (size_t vlen);
@NAME@ (size_t vlen);
diff --git a/gnuradio-core/src/lib/gengen/gr_integrate_XX.h.t b/gnuradio-core/src/lib/gengen/gr_integrate_XX.h.t
index 01061ff21..c1d81000f 100644
--- a/gnuradio-core/src/lib/gengen/gr_integrate_XX.h.t
+++ b/gnuradio-core/src/lib/gengen/gr_integrate_XX.h.t
@@ -25,13 +25,14 @@
#ifndef @GUARD_NAME@
#define @GUARD_NAME@
+#include <gr_core_api.h>
#include <gr_sync_decimator.h>
class @NAME@;
typedef boost::shared_ptr<@NAME@> @SPTR_NAME@;
-@SPTR_NAME@ gr_make_@BASE_NAME@ (int decim);
+GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (int decim);
/*!
* \brief output = sum(input[0]...input[n])
@@ -39,10 +40,10 @@ typedef boost::shared_ptr<@NAME@> @SPTR_NAME@;
*
* Integrate successive samples in input stream and decimate
*/
-class @NAME@ : public gr_sync_decimator
+class GR_CORE_API @NAME@ : public gr_sync_decimator
{
private:
- friend @SPTR_NAME@ gr_make_@BASE_NAME@(int decim);
+ friend GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@(int decim);
@NAME@ (int decim);
diff --git a/gnuradio-core/src/lib/gengen/gr_max_XX.h.t b/gnuradio-core/src/lib/gengen/gr_max_XX.h.t
index 2aba94d71..437fa5735 100644
--- a/gnuradio-core/src/lib/gengen/gr_max_XX.h.t
+++ b/gnuradio-core/src/lib/gengen/gr_max_XX.h.t
@@ -25,17 +25,18 @@
#ifndef @GUARD_NAME@
#define @GUARD_NAME@
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class @NAME@;
typedef boost::shared_ptr<@NAME@> @SPTR_NAME@;
-@SPTR_NAME@ gr_make_@BASE_NAME@ (size_t vlen);
+GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (size_t vlen);
-class @NAME@ : public gr_sync_block
+class GR_CORE_API @NAME@ : public gr_sync_block
{
- friend @SPTR_NAME@ gr_make_@BASE_NAME@ (size_t vlen);
+ friend GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (size_t vlen);
@NAME@ (size_t vlen);
size_t d_vlen;
diff --git a/gnuradio-core/src/lib/gengen/gr_moving_average_XX.h.t b/gnuradio-core/src/lib/gengen/gr_moving_average_XX.h.t
index 2441ca65b..7e228abb6 100644
--- a/gnuradio-core/src/lib/gengen/gr_moving_average_XX.h.t
+++ b/gnuradio-core/src/lib/gengen/gr_moving_average_XX.h.t
@@ -25,13 +25,14 @@
#ifndef @GUARD_NAME@
#define @GUARD_NAME@
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class @NAME@;
typedef boost::shared_ptr<@NAME@> @SPTR_NAME@;
-@SPTR_NAME@ gr_make_@BASE_NAME@ (int length, @O_TYPE@ scale, int max_iter = 4096);
+GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (int length, @O_TYPE@ scale, int max_iter = 4096);
/*!
* \brief output is the moving sum of the last N samples, scaled by the scale factor
@@ -40,10 +41,10 @@ typedef boost::shared_ptr<@NAME@> @SPTR_NAME@;
* max_iter limits how long we go without flushing the accumulator
* This is necessary to avoid numerical instability for float and complex.
*/
-class @NAME@ : public gr_sync_block
+class GR_CORE_API @NAME@ : public gr_sync_block
{
private:
- friend @SPTR_NAME@ gr_make_@BASE_NAME@(int length, @O_TYPE@ scale, int max_iter);
+ friend GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@(int length, @O_TYPE@ scale, int max_iter);
@NAME@ (int length, @O_TYPE@ scale, int max_iter = 4096);
diff --git a/gnuradio-core/src/lib/gengen/gr_multiply_XX.h.t b/gnuradio-core/src/lib/gengen/gr_multiply_XX.h.t
index cb4a0273d..1feb16202 100644
--- a/gnuradio-core/src/lib/gengen/gr_multiply_XX.h.t
+++ b/gnuradio-core/src/lib/gengen/gr_multiply_XX.h.t
@@ -25,12 +25,13 @@
#ifndef @GUARD_NAME@
#define @GUARD_NAME@
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class @NAME@;
typedef boost::shared_ptr<@NAME@> @SPTR_NAME@;
-@SPTR_NAME@ gr_make_@BASE_NAME@ (size_t vlen = 1);
+GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (size_t vlen = 1);
/*!
* \brief output = prod (input_0, input_1, ...)
@@ -38,9 +39,9 @@ typedef boost::shared_ptr<@NAME@> @SPTR_NAME@;
*
* Multiply across all input streams.
*/
-class @NAME@ : public gr_sync_block
+class GR_CORE_API @NAME@ : public gr_sync_block
{
- friend @SPTR_NAME@ gr_make_@BASE_NAME@ (size_t vlen);
+ friend GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (size_t vlen);
@NAME@ (size_t vlen);
diff --git a/gnuradio-core/src/lib/gengen/gr_multiply_const_XX.h.t b/gnuradio-core/src/lib/gengen/gr_multiply_const_XX.h.t
index 0c10185cc..6ff6f74a9 100644
--- a/gnuradio-core/src/lib/gengen/gr_multiply_const_XX.h.t
+++ b/gnuradio-core/src/lib/gengen/gr_multiply_const_XX.h.t
@@ -25,20 +25,21 @@
#ifndef @GUARD_NAME@
#define @GUARD_NAME@
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class @NAME@;
typedef boost::shared_ptr<@NAME@> @SPTR_NAME@;
-@SPTR_NAME@ gr_make_@BASE_NAME@ (@O_TYPE@ k);
+GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (@O_TYPE@ k);
/*!
* \brief output = input * constant
* \ingroup math_blk
*/
-class @NAME@ : public gr_sync_block
+class GR_CORE_API @NAME@ : public gr_sync_block
{
- friend @SPTR_NAME@ gr_make_@BASE_NAME@ (@O_TYPE@ k);
+ friend GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (@O_TYPE@ k);
@O_TYPE@ d_k; // the constant
@NAME@ (@O_TYPE@ k);
diff --git a/gnuradio-core/src/lib/gengen/gr_multiply_const_vXX.h.t b/gnuradio-core/src/lib/gengen/gr_multiply_const_vXX.h.t
index 81e781895..f696ab7b1 100755..100644
--- a/gnuradio-core/src/lib/gengen/gr_multiply_const_vXX.h.t
+++ b/gnuradio-core/src/lib/gengen/gr_multiply_const_vXX.h.t
@@ -25,20 +25,21 @@
#ifndef @GUARD_NAME@
#define @GUARD_NAME@
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class @NAME@;
typedef boost::shared_ptr<@NAME@> @SPTR_NAME@;
-@SPTR_NAME@ gr_make_@BASE_NAME@ (const std::vector<@I_TYPE@> &k);
+GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (const std::vector<@I_TYPE@> &k);
/*!
* \brief output vector = input vector * constant vector (element-wise)
* \ingroup math_blk
*/
-class @NAME@ : public gr_sync_block
+class GR_CORE_API @NAME@ : public gr_sync_block
{
- friend @SPTR_NAME@ gr_make_@BASE_NAME@ (const std::vector<@I_TYPE@> &k);
+ friend GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (const std::vector<@I_TYPE@> &k);
std::vector<@I_TYPE@> d_k; // the constant
@NAME@ (const std::vector<@I_TYPE@> &k);
diff --git a/gnuradio-core/src/lib/gengen/gr_mute_XX.h.t b/gnuradio-core/src/lib/gengen/gr_mute_XX.h.t
index 5007787c4..ccf966e53 100644
--- a/gnuradio-core/src/lib/gengen/gr_mute_XX.h.t
+++ b/gnuradio-core/src/lib/gengen/gr_mute_XX.h.t
@@ -25,20 +25,21 @@
#ifndef @GUARD_NAME@
#define @GUARD_NAME@
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class @NAME@;
typedef boost::shared_ptr<@NAME@> @SPTR_NAME@;
-@SPTR_NAME@ gr_make_@BASE_NAME@ (bool mute=false);
+GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (bool mute=false);
/*!
* \brief output = input or zero if muted.
* \ingroup level_blk
*/
-class @NAME@ : public gr_sync_block
+class GR_CORE_API @NAME@ : public gr_sync_block
{
- friend @SPTR_NAME@ gr_make_@BASE_NAME@ (bool mute);
+ friend GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (bool mute);
bool d_mute;
@NAME@ (bool mute);
diff --git a/gnuradio-core/src/lib/gengen/gr_noise_source_X.h.t b/gnuradio-core/src/lib/gengen/gr_noise_source_X.h.t
index a920ce04a..9dd92c8f5 100644
--- a/gnuradio-core/src/lib/gengen/gr_noise_source_X.h.t
+++ b/gnuradio-core/src/lib/gengen/gr_noise_source_X.h.t
@@ -25,6 +25,7 @@
#ifndef @GUARD_NAME@
#define @GUARD_NAME@
+#include <gr_core_api.h>
#include <gr_sync_block.h>
#include <gr_noise_type.h>
#include <gr_random.h>
@@ -33,15 +34,15 @@
class @NAME@;
typedef boost::shared_ptr<@NAME@> @NAME@_sptr;
-@NAME@_sptr
+GR_CORE_API @NAME@_sptr
gr_make_@BASE_NAME@ (gr_noise_type_t type, float ampl, long seed = 3021);
/*!
* \brief random number source
* \ingroup source_blk
*/
-class @NAME@ : public gr_sync_block {
- friend @NAME@_sptr
+class GR_CORE_API @NAME@ : public gr_sync_block {
+ friend GR_CORE_API @NAME@_sptr
gr_make_@BASE_NAME@ (gr_noise_type_t type, float ampl, long seed);
gr_noise_type_t d_type;
diff --git a/gnuradio-core/src/lib/gengen/gr_not_XX.h.t b/gnuradio-core/src/lib/gengen/gr_not_XX.h.t
index cf8d96ede..b946ffc42 100644
--- a/gnuradio-core/src/lib/gengen/gr_not_XX.h.t
+++ b/gnuradio-core/src/lib/gengen/gr_not_XX.h.t
@@ -25,12 +25,13 @@
#ifndef @GUARD_NAME@
#define @GUARD_NAME@
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class @NAME@;
typedef boost::shared_ptr<@NAME@> @SPTR_NAME@;
-@SPTR_NAME@ gr_make_@BASE_NAME@ ();
+GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ ();
/*!
* \brief output = ~input_0
@@ -38,9 +39,9 @@ typedef boost::shared_ptr<@NAME@> @SPTR_NAME@;
*
* bitwise boolean not across input stream.
*/
-class @NAME@ : public gr_sync_block
+class GR_CORE_API @NAME@ : public gr_sync_block
{
- friend @SPTR_NAME@ gr_make_@BASE_NAME@ ();
+ friend GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ ();
@NAME@ ();
diff --git a/gnuradio-core/src/lib/gengen/gr_or_XX.h.t b/gnuradio-core/src/lib/gengen/gr_or_XX.h.t
index 3e02d9b1a..8d1fea951 100644
--- a/gnuradio-core/src/lib/gengen/gr_or_XX.h.t
+++ b/gnuradio-core/src/lib/gengen/gr_or_XX.h.t
@@ -25,12 +25,13 @@
#ifndef @GUARD_NAME@
#define @GUARD_NAME@
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class @NAME@;
typedef boost::shared_ptr<@NAME@> @SPTR_NAME@;
-@SPTR_NAME@ gr_make_@BASE_NAME@ ();
+GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ ();
/*!
* \brief output = input_0 | input_1 | , ... | input_N)
@@ -38,9 +39,9 @@ typedef boost::shared_ptr<@NAME@> @SPTR_NAME@;
*
* bitwise boolean or across all input streams.
*/
-class @NAME@ : public gr_sync_block
+class GR_CORE_API @NAME@ : public gr_sync_block
{
- friend @SPTR_NAME@ gr_make_@BASE_NAME@ ();
+ friend GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ ();
@NAME@ ();
diff --git a/gnuradio-core/src/lib/gengen/gr_packed_to_unpacked_XX.h.t b/gnuradio-core/src/lib/gengen/gr_packed_to_unpacked_XX.h.t
index 803098c0d..77cd2b470 100644
--- a/gnuradio-core/src/lib/gengen/gr_packed_to_unpacked_XX.h.t
+++ b/gnuradio-core/src/lib/gengen/gr_packed_to_unpacked_XX.h.t
@@ -25,13 +25,14 @@
#ifndef @GUARD_NAME@
#define @GUARD_NAME@
+#include <gr_core_api.h>
#include <gr_block.h>
#include <gr_endianness.h>
class @NAME@;
typedef boost::shared_ptr<@NAME@> @SPTR_NAME@;
-@SPTR_NAME@
+GR_CORE_API @SPTR_NAME@
gr_make_@BASE_NAME@ (unsigned int bits_per_chunk, gr_endianness_t endianness);
/*!
@@ -59,9 +60,9 @@ gr_make_@BASE_NAME@ (unsigned int bits_per_chunk, gr_endianness_t endianness);
* \sa gr_chunks_to_symbols_sf, gr_chunks_to_symbols_sc.
*/
-class @NAME@ : public gr_block
+class GR_CORE_API @NAME@ : public gr_block
{
- friend @SPTR_NAME@
+ friend GR_CORE_API @SPTR_NAME@
gr_make_@BASE_NAME@ (unsigned int bits_per_chunk, gr_endianness_t endianness);
@NAME@ (unsigned int bits_per_chunk, gr_endianness_t endianness);
diff --git a/gnuradio-core/src/lib/gengen/gr_peak_detector_XX.h.t b/gnuradio-core/src/lib/gengen/gr_peak_detector_XX.h.t
index d6a8caf76..d6d1e5e51 100644
--- a/gnuradio-core/src/lib/gengen/gr_peak_detector_XX.h.t
+++ b/gnuradio-core/src/lib/gengen/gr_peak_detector_XX.h.t
@@ -25,12 +25,13 @@
#ifndef @GUARD_NAME@
#define @GUARD_NAME@
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class @NAME@;
typedef boost::shared_ptr<@NAME@> @SPTR_NAME@;
-@SPTR_NAME@ gr_make_@BASE_NAME@ (float threshold_factor_rise = 0.25,
+GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (float threshold_factor_rise = 0.25,
float threshold_factor_fall = 0.40,
int look_ahead = 10,
float alpha = 0.001);
@@ -57,9 +58,9 @@ typedef boost::shared_ptr<@NAME@> @SPTR_NAME@;
* This look-ahead range.
* \param alpha The gain value of a moving average filter
*/
-class @NAME@ : public gr_sync_block
+class GR_CORE_API @NAME@ : public gr_sync_block
{
- friend @SPTR_NAME@ gr_make_@BASE_NAME@ (float threshold_factor_rise,
+ friend GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (float threshold_factor_rise,
float threshold_factor_fall,
int look_ahead, float alpha);
diff --git a/gnuradio-core/src/lib/gengen/gr_sample_and_hold_XX.h.t b/gnuradio-core/src/lib/gengen/gr_sample_and_hold_XX.h.t
index b96487326..328c47106 100644
--- a/gnuradio-core/src/lib/gengen/gr_sample_and_hold_XX.h.t
+++ b/gnuradio-core/src/lib/gengen/gr_sample_and_hold_XX.h.t
@@ -25,12 +25,13 @@
#ifndef @GUARD_NAME@
#define @GUARD_NAME@
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class @NAME@;
typedef boost::shared_ptr<@NAME@> @SPTR_NAME@;
-@SPTR_NAME@ gr_make_@BASE_NAME@ ();
+GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ ();
/*!
* \brief sample and hold circuit
@@ -39,9 +40,9 @@ typedef boost::shared_ptr<@NAME@> @SPTR_NAME@;
* Samples the data stream (input stream 0) and holds the value
* if the control signal is 1 (intput stream 1).
*/
-class @NAME@ : public gr_sync_block
+class GR_CORE_API @NAME@ : public gr_sync_block
{
- friend @SPTR_NAME@ gr_make_@BASE_NAME@ ();
+ friend GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ ();
@NAME@ ();
diff --git a/gnuradio-core/src/lib/gengen/gr_sig_source_X.h.t b/gnuradio-core/src/lib/gengen/gr_sig_source_X.h.t
index 9906d16ab..3df723868 100644
--- a/gnuradio-core/src/lib/gengen/gr_sig_source_X.h.t
+++ b/gnuradio-core/src/lib/gengen/gr_sig_source_X.h.t
@@ -25,6 +25,7 @@
#ifndef @GUARD_NAME@
#define @GUARD_NAME@
+#include <gr_core_api.h>
#include <gr_sync_block.h>
#include <gr_sig_source_waveform.h>
#include <gr_fxpt_nco.h>
@@ -37,8 +38,8 @@ typedef boost::shared_ptr<@NAME@> @NAME@_sptr;
* \ingroup source_blk
*/
-class @NAME@ : public gr_sync_block {
- friend @NAME@_sptr
+class GR_CORE_API @NAME@ : public gr_sync_block {
+ friend GR_CORE_API @NAME@_sptr
gr_make_@BASE_NAME@ (double sampling_freq, gr_waveform_t waveform,
double frequency, double ampl, @TYPE@ offset);
@@ -73,7 +74,7 @@ class @NAME@ : public gr_sync_block {
void set_offset (@TYPE@ offset);
};
-@NAME@_sptr
+GR_CORE_API @NAME@_sptr
gr_make_@BASE_NAME@ (double sampling_freq, gr_waveform_t waveform,
double wave_freq, double ampl, @TYPE@ offset = 0);
diff --git a/gnuradio-core/src/lib/gengen/gr_sub_XX.h.t b/gnuradio-core/src/lib/gengen/gr_sub_XX.h.t
index a58d1f3b8..4c988945e 100644
--- a/gnuradio-core/src/lib/gengen/gr_sub_XX.h.t
+++ b/gnuradio-core/src/lib/gengen/gr_sub_XX.h.t
@@ -25,12 +25,13 @@
#ifndef @GUARD_NAME@
#define @GUARD_NAME@
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class @NAME@;
typedef boost::shared_ptr<@NAME@> @SPTR_NAME@;
-@SPTR_NAME@ gr_make_@BASE_NAME@ (size_t vlen = 1);
+GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (size_t vlen = 1);
/*!
* \brief output = input_0 - input_1 - ...)
@@ -38,9 +39,9 @@ typedef boost::shared_ptr<@NAME@> @SPTR_NAME@;
*
* Subtract across all input streams.
*/
-class @NAME@ : public gr_sync_block
+class GR_CORE_API @NAME@ : public gr_sync_block
{
- friend @SPTR_NAME@ gr_make_@BASE_NAME@ (size_t vlen);
+ friend GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ (size_t vlen);
@NAME@ (size_t vlen);
diff --git a/gnuradio-core/src/lib/gengen/gr_unpacked_to_packed_XX.h.t b/gnuradio-core/src/lib/gengen/gr_unpacked_to_packed_XX.h.t
index 42d201093..a7db84c5c 100644
--- a/gnuradio-core/src/lib/gengen/gr_unpacked_to_packed_XX.h.t
+++ b/gnuradio-core/src/lib/gengen/gr_unpacked_to_packed_XX.h.t
@@ -25,13 +25,14 @@
#ifndef @GUARD_NAME@
#define @GUARD_NAME@
+#include <gr_core_api.h>
#include <gr_block.h>
#include <gr_endianness.h>
class @NAME@;
typedef boost::shared_ptr<@NAME@> @NAME@_sptr;
-@SPTR_NAME@
+GR_CORE_API @SPTR_NAME@
gr_make_@BASE_NAME@ (unsigned int bits_per_chunk, gr_endianness_t endianness);
/*!
@@ -57,9 +58,9 @@ gr_make_@BASE_NAME@ (unsigned int bits_per_chunk, gr_endianness_t endianness);
* \sa gr_chunks_to_symbols_bf, gr_chunks_to_symbols_bc.
* \sa gr_chunks_to_symbols_sf, gr_chunks_to_symbols_sc.
*/
-class @NAME@ : public gr_block
+class GR_CORE_API @NAME@ : public gr_block
{
- friend @SPTR_NAME@
+ friend GR_CORE_API @SPTR_NAME@
gr_make_@BASE_NAME@ (unsigned int bits_per_chunk, gr_endianness_t endianness);
@NAME@ (unsigned int bits_per_chunk, gr_endianness_t endianness);
diff --git a/gnuradio-core/src/lib/gengen/gr_vector_sink_X.h.t b/gnuradio-core/src/lib/gengen/gr_vector_sink_X.h.t
index 7ba5ee9e9..475cc0112 100644
--- a/gnuradio-core/src/lib/gengen/gr_vector_sink_X.h.t
+++ b/gnuradio-core/src/lib/gengen/gr_vector_sink_X.h.t
@@ -25,12 +25,13 @@
#ifndef @GUARD_NAME@
#define @GUARD_NAME@
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class @NAME@;
typedef boost::shared_ptr<@NAME@> @NAME@_sptr;
-@NAME@_sptr
+GR_CORE_API @NAME@_sptr
gr_make_@BASE_NAME@ (int vlen = 1);
@@ -39,8 +40,8 @@ gr_make_@BASE_NAME@ (int vlen = 1);
* \ingroup sink_blk
*/
-class @NAME@ : public gr_sync_block {
- friend @NAME@_sptr gr_make_@BASE_NAME@ (int vlen);
+class GR_CORE_API @NAME@ : public gr_sync_block {
+ friend GR_CORE_API @NAME@_sptr gr_make_@BASE_NAME@ (int vlen);
std::vector<@TYPE@> d_data;
int d_vlen;
@NAME@ (int vlen);
diff --git a/gnuradio-core/src/lib/gengen/gr_vector_source_X.h.t b/gnuradio-core/src/lib/gengen/gr_vector_source_X.h.t
index 63edcb61c..fbab3effb 100644
--- a/gnuradio-core/src/lib/gengen/gr_vector_source_X.h.t
+++ b/gnuradio-core/src/lib/gengen/gr_vector_source_X.h.t
@@ -25,9 +25,10 @@
#ifndef @GUARD_NAME@
#define @GUARD_NAME@
+#include <gr_core_api.h>
#include <gr_sync_block.h>
-class @NAME@;
+class GR_CORE_API @NAME@;
typedef boost::shared_ptr<@NAME@> @NAME@_sptr;
/*!
@@ -36,7 +37,7 @@ typedef boost::shared_ptr<@NAME@> @NAME@_sptr;
*/
class @NAME@ : public gr_sync_block {
- friend @NAME@_sptr
+ friend GR_CORE_API @NAME@_sptr
gr_make_@BASE_NAME@ (const std::vector<@TYPE@> &data, bool repeat, int vlen);
std::vector<@TYPE@> d_data;
@@ -53,7 +54,7 @@ class @NAME@ : public gr_sync_block {
gr_vector_void_star &output_items);
};
-@NAME@_sptr
+GR_CORE_API @NAME@_sptr
gr_make_@BASE_NAME@ (const std::vector<@TYPE@> &data, bool repeat = false, int vlen = 1);
#endif
diff --git a/gnuradio-core/src/lib/gengen/gr_xor_XX.h.t b/gnuradio-core/src/lib/gengen/gr_xor_XX.h.t
index 33d729450..b2e1a68c8 100644
--- a/gnuradio-core/src/lib/gengen/gr_xor_XX.h.t
+++ b/gnuradio-core/src/lib/gengen/gr_xor_XX.h.t
@@ -25,12 +25,13 @@
#ifndef @GUARD_NAME@
#define @GUARD_NAME@
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class @NAME@;
typedef boost::shared_ptr<@NAME@> @SPTR_NAME@;
-@SPTR_NAME@ gr_make_@BASE_NAME@ ();
+GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ ();
/*!
* \brief output = input_0 ^ input_1 ^ , ... ^ input_N)
@@ -38,9 +39,9 @@ typedef boost::shared_ptr<@NAME@> @SPTR_NAME@;
*
* bitwise boolean xor across all input streams.
*/
-class @NAME@ : public gr_sync_block
+class GR_CORE_API @NAME@ : public gr_sync_block
{
- friend @SPTR_NAME@ gr_make_@BASE_NAME@ ();
+ friend GR_CORE_API @SPTR_NAME@ gr_make_@BASE_NAME@ ();
@NAME@ ();
diff --git a/gnuradio-core/src/lib/hier/CMakeLists.txt b/gnuradio-core/src/lib/hier/CMakeLists.txt
new file mode 100644
index 000000000..192dd5939
--- /dev/null
+++ b/gnuradio-core/src/lib/hier/CMakeLists.txt
@@ -0,0 +1,42 @@
+# Copyright 2010-2011 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+
+########################################################################
+# This file included, use CMake directory variables
+########################################################################
+include_directories(${CMAKE_CURRENT_SOURCE_DIR})
+
+list(APPEND gnuradio_core_sources
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_channel_model.cc
+)
+
+install(FILES
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_channel_model.h
+ DESTINATION ${GR_INCLUDE_DIR}/gnuradio
+ COMPONENT "core_devel"
+)
+
+if(ENABLE_PYTHON)
+ install(FILES
+ ${CMAKE_CURRENT_SOURCE_DIR}/hier.i
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_channel_model.i
+ DESTINATION ${GR_INCLUDE_DIR}/gnuradio/swig
+ COMPONENT "core_swig"
+ )
+endif(ENABLE_PYTHON)
diff --git a/gnuradio-core/src/lib/hier/gr_channel_model.h b/gnuradio-core/src/lib/hier/gr_channel_model.h
index 116b5dc14..07c0c76b6 100644
--- a/gnuradio-core/src/lib/hier/gr_channel_model.h
+++ b/gnuradio-core/src/lib/hier/gr_channel_model.h
@@ -19,6 +19,7 @@
* Boston, MA 02110-1301, USA.
*/
+#include <gr_core_api.h>
#include <gr_top_block.h>
#include <gr_fractional_interpolator_cc.h>
#include <gr_sig_source_c.h>
@@ -31,7 +32,7 @@ class gr_channel_model;
typedef boost::shared_ptr<gr_channel_model> gr_channel_model_sptr;
-gr_channel_model_sptr gr_make_channel_model(double noise_voltage=0.0,
+GR_CORE_API gr_channel_model_sptr gr_make_channel_model(double noise_voltage=0.0,
double frequency_offset=0.0,
double epsilon=1.0,
const std::vector<gr_complex> &taps=std::vector<gr_complex>(1, 1),
@@ -41,7 +42,7 @@ gr_channel_model_sptr gr_make_channel_model(double noise_voltage=0.0,
* \brief channel simulator
* \ingroup misc_blk
*/
-class gr_channel_model : public gr_hier_block2
+class GR_CORE_API gr_channel_model : public gr_hier_block2
{
private:
gr_channel_model(double noise_voltage,
@@ -50,7 +51,7 @@ class gr_channel_model : public gr_hier_block2
const std::vector<gr_complex> &taps,
double noise_seed);
- friend gr_channel_model_sptr gr_make_channel_model(double noise_voltage,
+ friend GR_CORE_API gr_channel_model_sptr gr_make_channel_model(double noise_voltage,
double frequency_offset,
double epsilon,
const std::vector<gr_complex> &taps,
diff --git a/gnuradio-core/src/lib/io/CMakeLists.txt b/gnuradio-core/src/lib/io/CMakeLists.txt
new file mode 100644
index 000000000..af9d7583c
--- /dev/null
+++ b/gnuradio-core/src/lib/io/CMakeLists.txt
@@ -0,0 +1,108 @@
+# Copyright 2010-2011 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+
+########################################################################
+# This file included, use CMake directory variables
+########################################################################
+
+########################################################################
+# Append gnuradio-core library sources
+########################################################################
+list(APPEND gnuradio_core_sources
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_histo_sink_f.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_oscope_guts.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_oscope_sink_f.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_oscope_sink_x.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/i2c.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/i2c_bitbang.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/i2c_bbio.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/i2c_bbio_pp.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/microtune_4702.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/microtune_4937.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/microtune_xxxx.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/ppio_ppdev.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gri_wavfile.cc
+)
+
+########################################################################
+# Install runtime headers
+########################################################################
+install(FILES
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_histo_sink_f.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_oscope_guts.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_oscope_sink_f.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_oscope_sink_x.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_trigger_mode.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/i2c.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/i2c_bitbang.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/i2c_bbio.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/i2c_bbio_pp.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/microtune_4702.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/microtune_4937.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/microtune_eval_board_defs.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/microtune_xxxx.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/ppio_ppdev.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gri_wavfile.h
+ DESTINATION ${GR_INCLUDE_DIR}/gnuradio
+ COMPONENT "core_devel"
+)
+
+########################################################################
+# Install swig headers
+########################################################################
+if(ENABLE_PYTHON)
+install(FILES
+ ${CMAKE_CURRENT_SOURCE_DIR}/io.i
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_histo_sink.i
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_oscope_sink.i
+ DESTINATION ${GR_INCLUDE_DIR}/gnuradio/swig
+ COMPONENT "core_swig"
+)
+endif(ENABLE_PYTHON)
+
+########################################################################
+# Handle triple-threat files that have cc, h, and i
+########################################################################
+set(gr_core_io_triple_threats
+ gr_file_sink
+ gr_file_sink_base
+ gr_file_source
+ gr_file_descriptor_sink
+ gr_file_descriptor_source
+ gr_message_sink
+ gr_message_source
+ microtune_xxxx_eval_board
+ microtune_4702_eval_board
+ microtune_4937_eval_board
+ ppio
+ sdr_1000
+ gr_udp_sink
+ gr_udp_source
+ gr_wavfile_source
+ gr_wavfile_sink
+ gr_tagged_file_sink
+)
+
+foreach(file_tt ${gr_core_io_triple_threats})
+ list(APPEND gnuradio_core_sources ${CMAKE_CURRENT_SOURCE_DIR}/${file_tt}.cc)
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${file_tt}.h DESTINATION ${GR_INCLUDE_DIR}/gnuradio COMPONENT "core_devel")
+ if(ENABLE_PYTHON)
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${file_tt}.i DESTINATION ${GR_INCLUDE_DIR}/gnuradio/swig COMPONENT "core_swig")
+ endif(ENABLE_PYTHON)
+endforeach(file_tt ${gr_core_io_triple_threats})
diff --git a/gnuradio-core/src/lib/io/gr_file_descriptor_sink.h b/gnuradio-core/src/lib/io/gr_file_descriptor_sink.h
index fa8fa3f05..5e4cc6505 100644
--- a/gnuradio-core/src/lib/io/gr_file_descriptor_sink.h
+++ b/gnuradio-core/src/lib/io/gr_file_descriptor_sink.h
@@ -23,21 +23,22 @@
#ifndef INCLUDED_GR_FILE_DESCRIPTOR_SINK_H
#define INCLUDED_GR_FILE_DESCRIPTOR_SINK_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class gr_file_descriptor_sink;
typedef boost::shared_ptr<gr_file_descriptor_sink> gr_file_descriptor_sink_sptr;
-gr_file_descriptor_sink_sptr gr_make_file_descriptor_sink (size_t itemsize, int fd);
+GR_CORE_API gr_file_descriptor_sink_sptr gr_make_file_descriptor_sink (size_t itemsize, int fd);
/*!
* \brief Write stream to file descriptor.
* \ingroup sink_blk
*/
-class gr_file_descriptor_sink : public gr_sync_block
+class GR_CORE_API gr_file_descriptor_sink : public gr_sync_block
{
- friend gr_file_descriptor_sink_sptr gr_make_file_descriptor_sink (size_t itemsize, int fd);
+ friend GR_CORE_API gr_file_descriptor_sink_sptr gr_make_file_descriptor_sink (size_t itemsize, int fd);
private:
size_t d_itemsize;
diff --git a/gnuradio-core/src/lib/io/gr_file_descriptor_source.h b/gnuradio-core/src/lib/io/gr_file_descriptor_source.h
index a9f117286..fa513fd25 100644
--- a/gnuradio-core/src/lib/io/gr_file_descriptor_source.h
+++ b/gnuradio-core/src/lib/io/gr_file_descriptor_source.h
@@ -23,12 +23,13 @@
#ifndef INCLUDED_GR_FILE_DESCRIPTOR_SOURCE_H
#define INCLUDED_GR_FILE_DESCRIPTOR_SOURCE_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class gr_file_descriptor_source;
typedef boost::shared_ptr<gr_file_descriptor_source> gr_file_descriptor_source_sptr;
-gr_file_descriptor_source_sptr
+GR_CORE_API gr_file_descriptor_source_sptr
gr_make_file_descriptor_source (size_t itemsize, int fd, bool repeat = false);
/*!
@@ -36,9 +37,9 @@ gr_make_file_descriptor_source (size_t itemsize, int fd, bool repeat = false);
* \ingroup source_blk
*/
-class gr_file_descriptor_source : public gr_sync_block
+class GR_CORE_API gr_file_descriptor_source : public gr_sync_block
{
- friend gr_file_descriptor_source_sptr
+ friend GR_CORE_API gr_file_descriptor_source_sptr
gr_make_file_descriptor_source (size_t itemsize, int fd, bool repeat);
private:
size_t d_itemsize;
diff --git a/gnuradio-core/src/lib/io/gr_file_sink.h b/gnuradio-core/src/lib/io/gr_file_sink.h
index b9ad06cd6..180cbef2a 100644
--- a/gnuradio-core/src/lib/io/gr_file_sink.h
+++ b/gnuradio-core/src/lib/io/gr_file_sink.h
@@ -23,22 +23,23 @@
#ifndef INCLUDED_GR_FILE_SINK_H
#define INCLUDED_GR_FILE_SINK_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
#include <gr_file_sink_base.h>
class gr_file_sink;
typedef boost::shared_ptr<gr_file_sink> gr_file_sink_sptr;
-gr_file_sink_sptr gr_make_file_sink(size_t itemsize, const char *filename);
+GR_CORE_API gr_file_sink_sptr gr_make_file_sink(size_t itemsize, const char *filename);
/*!
* \brief Write stream to file.
* \ingroup sink_blk
*/
-class gr_file_sink : public gr_sync_block, public gr_file_sink_base
+class GR_CORE_API gr_file_sink : public gr_sync_block, public gr_file_sink_base
{
- friend gr_file_sink_sptr gr_make_file_sink(size_t itemsize, const char *filename);
+ friend GR_CORE_API gr_file_sink_sptr gr_make_file_sink(size_t itemsize, const char *filename);
private:
size_t d_itemsize;
diff --git a/gnuradio-core/src/lib/io/gr_file_sink_base.h b/gnuradio-core/src/lib/io/gr_file_sink_base.h
index 7b96cdb7f..6765dbad8 100644
--- a/gnuradio-core/src/lib/io/gr_file_sink_base.h
+++ b/gnuradio-core/src/lib/io/gr_file_sink_base.h
@@ -23,13 +23,14 @@
#ifndef INCLUDED_GR_FILE_SINK_BASE_H
#define INCLUDED_GR_FILE_SINK_BASE_H
+#include <gr_core_api.h>
#include <boost/thread.hpp>
#include <cstdio>
/*!
* \brief Common base class for file sinks
*/
-class gr_file_sink_base
+class GR_CORE_API gr_file_sink_base
{
protected:
FILE *d_fp; // current FILE pointer
diff --git a/gnuradio-core/src/lib/io/gr_file_source.h b/gnuradio-core/src/lib/io/gr_file_source.h
index 5f5c2564e..6e8fc4074 100644
--- a/gnuradio-core/src/lib/io/gr_file_source.h
+++ b/gnuradio-core/src/lib/io/gr_file_source.h
@@ -23,12 +23,13 @@
#ifndef INCLUDED_GR_FILE_SOURCE_H
#define INCLUDED_GR_FILE_SOURCE_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
class gr_file_source;
typedef boost::shared_ptr<gr_file_source> gr_file_source_sptr;
-gr_file_source_sptr
+GR_CORE_API gr_file_source_sptr
gr_make_file_source (size_t itemsize, const char *filename, bool repeat = false);
/*!
@@ -36,9 +37,9 @@ gr_make_file_source (size_t itemsize, const char *filename, bool repeat = false)
* \ingroup source_blk
*/
-class gr_file_source : public gr_sync_block
+class GR_CORE_API gr_file_source : public gr_sync_block
{
- friend gr_file_source_sptr gr_make_file_source (size_t itemsize,
+ friend GR_CORE_API gr_file_source_sptr gr_make_file_source (size_t itemsize,
const char *filename,
bool repeat);
private:
diff --git a/gnuradio-core/src/lib/io/gr_histo_sink_f.h b/gnuradio-core/src/lib/io/gr_histo_sink_f.h
index 8ba45ec55..934066ba2 100644
--- a/gnuradio-core/src/lib/io/gr_histo_sink_f.h
+++ b/gnuradio-core/src/lib/io/gr_histo_sink_f.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_GR_HISTO_SINK_F_H
#define INCLUDED_GR_HISTO_SINK_F_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
#include <gr_msg_queue.h>
#include <gruel/thread.h>
@@ -30,13 +31,13 @@
class gr_histo_sink_f;
typedef boost::shared_ptr<gr_histo_sink_f> gr_histo_sink_f_sptr;
-gr_histo_sink_f_sptr gr_make_histo_sink_f (gr_msg_queue_sptr msgq);
+GR_CORE_API gr_histo_sink_f_sptr gr_make_histo_sink_f (gr_msg_queue_sptr msgq);
/*!
* \brief Histogram module.
* \ingroup sink_blk
*/
-class gr_histo_sink_f : public gr_sync_block
+class GR_CORE_API gr_histo_sink_f : public gr_sync_block
{
private:
gr_msg_queue_sptr d_msgq;
@@ -47,7 +48,7 @@ private:
float *d_samps;
gruel::mutex d_mutex;
- friend gr_histo_sink_f_sptr gr_make_histo_sink_f (gr_msg_queue_sptr msgq);
+ friend GR_CORE_API gr_histo_sink_f_sptr gr_make_histo_sink_f (gr_msg_queue_sptr msgq);
gr_histo_sink_f (gr_msg_queue_sptr msgq);
void send_frame(void);
void clear(void);
diff --git a/gnuradio-core/src/lib/io/gr_message_sink.h b/gnuradio-core/src/lib/io/gr_message_sink.h
index 5f1e5f91f..180055261 100644
--- a/gnuradio-core/src/lib/io/gr_message_sink.h
+++ b/gnuradio-core/src/lib/io/gr_message_sink.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_GR_MESSAGE_SINK_H
#define INCLUDED_GR_MESSAGE_SINK_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
#include <gr_message.h>
#include <gr_msg_queue.h>
@@ -30,7 +31,7 @@
class gr_message_sink;
typedef boost::shared_ptr<gr_message_sink> gr_message_sink_sptr;
-gr_message_sink_sptr gr_make_message_sink (size_t itemsize,
+GR_CORE_API gr_message_sink_sptr gr_make_message_sink (size_t itemsize,
gr_msg_queue_sptr msgq,
bool dont_block);
@@ -38,14 +39,14 @@ gr_message_sink_sptr gr_make_message_sink (size_t itemsize,
* \brief Gather received items into messages and insert into msgq
* \ingroup sink_blk
*/
-class gr_message_sink : public gr_sync_block
+class GR_CORE_API gr_message_sink : public gr_sync_block
{
private:
size_t d_itemsize;
gr_msg_queue_sptr d_msgq;
bool d_dont_block;
- friend gr_message_sink_sptr
+ friend GR_CORE_API gr_message_sink_sptr
gr_make_message_sink(size_t itemsize, gr_msg_queue_sptr msgq, bool dont_block);
protected:
diff --git a/gnuradio-core/src/lib/io/gr_message_source.h b/gnuradio-core/src/lib/io/gr_message_source.h
index 46a808754..16a0f4474 100644
--- a/gnuradio-core/src/lib/io/gr_message_source.h
+++ b/gnuradio-core/src/lib/io/gr_message_source.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_GR_MESSAGE_SOURCE_H
#define INCLUDED_GR_MESSAGE_SOURCE_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
#include <gr_message.h>
#include <gr_msg_queue.h>
@@ -30,14 +31,14 @@
class gr_message_source;
typedef boost::shared_ptr<gr_message_source> gr_message_source_sptr;
-gr_message_source_sptr gr_make_message_source (size_t itemsize, int msgq_limit=0);
-gr_message_source_sptr gr_make_message_source (size_t itemsize, gr_msg_queue_sptr msgq);
+GR_CORE_API gr_message_source_sptr gr_make_message_source (size_t itemsize, int msgq_limit=0);
+GR_CORE_API gr_message_source_sptr gr_make_message_source (size_t itemsize, gr_msg_queue_sptr msgq);
/*!
* \brief Turn received messages into a stream
* \ingroup source_blk
*/
-class gr_message_source : public gr_sync_block
+class GR_CORE_API gr_message_source : public gr_sync_block
{
private:
size_t d_itemsize;
@@ -46,9 +47,9 @@ class gr_message_source : public gr_sync_block
unsigned d_msg_offset;
bool d_eof;
- friend gr_message_source_sptr
+ friend GR_CORE_API gr_message_source_sptr
gr_make_message_source(size_t itemsize, int msgq_limit);
- friend gr_message_source_sptr
+ friend GR_CORE_API gr_message_source_sptr
gr_make_message_source(size_t itemsize, gr_msg_queue_sptr msgq);
protected:
diff --git a/gnuradio-core/src/lib/io/gr_oscope_guts.h b/gnuradio-core/src/lib/io/gr_oscope_guts.h
index f39db62f6..3223d4e38 100644
--- a/gnuradio-core/src/lib/io/gr_oscope_guts.h
+++ b/gnuradio-core/src/lib/io/gr_oscope_guts.h
@@ -24,6 +24,7 @@
#ifndef INCLUDED_GR_OSCOPE_GUTS_H
#define INCLUDED_GR_OSCOPE_GUTS_H
+#include <gr_core_api.h>
#include <gr_trigger_mode.h>
#include <gr_msg_queue.h>
@@ -40,7 +41,7 @@
* consist of 50% pre-trigger data and 50% post-trigger data.
*/
-class gr_oscope_guts {
+class GR_CORE_API gr_oscope_guts {
public:
static const int MAX_CHANNELS = 8;
private:
diff --git a/gnuradio-core/src/lib/io/gr_oscope_sink_f.h b/gnuradio-core/src/lib/io/gr_oscope_sink_f.h
index 1a8022b89..e3d1f65e5 100644
--- a/gnuradio-core/src/lib/io/gr_oscope_sink_f.h
+++ b/gnuradio-core/src/lib/io/gr_oscope_sink_f.h
@@ -23,13 +23,14 @@
#ifndef INCLUDED_GR_OSCOPE_SINK_F_H
#define INCLUDED_GR_OSCOPE_SINK_F_H
+#include <gr_core_api.h>
#include <gr_oscope_sink_x.h>
#include <gr_msg_queue.h>
class gr_oscope_sink_f;
typedef boost::shared_ptr<gr_oscope_sink_x> gr_oscope_sink_f_sptr;
-gr_oscope_sink_f_sptr gr_make_oscope_sink_f (double sampling_rate, gr_msg_queue_sptr msgq);
+GR_CORE_API gr_oscope_sink_f_sptr gr_make_oscope_sink_f (double sampling_rate, gr_msg_queue_sptr msgq);
/*!
@@ -38,10 +39,10 @@ gr_oscope_sink_f_sptr gr_make_oscope_sink_f (double sampling_rate, gr_msg_queue_
*
* Accepts multiple float streams.
*/
-class gr_oscope_sink_f : public gr_oscope_sink_x
+class GR_CORE_API gr_oscope_sink_f : public gr_oscope_sink_x
{
private:
- friend gr_oscope_sink_f_sptr
+ friend GR_CORE_API gr_oscope_sink_f_sptr
gr_make_oscope_sink_f (double sampling_rate, gr_msg_queue_sptr msgq);
gr_oscope_sink_f (double sampling_rate, gr_msg_queue_sptr msgq);
diff --git a/gnuradio-core/src/lib/io/gr_oscope_sink_x.h b/gnuradio-core/src/lib/io/gr_oscope_sink_x.h
index 62cf65100..aaff5870b 100644
--- a/gnuradio-core/src/lib/io/gr_oscope_sink_x.h
+++ b/gnuradio-core/src/lib/io/gr_oscope_sink_x.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_GR_OSCOPE_SINK_X_H
#define INCLUDED_GR_OSCOPE_SINK_X_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
#include <gr_trigger_mode.h>
@@ -34,7 +35,7 @@ class gr_oscope_guts;
*
* Don't instantiate this. Use gr_oscope_sink_f or gr_oscope_sink_c instead.
*/
-class gr_oscope_sink_x : public gr_sync_block
+class GR_CORE_API gr_oscope_sink_x : public gr_sync_block
{
protected:
double d_sampling_rate;
diff --git a/gnuradio-core/src/lib/io/gr_tagged_file_sink.h b/gnuradio-core/src/lib/io/gr_tagged_file_sink.h
index 2e0a5c63a..da12dca78 100644
--- a/gnuradio-core/src/lib/io/gr_tagged_file_sink.h
+++ b/gnuradio-core/src/lib/io/gr_tagged_file_sink.h
@@ -23,13 +23,14 @@
#ifndef INCLUDED_GR_TAGGED_FILE_SINK_H
#define INCLUDED_GR_TAGGED_FILE_SINK_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
#include <cstdio> // for FILE
class gr_tagged_file_sink;
typedef boost::shared_ptr<gr_tagged_file_sink> gr_tagged_file_sink_sptr;
-gr_tagged_file_sink_sptr gr_make_tagged_file_sink (size_t itemsize,
+GR_CORE_API gr_tagged_file_sink_sptr gr_make_tagged_file_sink (size_t itemsize,
double samp_rate);
/*!
@@ -37,9 +38,9 @@ gr_tagged_file_sink_sptr gr_make_tagged_file_sink (size_t itemsize,
* \ingroup sink_blk
*/
-class gr_tagged_file_sink : public gr_sync_block
+class GR_CORE_API gr_tagged_file_sink : public gr_sync_block
{
- friend gr_tagged_file_sink_sptr gr_make_tagged_file_sink (size_t itemsize,
+ friend GR_CORE_API gr_tagged_file_sink_sptr gr_make_tagged_file_sink (size_t itemsize,
double samp_rate);
private:
diff --git a/gnuradio-core/src/lib/io/gr_udp_sink.h b/gnuradio-core/src/lib/io/gr_udp_sink.h
index 421d514a4..e9d4f8c73 100644
--- a/gnuradio-core/src/lib/io/gr_udp_sink.h
+++ b/gnuradio-core/src/lib/io/gr_udp_sink.h
@@ -23,13 +23,14 @@
#ifndef INCLUDED_GR_UDP_SINK_H
#define INCLUDED_GR_UDP_SINK_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
#include <gruel/thread.h>
class gr_udp_sink;
typedef boost::shared_ptr<gr_udp_sink> gr_udp_sink_sptr;
-gr_udp_sink_sptr
+GR_CORE_API gr_udp_sink_sptr
gr_make_udp_sink (size_t itemsize,
const char *host, unsigned short port,
int payload_size=1472, bool eof=true);
@@ -47,9 +48,9 @@ gr_make_udp_sink (size_t itemsize,
* \param eof Send zero-length packet on disconnect
*/
-class gr_udp_sink : public gr_sync_block
+class GR_CORE_API gr_udp_sink : public gr_sync_block
{
- friend gr_udp_sink_sptr gr_make_udp_sink (size_t itemsize,
+ friend GR_CORE_API gr_udp_sink_sptr gr_make_udp_sink (size_t itemsize,
const char *host,
unsigned short port,
int payload_size, bool eof);
diff --git a/gnuradio-core/src/lib/io/gr_udp_source.h b/gnuradio-core/src/lib/io/gr_udp_source.h
index 5d30fad30..e2898981d 100644
--- a/gnuradio-core/src/lib/io/gr_udp_source.h
+++ b/gnuradio-core/src/lib/io/gr_udp_source.h
@@ -23,13 +23,14 @@
#ifndef INCLUDED_GR_UDP_SOURCE_H
#define INCLUDED_GR_UDP_SOURCE_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
#include <gruel/thread.h>
class gr_udp_source;
typedef boost::shared_ptr<gr_udp_source> gr_udp_source_sptr;
-gr_udp_source_sptr gr_make_udp_source(size_t itemsize, const char *host,
+GR_CORE_API gr_udp_source_sptr gr_make_udp_source(size_t itemsize, const char *host,
unsigned short port,
int payload_size=1472,
bool eof=true, bool wait=true);
@@ -52,9 +53,9 @@ gr_udp_source_sptr gr_make_udp_source(size_t itemsize, const char *host,
*
*/
-class gr_udp_source : public gr_sync_block
+class GR_CORE_API gr_udp_source : public gr_sync_block
{
- friend gr_udp_source_sptr gr_make_udp_source(size_t itemsize,
+ friend GR_CORE_API gr_udp_source_sptr gr_make_udp_source(size_t itemsize,
const char *host,
unsigned short port,
int payload_size,
diff --git a/gnuradio-core/src/lib/io/gr_wavfile_sink.h b/gnuradio-core/src/lib/io/gr_wavfile_sink.h
index a1d6ed527..5fd3eaadc 100644
--- a/gnuradio-core/src/lib/io/gr_wavfile_sink.h
+++ b/gnuradio-core/src/lib/io/gr_wavfile_sink.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_GR_WAVFILE_SINK_H
#define INCLUDED_GR_WAVFILE_SINK_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
#include <gr_file_sink_base.h>
#include <boost/thread.hpp>
@@ -36,7 +37,7 @@ typedef boost::shared_ptr<gr_wavfile_sink> gr_wavfile_sink_sptr;
* \p sample_rate Sample rate [S/s]
* \p bits_per_sample 16 or 8 bit, default is 16
*/
-gr_wavfile_sink_sptr
+GR_CORE_API gr_wavfile_sink_sptr
gr_make_wavfile_sink (const char *filename,
int n_channels,
unsigned int sample_rate,
@@ -50,10 +51,10 @@ gr_make_wavfile_sink (const char *filename,
*
* \ingroup sink_blk
*/
-class gr_wavfile_sink : public gr_sync_block
+class GR_CORE_API gr_wavfile_sink : public gr_sync_block
{
private:
- friend gr_wavfile_sink_sptr gr_make_wavfile_sink (const char *filename,
+ friend GR_CORE_API gr_wavfile_sink_sptr gr_make_wavfile_sink (const char *filename,
int n_channels,
unsigned int sample_rate,
int bits_per_sample);
diff --git a/gnuradio-core/src/lib/io/gr_wavfile_source.h b/gnuradio-core/src/lib/io/gr_wavfile_source.h
index e434a6b4c..b300f2808 100644
--- a/gnuradio-core/src/lib/io/gr_wavfile_source.h
+++ b/gnuradio-core/src/lib/io/gr_wavfile_source.h
@@ -23,13 +23,14 @@
#ifndef INCLUDED_GR_WAVFILE_SOURCE_H
#define INCLUDED_GR_WAVFILE_SOURCE_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
#include <cstdio> // for FILE
class gr_wavfile_source;
typedef boost::shared_ptr<gr_wavfile_source> gr_wavfile_source_sptr;
-gr_wavfile_source_sptr
+GR_CORE_API gr_wavfile_source_sptr
gr_make_wavfile_source (const char *filename, bool repeat = false);
/*!
@@ -41,10 +42,10 @@ gr_make_wavfile_source (const char *filename, bool repeat = false);
* \ingroup source_blk
*/
-class gr_wavfile_source : public gr_sync_block
+class GR_CORE_API gr_wavfile_source : public gr_sync_block
{
private:
- friend gr_wavfile_source_sptr gr_make_wavfile_source (const char *filename,
+ friend GR_CORE_API gr_wavfile_source_sptr gr_make_wavfile_source (const char *filename,
bool repeat);
gr_wavfile_source(const char *filename, bool repeat);
diff --git a/gnuradio-core/src/lib/io/gri_wavfile.h b/gnuradio-core/src/lib/io/gri_wavfile.h
index 2c7c1207c..2268474fb 100644
--- a/gnuradio-core/src/lib/io/gri_wavfile.h
+++ b/gnuradio-core/src/lib/io/gri_wavfile.h
@@ -23,6 +23,7 @@
// This file stores all the RIFF file type knowledge for the gr_wavfile_*
// blocks.
+#include <gr_core_api.h>
#include <cstdio>
/*!
diff --git a/gnuradio-core/src/lib/io/i2c.h b/gnuradio-core/src/lib/io/i2c.h
index e959f59a8..7d446dfa3 100644
--- a/gnuradio-core/src/lib/io/i2c.h
+++ b/gnuradio-core/src/lib/io/i2c.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_I2C_H
#define INCLUDED_I2C_H
+#include <gr_core_api.h>
#include <boost/shared_ptr.hpp>
class i2c;
@@ -31,7 +32,7 @@ typedef boost::shared_ptr<i2c> i2c_sptr;
/*!
* \brief abstract class for controlling i2c bus
*/
-class i2c {
+class GR_CORE_API i2c {
public:
i2c () {}
diff --git a/gnuradio-core/src/lib/io/i2c_bbio.h b/gnuradio-core/src/lib/io/i2c_bbio.h
index c6b226e39..110a56555 100644
--- a/gnuradio-core/src/lib/io/i2c_bbio.h
+++ b/gnuradio-core/src/lib/io/i2c_bbio.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_I2C_BBIO_H
#define INCLUDED_I2C_BBIO_H
+#include <gr_core_api.h>
#include <boost/shared_ptr.hpp>
class i2c_bbio;
@@ -33,7 +34,7 @@ typedef boost::shared_ptr<i2c_bbio> i2c_bbio_sptr;
* \brief abstract class that implements bit banging i/o for i2c bus.
* \ingroup base
*/
-class i2c_bbio {
+class GR_CORE_API i2c_bbio {
public:
i2c_bbio () {}
diff --git a/gnuradio-core/src/lib/io/i2c_bbio_pp.h b/gnuradio-core/src/lib/io/i2c_bbio_pp.h
index 5a99cdcd1..4a311a2c9 100644
--- a/gnuradio-core/src/lib/io/i2c_bbio_pp.h
+++ b/gnuradio-core/src/lib/io/i2c_bbio_pp.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_I2C_BBIO_PP_H
#define INCLUDED_I2C_BBIO_PP_H
+#include <gr_core_api.h>
#include "i2c_bbio.h"
#include "ppio.h"
@@ -33,8 +34,8 @@
* This class talks to the i2c bus on the microtune eval board using
* the parallel port. This works for both the 4937 and 4702 boards.
*/
-class i2c_bbio_pp : public i2c_bbio {
- friend i2c_bbio_sptr make_i2c_bbio_pp (ppio_sptr pp);
+class GR_CORE_API i2c_bbio_pp : public i2c_bbio {
+ friend GR_CORE_API i2c_bbio_sptr make_i2c_bbio_pp (ppio_sptr pp);
i2c_bbio_pp (ppio_sptr pp);
public:
@@ -50,7 +51,7 @@ class i2c_bbio_pp : public i2c_bbio {
ppio_sptr d_pp;
};
-i2c_bbio_sptr make_i2c_bbio_pp (ppio_sptr pp);
+GR_CORE_API i2c_bbio_sptr make_i2c_bbio_pp (ppio_sptr pp);
#endif /* INCLUDED_I2C_BBIO_PP_H */
diff --git a/gnuradio-core/src/lib/io/i2c_bitbang.h b/gnuradio-core/src/lib/io/i2c_bitbang.h
index c9deb38ba..feb23b787 100644
--- a/gnuradio-core/src/lib/io/i2c_bitbang.h
+++ b/gnuradio-core/src/lib/io/i2c_bitbang.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_I2C_BITBANG_H
#define INCLUDED_I2C_BITBANG_H
+#include <gr_core_api.h>
#include <i2c.h>
#include <i2c_bbio.h>
@@ -30,8 +31,8 @@
* \brief class for controlling i2c bus
* \ingroup base
*/
-class i2c_bitbang : public i2c {
- friend i2c_sptr make_i2c_bitbang (i2c_bbio_sptr io);
+class GR_CORE_API i2c_bitbang : public i2c {
+ friend GR_CORE_API i2c_sptr make_i2c_bitbang (i2c_bbio_sptr io);
i2c_bitbang (i2c_bbio_sptr io);
public:
@@ -57,7 +58,7 @@ private:
i2c_bbio_sptr d_io;
};
-i2c_sptr make_i2c_bitbang (i2c_bbio_sptr io);
+GR_CORE_API i2c_sptr make_i2c_bitbang (i2c_bbio_sptr io);
#endif /* INCLUDED_I2C_BITBANG_H */
diff --git a/gnuradio-core/src/lib/io/microtune_4702.h b/gnuradio-core/src/lib/io/microtune_4702.h
index 95c64abe7..fd8d89305 100644
--- a/gnuradio-core/src/lib/io/microtune_4702.h
+++ b/gnuradio-core/src/lib/io/microtune_4702.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_MICROTUNE_4702_H
#define INCLUDED_MICROTUNE_4702_H
+#include <gr_core_api.h>
#include <microtune_xxxx.h>
/*!
@@ -30,7 +31,7 @@
* \ingroup hardware
*/
-class microtune_4702 : public microtune_xxxx {
+class GR_CORE_API microtune_4702 : public microtune_xxxx {
public:
microtune_4702 (i2c_sptr i2c, int i2c_addr);
diff --git a/gnuradio-core/src/lib/io/microtune_4702_eval_board.h b/gnuradio-core/src/lib/io/microtune_4702_eval_board.h
index 6e9726917..e3c07fdf9 100644
--- a/gnuradio-core/src/lib/io/microtune_4702_eval_board.h
+++ b/gnuradio-core/src/lib/io/microtune_4702_eval_board.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_MICROTUNE_4702_EVAL_BOARD_H
#define INCLUDED_MICROTUNE_4702_EVAL_BOARD_H
+#include <gr_core_api.h>
#include "microtune_xxxx_eval_board.h"
/*!
@@ -30,7 +31,7 @@
* \ingroup hardware
*/
-class microtune_4702_eval_board : public microtune_xxxx_eval_board {
+class GR_CORE_API microtune_4702_eval_board : public microtune_xxxx_eval_board {
public:
microtune_4702_eval_board (int which_pp = 0);
~microtune_4702_eval_board ();
diff --git a/gnuradio-core/src/lib/io/microtune_4937.h b/gnuradio-core/src/lib/io/microtune_4937.h
index b263ceb0f..bc8a26c64 100644
--- a/gnuradio-core/src/lib/io/microtune_4937.h
+++ b/gnuradio-core/src/lib/io/microtune_4937.h
@@ -23,13 +23,14 @@
#ifndef INCLUDED_MICROTUNE_4937_H
#define INCLUDED_MICROTUNE_4937_H
+#include <gr_core_api.h>
#include <microtune_xxxx.h>
/*!
* \brief class for controlling microtune 4937 tuner module
* \ingroup hardware
*/
-class microtune_4937 : public microtune_xxxx {
+class GR_CORE_API microtune_4937 : public microtune_xxxx {
public:
microtune_4937 (i2c_sptr i2c, int i2c_addr = 0x61);
virtual ~microtune_4937 ();
diff --git a/gnuradio-core/src/lib/io/microtune_4937_eval_board.h b/gnuradio-core/src/lib/io/microtune_4937_eval_board.h
index 154a7281a..09c00d116 100644
--- a/gnuradio-core/src/lib/io/microtune_4937_eval_board.h
+++ b/gnuradio-core/src/lib/io/microtune_4937_eval_board.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_MICROTUNE_4937_EVAL_BOARD_H
#define INCLUDED_MICROTUNE_4937_EVAL_BOARD_H
+#include <gr_core_api.h>
#include "microtune_xxxx_eval_board.h"
/*!
@@ -30,7 +31,7 @@
* \ingroup hardware
*/
-class microtune_4937_eval_board : public microtune_xxxx_eval_board {
+class GR_CORE_API microtune_4937_eval_board : public microtune_xxxx_eval_board {
public:
microtune_4937_eval_board (int which_pp = 0);
~microtune_4937_eval_board ();
diff --git a/gnuradio-core/src/lib/io/microtune_xxxx.h b/gnuradio-core/src/lib/io/microtune_xxxx.h
index 4d5074a85..8b6ec25aa 100644
--- a/gnuradio-core/src/lib/io/microtune_xxxx.h
+++ b/gnuradio-core/src/lib/io/microtune_xxxx.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_MICROTUNE_XXXX_H
#define INCLUDED_MICROTUNE_XXXX_H
+#include <gr_core_api.h>
#include <boost/shared_ptr.hpp>
class i2c;
@@ -32,7 +33,7 @@ typedef boost::shared_ptr<i2c> i2c_sptr;
* \brief abstract class for controlling microtune {4937,4702} tuner modules
* \ingroup base
*/
-class microtune_xxxx {
+class GR_CORE_API microtune_xxxx {
public:
microtune_xxxx () {}
virtual ~microtune_xxxx ();
diff --git a/gnuradio-core/src/lib/io/microtune_xxxx_eval_board.h b/gnuradio-core/src/lib/io/microtune_xxxx_eval_board.h
index 808075e55..08aa438c0 100644
--- a/gnuradio-core/src/lib/io/microtune_xxxx_eval_board.h
+++ b/gnuradio-core/src/lib/io/microtune_xxxx_eval_board.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_MICROTUNE_XXXX_EVAL_BOARD_H
#define INCLUDED_MICROTUNE_XXXX_EVAL_BOARD_H
+#include <gr_core_api.h>
#include <boost/shared_ptr.hpp>
class microtune_xxxx;
@@ -37,7 +38,7 @@ typedef boost::shared_ptr<i2c> i2c_sptr;
* \brief abstract class for controlling microtune xxxx eval board
* \ingroup hardware
*/
-class microtune_xxxx_eval_board {
+class GR_CORE_API microtune_xxxx_eval_board {
public:
microtune_xxxx_eval_board (int which_pp = 0);
virtual ~microtune_xxxx_eval_board ();
diff --git a/gnuradio-core/src/lib/io/ppio.h b/gnuradio-core/src/lib/io/ppio.h
index e1a62e2a3..f7d14d52e 100644
--- a/gnuradio-core/src/lib/io/ppio.h
+++ b/gnuradio-core/src/lib/io/ppio.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_PPIO_H
#define INCLUDED_PPIO_H
+#include <gr_core_api.h>
#include <boost/shared_ptr.hpp>
class ppio;
@@ -34,7 +35,7 @@ typedef boost::shared_ptr<ppio> ppio_sptr;
* \ingroup hardware
*/
-class ppio {
+class GR_CORE_API ppio {
public:
ppio () {}
virtual ~ppio ();
@@ -55,7 +56,7 @@ class ppio {
* Split out from class to make life easier for SWIG
*/
-ppio_sptr make_ppio (int which_pp);
+GR_CORE_API ppio_sptr make_ppio (int which_pp);
#endif /* INCLUDED_PPIO_H */
diff --git a/gnuradio-core/src/lib/io/ppio_ppdev.h b/gnuradio-core/src/lib/io/ppio_ppdev.h
index b5abe3f0a..5d082d784 100644
--- a/gnuradio-core/src/lib/io/ppio_ppdev.h
+++ b/gnuradio-core/src/lib/io/ppio_ppdev.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_PPIO_PPDEV_H
#define INCLUDED_PPIO_PPDEV_H
+#include <gr_core_api.h>
#include <ppio.h>
class ppio_ppdev;
@@ -33,8 +34,8 @@ typedef boost::shared_ptr<ppio_ppdev> ppio_ppdev_sptr;
* \ingroup hardware
*/
-class ppio_ppdev : public ppio {
- friend ppio_ppdev_sptr make_ppio_ppdev (int which = 0);
+class GR_CORE_API ppio_ppdev : public ppio {
+ friend GR_CORE_API ppio_ppdev_sptr make_ppio_ppdev (int which = 0);
ppio_ppdev (int which = 0);
public:
diff --git a/gnuradio-core/src/lib/io/sdr_1000.h b/gnuradio-core/src/lib/io/sdr_1000.h
index 113e85deb..6647fbba5 100644
--- a/gnuradio-core/src/lib/io/sdr_1000.h
+++ b/gnuradio-core/src/lib/io/sdr_1000.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_SDR_1000_H
#define INCLUDED_SDR_1000_H
+#include <gr_core_api.h>
#include <boost/shared_ptr.hpp>
class ppio;
@@ -36,7 +37,7 @@ enum { L_EXT = 0, L_BAND = 1, L_DDS0 = 2, L_DDS1 = 3 };
* \sa sdr_1000.py for a higher level interface.
* \ingroup hardware
*/
-class sdr_1000_base {
+class GR_CORE_API sdr_1000_base {
ppio_sptr d_ppio;
int d_shadow[4]; // shadow latches
diff --git a/gnuradio-core/src/lib/missing/CMakeLists.txt b/gnuradio-core/src/lib/missing/CMakeLists.txt
new file mode 100644
index 000000000..0a376645f
--- /dev/null
+++ b/gnuradio-core/src/lib/missing/CMakeLists.txt
@@ -0,0 +1,32 @@
+# Copyright 2010 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+
+########################################################################
+# This file included, use CMake directory variables
+########################################################################
+
+list(APPEND gnuradio_core_sources
+ ${CMAKE_CURRENT_SOURCE_DIR}/bug_work_around_8.cc
+)
+
+if(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)")
+ list(APPEND gnuradio_core_sources
+ ${CMAKE_CURRENT_SOURCE_DIR}/posix_memalign.cc
+ )
+endif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)")
diff --git a/gnuradio-core/src/lib/reed-solomon/CMakeLists.txt b/gnuradio-core/src/lib/reed-solomon/CMakeLists.txt
new file mode 100644
index 000000000..f073249f6
--- /dev/null
+++ b/gnuradio-core/src/lib/reed-solomon/CMakeLists.txt
@@ -0,0 +1,62 @@
+# Copyright 2010-2011 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+
+########################################################################
+# This file included, use CMake directory variables
+########################################################################
+#MSVC workaround: we cant have dynamically sized arrays.
+#So ifdef a max array bounds that is larger than NN and NROOTS
+#Its a bit of a hack, but if you look at the code, its so full of ifdefs,
+#and lacks optimization where it should be pre-allocating these arrays.
+if(MSVC)
+ set_source_files_properties(
+ ${CMAKE_CURRENT_SOURCE_DIR}/exercise.c
+ ${CMAKE_CURRENT_SOURCE_DIR}/decode_rs.c
+ PROPERTIES COMPILE_DEFINITIONS "MAX_ARRAY=256;"
+ )
+endif(MSVC)
+
+set(gr_core_rs_sources
+ ${CMAKE_CURRENT_SOURCE_DIR}/encode_rs.c
+ ${CMAKE_CURRENT_SOURCE_DIR}/decode_rs.c
+ ${CMAKE_CURRENT_SOURCE_DIR}/init_rs.c
+)
+
+########################################################################
+# Setup sources and includes
+########################################################################
+list(APPEND gnuradio_core_sources ${gr_core_rs_sources})
+
+install(
+ FILES ${CMAKE_CURRENT_SOURCE_DIR}/rs.h
+ DESTINATION ${GR_INCLUDE_DIR}/gnuradio
+ COMPONENT "core_devel"
+)
+
+########################################################################
+# Register unit tests
+########################################################################
+if(ENABLE_TESTING)
+add_executable(gr_core_rstest
+ ${gr_core_rs_sources}
+ ${CMAKE_CURRENT_SOURCE_DIR}/rstest.c
+ ${CMAKE_CURRENT_SOURCE_DIR}/exercise.c
+)
+add_test(gr-core-reed-solomon-test gr_core_rstest)
+endif(ENABLE_TESTING)
diff --git a/gnuradio-core/src/lib/reed-solomon/char.h b/gnuradio-core/src/lib/reed-solomon/char.h
index 2fbcb504a..8010fb0b9 100644
--- a/gnuradio-core/src/lib/reed-solomon/char.h
+++ b/gnuradio-core/src/lib/reed-solomon/char.h
@@ -6,6 +6,8 @@
#define DTYPE unsigned char
+#include <gr_core_api.h>
+
/* Reed-Solomon codec control block */
struct rs {
unsigned int mm; /* Bits per symbol */
@@ -44,12 +46,11 @@ static inline int modnn(struct rs *rs,int x){
#define INIT_RS init_rs_char
#define FREE_RS free_rs_char
-void ENCODE_RS(void *p,DTYPE *data,DTYPE *parity);
-int DECODE_RS(void *p,DTYPE *data,int *eras_pos,int no_eras);
-void *INIT_RS(unsigned int symsize,unsigned int gfpoly,unsigned int fcr,
+GR_CORE_API void ENCODE_RS(void *p,DTYPE *data,DTYPE *parity);
+GR_CORE_API int DECODE_RS(void *p,DTYPE *data,int *eras_pos,int no_eras);
+GR_CORE_API void *INIT_RS(unsigned int symsize,unsigned int gfpoly,unsigned int fcr,
unsigned int prim,unsigned int nroots);
-void FREE_RS(void *p);
-
+GR_CORE_API void FREE_RS(void *p);
diff --git a/gnuradio-core/src/lib/reed-solomon/decode_rs.c b/gnuradio-core/src/lib/reed-solomon/decode_rs.c
index 27ddd8532..ba60b89ee 100644
--- a/gnuradio-core/src/lib/reed-solomon/decode_rs.c
+++ b/gnuradio-core/src/lib/reed-solomon/decode_rs.c
@@ -8,7 +8,6 @@
#endif
#include <string.h>
-#include <strings.h>
#define NULL ((void *)0)
#define min(a,b) ((a) < (b) ? (a) : (b))
@@ -32,11 +31,19 @@ DTYPE *data, int *eras_pos, int no_eras){
#endif
int deg_lambda, el, deg_omega;
int i, j, r,k;
+#ifdef MAX_ARRAY
+ DTYPE u,q,tmp,num1,num2,den,discr_r;
+ DTYPE lambda[MAX_ARRAY], s[MAX_ARRAY]; /* Err+Eras Locator poly
+ * and syndrome poly */
+ DTYPE b[MAX_ARRAY], t[MAX_ARRAY], omega[MAX_ARRAY];
+ DTYPE root[MAX_ARRAY], reg[MAX_ARRAY], loc[MAX_ARRAY];
+#else
DTYPE u,q,tmp,num1,num2,den,discr_r;
DTYPE lambda[NROOTS+1], s[NROOTS]; /* Err+Eras Locator poly
* and syndrome poly */
DTYPE b[NROOTS+1], t[NROOTS+1], omega[NROOTS+1];
DTYPE root[NROOTS], reg[NROOTS+1], loc[NROOTS];
+#endif
int syn_error, count;
/* form the syndromes; i.e., evaluate data(x) at roots of g(x) */
diff --git a/gnuradio-core/src/lib/reed-solomon/encode_rs.c b/gnuradio-core/src/lib/reed-solomon/encode_rs.c
index 147f0a9e3..9d56d0bf1 100644
--- a/gnuradio-core/src/lib/reed-solomon/encode_rs.c
+++ b/gnuradio-core/src/lib/reed-solomon/encode_rs.c
@@ -3,7 +3,6 @@
* May be used under the terms of the GNU General Public License (GPL)
*/
#include <string.h>
-#include <strings.h>
#ifdef FIXED
#include "fixed.h"
diff --git a/gnuradio-core/src/lib/reed-solomon/exercise.c b/gnuradio-core/src/lib/reed-solomon/exercise.c
index 1e04f618d..987fe1aeb 100644
--- a/gnuradio-core/src/lib/reed-solomon/exercise.c
+++ b/gnuradio-core/src/lib/reed-solomon/exercise.c
@@ -13,7 +13,6 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include <strings.h>
#ifdef FIXED
#include "fixed.h"
@@ -47,11 +46,19 @@ int trials){
#if !defined(CCSDS) && !defined(FIXED)
struct rs *rs = (struct rs *)p;
#endif
+#if MAX_ARRAY
+ DTYPE block[MAX_ARRAY],tblock[MAX_ARRAY];
+ int i;
+ int errors;
+ int errlocs[MAX_ARRAY];
+ int derrlocs[MAX_ARRAY];
+#else
DTYPE block[NN],tblock[NN];
int i;
int errors;
int errlocs[NN];
int derrlocs[NROOTS];
+#endif
int derrors;
int errval,errloc;
int erasures;
diff --git a/gnuradio-core/src/lib/reed-solomon/fixed.h b/gnuradio-core/src/lib/reed-solomon/fixed.h
index 9f0ddd9a4..30091e7bf 100644
--- a/gnuradio-core/src/lib/reed-solomon/fixed.h
+++ b/gnuradio-core/src/lib/reed-solomon/fixed.h
@@ -7,6 +7,8 @@
*/
#define DTYPE unsigned char
+#include <gr_core_api.h>
+
static inline int mod255(int x){
while (x >= 255) {
x -= 255;
@@ -34,5 +36,5 @@ extern unsigned char CCSDS_poly[];
#define ENCODE_RS encode_rs_8
#define DECODE_RS decode_rs_8
-void ENCODE_RS(DTYPE *data,DTYPE *parity);
-int DECODE_RS(DTYPE *data, int *eras_pos, int no_eras);
+GR_CORE_API void ENCODE_RS(DTYPE *data,DTYPE *parity);
+GR_CORE_API int DECODE_RS(DTYPE *data, int *eras_pos, int no_eras); \ No newline at end of file
diff --git a/gnuradio-core/src/lib/reed-solomon/int.h b/gnuradio-core/src/lib/reed-solomon/int.h
index 2b0405ae0..79979f827 100644
--- a/gnuradio-core/src/lib/reed-solomon/int.h
+++ b/gnuradio-core/src/lib/reed-solomon/int.h
@@ -5,8 +5,10 @@
*/
#define DTYPE int
+#include <gr_core_api.h>
+
/* Reed-Solomon codec control block */
-struct rs {
+struct GR_CORE_API rs {
unsigned int mm; /* Bits per symbol */
unsigned int nn; /* Symbols per block (= (1<<mm)-1) */
int *alpha_to; /* log lookup table */
@@ -43,12 +45,11 @@ static inline int modnn(struct rs *rs,int x){
#define INIT_RS init_rs_int
#define FREE_RS free_rs_int
-void ENCODE_RS(void *p,DTYPE *data,DTYPE *parity);
-int DECODE_RS(void *p,DTYPE *data,int *eras_pos,int no_eras);
+GR_CORE_API void ENCODE_RS(void *p,DTYPE *data,DTYPE *parity);
+GR_CORE_API int DECODE_RS(void *p,DTYPE *data,int *eras_pos,int no_eras);
void *INIT_RS(unsigned int symsize,unsigned int gfpoly,unsigned int fcr,
unsigned int prim,unsigned int nroots);
-void FREE_RS(void *p);
-
+GR_CORE_API void FREE_RS(void *p);
diff --git a/gnuradio-core/src/lib/reed-solomon/rs.h b/gnuradio-core/src/lib/reed-solomon/rs.h
index 9e731d9d9..97e78769e 100644
--- a/gnuradio-core/src/lib/reed-solomon/rs.h
+++ b/gnuradio-core/src/lib/reed-solomon/rs.h
@@ -1,28 +1,29 @@
+#include <gr_core_api.h>
/* User include file for the Reed-Solomon codec
* Copyright 2002, Phil Karn KA9Q
* May be used under the terms of the GNU General Public License (GPL)
*/
/* General purpose RS codec, 8-bit symbols */
-void encode_rs_char(void *rs,unsigned char *data,unsigned char *parity);
-int decode_rs_char(void *rs,unsigned char *data,int *eras_pos,
+GR_CORE_API void encode_rs_char(void *rs,unsigned char *data,unsigned char *parity);
+GR_CORE_API int decode_rs_char(void *rs,unsigned char *data,int *eras_pos,
int no_eras);
-void *init_rs_char(unsigned int symsize,unsigned int gfpoly,
+GR_CORE_API void *init_rs_char(unsigned int symsize,unsigned int gfpoly,
unsigned int fcr,unsigned int prim,unsigned int nroots);
-void free_rs_char(void *rs);
+GR_CORE_API void free_rs_char(void *rs);
/* General purpose RS codec, integer symbols */
-void encode_rs_int(void *rs,int *data,int *parity);
-int decode_rs_int(void *rs,int *data,int *eras_pos,int no_eras);
-void *init_rs_int(unsigned int symsize,unsigned int gfpoly,unsigned int fcr,
+GR_CORE_API void encode_rs_int(void *rs,int *data,int *parity);
+GR_CORE_API int decode_rs_int(void *rs,int *data,int *eras_pos,int no_eras);
+GR_CORE_API void *init_rs_int(unsigned int symsize,unsigned int gfpoly,unsigned int fcr,
unsigned int prim,unsigned int nroots);
-void free_rs_int(void *rs);
+GR_CORE_API void free_rs_int(void *rs);
/* CCSDS standard (255,223) RS codec with conventional (*not* dual-basis)
* symbol representation
*/
-void encode_rs_8(unsigned char *data,unsigned char *parity);
-int decode_rs_8(unsigned char *data,int *eras_pos,int no_eras);
+GR_CORE_API void encode_rs_8(unsigned char *data,unsigned char *parity);
+GR_CORE_API int decode_rs_8(unsigned char *data,int *eras_pos,int no_eras);
/* Tables to map from conventional->dual (Taltab) and
* dual->conventional (Tal1tab) bases
diff --git a/gnuradio-core/src/lib/runtime/CMakeLists.txt b/gnuradio-core/src/lib/runtime/CMakeLists.txt
new file mode 100644
index 000000000..52cb39c40
--- /dev/null
+++ b/gnuradio-core/src/lib/runtime/CMakeLists.txt
@@ -0,0 +1,162 @@
+# Copyright 2010-2010 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+
+########################################################################
+# This file included, use CMake directory variables
+########################################################################
+
+########################################################################
+# Append gnuradio-core library sources
+########################################################################
+list(APPEND gnuradio_core_sources
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_basic_block.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_flowgraph.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_flat_flowgraph.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_block.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_block_detail.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_block_executor.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_hier_block2.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_hier_block2_detail.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_buffer.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_dispatcher.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_error_handler.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_io_signature.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_local_sighandler.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_message.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_msg_accepter.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_msg_handler.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_msg_queue.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_pagesize.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_preferences.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_realtime.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_scheduler.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_scheduler_sts.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_scheduler_tpb.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_single_threaded_scheduler.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_sptr_magic.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_sync_block.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_sync_decimator.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_sync_interpolator.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_sys_paths.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_top_block.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_top_block_impl.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_tpb_detail.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_tpb_thread_body.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_vmcircbuf.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_vmcircbuf_mmap_shm_open.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_vmcircbuf_mmap_tmpfile.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_vmcircbuf_createfilemapping.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_vmcircbuf_sysv_shm.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_select_handler.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_tag_info.cc
+)
+
+########################################################################
+# Append gnuradio-core test sources
+########################################################################
+list(APPEND test_gnuradio_core_sources
+ ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_block.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_hier_block2.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_hier_block2_derived.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_buffer.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_flowgraph.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_top_block.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_io_signature.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_vmcircbuf.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/qa_block_tags.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/qa_runtime.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/qa_set_msg_handler.cc
+)
+
+########################################################################
+# Install runtime headers
+########################################################################
+install(FILES
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_basic_block.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_flowgraph.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_flat_flowgraph.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_block.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_block_detail.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_block_executor.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_hier_block2.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_hier_block2_detail.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_buffer.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_complex.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_dispatcher.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_error_handler.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_io_signature.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_local_sighandler.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_message.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_msg_accepter.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_msg_handler.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_msg_queue.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_pagesize.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_preferences.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_realtime.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_runtime_types.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_scheduler.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_scheduler_sts.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_scheduler_tpb.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_select_handler.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_single_threaded_scheduler.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_sptr_magic.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_sync_block.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_sync_decimator.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_sync_interpolator.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_top_block.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_top_block_impl.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_tpb_detail.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_tpb_thread_body.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_timer.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_sys_paths.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_types.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_unittests.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_vmcircbuf.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_tag_info.h
+ DESTINATION ${GR_INCLUDE_DIR}/gnuradio
+ COMPONENT "core_devel"
+)
+
+########################################################################
+# Install swig headers
+########################################################################
+if(ENABLE_PYTHON)
+install(FILES
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_basic_block.i
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_block.i
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_block_detail.i
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_hier_block2.i
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_buffer.i
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_dispatcher.i
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_error_handler.i
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_io_signature.i
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_message.i
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_msg_handler.i
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_msg_queue.i
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_realtime.i
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_single_threaded_scheduler.i
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_sync_block.i
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_sync_decimator.i
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_sync_interpolator.i
+ ${CMAKE_CURRENT_SOURCE_DIR}/gr_top_block.i
+ ${CMAKE_CURRENT_SOURCE_DIR}/runtime.i
+ DESTINATION ${GR_INCLUDE_DIR}/gnuradio/swig
+ COMPONENT "core_swig"
+)
+endif(ENABLE_PYTHON)
diff --git a/gnuradio-core/src/lib/runtime/gr_basic_block.h b/gnuradio-core/src/lib/runtime/gr_basic_block.h
index 3b0cd51dd..2adca8ccb 100644
--- a/gnuradio-core/src/lib/runtime/gr_basic_block.h
+++ b/gnuradio-core/src/lib/runtime/gr_basic_block.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_GR_BASIC_BLOCK_H
#define INCLUDED_GR_BASIC_BLOCK_H
+#include <gr_core_api.h>
#include <gr_runtime_types.h>
#include <gr_sptr_magic.h>
#include <boost/enable_shared_from_this.hpp>
@@ -41,7 +42,7 @@
* signal processing functions.
*/
-class gr_basic_block : public gr_msg_accepter, public boost::enable_shared_from_this<gr_basic_block>
+class GR_CORE_API gr_basic_block : public gr_msg_accepter, public boost::enable_shared_from_this<gr_basic_block>
{
typedef boost::function<void(pmt::pmt_t)> msg_handler_t;
@@ -158,7 +159,7 @@ inline bool operator<(gr_basic_block_sptr lhs, gr_basic_block_sptr rhs)
typedef std::vector<gr_basic_block_sptr> gr_basic_block_vector_t;
typedef std::vector<gr_basic_block_sptr>::iterator gr_basic_block_viter_t;
-long gr_basic_block_ncurrently_allocated();
+GR_CORE_API long gr_basic_block_ncurrently_allocated();
inline std::ostream &operator << (std::ostream &os, gr_basic_block_sptr basic_block)
{
diff --git a/gnuradio-core/src/lib/runtime/gr_block.h b/gnuradio-core/src/lib/runtime/gr_block.h
index fc22f9ea8..2453e97b8 100644
--- a/gnuradio-core/src/lib/runtime/gr_block.h
+++ b/gnuradio-core/src/lib/runtime/gr_block.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_GR_BLOCK_H
#define INCLUDED_GR_BLOCK_H
+#include <gr_core_api.h>
#include <gr_basic_block.h>
/*!
@@ -53,7 +54,7 @@
* It reads the input items and writes the output items.
*/
-class gr_block : public gr_basic_block {
+class GR_CORE_API gr_block : public gr_basic_block {
public:
@@ -300,7 +301,7 @@ class gr_block : public gr_basic_block {
const pmt::pmt_t &key);
// These are really only for internal use, but leaving them public avoids
- // having to work up an ever-varying list of friends
+ // having to work up an ever-varying list of friend GR_CORE_APIs
public:
gr_block_detail_sptr detail () const { return d_detail; }
diff --git a/gnuradio-core/src/lib/runtime/gr_block_detail.h b/gnuradio-core/src/lib/runtime/gr_block_detail.h
index d7ec3b136..633da1b0c 100644
--- a/gnuradio-core/src/lib/runtime/gr_block_detail.h
+++ b/gnuradio-core/src/lib/runtime/gr_block_detail.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_GR_BLOCK_DETAIL_H
#define INCLUDED_GR_BLOCK_DETAIL_H
+#include <gr_core_api.h>
#include <gr_runtime_types.h>
#include <gr_tpb_detail.h>
#include <gr_tag_info.h>
@@ -36,7 +37,7 @@
* of almost all users of GNU Radio. This decoupling also means that
* we can make changes to the guts without having to recompile everything.
*/
-class gr_block_detail {
+class GR_CORE_API gr_block_detail {
public:
~gr_block_detail ();
@@ -172,16 +173,16 @@ class gr_block_detail {
gr_block_detail (unsigned int ninputs, unsigned int noutputs);
- friend class gr_tpb_detail;
+ friend struct gr_tpb_detail;
- friend gr_block_detail_sptr
+ friend GR_CORE_API gr_block_detail_sptr
gr_make_block_detail (unsigned int ninputs, unsigned int noutputs);
};
-gr_block_detail_sptr
+GR_CORE_API gr_block_detail_sptr
gr_make_block_detail (unsigned int ninputs, unsigned int noutputs);
-long
+GR_CORE_API long
gr_block_detail_ncurrently_allocated ();
#endif /* INCLUDED_GR_BLOCK_DETAIL_H */
diff --git a/gnuradio-core/src/lib/runtime/gr_block_executor.cc b/gnuradio-core/src/lib/runtime/gr_block_executor.cc
index a8d0bc1c8..b3f987f72 100644
--- a/gnuradio-core/src/lib/runtime/gr_block_executor.cc
+++ b/gnuradio-core/src/lib/runtime/gr_block_executor.cc
@@ -29,6 +29,7 @@
#include <gr_block_detail.h>
#include <gr_buffer.h>
#include <boost/thread.hpp>
+#include <boost/format.hpp>
#include <iostream>
#include <limits>
#include <assert.h>
@@ -165,9 +166,8 @@ gr_block_executor::gr_block_executor (gr_block_sptr block)
: d_block(block), d_log(0)
{
if (ENABLE_LOGGING){
- char name[100];
- snprintf(name, sizeof(name), "sst-%03d.log", which_scheduler++);
- d_log = new std::ofstream(name);
+ std::string name = str(boost::format("sst-%03d.log") % which_scheduler++);
+ d_log = new std::ofstream(name.c_str());
std::unitbuf(*d_log); // make it unbuffered...
*d_log << "gr_block_executor: "
<< d_block << std::endl;
diff --git a/gnuradio-core/src/lib/runtime/gr_block_executor.h b/gnuradio-core/src/lib/runtime/gr_block_executor.h
index 77ace5522..cd93212e1 100644
--- a/gnuradio-core/src/lib/runtime/gr_block_executor.h
+++ b/gnuradio-core/src/lib/runtime/gr_block_executor.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_GR_BLOCK_EXECUTOR_H
#define INCLUDED_GR_BLOCK_EXECUTOR_H
+#include <gr_core_api.h>
#include <gr_runtime_types.h>
#include <fstream>
#include <gruel/pmt.h>
@@ -36,7 +37,7 @@
* \ingroup internal
*/
-class gr_block_executor {
+class GR_CORE_API gr_block_executor {
protected:
gr_block_sptr d_block; // The block we're trying to run
std::ofstream *d_log;
diff --git a/gnuradio-core/src/lib/runtime/gr_buffer.h b/gnuradio-core/src/lib/runtime/gr_buffer.h
index e5725d386..e7c0a06a5 100644
--- a/gnuradio-core/src/lib/runtime/gr_buffer.h
+++ b/gnuradio-core/src/lib/runtime/gr_buffer.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_GR_BUFFER_H
#define INCLUDED_GR_BUFFER_H
+#include <gr_core_api.h>
#include <gr_runtime_types.h>
#include <boost/weak_ptr.hpp>
#include <gruel/thread.h>
@@ -42,14 +43,14 @@ class gr_vmcircbuf;
* \param sizeof_item is the size of an item in bytes.
* \param link is the block that writes to this buffer.
*/
-gr_buffer_sptr gr_make_buffer (int nitems, size_t sizeof_item, gr_block_sptr link=gr_block_sptr());
+GR_CORE_API gr_buffer_sptr gr_make_buffer (int nitems, size_t sizeof_item, gr_block_sptr link=gr_block_sptr());
/*!
* \brief Single writer, multiple reader fifo.
* \ingroup internal
*/
-class gr_buffer {
+class GR_CORE_API gr_buffer {
public:
virtual ~gr_buffer ();
@@ -115,8 +116,8 @@ class gr_buffer {
private:
friend class gr_buffer_reader;
- friend gr_buffer_sptr gr_make_buffer (int nitems, size_t sizeof_item, gr_block_sptr link);
- friend gr_buffer_reader_sptr gr_buffer_add_reader (gr_buffer_sptr buf, int nzero_preload, gr_block_sptr link);
+ friend GR_CORE_API gr_buffer_sptr gr_make_buffer (int nitems, size_t sizeof_item, gr_block_sptr link);
+ friend GR_CORE_API gr_buffer_reader_sptr gr_buffer_add_reader (gr_buffer_sptr buf, int nzero_preload, gr_block_sptr link);
protected:
char *d_base; // base address of buffer
@@ -192,11 +193,11 @@ class gr_buffer {
* \param nzero_preload -- number of zero items to "preload" into buffer.
* \param link is the block that reads from the buffer using this gr_buffer_reader.
*/
-gr_buffer_reader_sptr
+GR_CORE_API gr_buffer_reader_sptr
gr_buffer_add_reader (gr_buffer_sptr buf, int nzero_preload, gr_block_sptr link=gr_block_sptr());
//! returns # of gr_buffers currently allocated
-long gr_buffer_ncurrently_allocated ();
+GR_CORE_API long gr_buffer_ncurrently_allocated ();
// ---------------------------------------------------------------------------
@@ -206,7 +207,7 @@ long gr_buffer_ncurrently_allocated ();
* \ingroup internal
*/
-class gr_buffer_reader {
+class GR_CORE_API gr_buffer_reader {
public:
~gr_buffer_reader ();
@@ -276,7 +277,7 @@ class gr_buffer_reader {
private:
friend class gr_buffer;
- friend gr_buffer_reader_sptr
+ friend GR_CORE_API gr_buffer_reader_sptr
gr_buffer_add_reader (gr_buffer_sptr buf, int nzero_preload, gr_block_sptr link);
@@ -290,7 +291,7 @@ class gr_buffer_reader {
};
//! returns # of gr_buffer_readers currently allocated
-long gr_buffer_reader_ncurrently_allocated ();
+GR_CORE_API long gr_buffer_reader_ncurrently_allocated ();
#endif /* INCLUDED_GR_BUFFER_H */
diff --git a/gnuradio-core/src/lib/runtime/gr_dispatcher.h b/gnuradio-core/src/lib/runtime/gr_dispatcher.h
index 34f825102..735974766 100644
--- a/gnuradio-core/src/lib/runtime/gr_dispatcher.h
+++ b/gnuradio-core/src/lib/runtime/gr_dispatcher.h
@@ -23,14 +23,15 @@
#ifndef INCLUDED_GR_DISPATCHER_H
#define INCLUDED_GR_DISPATCHER_H
+#include <gr_core_api.h>
#include <gr_select_handler.h>
#include <vector>
class gr_dispatcher;
typedef boost::shared_ptr<gr_dispatcher> gr_dispatcher_sptr;
-gr_dispatcher_sptr gr_dispatcher_singleton();
-gr_dispatcher_sptr gr_make_dispatcher();
+GR_CORE_API gr_dispatcher_sptr gr_dispatcher_singleton();
+GR_CORE_API gr_dispatcher_sptr gr_make_dispatcher();
/*!
* \brief invoke callbacks based on select.
@@ -38,10 +39,10 @@ gr_dispatcher_sptr gr_make_dispatcher();
*
* \sa gr_select_handler
*/
-class gr_dispatcher
+class GR_CORE_API gr_dispatcher
{
gr_dispatcher();
- friend gr_dispatcher_sptr gr_make_dispatcher();
+ friend GR_CORE_API gr_dispatcher_sptr gr_make_dispatcher();
std::vector<gr_select_handler_sptr> d_handler;
int d_max_index;
diff --git a/gnuradio-core/src/lib/runtime/gr_error_handler.h b/gnuradio-core/src/lib/runtime/gr_error_handler.h
index aedb6f41f..4c30791f2 100644
--- a/gnuradio-core/src/lib/runtime/gr_error_handler.h
+++ b/gnuradio-core/src/lib/runtime/gr_error_handler.h
@@ -43,6 +43,7 @@
#ifndef INCLUDED_GR_ERROR_HANDLER_H
#define INCLUDED_GR_ERROR_HANDLER_H
+#include <gr_core_api.h>
#include <stdarg.h>
#include <string>
#include <cstdio> // for FILE
@@ -51,7 +52,7 @@
* \brief abstract error handler
* \ingroup base
*/
-class gr_error_handler {
+class GR_CORE_API gr_error_handler {
public:
enum seriousness {
ERR_DEBUG = 0x00000000,
@@ -90,7 +91,7 @@ protected:
};
-class gr_base_error_handler : public gr_error_handler {
+class GR_CORE_API gr_base_error_handler : public gr_error_handler {
int d_nwarnings;
int d_nerrors;
@@ -102,7 +103,7 @@ public:
void count_error(seriousness s);
};
-class gr_file_error_handler : public gr_base_error_handler {
+class GR_CORE_API gr_file_error_handler : public gr_base_error_handler {
FILE *d_file;
int d_fd;
public:
diff --git a/gnuradio-core/src/lib/runtime/gr_flat_flowgraph.h b/gnuradio-core/src/lib/runtime/gr_flat_flowgraph.h
index 8e9834337..2cc883686 100644
--- a/gnuradio-core/src/lib/runtime/gr_flat_flowgraph.h
+++ b/gnuradio-core/src/lib/runtime/gr_flat_flowgraph.h
@@ -23,22 +23,23 @@
#ifndef INCLUDED_GR_FLAT_FLOWGRAPH_H
#define INCLUDED_GR_FLAT_FLOWGRAPH_H
+#include <gr_core_api.h>
#include <gr_flowgraph.h>
#include <gr_block.h>
// Create a shared pointer to a heap allocated gr_flat_flowgraph
// (types defined in gr_runtime_types.h)
-gr_flat_flowgraph_sptr gr_make_flat_flowgraph();
+GR_CORE_API gr_flat_flowgraph_sptr gr_make_flat_flowgraph();
/*!
*\brief Class specializing gr_flat_flowgraph that has all nodes
* as gr_blocks, with no hierarchy
* \ingroup internal
*/
-class gr_flat_flowgraph : public gr_flowgraph
+class GR_CORE_API gr_flat_flowgraph : public gr_flowgraph
{
public:
- friend gr_flat_flowgraph_sptr gr_make_flat_flowgraph();
+ friend GR_CORE_API gr_flat_flowgraph_sptr gr_make_flat_flowgraph();
// Destruct an arbitrary gr_flat_flowgraph
~gr_flat_flowgraph();
diff --git a/gnuradio-core/src/lib/runtime/gr_flowgraph.h b/gnuradio-core/src/lib/runtime/gr_flowgraph.h
index 8e988506b..8f9a8ba71 100644
--- a/gnuradio-core/src/lib/runtime/gr_flowgraph.h
+++ b/gnuradio-core/src/lib/runtime/gr_flowgraph.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_GR_FLOWGRAPH_H
#define INCLUDED_GR_FLOWGRAPH_H
+#include <gr_core_api.h>
#include <gr_basic_block.h>
#include <iostream>
@@ -30,7 +31,7 @@
* \brief Class representing a specific input or output graph endpoint
* \ingroup internal
*/
-class gr_endpoint
+class GR_CORE_API gr_endpoint
{
private:
gr_basic_block_sptr d_basic_block;
@@ -59,7 +60,7 @@ typedef std::vector<gr_endpoint>::iterator gr_endpoint_viter_t;
*\brief Class representing a connection between to graph endpoints
*
*/
-class gr_edge
+class GR_CORE_API gr_edge
{
public:
gr_edge() : d_src(), d_dst() { };
@@ -81,16 +82,16 @@ typedef std::vector<gr_edge>::iterator gr_edge_viter_t;
// Create a shared pointer to a heap allocated flowgraph
// (types defined in gr_runtime_types.h)
-gr_flowgraph_sptr gr_make_flowgraph();
+GR_CORE_API gr_flowgraph_sptr gr_make_flowgraph();
/*!
* \brief Class representing a directed, acyclic graph of basic blocks
* \ingroup internal
*/
-class gr_flowgraph
+class GR_CORE_API gr_flowgraph
{
public:
- friend gr_flowgraph_sptr gr_make_flowgraph();
+ friend GR_CORE_API gr_flowgraph_sptr gr_make_flowgraph();
// Destruct an arbitrary flowgraph
~gr_flowgraph();
diff --git a/gnuradio-core/src/lib/runtime/gr_hier_block2.h b/gnuradio-core/src/lib/runtime/gr_hier_block2.h
index 0a40c36b7..8687b7d99 100644
--- a/gnuradio-core/src/lib/runtime/gr_hier_block2.h
+++ b/gnuradio-core/src/lib/runtime/gr_hier_block2.h
@@ -22,13 +22,14 @@
#ifndef INCLUDED_GR_HIER_BLOCK2_H
#define INCLUDED_GR_HIER_BLOCK2_H
+#include <gr_core_api.h>
#include <gr_basic_block.h>
/*!
* \brief public constructor for gr_hier_block2
*/
-gr_hier_block2_sptr gr_make_hier_block2(const std::string &name,
+GR_CORE_API gr_hier_block2_sptr gr_make_hier_block2(const std::string &name,
gr_io_signature_sptr input_signature,
gr_io_signature_sptr output_signature);
@@ -40,11 +41,11 @@ class gr_hier_block2_detail;
* \ingroup base_blk
*
*/
-class gr_hier_block2 : public gr_basic_block
+class GR_CORE_API gr_hier_block2 : public gr_basic_block
{
private:
friend class gr_hier_block2_detail;
- friend gr_hier_block2_sptr gr_make_hier_block2(const std::string &name,
+ friend GR_CORE_API gr_hier_block2_sptr gr_make_hier_block2(const std::string &name,
gr_io_signature_sptr input_signature,
gr_io_signature_sptr output_signature);
diff --git a/gnuradio-core/src/lib/runtime/gr_hier_block2_detail.h b/gnuradio-core/src/lib/runtime/gr_hier_block2_detail.h
index 6f5384e5a..5a77d6a03 100644
--- a/gnuradio-core/src/lib/runtime/gr_hier_block2_detail.h
+++ b/gnuradio-core/src/lib/runtime/gr_hier_block2_detail.h
@@ -22,6 +22,7 @@
#ifndef INCLUDED_GR_HIER_BLOCK2_DETAIL_H
#define INCLUDED_GR_HIER_BLOCK2_DETAIL_H
+#include <gr_core_api.h>
#include <gr_hier_block2.h>
#include <gr_flat_flowgraph.h>
#include <boost/utility.hpp>
@@ -29,7 +30,7 @@
/*!
* \ingroup internal
*/
-class gr_hier_block2_detail : boost::noncopyable
+class GR_CORE_API gr_hier_block2_detail : boost::noncopyable
{
public:
gr_hier_block2_detail(gr_hier_block2 *owner);
diff --git a/gnuradio-core/src/lib/runtime/gr_io_signature.h b/gnuradio-core/src/lib/runtime/gr_io_signature.h
index 5d194cf55..11c6b7f13 100644
--- a/gnuradio-core/src/lib/runtime/gr_io_signature.h
+++ b/gnuradio-core/src/lib/runtime/gr_io_signature.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_IO_SIGNATURE_H
#define INCLUDED_IO_SIGNATURE_H
+#include <gr_core_api.h>
#include <gr_runtime_types.h>
/*!
@@ -33,7 +34,7 @@
* \param max_streams specify maximum number of streams (>= min_streams or -1 -> infinite)
* \param sizeof_stream_item specify the size of the items in each stream
*/
-gr_io_signature_sptr
+GR_CORE_API gr_io_signature_sptr
gr_make_io_signature(int min_streams, int max_streams,
int sizeof_stream_item);
@@ -45,7 +46,7 @@ gr_make_io_signature(int min_streams, int max_streams,
* \param sizeof_stream_item1 specify the size of the items in the first stream
* \param sizeof_stream_item2 specify the size of the items in the second and subsequent streams
*/
-gr_io_signature_sptr
+GR_CORE_API gr_io_signature_sptr
gr_make_io_signature2(int min_streams, int max_streams,
int sizeof_stream_item1,
int sizeof_stream_item2
@@ -60,7 +61,7 @@ gr_make_io_signature2(int min_streams, int max_streams,
* \param sizeof_stream_item2 specify the size of the items in the second stream
* \param sizeof_stream_item3 specify the size of the items in the third and subsequent streams
*/
-gr_io_signature_sptr
+GR_CORE_API gr_io_signature_sptr
gr_make_io_signature3(int min_streams, int max_streams,
int sizeof_stream_item1,
int sizeof_stream_item2,
@@ -78,7 +79,7 @@ gr_make_io_signature3(int min_streams, int max_streams,
* value of the last entry in sizeof_stream_items is used for the missing values.
* sizeof_stream_items must contain at least 1 entry.
*/
-gr_io_signature_sptr
+GR_CORE_API gr_io_signature_sptr
gr_make_io_signaturev(int min_streams, int max_streams,
const std::vector<int> &sizeof_stream_items);
@@ -87,7 +88,7 @@ gr_make_io_signaturev(int min_streams, int max_streams,
* \brief i/o signature for input and output ports.
* \brief misc
*/
-class gr_io_signature {
+class GR_CORE_API gr_io_signature {
int d_min_streams;
int d_max_streams;
std::vector<int> d_sizeof_stream_item;
@@ -95,7 +96,7 @@ class gr_io_signature {
gr_io_signature(int min_streams, int max_streams,
const std::vector<int> &sizeof_stream_items);
- friend gr_io_signature_sptr
+ friend GR_CORE_API gr_io_signature_sptr
gr_make_io_signaturev(int min_streams,
int max_streams,
const std::vector<int> &sizeof_stream_items);
diff --git a/gnuradio-core/src/lib/runtime/gr_local_sighandler.h b/gnuradio-core/src/lib/runtime/gr_local_sighandler.h
index 6b60cf09a..9e4eacc47 100644
--- a/gnuradio-core/src/lib/runtime/gr_local_sighandler.h
+++ b/gnuradio-core/src/lib/runtime/gr_local_sighandler.h
@@ -27,6 +27,7 @@
#include <signal.h>
#endif
+#include <gr_core_api.h>
#include <string>
/*!
@@ -36,7 +37,7 @@
* Constructor installs new handler, destructor reinstalls
* original value.
*/
-class gr_local_sighandler {
+class GR_CORE_API gr_local_sighandler {
int d_signum;
#ifdef HAVE_SIGACTION
struct sigaction d_old_action;
@@ -52,7 +53,7 @@ public:
/*!
* \brief Representation of signal.
*/
-class gr_signal
+class GR_CORE_API gr_signal
{
int d_signum;
public:
diff --git a/gnuradio-core/src/lib/runtime/gr_message.h b/gnuradio-core/src/lib/runtime/gr_message.h
index 179f7d9bc..ead002616 100644
--- a/gnuradio-core/src/lib/runtime/gr_message.h
+++ b/gnuradio-core/src/lib/runtime/gr_message.h
@@ -22,6 +22,7 @@
#ifndef INCLUDED_GR_MESSAGE_H
#define INCLUDED_GR_MESSAGE_H
+#include <gr_core_api.h>
#include <gr_types.h>
#include <string>
@@ -31,10 +32,10 @@ typedef boost::shared_ptr<gr_message> gr_message_sptr;
/*!
* \brief public constructor for gr_message
*/
-gr_message_sptr
+GR_CORE_API gr_message_sptr
gr_make_message(long type = 0, double arg1 = 0, double arg2 = 0, size_t length = 0);
-gr_message_sptr
+GR_CORE_API gr_message_sptr
gr_make_message_from_string(const std::string s, long type = 0, double arg1 = 0, double arg2 = 0);
/*!
@@ -44,7 +45,7 @@ gr_make_message_from_string(const std::string s, long type = 0, double arg1 = 0,
* The ideas and method names for adjustable message length were
* lifted from the click modular router "Packet" class.
*/
-class gr_message {
+class GR_CORE_API gr_message {
gr_message_sptr d_next; // link field for msg queue
long d_type; // type of the message
double d_arg1; // optional arg1
@@ -57,10 +58,10 @@ class gr_message {
gr_message (long type, double arg1, double arg2, size_t length);
- friend gr_message_sptr
+ friend GR_CORE_API gr_message_sptr
gr_make_message (long type, double arg1, double arg2, size_t length);
- friend gr_message_sptr
+ friend GR_CORE_API gr_message_sptr
gr_make_message_from_string (const std::string s, long type, double arg1, double arg2);
friend class gr_msg_queue;
@@ -85,6 +86,6 @@ public:
};
-long gr_message_ncurrently_allocated ();
+GR_CORE_API long gr_message_ncurrently_allocated ();
#endif /* INCLUDED_GR_MESSAGE_H */
diff --git a/gnuradio-core/src/lib/runtime/gr_msg_accepter.h b/gnuradio-core/src/lib/runtime/gr_msg_accepter.h
index 79a631f3a..4aec127a9 100644
--- a/gnuradio-core/src/lib/runtime/gr_msg_accepter.h
+++ b/gnuradio-core/src/lib/runtime/gr_msg_accepter.h
@@ -22,6 +22,7 @@
#ifndef INCLUDED_GR_MSG_ACCEPTER_H
#define INCLUDED_GR_MSG_ACCEPTER_H
+#include <gr_core_api.h>
#include <gruel/msg_accepter.h>
#include <gruel/pmt.h>
@@ -29,7 +30,7 @@
* \brief Accepts messages and inserts them into a message queue, then notifies
* subclass gr_basic_block there is a message pending.
*/
-class gr_msg_accepter : public gruel::msg_accepter
+class GR_CORE_API gr_msg_accepter : public gruel::msg_accepter
{
public:
gr_msg_accepter();
diff --git a/gnuradio-core/src/lib/runtime/gr_msg_handler.h b/gnuradio-core/src/lib/runtime/gr_msg_handler.h
index 774dce73e..ebe3ffe37 100644
--- a/gnuradio-core/src/lib/runtime/gr_msg_handler.h
+++ b/gnuradio-core/src/lib/runtime/gr_msg_handler.h
@@ -22,6 +22,7 @@
#ifndef INCLUDED_GR_MSG_HANDLER_H
#define INCLUDED_GR_MSG_HANDLER_H
+#include <gr_core_api.h>
#include <gr_message.h>
class gr_msg_handler;
@@ -31,7 +32,7 @@ typedef boost::shared_ptr<gr_msg_handler> gr_msg_handler_sptr;
* \brief abstract class of message handlers
* \ingroup base
*/
-class gr_msg_handler {
+class GR_CORE_API gr_msg_handler {
public:
virtual ~gr_msg_handler ();
diff --git a/gnuradio-core/src/lib/runtime/gr_msg_queue.h b/gnuradio-core/src/lib/runtime/gr_msg_queue.h
index 477b1ddf1..bf7b89882 100644
--- a/gnuradio-core/src/lib/runtime/gr_msg_queue.h
+++ b/gnuradio-core/src/lib/runtime/gr_msg_queue.h
@@ -22,19 +22,20 @@
#ifndef INCLUDED_GR_MSG_QUEUE_H
#define INCLUDED_GR_MSG_QUEUE_H
+#include <gr_core_api.h>
#include <gr_msg_handler.h>
#include <gruel/thread.h>
class gr_msg_queue;
typedef boost::shared_ptr<gr_msg_queue> gr_msg_queue_sptr;
-gr_msg_queue_sptr gr_make_msg_queue(unsigned int limit=0);
+GR_CORE_API gr_msg_queue_sptr gr_make_msg_queue(unsigned int limit=0);
/*!
* \brief thread-safe message queue
* \ingroup misc
*/
-class gr_msg_queue : public gr_msg_handler {
+class GR_CORE_API gr_msg_queue : public gr_msg_handler {
gruel::mutex d_mutex;
gruel::condition_variable d_not_empty;
diff --git a/gnuradio-core/src/lib/runtime/gr_pagesize.h b/gnuradio-core/src/lib/runtime/gr_pagesize.h
index 3c1b8eb6b..60dad42c9 100644
--- a/gnuradio-core/src/lib/runtime/gr_pagesize.h
+++ b/gnuradio-core/src/lib/runtime/gr_pagesize.h
@@ -22,11 +22,13 @@
#ifndef _GR_PAGESIZE_H_
#define _GR_PAGESIZE_H_
+#include <gr_core_api.h>
+
/*!
* \brief return the page size in bytes
*/
-int gr_pagesize ();
+GR_CORE_API int gr_pagesize ();
-#endif /* _GR_PAGESIZE_H_ */
+#endif /* _GR_PAGESIZE_H_ */ \ No newline at end of file
diff --git a/gnuradio-core/src/lib/runtime/gr_preferences.h b/gnuradio-core/src/lib/runtime/gr_preferences.h
index 7f2a25e6b..ab4dc0cb0 100644
--- a/gnuradio-core/src/lib/runtime/gr_preferences.h
+++ b/gnuradio-core/src/lib/runtime/gr_preferences.h
@@ -23,10 +23,12 @@
#ifndef _GR_PREFERENCES_H_
#define _GR_PREFERENCES_H_
-class gr_preferences {
+#include <gr_core_api.h>
+
+class GR_CORE_API gr_preferences {
public:
static const char *get (const char *key);
static void set (const char *key, const char *value);
};
-#endif /* _GR_PREFERENCES_H_ */
+#endif /* _GR_PREFERENCES_H_ */ \ No newline at end of file
diff --git a/gnuradio-core/src/lib/runtime/gr_realtime.h b/gnuradio-core/src/lib/runtime/gr_realtime.h
index 830c201d7..58db83086 100644
--- a/gnuradio-core/src/lib/runtime/gr_realtime.h
+++ b/gnuradio-core/src/lib/runtime/gr_realtime.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_GR_REALTIME_H
#define INCLUDED_GR_REALTIME_H
+#include <gr_core_api.h>
#include <gruel/realtime.h>
typedef gruel::rt_status_t gr_rt_status_t;
@@ -31,6 +32,6 @@ typedef gruel::rt_status_t gr_rt_status_t;
* \brief If possible, enable high-priority "real time" scheduling.
* \ingroup misc
*/
-gr_rt_status_t gr_enable_realtime_scheduling();
+GR_CORE_API gr_rt_status_t gr_enable_realtime_scheduling();
#endif /* INCLUDED_GR_REALTIME_H */
diff --git a/gnuradio-core/src/lib/runtime/gr_runtime_types.h b/gnuradio-core/src/lib/runtime/gr_runtime_types.h
index 74d2614a8..98f08b417 100644
--- a/gnuradio-core/src/lib/runtime/gr_runtime_types.h
+++ b/gnuradio-core/src/lib/runtime/gr_runtime_types.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_GR_RUNTIME_TYPES_H
#define INCLUDED_GR_RUNTIME_TYPES_H
+#include <gr_core_api.h>
#include <gr_types.h>
/*
diff --git a/gnuradio-core/src/lib/runtime/gr_scheduler.h b/gnuradio-core/src/lib/runtime/gr_scheduler.h
index 13bc1ff14..4e97b5881 100644
--- a/gnuradio-core/src/lib/runtime/gr_scheduler.h
+++ b/gnuradio-core/src/lib/runtime/gr_scheduler.h
@@ -22,6 +22,7 @@
#ifndef INCLUDED_GR_SCHEDULER_H
#define INCLUDED_GR_SCHEDULER_H
+#include <gr_core_api.h>
#include <boost/utility.hpp>
#include <gr_block.h>
#include <gr_flat_flowgraph.h>
@@ -36,7 +37,7 @@ typedef boost::shared_ptr<gr_scheduler> gr_scheduler_sptr;
*
* Preconditions: details, buffers and buffer readers have been assigned.
*/
-class gr_scheduler : boost::noncopyable
+class GR_CORE_API gr_scheduler : boost::noncopyable
{
public:
diff --git a/gnuradio-core/src/lib/runtime/gr_scheduler_sts.h b/gnuradio-core/src/lib/runtime/gr_scheduler_sts.h
index 4cf835156..9b73b68c1 100644
--- a/gnuradio-core/src/lib/runtime/gr_scheduler_sts.h
+++ b/gnuradio-core/src/lib/runtime/gr_scheduler_sts.h
@@ -21,13 +21,14 @@
#ifndef INCLUDED_GR_SCHEDULER_STS_H
#define INCLUDED_GR_SCHEDULER_STS_H
+#include <gr_core_api.h>
#include <gr_scheduler.h>
#include <gruel/thread_group.h>
/*!
* \brief Concrete scheduler that uses the single_threaded_scheduler
*/
-class gr_scheduler_sts : public gr_scheduler
+class GR_CORE_API gr_scheduler_sts : public gr_scheduler
{
gruel::thread_group d_threads;
diff --git a/gnuradio-core/src/lib/runtime/gr_scheduler_tpb.h b/gnuradio-core/src/lib/runtime/gr_scheduler_tpb.h
index 16a0c0204..f97ab2e7f 100644
--- a/gnuradio-core/src/lib/runtime/gr_scheduler_tpb.h
+++ b/gnuradio-core/src/lib/runtime/gr_scheduler_tpb.h
@@ -21,13 +21,14 @@
#ifndef INCLUDED_GR_SCHEDULER_TPB_H
#define INCLUDED_GR_SCHEDULER_TPB_H
+#include <gr_core_api.h>
#include <gr_scheduler.h>
#include <gruel/thread_group.h>
/*!
* \brief Concrete scheduler that uses a kernel thread-per-block
*/
-class gr_scheduler_tpb : public gr_scheduler
+class GR_CORE_API gr_scheduler_tpb : public gr_scheduler
{
gruel::thread_group d_threads;
diff --git a/gnuradio-core/src/lib/runtime/gr_select_handler.h b/gnuradio-core/src/lib/runtime/gr_select_handler.h
index c3808995b..532707a02 100644
--- a/gnuradio-core/src/lib/runtime/gr_select_handler.h
+++ b/gnuradio-core/src/lib/runtime/gr_select_handler.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_GR_SELECT_HANDLER_H
#define INCLUDED_GR_SELECT_HANDLER_H
+#include <gr_core_api.h>
#include <boost/shared_ptr.hpp>
class gr_select_handler;
@@ -35,7 +36,7 @@ typedef boost::shared_ptr<gr_select_handler> gr_select_handler_sptr;
*
* \sa gr_dispatcher
*/
-class gr_select_handler
+class GR_CORE_API gr_select_handler
{
int d_fd;
diff --git a/gnuradio-core/src/lib/runtime/gr_single_threaded_scheduler.cc b/gnuradio-core/src/lib/runtime/gr_single_threaded_scheduler.cc
index 7f1b40641..ae04e4a65 100644
--- a/gnuradio-core/src/lib/runtime/gr_single_threaded_scheduler.cc
+++ b/gnuradio-core/src/lib/runtime/gr_single_threaded_scheduler.cc
@@ -29,6 +29,7 @@
#include <gr_block_detail.h>
#include <gr_buffer.h>
#include <boost/thread.hpp>
+#include <boost/format.hpp>
#include <iostream>
#include <limits>
#include <assert.h>
@@ -57,9 +58,8 @@ gr_single_threaded_scheduler::gr_single_threaded_scheduler (
: d_blocks (blocks), d_enabled (true), d_log(0)
{
if (ENABLE_LOGGING){
- char name[100];
- snprintf(name, sizeof(name), "sst-%d.log", which_scheduler++);
- d_log = new std::ofstream(name);
+ std::string name = str(boost::format("sst-%d.log") % which_scheduler++);
+ d_log = new std::ofstream(name.c_str());
*d_log << "gr_single_threaded_scheduler: "
<< d_blocks.size ()
<< " blocks\n";
diff --git a/gnuradio-core/src/lib/runtime/gr_single_threaded_scheduler.h b/gnuradio-core/src/lib/runtime/gr_single_threaded_scheduler.h
index 060d3017d..17f4a1c54 100644
--- a/gnuradio-core/src/lib/runtime/gr_single_threaded_scheduler.h
+++ b/gnuradio-core/src/lib/runtime/gr_single_threaded_scheduler.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_GR_SINGLE_THREADED_SCHEDULER_H
#define INCLUDED_GR_SINGLE_THREADED_SCHEDULER_H
+#include <gr_core_api.h>
#include <gr_runtime_types.h>
#include <fstream>
@@ -35,7 +36,7 @@ typedef boost::shared_ptr<gr_single_threaded_scheduler> gr_single_threaded_sched
* \ingroup internal
*/
-class gr_single_threaded_scheduler {
+class GR_CORE_API gr_single_threaded_scheduler {
public:
~gr_single_threaded_scheduler ();
@@ -51,11 +52,11 @@ class gr_single_threaded_scheduler {
void main_loop ();
- friend gr_single_threaded_scheduler_sptr
+ friend GR_CORE_API gr_single_threaded_scheduler_sptr
gr_make_single_threaded_scheduler (const std::vector<gr_block_sptr> &blocks);
};
-gr_single_threaded_scheduler_sptr
+GR_CORE_API gr_single_threaded_scheduler_sptr
gr_make_single_threaded_scheduler (const std::vector<gr_block_sptr> &blocks);
#endif /* INCLUDED_GR_SINGLE_THREADED_SCHEDULER_H */
diff --git a/gnuradio-core/src/lib/runtime/gr_sptr_magic.h b/gnuradio-core/src/lib/runtime/gr_sptr_magic.h
index 872374ab6..4b7f9899d 100644
--- a/gnuradio-core/src/lib/runtime/gr_sptr_magic.h
+++ b/gnuradio-core/src/lib/runtime/gr_sptr_magic.h
@@ -21,6 +21,7 @@
#ifndef INCLUDED_GR_SPTR_MAGIC_H
#define INCLUDED_GR_SPTR_MAGIC_H
+#include <gr_core_api.h>
#include <boost/shared_ptr.hpp>
class gr_basic_block;
@@ -30,7 +31,7 @@ namespace gnuradio {
namespace detail {
- class sptr_magic {
+ class GR_CORE_API sptr_magic {
public:
static boost::shared_ptr<gr_basic_block> fetch_initial_sptr(gr_basic_block *p);
static void create_and_stash_initial_sptr(gr_hier_block2 *p);
diff --git a/gnuradio-core/src/lib/runtime/gr_sync_block.h b/gnuradio-core/src/lib/runtime/gr_sync_block.h
index c5a6a50f1..808c1c18a 100644
--- a/gnuradio-core/src/lib/runtime/gr_sync_block.h
+++ b/gnuradio-core/src/lib/runtime/gr_sync_block.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_GR_SYNC_BLOCK_H
#define INCLUDED_GR_SYNC_BLOCK_H
+#include <gr_core_api.h>
#include <gr_block.h>
/*!
@@ -31,7 +32,7 @@
*
* Override work to provide the signal processing implementation.
*/
-class gr_sync_block : public gr_block
+class GR_CORE_API gr_sync_block : public gr_block
{
protected:
gr_sync_block (void){} //allows pure virtual interface sub-classes
diff --git a/gnuradio-core/src/lib/runtime/gr_sync_decimator.h b/gnuradio-core/src/lib/runtime/gr_sync_decimator.h
index 12cd54195..b2ed3c4fe 100644
--- a/gnuradio-core/src/lib/runtime/gr_sync_decimator.h
+++ b/gnuradio-core/src/lib/runtime/gr_sync_decimator.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_GR_SYNC_DECIMATOR_H
#define INCLUDED_GR_SYNC_DECIMATOR_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
/*!
@@ -31,7 +32,7 @@
*
* Override work to provide the signal processing implementation.
*/
-class gr_sync_decimator : public gr_sync_block
+class GR_CORE_API gr_sync_decimator : public gr_sync_block
{
private:
unsigned d_decimation;
diff --git a/gnuradio-core/src/lib/runtime/gr_sync_interpolator.h b/gnuradio-core/src/lib/runtime/gr_sync_interpolator.h
index 0363bc55c..d65b3da1e 100644
--- a/gnuradio-core/src/lib/runtime/gr_sync_interpolator.h
+++ b/gnuradio-core/src/lib/runtime/gr_sync_interpolator.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_GR_SYNC_INTERPOLATOR_H
#define INCLUDED_GR_SYNC_INTERPOLATOR_H
+#include <gr_core_api.h>
#include <gr_sync_block.h>
/*!
@@ -31,7 +32,7 @@
*
* Override work to provide the signal processing implementation.
*/
-class gr_sync_interpolator : public gr_sync_block
+class GR_CORE_API gr_sync_interpolator : public gr_sync_block
{
private:
unsigned d_interpolation;
diff --git a/gnuradio-core/src/lib/runtime/gr_sys_paths.h b/gnuradio-core/src/lib/runtime/gr_sys_paths.h
index aa8249775..1f1759c36 100644
--- a/gnuradio-core/src/lib/runtime/gr_sys_paths.h
+++ b/gnuradio-core/src/lib/runtime/gr_sys_paths.h
@@ -22,10 +22,12 @@
#ifndef _GR_SYS_PATHS_H_
#define _GR_SYS_PATHS_H_
+#include <gr_core_api.h>
+
//! directory to create temporary files
-const char *gr_tmp_path();
+GR_CORE_API const char *gr_tmp_path();
//! directory to store application data
-const char *gr_appdata_path();
+GR_CORE_API const char *gr_appdata_path();
#endif /* _GR_SYS_PATHS_H_ */
diff --git a/gnuradio-core/src/lib/runtime/gr_timer.h b/gnuradio-core/src/lib/runtime/gr_timer.h
index ff14e315d..fa3c06ece 100644
--- a/gnuradio-core/src/lib/runtime/gr_timer.h
+++ b/gnuradio-core/src/lib/runtime/gr_timer.h
@@ -22,13 +22,14 @@
#ifndef INCLUDED_GR_TIMER_H
#define INCLUDED_GR_TIMER_H
+#include <gr_core_api.h>
#include <gr_types.h>
class gr_timer;
typedef boost::shared_ptr<gr_timer> gr_timer_sptr;
-typedef void (*gr_timer_hook)(gr_timer *, void *);
+GR_CORE_API typedef void (*gr_timer_hook)(gr_timer *, void *);
/*!
* \brief create a timeout.
@@ -36,18 +37,18 @@ typedef void (*gr_timer_hook)(gr_timer *, void *);
* \ingroup misc
* gr_timer_hook is called when timer fires.
*/
-gr_timer_sptr gr_make_timer (gr_timer_hook, void *);
+GR_CORE_API gr_timer_sptr gr_make_timer (gr_timer_hook, void *);
/*!
* \brief implement timeouts
*/
-class gr_timer {
+class GR_CORE_API gr_timer {
double d_expiry;
double d_period;
gr_timer_hook d_hook;
void *d_hook_arg;
- friend gr_timer_sptr gr_make_timer (gr_timer_hook, void *);
+ friend GR_CORE_API gr_timer_sptr gr_make_timer (gr_timer_hook, void *);
gr_timer (...);
diff --git a/gnuradio-core/src/lib/runtime/gr_top_block.h b/gnuradio-core/src/lib/runtime/gr_top_block.h
index ed244cb7c..fca68ae71 100644
--- a/gnuradio-core/src/lib/runtime/gr_top_block.h
+++ b/gnuradio-core/src/lib/runtime/gr_top_block.h
@@ -23,21 +23,22 @@
#ifndef INCLUDED_GR_TOP_BLOCK_H
#define INCLUDED_GR_TOP_BLOCK_H
+#include <gr_core_api.h>
#include <gr_hier_block2.h>
class gr_top_block_impl;
-gr_top_block_sptr gr_make_top_block(const std::string &name);
+GR_CORE_API gr_top_block_sptr gr_make_top_block(const std::string &name);
/*!
*\brief Top-level hierarchical block representing a flowgraph
* \ingroup container_blk
*
*/
-class gr_top_block : public gr_hier_block2
+class GR_CORE_API gr_top_block : public gr_hier_block2
{
private:
- friend gr_top_block_sptr gr_make_top_block(const std::string &name);
+ friend GR_CORE_API gr_top_block_sptr gr_make_top_block(const std::string &name);
gr_top_block_impl *d_impl;
diff --git a/gnuradio-core/src/lib/runtime/gr_top_block_impl.h b/gnuradio-core/src/lib/runtime/gr_top_block_impl.h
index ef28dd829..904443be5 100644
--- a/gnuradio-core/src/lib/runtime/gr_top_block_impl.h
+++ b/gnuradio-core/src/lib/runtime/gr_top_block_impl.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_GR_TOP_BLOCK_IMPL_H
#define INCLUDED_GR_TOP_BLOCK_IMPL_H
+#include <gr_core_api.h>
#include <gr_scheduler.h>
#include <gruel/thread.h>
@@ -34,7 +35,7 @@
* decoupling of changes from dependent classes.
*
*/
-class gr_top_block_impl
+class GR_CORE_API gr_top_block_impl
{
public:
gr_top_block_impl(gr_top_block *owner);
diff --git a/gnuradio-core/src/lib/runtime/gr_tpb_detail.h b/gnuradio-core/src/lib/runtime/gr_tpb_detail.h
index acfa264c7..90908c2f5 100644
--- a/gnuradio-core/src/lib/runtime/gr_tpb_detail.h
+++ b/gnuradio-core/src/lib/runtime/gr_tpb_detail.h
@@ -21,6 +21,7 @@
#ifndef INCLUDED_GR_TPB_DETAIL_H
#define INCLUDED_GR_TPB_DETAIL_H
+#include <gr_core_api.h>
#include <gruel/thread.h>
#include <deque>
#include <gruel/pmt.h>
@@ -30,7 +31,7 @@ class gr_block_detail;
/*!
* \brief used by thread-per-block scheduler
*/
-struct gr_tpb_detail {
+struct GR_CORE_API gr_tpb_detail {
gruel::mutex mutex; //< protects all vars
bool input_changed;
diff --git a/gnuradio-core/src/lib/runtime/gr_tpb_thread_body.h b/gnuradio-core/src/lib/runtime/gr_tpb_thread_body.h
index a630b1be9..548cfedfb 100644
--- a/gnuradio-core/src/lib/runtime/gr_tpb_thread_body.h
+++ b/gnuradio-core/src/lib/runtime/gr_tpb_thread_body.h
@@ -21,6 +21,7 @@
#ifndef INCLUDED_GR_TPB_THREAD_BODY_H
#define INCLUDED_GR_TPB_THREAD_BODY_H
+#include <gr_core_api.h>
#include <gr_block_executor.h>
#include <gr_block.h>
#include <gr_block_detail.h>
@@ -33,7 +34,7 @@
* done or is interrupted.
*/
-class gr_tpb_thread_body {
+class GR_CORE_API gr_tpb_thread_body {
gr_block_executor d_exec;
public:
diff --git a/gnuradio-core/src/lib/runtime/gr_types.h b/gnuradio-core/src/lib/runtime/gr_types.h
index ad8f145b8..fd5ca7758 100644
--- a/gnuradio-core/src/lib/runtime/gr_types.h
+++ b/gnuradio-core/src/lib/runtime/gr_types.h
@@ -23,6 +23,7 @@
#ifndef INCLUDED_GR_TYPES_H
#define INCLUDED_GR_TYPES_H
+#include <gr_core_api.h>
#include <boost/shared_ptr.hpp>
#include <vector>
#include <stddef.h> // size_t
diff --git a/gnuradio-core/src/lib/runtime/gr_unittests.h b/gnuradio-core/src/lib/runtime/gr_unittests.h
index 59149bb2e..7161b31e7 100644
--- a/gnuradio-core/src/lib/runtime/gr_unittests.h
+++ b/gnuradio-core/src/lib/runtime/gr_unittests.h
@@ -24,12 +24,14 @@
#include "config.h"
#endif
+#include <gr_core_api.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
+#include <string>
#include <boost/filesystem/operations.hpp>
#include <boost/filesystem/path.hpp>
diff --git a/gnuradio-core/src/lib/runtime/gr_vmcircbuf.cc b/gnuradio-core/src/lib/runtime/gr_vmcircbuf.cc
index 3b8a6e617..7138605c9 100644
--- a/gnuradio-core/src/lib/runtime/gr_vmcircbuf.cc
+++ b/gnuradio-core/src/lib/runtime/gr_vmcircbuf.cc
@@ -30,6 +30,8 @@
#include <stdio.h>
#include <string.h>
#include <gr_local_sighandler.h>
+#include <vector>
+#include <boost/format.hpp>
// all the factories we know about
#include <gr_vmcircbuf_createfilemapping.h>
@@ -130,7 +132,7 @@ init_buffer (gr_vmcircbuf *c, int counter, int size)
}
static bool
-check_mapping (gr_vmcircbuf *c, int counter, int size, char *msg, bool verbose)
+check_mapping (gr_vmcircbuf *c, int counter, int size, const char *msg, bool verbose)
{
bool ok = true;
@@ -163,28 +165,28 @@ check_mapping (gr_vmcircbuf *c, int counter, int size, char *msg, bool verbose)
return ok;
}
-static char *
+static const char *
memsize (int size)
{
- static char buf[100];
+ static std::string buf;
if (size >= (1 << 20)){
- snprintf (buf, sizeof (buf), "%dMB", size / (1 << 20));
+ buf = str(boost::format("%dMB") % (size / (1 << 20)));
}
else if (size >= (1 << 10)){
- snprintf (buf, sizeof (buf), "%dKB", size / (1 << 10));
+ buf = str(boost::format("%dKB") % (size / (1 << 10)));
}
else {
- snprintf (buf, sizeof (buf), "%d", size);
+ buf = str(boost::format("%d") % size);
}
- return buf;
+ return buf.c_str();
}
static bool
test_a_bunch (gr_vmcircbuf_factory *factory, int n, int size, int *start_ptr, bool verbose)
{
bool ok = true;
- int counter[n];
- gr_vmcircbuf *c[n];
+ std::vector<int> counter(n);
+ std::vector<gr_vmcircbuf *> c(n);
int cum_size = 0;
for (int i = 0; i < n; i++){
@@ -202,9 +204,8 @@ test_a_bunch (gr_vmcircbuf_factory *factory, int n, int size, int *start_ptr, bo
}
for (int i = 0; i < n; i++){
- char msg[100];
- snprintf (msg, sizeof (msg), "test_a_bunch_%dx%s[%d]", n, memsize (size), i);
- ok &= check_mapping (c[i], counter[i], size, msg, verbose);
+ std::string msg = str(boost::format("test_a_bunch_%dx%s[%d]") % n % memsize (size) % i);
+ ok &= check_mapping (c[i], counter[i], size, msg.c_str(), verbose);
}
for (int i = 0; i < n; i++){
diff --git a/gnuradio-core/src/lib/runtime/gr_vmcircbuf.h b/gnuradio-core/src/lib/runtime/gr_vmcircbuf.h
index a73a1559c..0e67d405b 100644
--- a/gnuradio-core/src/lib/runtime/gr_vmcircbuf.h
+++ b/gnuradio-core/src/lib/runtime/gr_vmcircbuf.h
@@ -23,13 +23,14 @@
#ifndef _GR_VMCIRCBUF_H_
#define _GR_VMCIRCBUF_H_
+#include <gr_core_api.h>
#include <vector>
/*!
* \brief abstract class to implement doubly mapped virtual memory circular buffers
* \ingroup internal
*/
-class gr_vmcircbuf {
+class GR_CORE_API gr_vmcircbuf {
protected:
int d_size;
char *d_base;
@@ -48,7 +49,7 @@ class gr_vmcircbuf {
/*!
* \brief abstract factory for creating circular buffers
*/
-class gr_vmcircbuf_factory {
+class GR_CORE_API gr_vmcircbuf_factory {
protected:
gr_vmcircbuf_factory () {};
virtual ~gr_vmcircbuf_factory ();
@@ -76,7 +77,7 @@ class gr_vmcircbuf_factory {
/*
* \brief pulls together all implementations of gr_vmcircbuf
*/
-class gr_vmcircbuf_sysconfig {
+class GR_CORE_API gr_vmcircbuf_sysconfig {
public:
/*
diff --git a/gnuradio-core/src/lib/runtime/gr_vmcircbuf_createfilemapping.cc b/gnuradio-core/src/lib/runtime/gr_vmcircbuf_createfilemapping.cc
index 42c459484..1b4d9700a 100644
--- a/gnuradio-core/src/lib/runtime/gr_vmcircbuf_createfilemapping.cc
+++ b/gnuradio-core/src/lib/runtime/gr_vmcircbuf_createfilemapping.cc
@@ -37,6 +37,7 @@
#include <stdio.h>
#include <gr_pagesize.h>
#include <gr_vmcircbuf_createfilemapping.h>
+#include <boost/format.hpp>
#ifdef HAVE_CREATEFILEMAPPING
// Print Windows error (could/should be global?)
@@ -72,23 +73,21 @@ gr_vmcircbuf_createfilemapping::gr_vmcircbuf_createfilemapping (int size)
throw std::runtime_error ("gr_vmcircbuf_createfilemapping");
}
- char seg_name[1024];
- snprintf (seg_name, sizeof (seg_name), "/gnuradio-%d-%d", getpid (), s_seg_counter);
+ std::string seg_name = str(boost::format("/gnuradio-%d-%d") % getpid () % s_seg_counter);
d_handle = CreateFileMapping(INVALID_HANDLE_VALUE, // use paging file
NULL, // default security
PAGE_READWRITE, // read/write access
0, // max. object size
size, // buffer size
- seg_name); // name of mapping object
+ seg_name.c_str()); // name of mapping object
s_seg_counter++;
if (d_handle == NULL || d_handle == INVALID_HANDLE_VALUE){
- char msg[1024];
- snprintf( msg, sizeof(msg),
- "gr_vmcircbuf_mmap_createfilemapping: CreateFileMapping [%s]",
+ std::string msg = str(boost::format(
+ "gr_vmcircbuf_mmap_createfilemapping: CreateFileMapping [%s]") %
seg_name );
- werror( msg, GetLastError() );
+ werror((char *) msg.c_str(), GetLastError() );
throw std::runtime_error ("gr_vmcircbuf_mmap_createfilemapping");
}
diff --git a/gnuradio-core/src/lib/runtime/gr_vmcircbuf_createfilemapping.h b/gnuradio-core/src/lib/runtime/gr_vmcircbuf_createfilemapping.h
index 9276ae98b..5ef31f5c6 100644
--- a/gnuradio-core/src/lib/runtime/gr_vmcircbuf_createfilemapping.h
+++ b/gnuradio-core/src/lib/runtime/gr_vmcircbuf_createfilemapping.h
@@ -23,6 +23,7 @@
#ifndef _GR_VMCIRCBUF_CREATEFILEMAPPING_H_
#define _GR_VMCIRCBUF_CREATEFILEMAPPING_H_
+#include <gr_core_api.h>
#include <gr_vmcircbuf.h>
#ifdef HAVE_CREATEFILEMAPPING
@@ -32,7 +33,7 @@
* \brief concrete class to implement circular buffers with mmap and shm_open
* \ingroup internal
*/
-class gr_vmcircbuf_createfilemapping : public gr_vmcircbuf
+class GR_CORE_API gr_vmcircbuf_createfilemapping : public gr_vmcircbuf
{
public:
// CREATORS
@@ -49,7 +50,7 @@ class gr_vmcircbuf_createfilemapping : public gr_vmcircbuf
/*!
* \brief concrete factory for circular buffers built using mmap and shm_open
*/
-class gr_vmcircbuf_createfilemapping_factory : public gr_vmcircbuf_factory
+class GR_CORE_API gr_vmcircbuf_createfilemapping_factory : public gr_vmcircbuf_factory
{
private:
static gr_vmcircbuf_factory *s_the_factory;
diff --git a/gnuradio-core/src/lib/runtime/gr_vmcircbuf_mmap_shm_open.h b/gnuradio-core/src/lib/runtime/gr_vmcircbuf_mmap_shm_open.h
index 238f44414..002f5b434 100644
--- a/gnuradio-core/src/lib/runtime/gr_vmcircbuf_mmap_shm_open.h
+++ b/gnuradio-core/src/lib/runtime/gr_vmcircbuf_mmap_shm_open.h
@@ -23,13 +23,14 @@
#ifndef _GR_VMCIRCBUF_MMAP_SHM_OPEN_H_
#define _GR_VMCIRCBUF_MMAP_SHM_OPEN_H_
+#include <gr_core_api.h>
#include <gr_vmcircbuf.h>
/*!
* \brief concrete class to implement circular buffers with mmap and shm_open
* \ingroup internal
*/
-class gr_vmcircbuf_mmap_shm_open : public gr_vmcircbuf {
+class GR_CORE_API gr_vmcircbuf_mmap_shm_open : public gr_vmcircbuf {
public:
// CREATORS
@@ -41,7 +42,7 @@ class gr_vmcircbuf_mmap_shm_open : public gr_vmcircbuf {
/*!
* \brief concrete factory for circular buffers built using mmap and shm_open
*/
-class gr_vmcircbuf_mmap_shm_open_factory : public gr_vmcircbuf_factory {
+class GR_CORE_API gr_vmcircbuf_mmap_shm_open_factory : public gr_vmcircbuf_factory {
private:
static gr_vmcircbuf_factory *s_the_factory;
diff --git a/gnuradio-core/src/lib/runtime/gr_vmcircbuf_mmap_tmpfile.h b/gnuradio-core/src/lib/runtime/gr_vmcircbuf_mmap_tmpfile.h
index e5be52768..a2ed6b87b 100644
--- a/gnuradio-core/src/lib/runtime/gr_vmcircbuf_mmap_tmpfile.h
+++ b/gnuradio-core/src/lib/runtime/gr_vmcircbuf_mmap_tmpfile.h
@@ -23,13 +23,14 @@
#ifndef _GR_VMCIRCBUF_MMAP_TMPFILE_H_
#define _GR_VMCIRCBUF_MMAP_TMPFILE_H_
+#include <gr_core_api.h>
#include <gr_vmcircbuf.h>
/*!
* \brief concrete class to implement circular buffers with mmap and shm_open
* \ingroup internal
*/
-class gr_vmcircbuf_mmap_tmpfile : public gr_vmcircbuf {
+class GR_CORE_API gr_vmcircbuf_mmap_tmpfile : public gr_vmcircbuf {
public:
// CREATORS
@@ -41,7 +42,7 @@ class gr_vmcircbuf_mmap_tmpfile : public gr_vmcircbuf {
/*!
* \brief concrete factory for circular buffers built using mmap and shm_open
*/
-class gr_vmcircbuf_mmap_tmpfile_factory : public gr_vmcircbuf_factory {
+class GR_CORE_API gr_vmcircbuf_mmap_tmpfile_factory : public gr_vmcircbuf_factory {
private:
static gr_vmcircbuf_factory *s_the_factory;
diff --git a/gnuradio-core/src/lib/runtime/gr_vmcircbuf_sysv_shm.h b/gnuradio-core/src/lib/runtime/gr_vmcircbuf_sysv_shm.h
index cc87f8fe6..c7a008581 100644
--- a/gnuradio-core/src/lib/runtime/gr_vmcircbuf_sysv_shm.h
+++ b/gnuradio-core/src/lib/runtime/gr_vmcircbuf_sysv_shm.h
@@ -23,13 +23,14 @@
#ifndef _GR_VMCIRCBUF_SYSV_SHM_H_
#define _GR_VMCIRCBUF_SYSV_SHM_H_
+#include <gr_core_api.h>
#include <gr_vmcircbuf.h>
/*!
* \brief concrete class to implement circular buffers with mmap and shm_open
* \ingroup internal
*/
-class gr_vmcircbuf_sysv_shm : public gr_vmcircbuf {
+class GR_CORE_API gr_vmcircbuf_sysv_shm : public gr_vmcircbuf {
public:
// CREATORS
@@ -41,7 +42,7 @@ class gr_vmcircbuf_sysv_shm : public gr_vmcircbuf {
/*!
* \brief concrete factory for circular buffers built using mmap and shm_open
*/
-class gr_vmcircbuf_sysv_shm_factory : public gr_vmcircbuf_factory {
+class GR_CORE_API gr_vmcircbuf_sysv_shm_factory : public gr_vmcircbuf_factory {
private:
static gr_vmcircbuf_factory *s_the_factory;
diff --git a/gnuradio-core/src/lib/runtime/qa_runtime.h b/gnuradio-core/src/lib/runtime/qa_runtime.h
index c55208c39..e1038aaf6 100644
--- a/gnuradio-core/src/lib/runtime/qa_runtime.h
+++ b/gnuradio-core/src/lib/runtime/qa_runtime.h
@@ -23,11 +23,12 @@
#ifndef _QA_RUNTIME_H_
#define _QA_RUNTIME_H_
+#include <gruel/attributes.h>
#include <cppunit/TestSuite.h>
//! collect all the tests for the runtime directory
-class qa_runtime {
+class __GR_ATTR_EXPORT qa_runtime {
public:
//! return suite of tests for all of runtime directory
static CppUnit::TestSuite *suite ();
diff --git a/gnuradio-core/src/lib/swig/CMakeLists.txt b/gnuradio-core/src/lib/swig/CMakeLists.txt
new file mode 100644
index 000000000..73a6f92ff
--- /dev/null
+++ b/gnuradio-core/src/lib/swig/CMakeLists.txt
@@ -0,0 +1,93 @@
+# Copyright 2010-2011 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+
+########################################################################
+include(GrPython)
+include(GrSwig)
+
+include_directories(${Boost_INCLUDE_DIRS})
+link_directories(${Boost_LIBRARY_DIRS})
+
+set(GR_SWIG_INCLUDE_DIRS
+ ${Boost_INCLUDE_DIRS}
+ ${GSL_INCLUDE_DIRS}
+ ${GRUEL_INCLUDE_DIRS}
+ ${GNURADIO_CORE_INCLUDE_DIRS}
+ ${CMAKE_CURRENT_BINARY_DIR}
+)
+set(GR_SWIG_LIBRARIES gnuradio-core)
+
+########################################################################
+# Build and install the swig targets
+########################################################################
+# ----------------------------------------------------------------
+# We've split the previously monstrous gnuradio_corethon into 6
+# smaller pieces. This reduces compile time coupling and creates
+# smaller pieces for the compiler to digest. prior to this change, on
+# X86_64, g++'s resident set size was 650MB!
+# ----------------------------------------------------------------
+
+set(GR_SWIG_TARGET_DEPS gengen_generated gengen_generated_index filter_generated)
+
+GR_SWIG_MAKE(gnuradio_core_runtime gnuradio_core_runtime.i)
+GR_SWIG_MAKE(gnuradio_core_general gnuradio_core_general.i)
+GR_SWIG_MAKE(gnuradio_core_gengen gnuradio_core_gengen.i)
+GR_SWIG_MAKE(gnuradio_core_filter gnuradio_core_filter.i)
+GR_SWIG_MAKE(gnuradio_core_io gnuradio_core_io.i)
+GR_SWIG_MAKE(gnuradio_core_hier gnuradio_core_hier.i)
+
+GR_SWIG_INSTALL(TARGETS
+ gnuradio_core_runtime
+ gnuradio_core_general
+ gnuradio_core_gengen
+ gnuradio_core_filter
+ gnuradio_core_io
+ gnuradio_core_hier
+ DESTINATION ${GR_PYTHON_DIR}/gnuradio/gr
+ COMPONENT "core_python"
+)
+
+########################################################################
+# Install various files
+########################################################################
+install(FILES
+ gnuradio.i
+ gr_swig_block_magic.i
+ gr_shared_ptr.i
+ gnuradio_core_runtime.i
+ gnuradio_core_general.i
+ gnuradio_core_gengen.i
+ gnuradio_core_filter.i
+ gnuradio_core_io.i
+ gnuradio_core_hier.i
+ DESTINATION ${GR_INCLUDE_DIR}/gnuradio/swig
+ COMPONENT "core_swig"
+)
+
+GR_PYTHON_INSTALL(
+ FILES gnuradio_core.py
+ DESTINATION ${GR_PYTHON_DIR}/gnuradio/gr
+ COMPONENT "core_python"
+)
+
+install(
+ FILES ${CMAKE_CURRENT_SOURCE_DIR}/gnuradio_swig_bug_workaround.h
+ DESTINATION ${GR_INCLUDE_DIR}/gnuradio
+ COMPONENT "core_swig"
+)
diff --git a/gnuradio-core/src/lib/swig/gnuradio_core_general.i b/gnuradio-core/src/lib/swig/gnuradio_core_general.i
index adf6b469a..b34d4f936 100644
--- a/gnuradio-core/src/lib/swig/gnuradio_core_general.i
+++ b/gnuradio-core/src/lib/swig/gnuradio_core_general.i
@@ -19,6 +19,8 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
+#define GR_CORE_API
+
#ifndef SWIGIMPORTED
%module(directors="1") gnuradio_core_general
#endif
diff --git a/gnuradio-core/src/lib/viterbi/CMakeLists.txt b/gnuradio-core/src/lib/viterbi/CMakeLists.txt
new file mode 100644
index 000000000..add5c77e8
--- /dev/null
+++ b/gnuradio-core/src/lib/viterbi/CMakeLists.txt
@@ -0,0 +1,63 @@
+# Copyright 2010-2011 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+
+########################################################################
+# This file included, use CMake directory variables
+########################################################################
+
+set(viterbi_sources
+ ${CMAKE_CURRENT_SOURCE_DIR}/metrics.c
+ ${CMAKE_CURRENT_SOURCE_DIR}/tab.c
+ ${CMAKE_CURRENT_SOURCE_DIR}/viterbi.c
+)
+
+########################################################################
+# define missing erf function with C linkage (hack for metrics.c)
+########################################################################
+if(MSVC)
+file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/boost_math_erf.cc "
+#include <boost/math/special_functions/erf.hpp>
+extern \"C\" double erf(double x){
+ return boost::math::erf(x);
+}
+")
+list(APPEND viterbi_sources ${CMAKE_CURRENT_BINARY_DIR}/boost_math_erf.cc)
+endif(MSVC)
+
+########################################################################
+# Append gnuradio-core library sources
+########################################################################
+list(APPEND gnuradio_core_sources ${viterbi_sources})
+
+########################################################################
+# Install runtime headers
+########################################################################
+install(
+ FILES ${CMAKE_CURRENT_SOURCE_DIR}/viterbi.h
+ DESTINATION ${GR_INCLUDE_DIR}/gnuradio
+ COMPONENT "core_devel"
+)
+
+########################################################################
+# Create some text executables (not registered tests)
+# Its not much to build so the sources are just re-listed,
+# rather than create a new library just for these two apps.
+########################################################################
+#ADD_EXECUTABLE(viterbi_encode ${CMAKE_CURRENT_SOURCE_DIR}/encode.cc ${viterbi_sources})
+#ADD_EXECUTABLE(viterbi_decode ${CMAKE_CURRENT_SOURCE_DIR}/decode.cc ${viterbi_sources})
diff --git a/gnuradio-core/src/lib/viterbi/Makefile.am b/gnuradio-core/src/lib/viterbi/Makefile.am
index 8384c52f0..1b86a86f8 100644
--- a/gnuradio-core/src/lib/viterbi/Makefile.am
+++ b/gnuradio-core/src/lib/viterbi/Makefile.am
@@ -21,6 +21,8 @@ include $(top_srcdir)/Makefile.common
LIBS = -lm
+AM_CPPFLAGS = -I$(top_srcdir)/gnuradio-core/src/lib/general
+
noinst_LTLIBRARIES = libviterbi.la
libviterbi_la_SOURCES = \
diff --git a/gnuradio-core/src/lib/viterbi/metrics.c b/gnuradio-core/src/lib/viterbi/metrics.c
index 9f958cab7..77c6a63c8 100644
--- a/gnuradio-core/src/lib/viterbi/metrics.c
+++ b/gnuradio-core/src/lib/viterbi/metrics.c
@@ -42,6 +42,9 @@
#include <stdlib.h>
#include <math.h>
+//declare erf in case it was missing in math.h and provided for by the build system
+extern double erf(double x);
+
/* Normal function integrated from -Inf to x. Range: 0-1 */
#define normal(x) (0.5 + 0.5*erf((x)/M_SQRT2))
diff --git a/gnuradio-core/src/lib/viterbi/viterbi.h b/gnuradio-core/src/lib/viterbi/viterbi.h
index 155b0d93a..5bb8b357a 100644
--- a/gnuradio-core/src/lib/viterbi/viterbi.h
+++ b/gnuradio-core/src/lib/viterbi/viterbi.h
@@ -23,27 +23,31 @@
* than we'd like for K=7, especially since we chain back every 8 bits.
* But it fits so nicely into a 32-bit machine word...
*/
-struct viterbi_state {
+
+#include <gr_core_api.h>
+
+struct GR_CORE_API viterbi_state {
unsigned long path; /* Decoded path to this state */
long metric; /* Cumulative metric to this state */
};
+GR_CORE_API
int gen_met(int mettab[2][256], /* Metric table */
int amp, /* Signal amplitude */
double esn0, /* Es/N0 ratio in dB */
double bias, /* Metric bias */
int scale); /* Scale factor */
-unsigned char
+GR_CORE_API unsigned char
encode(unsigned char *symbols, unsigned char *data,
unsigned int nbytes,unsigned char encstate);
-void
+GR_CORE_API void
viterbi_chunks_init(struct viterbi_state* state);
-void
+ GR_CORE_API void
viterbi_butterfly2(unsigned char *symbols, int mettab[2][256],
struct viterbi_state *state0, struct viterbi_state *state1);
-unsigned char
+GR_CORE_API unsigned char
viterbi_get_output(struct viterbi_state *state, unsigned char *outbuf);
diff --git a/gnuradio-core/src/python/build_utils.py b/gnuradio-core/src/python/build_utils.py
index c7acf6bd0..90c7978f2 100644
--- a/gnuradio-core/src/python/build_utils.py
+++ b/gnuradio-core/src/python/build_utils.py
@@ -93,7 +93,7 @@ def output_makefile_fragment ():
return
# overwrite the source, which must be writable; this should have been
# checked for beforehand in the top-level Makefile.gen.gen .
- f = open_src ('Makefile.gen', 'w')
+ f = open (os.path.join (os.environ.get('gendir', os.environ.get('srcdir', '.')), 'Makefile.gen'), 'w')
f.write ('#\n# This file is machine generated. All edits will be overwritten\n#\n')
output_subfrag (f, 'h')
output_subfrag (f, 'i')
diff --git a/gnuradio-core/src/python/gnuradio/CMakeLists.txt b/gnuradio-core/src/python/gnuradio/CMakeLists.txt
new file mode 100644
index 000000000..8d04b183d
--- /dev/null
+++ b/gnuradio-core/src/python/gnuradio/CMakeLists.txt
@@ -0,0 +1,39 @@
+# Copyright 2010-2011 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+
+include(GrPython)
+
+add_subdirectory(gr)
+add_subdirectory(gru)
+add_subdirectory(gruimpl)
+add_subdirectory(blks2)
+add_subdirectory(blks2impl)
+
+GR_PYTHON_INSTALL(FILES
+ __init__.py
+ eng_notation.py
+ eng_option.py
+ gr_unittest.py
+ gr_xmlrunner.py
+ optfir.py
+ usrp_options.py
+ window.py
+ DESTINATION ${GR_PYTHON_DIR}/gnuradio
+ COMPONENT "core_python"
+)
diff --git a/gnuradio-core/src/python/gnuradio/blks2/CMakeLists.txt b/gnuradio-core/src/python/gnuradio/blks2/CMakeLists.txt
new file mode 100644
index 000000000..83d11dd83
--- /dev/null
+++ b/gnuradio-core/src/python/gnuradio/blks2/CMakeLists.txt
@@ -0,0 +1,26 @@
+# Copyright 2010-2011 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+
+include(GrPython)
+
+GR_PYTHON_INSTALL(
+ FILES __init__.py
+ DESTINATION ${GR_PYTHON_DIR}/gnuradio/blks2
+ COMPONENT "core_python"
+)
diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/CMakeLists.txt b/gnuradio-core/src/python/gnuradio/blks2impl/CMakeLists.txt
new file mode 100644
index 000000000..dd0c201a3
--- /dev/null
+++ b/gnuradio-core/src/python/gnuradio/blks2impl/CMakeLists.txt
@@ -0,0 +1,46 @@
+# Copyright 2010-2011 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+
+include(GrPython)
+
+GR_PYTHON_INSTALL(FILES
+ __init__.py
+ am_demod.py
+ channel_model.py
+ filterbank.py
+ fm_demod.py
+ fm_emph.py
+ generic_usrp.py
+ logpwrfft.py
+ nbfm_rx.py
+ nbfm_tx.py
+ pfb_arb_resampler.py
+ pfb_channelizer.py
+ pfb_decimator.py
+ pfb_interpolator.py
+ rational_resampler.py
+ standard_squelch.py
+ stream_to_vector_decimator.py
+ wfm_rcv.py
+ wfm_rcv_fmdet.py
+ wfm_rcv_pll.py
+ wfm_tx.py
+ DESTINATION ${GR_PYTHON_DIR}/gnuradio/blks2impl
+ COMPONENT "core_python"
+)
diff --git a/gnuradio-core/src/python/gnuradio/gr/CMakeLists.txt b/gnuradio-core/src/python/gnuradio/gr/CMakeLists.txt
new file mode 100644
index 000000000..7b62a2f1e
--- /dev/null
+++ b/gnuradio-core/src/python/gnuradio/gr/CMakeLists.txt
@@ -0,0 +1,52 @@
+# Copyright 2010-2011 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+
+########################################################################
+include(GrPython)
+
+GR_PYTHON_INSTALL(FILES
+ __init__.py
+ exceptions.py
+ gr_threading.py
+ gr_threading_23.py
+ gr_threading_24.py
+ hier_block2.py
+ prefs.py
+ top_block.py
+ pubsub.py
+ DESTINATION ${GR_PYTHON_DIR}/gnuradio/gr
+ COMPONENT "core_python"
+)
+
+########################################################################
+# Handle the unit tests
+########################################################################
+if(ENABLE_TESTING)
+include(GrTest)
+file(GLOB py_qa_test_files "qa_*.py")
+foreach(py_qa_test_file ${py_qa_test_files})
+ get_filename_component(py_qa_test_name ${py_qa_test_file} NAME_WE)
+ set(GR_TEST_PYTHON_DIRS
+ ${CMAKE_BINARY_DIR}/gnuradio-core/src/python
+ ${CMAKE_BINARY_DIR}/gnuradio-core/src/lib/swig
+ )
+ set(GR_TEST_TARGET_DEPS gruel gnuradio-core)
+ GR_ADD_TEST(${py_qa_test_name} ${PYTHON_EXECUTABLE} ${py_qa_test_file})
+endforeach(py_qa_test_file)
+endif(ENABLE_TESTING)
diff --git a/gnuradio-core/src/python/gnuradio/gru/CMakeLists.txt b/gnuradio-core/src/python/gnuradio/gru/CMakeLists.txt
new file mode 100644
index 000000000..1c50989d9
--- /dev/null
+++ b/gnuradio-core/src/python/gnuradio/gru/CMakeLists.txt
@@ -0,0 +1,26 @@
+# Copyright 2010-2011 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+
+include(GrPython)
+
+GR_PYTHON_INSTALL(
+ FILES __init__.py
+ DESTINATION ${GR_PYTHON_DIR}/gnuradio/gru
+ COMPONENT "core_python"
+)
diff --git a/gnuradio-core/src/python/gnuradio/gruimpl/CMakeLists.txt b/gnuradio-core/src/python/gnuradio/gruimpl/CMakeLists.txt
new file mode 100644
index 000000000..7d48f3512
--- /dev/null
+++ b/gnuradio-core/src/python/gnuradio/gruimpl/CMakeLists.txt
@@ -0,0 +1,38 @@
+# Copyright 2010-2011 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+
+include(GrPython)
+
+GR_PYTHON_INSTALL(FILES
+ __init__.py
+ freqz.py
+ gnuplot_freqz.py
+ hexint.py
+ listmisc.py
+ mathmisc.py
+ lmx2306.py
+ msgq_runner.py
+ os_read_exactly.py
+ sdr_1000.py
+ seq_with_cursor.py
+ socket_stuff.py
+ daemon.py
+ DESTINATION ${GR_PYTHON_DIR}/gnuradio/gruimpl
+ COMPONENT "core_python"
+)
diff --git a/gnuradio-core/src/tests/CMakeLists.txt b/gnuradio-core/src/tests/CMakeLists.txt
new file mode 100644
index 000000000..6de259116
--- /dev/null
+++ b/gnuradio-core/src/tests/CMakeLists.txt
@@ -0,0 +1,69 @@
+# Copyright 2010-2011 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+
+########################################################################
+include(GrMiscUtils) #check n def
+GR_CHECK_HDR_N_DEF(sys/resource.h HAVE_SYS_RESOURCE_H)
+
+########################################################################
+# Setup the include and linker paths
+########################################################################
+include_directories(${GRUEL_INCLUDE_DIRS})
+include_directories(${GNURADIO_CORE_INCLUDE_DIRS})
+
+include_directories(${Boost_INCLUDE_DIRS})
+link_directories(${Boost_LIBRARY_DIRS})
+
+include_directories(${CPPUNIT_INCLUDE_DIRS})
+link_directories(${CPPUNIT_LIBRARY_DIRS})
+
+########################################################################
+# Build benchmarks and non-registered tests
+########################################################################
+set(tests_not_run #single source per test
+ benchmark_dotprod_fff.cc
+ benchmark_dotprod_fsf.cc
+ benchmark_dotprod_ccf.cc
+ benchmark_dotprod_fcc.cc
+ benchmark_dotprod_scc.cc
+ benchmark_dotprod_ccc.cc
+ benchmark_nco.cc
+ benchmark_vco.cc
+ test_runtime.cc
+ test_general.cc
+ test_filter.cc
+ #test_atsc.cc
+ test_vmcircbuf.cc
+)
+
+foreach(test_not_run_src ${tests_not_run})
+ get_filename_component(name ${test_not_run_src} NAME_WE)
+ add_executable(${name} ${test_not_run_src})
+ target_link_libraries(${name} test-gnuradio-core)
+endforeach(test_not_run_src)
+
+########################################################################
+# Build the test-all test to end all tests
+# Set the test environment so the build libs will be found under MSVC.
+########################################################################
+include(GrTest)
+set(GR_TEST_TARGET_DEPS gruel gnuradio-core test-gnuradio-core)
+add_executable(gr_core_test_all test_all.cc)
+target_link_libraries(gr_core_test_all test-gnuradio-core)
+GR_ADD_TEST(gr-core-test-all gr_core_test_all)