From 58d9da61984c0e1147b7002595be0bf8fd5af66a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20Mart=C3=ADnez?= Date: Fri, 25 Nov 2022 00:01:19 -0300 Subject: [PATCH] WIP: TMDS encoded signal recovery simiulation Cloned gr-tempest 2.0 repo and added a couple of new Python blocks (to be eventually replaced with more efficient C++ written blocks) --- CMakeLists.txt | 166 + Imagen_800_600.png | Bin 0 -> 465581 bytes LICENSE | 22 + MANIFEST.md | 17 + apps/CMakeLists.txt | 26 + build/CMakeCache.txt | 761 + build/CMakeFiles/3.16.3/CMakeCCompiler.cmake | 76 + .../CMakeFiles/3.16.3/CMakeCXXCompiler.cmake | 88 + .../3.16.3/CMakeDetermineCompilerABI_C.bin | Bin 0 -> 16552 bytes .../3.16.3/CMakeDetermineCompilerABI_CXX.bin | Bin 0 -> 16560 bytes build/CMakeFiles/3.16.3/CMakeSystem.cmake | 15 + .../3.16.3/CompilerIdC/CMakeCCompilerId.c | 671 + build/CMakeFiles/3.16.3/CompilerIdC/a.out | Bin 0 -> 16712 bytes .../CompilerIdCXX/CMakeCXXCompilerId.cpp | 660 + build/CMakeFiles/3.16.3/CompilerIdCXX/a.out | Bin 0 -> 16720 bytes .../CMakeDirectoryInformation.cmake | 16 + build/CMakeFiles/CMakeError.log | 58 + build/CMakeFiles/CMakeOutput.log | 489 + build/CMakeFiles/CMakeRuleHashes.txt | 11 + build/CMakeFiles/Makefile.cmake | 165 + build/CMakeFiles/Makefile2 | 445 + build/CMakeFiles/TargetDirectories.txt | 64 + build/CMakeFiles/cmake.check_cache | 1 + build/CMakeFiles/progress.marks | 1 + .../CMakeFiles/uninstall.dir/DependInfo.cmake | 11 + build/CMakeFiles/uninstall.dir/build.make | 76 + .../uninstall.dir/cmake_clean.cmake | 8 + build/CMakeFiles/uninstall.dir/progress.make | 1 + build/CTestTestfile.cmake | 13 + build/Makefile | 308 + .../CMakeDirectoryInformation.cmake | 16 + build/apps/CMakeFiles/progress.marks | 1 + .../pygen_apps_9a6dd.dir/DependInfo.cmake | 11 + .../pygen_apps_9a6dd.dir/build.make | 72 + .../pygen_apps_9a6dd.dir/cmake_clean.cmake | 5 + .../pygen_apps_9a6dd.dir/depend.internal | 3 + .../pygen_apps_9a6dd.dir/depend.make | 3 + .../pygen_apps_9a6dd.dir/progress.make | 1 + build/apps/CTestTestfile.cmake | 6 + build/apps/Makefile | 212 + build/apps/cmake_install.cmake | 39 + build/cmake_install.cmake | 65 + build/cmake_uninstall.cmake | 32 + build/compile_commands.json | 57 + .../CMakeDirectoryInformation.cmake | 16 + build/docs/CMakeFiles/progress.marks | 1 + build/docs/CTestTestfile.cmake | 6 + build/docs/Makefile | 196 + build/docs/cmake_install.cmake | 39 + .../CMakeDirectoryInformation.cmake | 16 + build/grc/CMakeFiles/progress.marks | 1 + build/grc/CTestTestfile.cmake | 6 + build/grc/Makefile | 196 + build/grc/cmake_install.cmake | 60 + .../CMakeDirectoryInformation.cmake | 16 + .../include/tempest/CMakeFiles/progress.marks | 1 + build/include/tempest/CTestTestfile.cmake | 6 + build/include/tempest/Makefile | 196 + build/include/tempest/cmake_install.cmake | 55 + build/install_manifest.txt | 61 + .../CMakeDirectoryInformation.cmake | 16 + .../gnuradio-tempestTargets-release.cmake | 19 + .../tempest/gnuradio-tempestTargets.cmake | 99 + .../gnuradio-tempest.dir/CXX.includecache | 260 + .../gnuradio-tempest.dir/DependInfo.cmake | 51 + .../gnuradio-tempest.dir/Hsync_impl.cc.o | Bin 0 -> 197816 bytes .../gnuradio-tempest.dir/build.make | 259 + .../gnuradio-tempest.dir/cmake_clean.cmake | 21 + .../gnuradio-tempest.dir/depend.internal | 53 + .../gnuradio-tempest.dir/depend.make | 53 + .../fft_peak_fine_sampling_sync_impl.cc.o | Bin 0 -> 292640 bytes .../fine_sampling_synchronization_impl.cc.o | Bin 0 -> 206800 bytes .../gnuradio-tempest.dir/flags.make | 10 + .../gnuradio-tempest.dir/frame_drop_impl.cc.o | Bin 0 -> 253136 bytes .../gnuradio-tempest.dir/framing_impl.cc.o | Bin 0 -> 193936 bytes .../infer_screen_resolution_impl.cc.o | Bin 0 -> 301096 bytes .../CMakeFiles/gnuradio-tempest.dir/link.txt | 1 + .../normalize_flow_impl.cc.o | Bin 0 -> 196752 bytes .../gnuradio-tempest.dir/progress.make | 12 + .../sampling_synchronization_impl.cc.o | Bin 0 -> 204144 bytes .../ssamp_correction_impl.cc.o | Bin 0 -> 296672 bytes .../sync_detector_impl.cc.o | Bin 0 -> 306040 bytes build/lib/CMakeFiles/progress.marks | 1 + build/lib/CTestTestfile.cmake | 6 + build/lib/Makefile | 512 + .../Modules/gnuradio-tempestConfig.cmake | 26 + build/lib/cmake_install.cmake | 107 + build/lib/libgnuradio-tempest.so | 1 + build/lib/libgnuradio-tempest.so.1.0.0git | 1 + build/lib/libgnuradio-tempest.so.17a754aa | Bin 0 -> 344656 bytes .../CMakeDirectoryInformation.cmake | 16 + build/python/CMakeFiles/progress.marks | 1 + .../pygen_python_2ccf9.dir/DependInfo.cmake | 28 + .../pygen_python_2ccf9.dir/build.make | 159 + .../pygen_python_2ccf9.dir/cmake_clean.cmake | 22 + .../pygen_python_2ccf9.dir/depend.internal | 3 + .../pygen_python_2ccf9.dir/depend.make | 3 + .../pygen_python_2ccf9.dir/progress.make | 3 + .../pygen_python_f8102.dir/DependInfo.cmake | 26 + .../pygen_python_f8102.dir/build.make | 147 + .../pygen_python_f8102.dir/cmake_clean.cmake | 20 + .../pygen_python_f8102.dir/depend.internal | 3 + .../pygen_python_f8102.dir/depend.make | 3 + .../pygen_python_f8102.dir/progress.make | 3 + build/python/CTestTestfile.cmake | 36 + build/python/Makefile | 212 + build/python/TMDS_decoder.pyc | Bin 0 -> 2043 bytes build/python/TMDS_decoder.pyo | Bin 0 -> 2043 bytes build/python/TMDS_image_source.pyc | Bin 0 -> 7672 bytes build/python/TMDS_image_source.pyo | Bin 0 -> 7672 bytes build/python/__init__.pyc | Bin 0 -> 610 bytes build/python/__init__.pyo | Bin 0 -> 610 bytes build/python/binary_serializer.pyc | Bin 0 -> 1897 bytes build/python/binary_serializer.pyo | Bin 0 -> 1802 bytes build/python/cmake_install.cmake | 70 + build/python/image_source.pyc | Bin 0 -> 1990 bytes build/python/image_source.pyo | Bin 0 -> 1990 bytes build/python/message_to_var.pyc | Bin 0 -> 1476 bytes build/python/message_to_var.pyo | Bin 0 -> 1476 bytes build/python/qa_Hsync_test.sh | 9 + build/python/qa_TMDS_image_source_test.sh | 9 + build/python/qa_binary_serializer_test.sh | 9 + .../qa_fft_peak_fine_sampling_sync_test.sh | 9 + .../qa_fine_sampling_synchronization_test.sh | 9 + build/python/qa_frame_drop_test.sh | 9 + build/python/qa_framing_test.sh | 9 + build/python/qa_image_source_test.sh | 9 + build/python/qa_infer_resolution_test.sh | 9 + .../python/qa_infer_screen_resolution_test.sh | 9 + build/python/qa_normalize_flow_test.sh | 9 + .../qa_sampling_synchronization_test.sh | 9 + build/python/qa_ssamp_correction_test.sh | 9 + build/python/qa_sync_detector_test.sh | 9 + build/python/qa_tempest_msgbtn_test.sh | 9 + build/python/tempest_msgbtn.pyc | Bin 0 -> 1642 bytes build/python/tempest_msgbtn.pyo | Bin 0 -> 1642 bytes build/python_compile_helper.py | 6 + .../CMakeDirectoryInformation.cmake | 16 + build/swig/CMakeFiles/progress.marks | 1 + .../pygen_swig_8088c.dir/DependInfo.cmake | 11 + .../pygen_swig_8088c.dir/build.make | 87 + .../pygen_swig_8088c.dir/cmake_clean.cmake | 13 + .../pygen_swig_8088c.dir/depend.internal | 3 + .../pygen_swig_8088c.dir/depend.make | 3 + .../pygen_swig_8088c.dir/progress.make | 3 + .../tempest_swigPYTHON_wrap.cxx.o | Bin 0 -> 2053344 bytes .../tempest_swig.dir/CXX.includecache | 646 + .../tempest_swig.dir/DependInfo.cmake | 40 + .../CMakeFiles/tempest_swig.dir/build.make | 119 + .../tempest_swig.dir/cmake_clean.cmake | 13 + .../tempest_swig.dir/depend.internal | 103 + .../CMakeFiles/tempest_swig.dir/depend.make | 103 + .../CMakeFiles/tempest_swig.dir/flags.make | 12 + .../swig/CMakeFiles/tempest_swig.dir/link.txt | 1 + .../CMakeFiles/tempest_swig.dir/progress.make | 3 + .../tempest_swig.dir/tempest_swigPYTHON.stamp | 0 .../tempest_swigPYTHON_wrap.cxx | 41666 ++++++++++++++++ .../CXX.includecache | 54 + .../DependInfo.cmake | 20 + .../build.make | 85 + .../cmake_clean.cmake | 14 + .../depend.internal | 5 + .../depend.make | 5 + .../progress.make | 2 + .../DependInfo.cmake | 11 + .../tempest_swig_swig_doc.dir/build.make | 76 + .../cmake_clean.cmake | 11 + .../tempest_swig_swig_doc.dir/depend.internal | 3 + .../tempest_swig_swig_doc.dir/depend.make | 3 + .../tempest_swig_swig_doc.dir/progress.make | 1 + build/swig/CTestTestfile.cmake | 6 + build/swig/Makefile | 290 + build/swig/_tempest_swig.so | Bin 0 -> 1295136 bytes build/swig/cmake_install.cmake | 77 + build/swig/tempest_swig.py | 3325 ++ build/swig/tempest_swig.pyc | Bin 0 -> 202310 bytes build/swig/tempest_swig.pyo | Bin 0 -> 202310 bytes build/swig/tempest_swig_doc.i | 1 + cmake/Modules/CMakeParseArgumentsCopy.cmake | 138 + cmake/Modules/targetConfig.cmake.in | 26 + cmake/Modules/tempestConfig.cmake | 31 + cmake/cmake_uninstall.cmake.in | 32 + docs/CMakeLists.txt | 36 + docs/README.tempest | 11 + docs/doxygen/CMakeLists.txt | 53 + docs/doxygen/Doxyfile.in | 1910 + docs/doxygen/Doxyfile.swig_doc.in | 1878 + docs/doxygen/doxyxml/__init__.py | 84 + docs/doxygen/doxyxml/base.py | 222 + docs/doxygen/doxyxml/doxyindex.py | 304 + docs/doxygen/doxyxml/generated/__init__.py | 8 + docs/doxygen/doxyxml/generated/compound.py | 505 + .../doxyxml/generated/compoundsuper.py | 8346 ++++ docs/doxygen/doxyxml/generated/index.py | 79 + docs/doxygen/doxyxml/generated/indexsuper.py | 526 + docs/doxygen/doxyxml/text.py | 58 + docs/doxygen/other/group_defs.dox | 7 + docs/doxygen/other/main_page.dox | 10 + docs/doxygen/swig_doc.py | 332 + ...HDMI_50MHzSps_1485MHzCentral_Magnitude.grc | 1029 + .../HDMI_50MHzSps_300MHzCentral_Magnitude.grc | 1029 + .../Demo/HDMI_50MHzSps_300MHzCentral_Real.grc | 1707 + ...rScreenResolution_50MSps_300MHzCentral.grc | 705 + .../VGA_50MHzSps_300MHzCentral_Magnitude.grc | 1029 + .../Demo/VGA_50MHzSps_300MHzCentral_Real.grc | 1427 + examples/EQtaps1080p.txt | 512 + examples/FFT_autocorrelate.grc | 348 + examples/FFT_crosscorrelate.grc | 487 + examples/Keep_1_in_N_frames.grc | 181 + examples/README | 4 + examples/automatic_tempest_example.grc | 946 + ...omatic_tempest_example_equalization_hd.grc | 1239 + ...mpest_v2-0-0_HDMI_fs_50MHz_fc_148-5MHz.grc | 1052 + ...tempest_v2-0-0_HDMI_fs_50MHz_fc_300MHz.grc | 1054 + ...ferScreenResolution_fs_50MHz_fc_300MHz.grc | 705 + ..._tempest_v2-0-0_VGA_fs_50MHz_fc_300MHz.grc | 1032 + ...fs_50MHz_fc_300MHz_TakesRealPartOutput.grc | 1427 + examples/infer_screen_example.grc | 767 + examples/manual_simulated_tempest_example.grc | 688 + examples/manual_simulated_tempest_example.py | 401 + examples/manual_tempest_example.grc | 847 + examples/manual_tempest_example.py | 431 + .../manual_tempest_example_FFT_peaks_hd.grc | 1523 + ...al_tempest_example_FFT_peaks_hd_and_EQ.grc | 1707 + ...le_HDMI_Real_and_CentralFreqCorrection.grc | 1633 + examples/manual_tempest_hdmi_example.grc | 849 + examples/manual_tempest_hdmi_example.py | 293 + examples/msg_btn_example.grc | 1141 + examples/semi_automatic_tempest_example.grc | 1055 + .../semi_automatic_tempest_hdmi_example.grc | 1055 + grc/CMakeLists.txt | 37 + grc/tempest_Hsync.block.yml | 24 + grc/tempest_TMDS_decoder.block.yml | 31 + grc/tempest_TMDS_image_source.block.yml | 55 + grc/tempest_binary_serializer.block.yml | 38 + ...pest_fft_peak_fine_sampling_sync.block.yml | 53 + ...st_fine_sampling_synchronization.block.yml | 37 + grc/tempest_frame_drop.block.yml | 50 + grc/tempest_framing.block.yml | 30 + grc/tempest_image_source.block.yml | 36 + grc/tempest_infer_screen_resolution.block.yml | 31 + grc/tempest_message_to_var.block.yml | 21 + grc/tempest_normalize_flow.block.yml | 33 + ...tempest_sampling_synchronization.block.yml | 25 + grc/tempest_ssamp_correction.block.yml | 49 + grc/tempest_sync_detector.block.yml | 32 + grc/tempest_tempest_msgbtn.block.yml | 68 + include/tempest/CMakeLists.txt | 36 + include/tempest/Hsync.h | 62 + include/tempest/api.h | 34 + include/tempest/fft_peak_fine_sampling_sync.h | 60 + .../tempest/fine_sampling_synchronization.h | 64 + include/tempest/frame_drop.h | 60 + include/tempest/framing.h | 63 + include/tempest/infer_screen_resolution.h | 62 + include/tempest/normalize_flow.h | 62 + include/tempest/sampling_synchronization.h | 65 + include/tempest/ssamp_correction.h | 61 + include/tempest/sync_detector.h | 60 + lib/CMakeLists.txt | 92 + lib/Hsync_impl.cc | 321 + lib/Hsync_impl.h | 108 + lib/fft_peak_fine_sampling_sync_impl.cc | 315 + lib/fft_peak_fine_sampling_sync_impl.h | 294 + lib/fine_sampling_synchronization_impl.cc | 282 + lib/fine_sampling_synchronization_impl.h | 101 + lib/frame_drop_impl.cc | 222 + lib/frame_drop_impl.h | 164 + lib/framing_impl.cc | 140 + lib/framing_impl.h | 63 + lib/infer_screen_resolution_impl.cc | 277 + lib/infer_screen_resolution_impl.h | 259 + lib/ncaso.txt | 1 + lib/normalize_flow_impl.cc | 121 + lib/normalize_flow_impl.h | 73 + lib/sampling_synchronization_impl.cc | 206 + lib/sampling_synchronization_impl.h | 98 + lib/ssamp_correction_impl.cc | 274 + lib/ssamp_correction_impl.h | 124 + lib/sync_detector_impl.cc | 437 + lib/sync_detector_impl.h | 107 + modes.txt | 80 + python/CMakeLists.txt | 64 + python/DTutils.py | 417 + python/TMDS_decoder.py | 91 + python/TMDS_image_source.py | 342 + python/__init__.py | 42 + python/__pycache__/DTutils.cpython-38.pyc | Bin 0 -> 8728 bytes python/binary_serializer.py | 97 + python/image_source.py | 97 + python/message_to_var.py | 62 + python/qa_Hsync.py | 46 + python/qa_TMDS_image_source.py | 46 + python/qa_binary_serializer.py | 46 + python/qa_fine_sampling_synchronization.py | 46 + python/qa_framing.py | 46 + python/qa_image_source.py | 46 + python/qa_infer_screen_resolution.py | 46 + python/qa_normalize_flow.py | 46 + python/qa_sampling_synchronization.py | 46 + python/tempest_msgbtn.py | 67 + swig/CMakeLists.txt | 66 + swig/tempest_swig.i | 44 + 303 files changed, 105000 insertions(+) create mode 100644 CMakeLists.txt create mode 100644 Imagen_800_600.png create mode 100644 LICENSE create mode 100644 MANIFEST.md create mode 100644 apps/CMakeLists.txt create mode 100644 build/CMakeCache.txt create mode 100644 build/CMakeFiles/3.16.3/CMakeCCompiler.cmake create mode 100644 build/CMakeFiles/3.16.3/CMakeCXXCompiler.cmake create mode 100755 build/CMakeFiles/3.16.3/CMakeDetermineCompilerABI_C.bin create mode 100755 build/CMakeFiles/3.16.3/CMakeDetermineCompilerABI_CXX.bin create mode 100644 build/CMakeFiles/3.16.3/CMakeSystem.cmake create mode 100644 build/CMakeFiles/3.16.3/CompilerIdC/CMakeCCompilerId.c create mode 100755 build/CMakeFiles/3.16.3/CompilerIdC/a.out create mode 100644 build/CMakeFiles/3.16.3/CompilerIdCXX/CMakeCXXCompilerId.cpp create mode 100755 build/CMakeFiles/3.16.3/CompilerIdCXX/a.out create mode 100644 build/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 build/CMakeFiles/CMakeError.log create mode 100644 build/CMakeFiles/CMakeOutput.log create mode 100644 build/CMakeFiles/CMakeRuleHashes.txt create mode 100644 build/CMakeFiles/Makefile.cmake create mode 100644 build/CMakeFiles/Makefile2 create mode 100644 build/CMakeFiles/TargetDirectories.txt create mode 100644 build/CMakeFiles/cmake.check_cache create mode 100644 build/CMakeFiles/progress.marks create mode 100644 build/CMakeFiles/uninstall.dir/DependInfo.cmake create mode 100644 build/CMakeFiles/uninstall.dir/build.make create mode 100644 build/CMakeFiles/uninstall.dir/cmake_clean.cmake create mode 100644 build/CMakeFiles/uninstall.dir/progress.make create mode 100644 build/CTestTestfile.cmake create mode 100644 build/Makefile create mode 100644 build/apps/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 build/apps/CMakeFiles/progress.marks create mode 100644 build/apps/CMakeFiles/pygen_apps_9a6dd.dir/DependInfo.cmake create mode 100644 build/apps/CMakeFiles/pygen_apps_9a6dd.dir/build.make create mode 100644 build/apps/CMakeFiles/pygen_apps_9a6dd.dir/cmake_clean.cmake create mode 100644 build/apps/CMakeFiles/pygen_apps_9a6dd.dir/depend.internal create mode 100644 build/apps/CMakeFiles/pygen_apps_9a6dd.dir/depend.make create mode 100644 build/apps/CMakeFiles/pygen_apps_9a6dd.dir/progress.make create mode 100644 build/apps/CTestTestfile.cmake create mode 100644 build/apps/Makefile create mode 100644 build/apps/cmake_install.cmake create mode 100644 build/cmake_install.cmake create mode 100644 build/cmake_uninstall.cmake create mode 100644 build/compile_commands.json create mode 100644 build/docs/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 build/docs/CMakeFiles/progress.marks create mode 100644 build/docs/CTestTestfile.cmake create mode 100644 build/docs/Makefile create mode 100644 build/docs/cmake_install.cmake create mode 100644 build/grc/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 build/grc/CMakeFiles/progress.marks create mode 100644 build/grc/CTestTestfile.cmake create mode 100644 build/grc/Makefile create mode 100644 build/grc/cmake_install.cmake create mode 100644 build/include/tempest/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 build/include/tempest/CMakeFiles/progress.marks create mode 100644 build/include/tempest/CTestTestfile.cmake create mode 100644 build/include/tempest/Makefile create mode 100644 build/include/tempest/cmake_install.cmake create mode 100644 build/install_manifest.txt create mode 100644 build/lib/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 build/lib/CMakeFiles/Export/lib/cmake/tempest/gnuradio-tempestTargets-release.cmake create mode 100644 build/lib/CMakeFiles/Export/lib/cmake/tempest/gnuradio-tempestTargets.cmake create mode 100644 build/lib/CMakeFiles/gnuradio-tempest.dir/CXX.includecache create mode 100644 build/lib/CMakeFiles/gnuradio-tempest.dir/DependInfo.cmake create mode 100644 build/lib/CMakeFiles/gnuradio-tempest.dir/Hsync_impl.cc.o create mode 100644 build/lib/CMakeFiles/gnuradio-tempest.dir/build.make create mode 100644 build/lib/CMakeFiles/gnuradio-tempest.dir/cmake_clean.cmake create mode 100644 build/lib/CMakeFiles/gnuradio-tempest.dir/depend.internal create mode 100644 build/lib/CMakeFiles/gnuradio-tempest.dir/depend.make create mode 100644 build/lib/CMakeFiles/gnuradio-tempest.dir/fft_peak_fine_sampling_sync_impl.cc.o create mode 100644 build/lib/CMakeFiles/gnuradio-tempest.dir/fine_sampling_synchronization_impl.cc.o create mode 100644 build/lib/CMakeFiles/gnuradio-tempest.dir/flags.make create mode 100644 build/lib/CMakeFiles/gnuradio-tempest.dir/frame_drop_impl.cc.o create mode 100644 build/lib/CMakeFiles/gnuradio-tempest.dir/framing_impl.cc.o create mode 100644 build/lib/CMakeFiles/gnuradio-tempest.dir/infer_screen_resolution_impl.cc.o create mode 100644 build/lib/CMakeFiles/gnuradio-tempest.dir/link.txt create mode 100644 build/lib/CMakeFiles/gnuradio-tempest.dir/normalize_flow_impl.cc.o create mode 100644 build/lib/CMakeFiles/gnuradio-tempest.dir/progress.make create mode 100644 build/lib/CMakeFiles/gnuradio-tempest.dir/sampling_synchronization_impl.cc.o create mode 100644 build/lib/CMakeFiles/gnuradio-tempest.dir/ssamp_correction_impl.cc.o create mode 100644 build/lib/CMakeFiles/gnuradio-tempest.dir/sync_detector_impl.cc.o create mode 100644 build/lib/CMakeFiles/progress.marks create mode 100644 build/lib/CTestTestfile.cmake create mode 100644 build/lib/Makefile create mode 100644 build/lib/cmake/Modules/gnuradio-tempestConfig.cmake create mode 100644 build/lib/cmake_install.cmake create mode 120000 build/lib/libgnuradio-tempest.so create mode 120000 build/lib/libgnuradio-tempest.so.1.0.0git create mode 100755 build/lib/libgnuradio-tempest.so.17a754aa create mode 100644 build/python/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 build/python/CMakeFiles/progress.marks create mode 100644 build/python/CMakeFiles/pygen_python_2ccf9.dir/DependInfo.cmake create mode 100644 build/python/CMakeFiles/pygen_python_2ccf9.dir/build.make create mode 100644 build/python/CMakeFiles/pygen_python_2ccf9.dir/cmake_clean.cmake create mode 100644 build/python/CMakeFiles/pygen_python_2ccf9.dir/depend.internal create mode 100644 build/python/CMakeFiles/pygen_python_2ccf9.dir/depend.make create mode 100644 build/python/CMakeFiles/pygen_python_2ccf9.dir/progress.make create mode 100644 build/python/CMakeFiles/pygen_python_f8102.dir/DependInfo.cmake create mode 100644 build/python/CMakeFiles/pygen_python_f8102.dir/build.make create mode 100644 build/python/CMakeFiles/pygen_python_f8102.dir/cmake_clean.cmake create mode 100644 build/python/CMakeFiles/pygen_python_f8102.dir/depend.internal create mode 100644 build/python/CMakeFiles/pygen_python_f8102.dir/depend.make create mode 100644 build/python/CMakeFiles/pygen_python_f8102.dir/progress.make create mode 100644 build/python/CTestTestfile.cmake create mode 100644 build/python/Makefile create mode 100644 build/python/TMDS_decoder.pyc create mode 100644 build/python/TMDS_decoder.pyo create mode 100644 build/python/TMDS_image_source.pyc create mode 100644 build/python/TMDS_image_source.pyo create mode 100644 build/python/__init__.pyc create mode 100644 build/python/__init__.pyo create mode 100644 build/python/binary_serializer.pyc create mode 100644 build/python/binary_serializer.pyo create mode 100644 build/python/cmake_install.cmake create mode 100644 build/python/image_source.pyc create mode 100644 build/python/image_source.pyo create mode 100644 build/python/message_to_var.pyc create mode 100644 build/python/message_to_var.pyo create mode 100755 build/python/qa_Hsync_test.sh create mode 100755 build/python/qa_TMDS_image_source_test.sh create mode 100755 build/python/qa_binary_serializer_test.sh create mode 100755 build/python/qa_fft_peak_fine_sampling_sync_test.sh create mode 100755 build/python/qa_fine_sampling_synchronization_test.sh create mode 100755 build/python/qa_frame_drop_test.sh create mode 100755 build/python/qa_framing_test.sh create mode 100755 build/python/qa_image_source_test.sh create mode 100755 build/python/qa_infer_resolution_test.sh create mode 100755 build/python/qa_infer_screen_resolution_test.sh create mode 100755 build/python/qa_normalize_flow_test.sh create mode 100755 build/python/qa_sampling_synchronization_test.sh create mode 100755 build/python/qa_ssamp_correction_test.sh create mode 100755 build/python/qa_sync_detector_test.sh create mode 100755 build/python/qa_tempest_msgbtn_test.sh create mode 100644 build/python/tempest_msgbtn.pyc create mode 100644 build/python/tempest_msgbtn.pyo create mode 100644 build/python_compile_helper.py create mode 100644 build/swig/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 build/swig/CMakeFiles/progress.marks create mode 100644 build/swig/CMakeFiles/pygen_swig_8088c.dir/DependInfo.cmake create mode 100644 build/swig/CMakeFiles/pygen_swig_8088c.dir/build.make create mode 100644 build/swig/CMakeFiles/pygen_swig_8088c.dir/cmake_clean.cmake create mode 100644 build/swig/CMakeFiles/pygen_swig_8088c.dir/depend.internal create mode 100644 build/swig/CMakeFiles/pygen_swig_8088c.dir/depend.make create mode 100644 build/swig/CMakeFiles/pygen_swig_8088c.dir/progress.make create mode 100644 build/swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o create mode 100644 build/swig/CMakeFiles/tempest_swig.dir/CXX.includecache create mode 100644 build/swig/CMakeFiles/tempest_swig.dir/DependInfo.cmake create mode 100644 build/swig/CMakeFiles/tempest_swig.dir/build.make create mode 100644 build/swig/CMakeFiles/tempest_swig.dir/cmake_clean.cmake create mode 100644 build/swig/CMakeFiles/tempest_swig.dir/depend.internal create mode 100644 build/swig/CMakeFiles/tempest_swig.dir/depend.make create mode 100644 build/swig/CMakeFiles/tempest_swig.dir/flags.make create mode 100644 build/swig/CMakeFiles/tempest_swig.dir/link.txt create mode 100644 build/swig/CMakeFiles/tempest_swig.dir/progress.make create mode 100644 build/swig/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON.stamp create mode 100644 build/swig/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx create mode 100644 build/swig/CMakeFiles/tempest_swig_swig_compilation.dir/CXX.includecache create mode 100644 build/swig/CMakeFiles/tempest_swig_swig_compilation.dir/DependInfo.cmake create mode 100644 build/swig/CMakeFiles/tempest_swig_swig_compilation.dir/build.make create mode 100644 build/swig/CMakeFiles/tempest_swig_swig_compilation.dir/cmake_clean.cmake create mode 100644 build/swig/CMakeFiles/tempest_swig_swig_compilation.dir/depend.internal create mode 100644 build/swig/CMakeFiles/tempest_swig_swig_compilation.dir/depend.make create mode 100644 build/swig/CMakeFiles/tempest_swig_swig_compilation.dir/progress.make create mode 100644 build/swig/CMakeFiles/tempest_swig_swig_doc.dir/DependInfo.cmake create mode 100644 build/swig/CMakeFiles/tempest_swig_swig_doc.dir/build.make create mode 100644 build/swig/CMakeFiles/tempest_swig_swig_doc.dir/cmake_clean.cmake create mode 100644 build/swig/CMakeFiles/tempest_swig_swig_doc.dir/depend.internal create mode 100644 build/swig/CMakeFiles/tempest_swig_swig_doc.dir/depend.make create mode 100644 build/swig/CMakeFiles/tempest_swig_swig_doc.dir/progress.make create mode 100644 build/swig/CTestTestfile.cmake create mode 100644 build/swig/Makefile create mode 100755 build/swig/_tempest_swig.so create mode 100644 build/swig/cmake_install.cmake create mode 100644 build/swig/tempest_swig.py create mode 100644 build/swig/tempest_swig.pyc create mode 100644 build/swig/tempest_swig.pyo create mode 100644 build/swig/tempest_swig_doc.i create mode 100644 cmake/Modules/CMakeParseArgumentsCopy.cmake create mode 100644 cmake/Modules/targetConfig.cmake.in create mode 100644 cmake/Modules/tempestConfig.cmake create mode 100644 cmake/cmake_uninstall.cmake.in create mode 100644 docs/CMakeLists.txt create mode 100644 docs/README.tempest create mode 100644 docs/doxygen/CMakeLists.txt create mode 100644 docs/doxygen/Doxyfile.in create mode 100644 docs/doxygen/Doxyfile.swig_doc.in create mode 100644 docs/doxygen/doxyxml/__init__.py create mode 100644 docs/doxygen/doxyxml/base.py create mode 100644 docs/doxygen/doxyxml/doxyindex.py create mode 100644 docs/doxygen/doxyxml/generated/__init__.py create mode 100644 docs/doxygen/doxyxml/generated/compound.py create mode 100644 docs/doxygen/doxyxml/generated/compoundsuper.py create mode 100644 docs/doxygen/doxyxml/generated/index.py create mode 100644 docs/doxygen/doxyxml/generated/indexsuper.py create mode 100644 docs/doxygen/doxyxml/text.py create mode 100644 docs/doxygen/other/group_defs.dox create mode 100644 docs/doxygen/other/main_page.dox create mode 100644 docs/doxygen/swig_doc.py create mode 100644 examples/Demo/HDMI_50MHzSps_1485MHzCentral_Magnitude.grc create mode 100644 examples/Demo/HDMI_50MHzSps_300MHzCentral_Magnitude.grc create mode 100644 examples/Demo/HDMI_50MHzSps_300MHzCentral_Real.grc create mode 100644 examples/Demo/InferScreenResolution_50MSps_300MHzCentral.grc create mode 100644 examples/Demo/VGA_50MHzSps_300MHzCentral_Magnitude.grc create mode 100644 examples/Demo/VGA_50MHzSps_300MHzCentral_Real.grc create mode 100644 examples/EQtaps1080p.txt create mode 100644 examples/FFT_autocorrelate.grc create mode 100644 examples/FFT_crosscorrelate.grc create mode 100644 examples/Keep_1_in_N_frames.grc create mode 100644 examples/README create mode 100644 examples/automatic_tempest_example.grc create mode 100644 examples/automatic_tempest_example_equalization_hd.grc create mode 100644 examples/gr_tempest_v2-0-0_HDMI_fs_50MHz_fc_148-5MHz.grc create mode 100644 examples/gr_tempest_v2-0-0_HDMI_fs_50MHz_fc_300MHz.grc create mode 100644 examples/gr_tempest_v2-0-0_InferScreenResolution_fs_50MHz_fc_300MHz.grc create mode 100644 examples/gr_tempest_v2-0-0_VGA_fs_50MHz_fc_300MHz.grc create mode 100644 examples/gr_tempest_v2-0-0_VGA_fs_50MHz_fc_300MHz_TakesRealPartOutput.grc create mode 100644 examples/infer_screen_example.grc create mode 100644 examples/manual_simulated_tempest_example.grc create mode 100755 examples/manual_simulated_tempest_example.py create mode 100644 examples/manual_tempest_example.grc create mode 100755 examples/manual_tempest_example.py create mode 100644 examples/manual_tempest_example_FFT_peaks_hd.grc create mode 100644 examples/manual_tempest_example_FFT_peaks_hd_and_EQ.grc create mode 100644 examples/manual_tempest_example_HDMI_Real_and_CentralFreqCorrection.grc create mode 100644 examples/manual_tempest_hdmi_example.grc create mode 100755 examples/manual_tempest_hdmi_example.py create mode 100644 examples/msg_btn_example.grc create mode 100644 examples/semi_automatic_tempest_example.grc create mode 100644 examples/semi_automatic_tempest_hdmi_example.grc create mode 100644 grc/CMakeLists.txt create mode 100644 grc/tempest_Hsync.block.yml create mode 100644 grc/tempest_TMDS_decoder.block.yml create mode 100644 grc/tempest_TMDS_image_source.block.yml create mode 100644 grc/tempest_binary_serializer.block.yml create mode 100644 grc/tempest_fft_peak_fine_sampling_sync.block.yml create mode 100644 grc/tempest_fine_sampling_synchronization.block.yml create mode 100644 grc/tempest_frame_drop.block.yml create mode 100644 grc/tempest_framing.block.yml create mode 100644 grc/tempest_image_source.block.yml create mode 100644 grc/tempest_infer_screen_resolution.block.yml create mode 100644 grc/tempest_message_to_var.block.yml create mode 100644 grc/tempest_normalize_flow.block.yml create mode 100644 grc/tempest_sampling_synchronization.block.yml create mode 100644 grc/tempest_ssamp_correction.block.yml create mode 100644 grc/tempest_sync_detector.block.yml create mode 100644 grc/tempest_tempest_msgbtn.block.yml create mode 100644 include/tempest/CMakeLists.txt create mode 100644 include/tempest/Hsync.h create mode 100644 include/tempest/api.h create mode 100644 include/tempest/fft_peak_fine_sampling_sync.h create mode 100644 include/tempest/fine_sampling_synchronization.h create mode 100644 include/tempest/frame_drop.h create mode 100644 include/tempest/framing.h create mode 100644 include/tempest/infer_screen_resolution.h create mode 100644 include/tempest/normalize_flow.h create mode 100644 include/tempest/sampling_synchronization.h create mode 100644 include/tempest/ssamp_correction.h create mode 100644 include/tempest/sync_detector.h create mode 100644 lib/CMakeLists.txt create mode 100644 lib/Hsync_impl.cc create mode 100644 lib/Hsync_impl.h create mode 100644 lib/fft_peak_fine_sampling_sync_impl.cc create mode 100644 lib/fft_peak_fine_sampling_sync_impl.h create mode 100644 lib/fine_sampling_synchronization_impl.cc create mode 100644 lib/fine_sampling_synchronization_impl.h create mode 100644 lib/frame_drop_impl.cc create mode 100644 lib/frame_drop_impl.h create mode 100644 lib/framing_impl.cc create mode 100644 lib/framing_impl.h create mode 100644 lib/infer_screen_resolution_impl.cc create mode 100644 lib/infer_screen_resolution_impl.h create mode 100644 lib/ncaso.txt create mode 100644 lib/normalize_flow_impl.cc create mode 100644 lib/normalize_flow_impl.h create mode 100644 lib/sampling_synchronization_impl.cc create mode 100644 lib/sampling_synchronization_impl.h create mode 100644 lib/ssamp_correction_impl.cc create mode 100644 lib/ssamp_correction_impl.h create mode 100644 lib/sync_detector_impl.cc create mode 100644 lib/sync_detector_impl.h create mode 100644 modes.txt create mode 100644 python/CMakeLists.txt create mode 100644 python/DTutils.py create mode 100644 python/TMDS_decoder.py create mode 100644 python/TMDS_image_source.py create mode 100644 python/__init__.py create mode 100644 python/__pycache__/DTutils.cpython-38.pyc create mode 100644 python/binary_serializer.py create mode 100644 python/image_source.py create mode 100644 python/message_to_var.py create mode 100755 python/qa_Hsync.py create mode 100755 python/qa_TMDS_image_source.py create mode 100755 python/qa_binary_serializer.py create mode 100755 python/qa_fine_sampling_synchronization.py create mode 100755 python/qa_framing.py create mode 100755 python/qa_image_source.py create mode 100755 python/qa_infer_screen_resolution.py create mode 100755 python/qa_normalize_flow.py create mode 100755 python/qa_sampling_synchronization.py create mode 100644 python/tempest_msgbtn.py create mode 100644 swig/CMakeLists.txt create mode 100644 swig/tempest_swig.i diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..706c2c2 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,166 @@ +# Copyright 2011,2012,2014,2016,2018 Free Software Foundation, Inc. +# # This file was generated by gr_modtool, a tool from the GNU Radio framework # This file is a part of gr-tempest +# +# 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. + +######################################################################## +# Project setup +######################################################################## +cmake_minimum_required(VERSION 3.8) +project(gr-tempest CXX C) +enable_testing() + +# Install to PyBOMBS target prefix if defined +if(DEFINED ENV{PYBOMBS_PREFIX}) + set(CMAKE_INSTALL_PREFIX $ENV{PYBOMBS_PREFIX}) + message(STATUS "PyBOMBS installed GNU Radio. Setting CMAKE_INSTALL_PREFIX to $ENV{PYBOMBS_PREFIX}") +endif() + +# Select the release build type by default to get optimization flags +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE "Release") + message(STATUS "Build type not specified: defaulting to release.") +endif(NOT CMAKE_BUILD_TYPE) +set(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE} CACHE STRING "") + +# Make sure our local CMake Modules path comes first +list(INSERT CMAKE_MODULE_PATH 0 ${CMAKE_SOURCE_DIR}/cmake/Modules) + +# Set the version information here +set(VERSION_MAJOR 1) +set(VERSION_API 0) +set(VERSION_ABI 0) +set(VERSION_PATCH git) + +cmake_policy(SET CMP0011 NEW) + +# Enable generation of compile_commands.json for code completion engines +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) + +######################################################################## +# Compiler specific setup +######################################################################## +if((CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR + CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + AND NOT WIN32) + #http://gcc.gnu.org/wiki/Visibility + add_definitions(-fvisibility=hidden) +endif() + +IF(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + SET(CMAKE_CXX_STANDARD 11) +ELSEIF(CMAKE_CXX_COMPILER_ID MATCHES "Clang") + SET(CMAKE_CXX_STANDARD 11) +ELSEIF(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") + SET(CMAKE_CXX_STANDARD 11) +ELSE() + message(WARNING "C++ standard could not be set because compiler is not GNU, Clang or MSVC.") +ENDIF() + +IF(CMAKE_C_COMPILER_ID STREQUAL "GNU") + SET(CMAKE_C_STANDARD 11) +ELSEIF(CMAKE_C_COMPILER_ID MATCHES "Clang") + SET(CMAKE_C_STANDARD 11) +ELSEIF(CMAKE_C_COMPILER_ID STREQUAL "MSVC") + SET(CMAKE_C_STANDARD 11) +ELSE() + message(WARNING "C standard could not be set because compiler is not GNU, Clang or MSVC.") +ENDIF() + +######################################################################## +# Install directories +######################################################################## +find_package(Gnuradio "3.8" REQUIRED COMPONENTS blocks fft filter volk) +include(GrVersion) + +include(GrPlatform) #define LIB_SUFFIX + +if(NOT CMAKE_MODULES_DIR) + set(CMAKE_MODULES_DIR lib${LIB_SUFFIX}/cmake) +endif(NOT CMAKE_MODULES_DIR) + +set(GR_INCLUDE_DIR include/tempest) +set(GR_CMAKE_DIR ${CMAKE_MODULES_DIR}/tempest) +set(GR_PKG_DATA_DIR ${GR_DATA_DIR}/${CMAKE_PROJECT_NAME}) +set(GR_PKG_DOC_DIR ${GR_DOC_DIR}/${CMAKE_PROJECT_NAME}) +set(GR_PKG_CONF_DIR ${GR_CONF_DIR}/${CMAKE_PROJECT_NAME}/conf.d) +set(GR_PKG_LIBEXEC_DIR ${GR_LIBEXEC_DIR}/${CMAKE_PROJECT_NAME}) + +######################################################################## +# On Apple only, set install name and use rpath correctly, if not already set +######################################################################## +if(APPLE) + if(NOT CMAKE_INSTALL_NAME_DIR) + set(CMAKE_INSTALL_NAME_DIR + ${CMAKE_INSTALL_PREFIX}/${GR_LIBRARY_DIR} CACHE + PATH "Library Install Name Destination Directory" FORCE) + endif(NOT CMAKE_INSTALL_NAME_DIR) + if(NOT CMAKE_INSTALL_RPATH) + set(CMAKE_INSTALL_RPATH + ${CMAKE_INSTALL_PREFIX}/${GR_LIBRARY_DIR} CACHE + PATH "Library Install RPath" FORCE) + endif(NOT CMAKE_INSTALL_RPATH) + if(NOT CMAKE_BUILD_WITH_INSTALL_RPATH) + set(CMAKE_BUILD_WITH_INSTALL_RPATH ON CACHE + BOOL "Do Build Using Library Install RPath" FORCE) + endif(NOT CMAKE_BUILD_WITH_INSTALL_RPATH) +endif(APPLE) + +######################################################################## +# Find gnuradio build dependencies +######################################################################## +find_package(Doxygen) + +######################################################################## +# Setup doxygen option +######################################################################## +if(DOXYGEN_FOUND) + option(ENABLE_DOXYGEN "Build docs using Doxygen" ON) +else(DOXYGEN_FOUND) + option(ENABLE_DOXYGEN "Build docs using Doxygen" OFF) +endif(DOXYGEN_FOUND) + +######################################################################## +# Create uninstall target +######################################################################## +configure_file( + ${CMAKE_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake +@ONLY) + +add_custom_target(uninstall + ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake + ) + + +######################################################################## +# Add subdirectories +######################################################################## +add_subdirectory(include/tempest) +add_subdirectory(lib) +add_subdirectory(apps) +add_subdirectory(docs) +add_subdirectory(swig) +add_subdirectory(python) +add_subdirectory(grc) + +######################################################################## +# Install cmake search helper for this library +######################################################################## + +install(FILES cmake/Modules/tempestConfig.cmake + DESTINATION ${CMAKE_MODULES_DIR}/tempest +) diff --git a/Imagen_800_600.png b/Imagen_800_600.png new file mode 100644 index 0000000000000000000000000000000000000000..777d794963734f784fd85a3077fca75872767de9 GIT binary patch literal 465581 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 IRLEIfji8h8X$D`GW=~}C+j6to! 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�UmI0^@lh&t7 zGB5gFJs8G8U+r*#*K|rt-hEafRpnwgCYZ|tr0Pl`Fpj?@#l*=1!p`{>L zDK1w|_8^AP2!LU_wr6{mkT6S%D9i|gK%p#2xlmF9&Xo`f0EjU$EefHwEjsLtAl9X- zZ`l+GEEGVPAPX^3@C*PE8a7nIl0f8n3c(24X_h8Hd5~0OAy?0x(Zv)*96(T{DYg9i zM6=gx@gXzQ!tpEh=?TU8aJk*@j~cTxL9L>aytTe;U@ka^lp?J~UZhG{wu=c>kWjNs zfWEM338?{q5EX^)F(Lst&%uH)*tU2vhda=EL%ax9}%qY$xhoC08HEG~w~u*((%lz{b>ZfmW}SOGK=0vZ$% z3stI4ebV*I)@YnHK;YQ8-;SD-)spALV?2)1x%nM;+;Jxmh0Mau47eA|jc)cv4FEE1fvwrug+{&c#V>uLQgu%p zKjQ^zV$vwG0w`l`wLjgQ+_pG-;>>bTDviTbD|+_az;--Bc$Tqxy%cvxhUunhl5~fR zvmHCOU)oV21PDPPg;M|O)!p3xmUsWxw_I}K``KplJ;6ne|97&wE2R`d2>zSv5kUwL zLQ4M|l;-ah&POS#?>m~1;J#iHL`4TZcC%& zyIe9L@>;2;3WkXlCY;&?5pz5W1(*F+7i#1l7J-rgSS6VplXG26B5PC7x4dsVq{^Y*u5Wl1$Rz zgAf1!AOJ~3K~y5Z<8hp)h1S?G9EyFvOe>9K>GU}v3ndhUR+eXyz=ehR*6LbOq@{X! z)LznQo<%vO6bfDp(=>_<19vypl>`J+q_vcV;)TSRP{(xZ2DJ!6@O;+y&CKr*=DA!v zwhqAgy%KTEV8BflwrBtW(3`orHjDTG1fWt70RW-nIt9y>(9{5gCY11UliWi5OOuI1Dw z0t8V|D&={uBwAT&X`R)}He(Vfe`3N9bDkE;mw;$F9JDZUtJNx^jv?}1gnDZXV@xd) zlu8N9SOIteJIn2bty`!`*4s;%;5=jPaW*wKy|R8fiL~#SzDFci;XnwTng$JQkw93a zMJ2G6EQ(wjhLcMr0pm<7;cKOWve_SmkZ`O)tx`F6W@MSh^jw9DJPcFLn8wI;DS#l2 zL~5(SAm+I!dsTyGL4c`IN}{k{as9xJQ#cBFQ2?Y+9v1a#Z7mxnNlFHVY3iBTO05xa zDM6fLthoS#Zb)rit=M_Niwq8nv{o;3mX#c&3K_T_lbmtpIF&pD1sgaX%3{>oNNhKt zwvAApr5i(_CYtWJ$9&(BvKx*i<0Q+a6k)E3R3IK_kkU9Qw1yDEqH`vC;vUU1a6z@Y zkhw?$0IaRodDq;vb?c&GywSGGCr=*@{5=53M#IapL}|SH3hdc7Q0j)p?!hpL;!G+* z2tWueY{^~6-DsT=N~KwmWeI}NH0;qZenDSF2s6eo#@}h0fFI$dvB{skY~_fT0EY5> z?DTg55JD*=02eYWe81v?sqZ^@NsTti`)sBbVY}~iYCEIp$#-zxo zg|t?T7e!HM6qT_wY)T-4S_7%h=fy`zAAI`M{Mpt;6^aIdzjgj%0}PHHWnp^pTkO&s ze*d?3{p3$z^L!fJ%6N&=k5M?963jm{N&9C zAb{t~96^8(bUe%Rtu)KD(nX$WpuE5+m%Jp-SuTCo&yuWGEAQR6bu{XD7A~?e!pg5! zY{$x2-r5)rI;rH60?7km`PxNB;A6wU6x(Sb>y6sVxptT`o($Tpk>mQDgI+w6S}35$ z!z9ZJlbYS$$hJ|n?3YVs6b_}7o@F@>G;{*A%tbnmMOH+fS8)Q@w5a2`5MoxSJYzvn zT3XsD3Pnsj8jcACMa~@;5(;^t(tJEI=@43!OHQxd#n2`NF9i-0%(Zc;L^;=9K>WZP zjnmP1m_!UB=$d8}#m$L{es5g?)o7ZoO}pLU12EuIn={qliH)2(=(W003H_FTMPoTFZ+o zvARUhLRJ6(KnTswZmCw^eA{hzX|2_HciwY2AC0e+Qc6lGrBq4@A+jv{(w9HY)SxUu znt(h}LL!V`n3R$b%nD{ZmIj-(KEHq0;~x}YOkNZ;@J(=Dt`Xb2I3 zfZ#AH1mjwxG)o~Ofq}Cq&eAhVK~`jjWm%pVrBX;z%QR5M4TmX(=c#J{P~*J91PMZ1V!_8Fzl(GXA)Cb{5zetsGg9fnbs=2_0dab%c=&rR2bj)cuw zFCL}7V{h3~A5=|r<8h4MYqc8#1d0by$+#0HJ>p6}U3Aw6F^mhXEmRG4KdO$sG3(!?-)!?4%a z`?ZN`chK*T!*ba&U0QLi=`DW0*H0scpp4SEGsp$w8VaQlLTF)Ixm0$JKYKPxh@H}n zjj-(coC!kl+S=LaxhVj-0w_$PhF!hpz`i5Lk7n`EFpN0Ky1j^)pwTdhiMYy}lNG@! z2Dw)%8N~C0%EtOexf(DYWgIFXY@?Dz3ThpA$aBC(yO-xsXscSSnU)?7I$CjnK*m(g z(b96yaZniLra>q{&Dmz2F+&g~v1K}Onrwz&0Azsj47|jv1~19gDYX`iZGOg>U`$?0 zwc1pwHhoO!0^3h(ZCXa23=M;rCLQ)eYS>AfzM!Lep5N_t=jZ1xEM1q)_V*)v2iO$; zw|(*XIU>vR@0KEDn&xOU0suk)&j+M`zqToaP=A}|t4)6d1WKti&AxRA;g9emTma9x z6c8w&0nH0;`?%yg2rJt}OiI(DCKUZ{*LG(R(GaqN@ifg5L_xLeS_UDQGd3P1eo*(z zXmx!f9-(sG%~A!FGJL1VW7kJs#T`d1Ntx2JU{Fbg5F`d>OvZ6!P=m`DW0SK&E6$4C zHf!std(i&3W zH5z{DhP6{iu?a2L8Fn(;@~}%p!C4kVEm#`mX+kdKJOpafCIDf-S@FlQzEEs|_zuK4 zzL2-Q^VBy4D>Ts9F>d+q@3~aF0st7ExBnM@e*Z80{EJ&|>8oG6?Dnf)FKud85NZg4 z1{wk=m`Y*}0icFS4Q-ex9I@pyr!C@G4w{}S4Mz#%tjOi`d^w4WIOTNQ6$QZ>YGKJj z_ge9I(4U!{T9~i0B21!OF!?V}9#O#XD%RTi#?(v&APF!rX(bs8C1n_mD%ElnWg1A+ z!mej22`~bVORxa}-cUdqhB@jFckh{oNM%`CoA9VrUSA#qB2CAlj^FFH zR#!V1;%Y5W0$Bu74B~`oZE0=v+KJZM@eL-FL!D~LhKfLJD2?+X(;B*tH5_G1vY=$o z%{JCnBM6BQu-{Jz5!4itBLv+ng8(C12Hj5k=(8&nxz$EF&GJ0YT@L|3gn$?!S@1OM zO-y)cjM7Y2E7O5*LZIu7iWg}OW7h{lN{A$-Xl->#OGXU{prX`p93LP~35vo|rQEPA zdg9r!k=sxsy8`mOJu#)Cs8g`4R<#g81}<%^CAN(jPnOU2D|L_Y)Gt$N35^PtpX0&Y<9m-ciY!@g+c)Z5+Epo6etm5aA4XI44IxdLZPq+ z8hGl^(BXl9fE{5w!UNAN4NP0I!$HdSKr*S$q6h>D7(`R3{`I##-R^g0uC+WkuO12w zr3bL;5meN7?tS;(b6)J+nS1S>D_5@deVio4d>$+9x0_W_%!z_h;DamkTx)%Pe*U9o zBOh|G-~+1955NCBf(5&@oezbto_kumIF|R`Xycu!>%MLMl`F?XKSuTkD%23w-eUgM zuYE1cvMkFYYXJdKJyTWx1RozhAW0Vx@-&X!)2Am{mTLWHQ#rgSu*mZV4<4MHoEAk9 zMOLX@f&#){#;A`x%heJQ3fw!l*=)P6OOn6Da^RofC1W-%RItU-jcZ3UfU&PG>SmqK zimXhp6?0>!nKFB`y6vsVWO;E4$mOi?gp7s|vq_55jpMkv*k)-_s9QNCRD z985ph?WT7Qg>f7M1!MsqMi3N1A`*Z&E8-+mody)8v8k4R=s^etK@<@yjoN6X^<*}+ zu}+K*bz>UP2gUKL{ZQHZPTiJp`tQ?1r{Fb`trp3Do+oP z0=YgiQMIkKveW5oyRD+wWMzWNsxq4$0I5J$zZ_@~?_JlA66M!kdwsb&5i~w%X$cWf zX#j;<**MjaHHd(qcCL@oDzf(NFMWoK^!C@^+Ra_tN00u=fA)8uUx4Me-`vS&<4#`U zh4JX0|CrjtH($T=&S!4rJGRpuMFZlFZ=OkZ6geX32KLSwh_l3g_OsVnb#YO2o!>va zg0=#MP1EH?G_-2#`%Tq!Ed(zh=H%?$q`}5Oq89t*>62xgSwDtq+4;to)0hGW91+!( zYkTKst6`)lP6szIg(OQi>#kZk8{uRwCr`#SDh{tLnreLVcCr{U> zXO~xwuQ)f3Z6C$FuIfB3=8Lj(SgnQ#%@CYsR1&pSpTu#TY8{F7h+ev?2_cLfGyBM< zT@5EEjWH@RnZ8k}qCB5Q1(B<*qbQD|n>TM*`)4UIeu7W%!}yiYUHO0i>Fk$({ol)) z)Abl#`=u+J@BRM2_}X{R&c?s~TYu-ZeRy&*Ui~i$mKz{Ik@32(029fQiaw7=|lV>LwWNkK?c==-;R_xB$Evp@M!2kY_eD~Rfuzyu2#L_`s=7PVFY;C&$4 z)#t+GesQ*(l*x1&|LLEeEe%U(3F8%7AGUOSt}IJ!XO2Ph`_*vn*gaB+IyruP2* z^Ek?^az_W{^_zRAmnWOmn5Wr%HhcPbQ^xU*b^;Xy2+L(3X_%E!RW}D$V}OuEz_h*h zYCa63AHv-`x0DhJ+yuZIEL3d4!B5s7~w7hX^(RQoL%Q{WwPv7t3WP0s( z`RM-B%gc2X&C)d8tj4joU4T3{^`?&F`1-YlwrFi)@=_^%c6vJ7%S{qhD_2)sOrm}m zi9?>JRwZecd**Gma+@a7iBUF6z{7BU+5Yt}ymt3$Zc~d&gVLxBD1@Cez7uw57A9d~ zCgA{qh)F0gv5+SpICu_$y=U*41G8fn$UAbLouknQ=fmjC=x-NklBKIv)zp0yS^Xo5 zAxf$JgM;a8>YQWZpOy{l6Z{l-R)w?k8zO7fkD(a-DUUmyPV*uk$B_d6jI&|A0C4wG zO4-OnHq!qF%GOWt34R2tw;yeMl0x(Kul_#|wtR5)7yiTF{42BXK024ze(uin_y691 z|D9UDdio##&0qX+bN%ZLqO2+1}0T zu3w7`2!hO)%S&caU~Cd$qMRG5^9zg;Zu@4v?EC)s#-~)03ut4@e3Ib=%4vUj`kos* zAyJ?}nK(*^Fq$NZP$4r5%T683nkZ_QFY=h#zWwB%{ulq{tzY}fTfh5z-Ni++SWIu- zoZh@Oy?wL1etq0l)uTsG|LBk2{NMgj`{?4w9wF_=F-!5;77sAXj_wXo0SbcB&$3Vf zm8zPm>$Xo$AICAosn%A1`n=ndXYf)-#;NS)pna^$!5EX;&6D)P-s8Fxdhsx zGR)q_>GJX{O`~d4U!3&^SNEz_ohAu+m&V0>njC!U=;7n{_V>%S-&WmvnkV@r%_o!7 z2N(BVyDqdgmXcJDp4oFTH-X&E8~K;Me2qySzI%G*sPr;kF59k^H@>~ei&Rv4|KX~f zlvQ2#?HGbTK0FXM-bd`cHd&Gt2M322XHVL8$Wl9*WWf#FP50#FJWI=dY}>OcO;V;2 zdt1hdV6d^)=-+<#{n=tl!S(%ccyo~^wjTTt>~;VU(NRR*Deh9q zGXox*)poHcy1H#PRkdvU@oc_0Okyi+W_$aN!**2-{a_OS&CTVudU|$nTm>d&5bY?6J&i+4LnjA| z!`9Ud&7C`Y+m*Sz=&oF!CTRj2yS!LVC(|^GlUNq}sq@`1jHxZ(d+*!_HFl#Cx^?Sd zxv5Y=oCO%Usm9BTX0|W+JQC^I`T5>_vmE=5tyRUWh-`9lesX)h&!_%keOgTQy&FfH zv(4;ac5+^^WT&UScks%mZ=RktL!da(TC*{xZ{66QD+7CbYIC-UQ+4H<4HTa~?3$Wv z6fI`6=|cCNkBr@}Y!W9FKtV#mTshotx_;;#uohMBLF25!e%ob9L?9O+N#Lv>G|n;HqTsOo7ia?5wS3#(tv_W!H(!(D@24Hhlj8* z3o8Kv7G!2czzo13yDvgu5fUa~W?>K#BHt=z`T4S#$ApO%!aDu=61V5ZKW)X>E$K$jfAN zxgPqi>pQC@O^gfVypPg&T1<^$@9FsJQQP>T?*XG`S@pFSMQNF79gBIWv}0R0VYRhsKD3<#*YRab+A#KMAY}_wxRDiP+H8jrRw~VZ`%-h zLAAZSKlU5vxSSl6M^{0M2iG@sq;^vhF%hCl)7$`%8%GfHfh3q*`NlJL&=(0}iU0G` zAK&@j{cpW?M+Bec*dwrr)@oPkB?8Zg`59SABeI~iQQNasDvq>GV7=aUol8v2nlI}r zTeSH)_(pApMH?vM^jb9^6**?CRo&a$642eb+sxtN>H@Mwsy>!LQgzS zrZ%#^oKTX*DjM%Uc=YJeiX3iMmwBA-9VABi<#wB;8IvD|(b^==(lU#O0oI#tzQ_QS zP~29qx3@pvw*kiG<#>KR0IQ3$YX5NIy#tihYI$_L==)}M*#Mj1S>YH4y}B4KH|=aT zeQ>t9TxI!0+LrpkE%s;2^UEwtf%W=)2!zdsX!LiF4>rwuvsq8~77D?jW$}H}YYhNy zI!mA|Vp6EX0hc)aXccFRDrM2|mFm_yqrMU{K1pBWCkE z_deY{YF_)?SK`&vv#s;+^(Fk$FaNc_3g3Ji>|wKg`sloB2Sk-9qsut2t1-^Tkyf7E z{O|xV>e_KUccUA$QgM=?HrnU})qFnbo2pq?eM3o>q;DfM8 zl;UJ=-QZQL#&PGqaMuq>63-^-cD(}7WfnCTBMZjaB8u$#;)xLEv)DuE2G7p*L+d>T z2YufM@`D>dlmy>wo)Cw!oRyRG_{R0+*@g39W)mCbh#LCZrg^$|s13H&ipdEO0J)(B zq2Q%vi6=!@ZKEvp&aYQ%@0|b(yLxjGXQ}?w7hYAUTpxmiBucDF_P+C;9bVq@J*3Iy zXYY1hBOppC0nu9N(ARC97nw-d5!LKeN!$0+$QT=AHc8ma&^aZ> z=%i`75Ljz9-z#q2o9!LhB+G{(lx5NPZZ?@*zk2N4FrR0ye&!}BIXzpt-sM^5Lja7I zm!YbqEap`$=Vz|1z>OS;KtzK3{FiRDe);h6nN|A9lZ!M@;#@cFdjD{Cc(~ZCR_i5i zR&sf^LLH0&t5sR1-~IM^l1AE)_vCya!M63r68PZ~aGq^S6KHi+8Ih-+KRiolhnp(03iN!pKq(*AD`+S}mJq@IlQE zt_RW~kU+3H5`@_-R~X8y@Sd8cGm&*ZhyXJKD@0|qjbgN*P99tm;p@Nfnd`R>(t^fj z)6_vkF;WdNIrc+v?0tyR#OS#1yS{hJ%W7zcaTwhYoD0N(fR(X` zT7VgY4-Sdgdr`Pp%!htR%2_;_y5Iq=O{XTGm~7kKn?somd7_9X7n|KX!J1|<0mRwq^7--Wy$Q3=@+4Kz zG~KQW##kHYN!RtlA^^;Su&e7)z&H-hM9M^9jBV;RpTx%MVd!{07-J%{ZP*A)oU}G^0*xr2U={rS+~v&%8*i`FfPg>$@8<*b{ty}b$&KB zP1E;|1ppb0FXvdyyFll{0la?<$~k!)R1eX4&hXz4Pe7nH!_v>o@ct@Bua z{tLI$MD;_HVD5dWHeHz)iZzNqKAZ-M$}$rfpFCRr{LlT$>7&QjZ)SUY(+BTAoX)05 zu37cdEImGm^W1Kh9>%R0%lwPKB0U5@Le99>0G-O1&Hiw(6~ij(C0Zrf(;!e>5r z`+IM^sp7QlLzLOUwbNO$x$Jel$%-L~0b*qY4)#;j_WW$+JO%IL*aFZlPY;-2CmMn% z0K(6lC#Jw0fJrC_2jCzQKuDN`gD?RFp#Zx-Y3Gdv5CSHq5PXOu%o0<^sR~Xj(`@?} zd?bBTY0*DjS=>j`IzFq^`wM6qe#(x2G>!kI>-fI|#`fa)3p9)u$6u@oy*OTQFtap9 zjiGw{yT9|lym8VgqoT+j9x$5d;^}w)@jv*le&>9<+>F{rM^|$0PtjW%oEs#a&YWvS zf>CLb2FLp3WOaP~PMl`08MbW`rFuF~H>+AHo8)l_0Szcr!m{1; zevmjx5BKIO!fqUlL;?}BQ^tz8;Jr3#^gj5JIi#t@Skj60)Q@4g+}1@_GWe$IiG+dx z2morObrca{99dyRt#=z)#bh1=Z!VXS#l^t^*t{8GgcxIMBiq-T)r0%m>SR`!I2v0F zgep$c#Sx&cHkCq)%8bMp%L@sk+HoI%AYzo}hDnq{8yRK+1VDKD8^0uzV*jh(27re@ z|H|Vpz9Phj_fJ3dFaHz(mbZ@I|FzGVGLD}v@BYD`##J}WiuZs03;p3-nA3~u?mzoR zx@m?od;70_q1r1o@vHy(+l%`r0Py~oUO%~gjDR=4_3o`deH#ECe(v7GFT836cD0(u zm=FRp`+>p`lpup>qYxQEiHK6W@-Y_X5Hynm5v8>EBEe>5q^<3Dx$A z);Kiw^sL%$DbKUZ%hh_lNmP7sv8?KjgGNx}82o5l=khcFVv$UhY@%2frA^Xe^sXCx zH}p1xBp-W!etOak9gswh!g}jf8nhh|qUB{3nfPe`X#Y@}CTI)8=nsz;A|ezi-3UmQ zB*kP;naKHJzL#%TysW#;DnyY94#%E3*!9IwFQ24wmL=I@wjW$ABNqpDxji=uQPMDa zA>M8`$olYb()B}K*O%vwpuYF1>&x|{!S@dzwGW@1B@;z@=pBoY)k$9uKp04rRXS24 z65F`%+vzk1rElFyH(M7xY*zhjQ5+x7s%>q++<*6+g4uGTwBI`_P9AUbY?ftl*M&Gr znz}MdW@QdMIxi;D#6FPAiU>F&4r!WH+wP5TJz!D$d$aBKva1^BJv%!LCN^lmM1aff zCbr3J8ddc;^r7!Pc@JWMY3E)cBPtXHA_(8FA|xP!KpaTO?_4ekfkTiGgaU*BwA%^{ z^86Pj2tj-R@5AWY&cCzXZa2exHp>&+c0c9`C?aljb<=cR_nc`9KN7-Ggxzj9qC&(d zvPGU}d9FWHE=M6WZP&Jq_u&V$^FFfHck*63%d)a8qUiffV9Y!WW7E`qKRl;z{Wv-v z$8lK}X__kaeSsJ6ebcmU+Y$xY2^fD=B(De}u#*cj#^iZk6ovUv+*%D|lNrX`t2H%Y`_H~q? z(b0Onv1S5-L*IApCQA|v)U+cpY_{8+d>We9&Z#6x{pgv*dpB83i?T=( zJKdie13bufyG4{FGf|v0t=C%6z>aueyX~}{?H?BPrp`+(sKH7U;bSB z`Bwn2nU#uJ7#@A@?(+H}fDDU?F-j>wl)iU?ATVjAgX1s;tuc;umS>yomYFm@ySbFI z0KmkeaIv>P4qe}cG>Nr}fxPz;#HT4lmb$JZGTy88x({9{4P)<2q~`k*@VHzyC~7vJ zUY@Uqq1|r6@!{h9tWgTA$?x2`S=TiH%@$Ut>d_Ndcf@Sgn|6P)$6m@ZdG+;MZ^n>&(5fWzuA47P zH%h%3i^;SdMjIt4{F%=kzVpt5B+imJGkc4wYL=JOY{wu{mSYIxFmzhOY!NA~oL7Ax zw(StcQP@iGq7(`W?g&#pU;r0kW*`zK2?RtE{LZ_Q;3Whhf)Ipu+zmmz7w5!z9vzQ? zJc%dv97ZQ#iS+28u0xia=ttOtMC8%KN6!2G{r%(PW3APWIN+lq8vUSbA+vdIZ-k(g$t5>h?PVC`> zhln^|EEbE!^Im^c9p8y(GqVUdH!hb;@BGbMH+Qqt`Punuwc0;8I5^lh#_U@Ei2D6} z%o#vJpt`Q!e*2xn!-KuOJpdTT@$sX_Nt(`Pvp9}Ej*dSc`L63vPENGaH*ekC)%rYs z^mrV{z5V^8qmS3vy!V^U=JfRR>eZ`7Q2;{Cq6N7h3sjSH7)7irZ4~@}TnK4mptsBR_8O9-$lYAI9eOE(3r3DnT4+;&T^aBAH zZI#l{Ry`3o0%64rETWAD+41;*FijWpzIQ`A>NxkPB13&!jlC=9vp6mL5qb}ffKlx< zyo&j;0bV|Sr@6R@63gTPLBcR>&bvydd2W@AZeSnlSfzR5l5}h>`5-KA2*w2uD1acK ze4x|Q^S!`Hl7_57>FCAG;obk-m-0-2KHp6|^BxtJQIP2Fq*(e)b#fJ2%CQZh)sxS{tG$N!hJG z{|lemZry4*zW#;Jfo`Vz-QID2|D97s_HeNnhYO~5Iy+2~!-wxZfw+^P;^^oXe);u3 z`NkiYrLt^PlGrn6`qeTr13(R3cU0Mlu4<@!E( z`jc^F0)WCS0K!7d9Cpc7%*5U^5xE@$mg8~c(XsP9dI>=S zi)Zl!#6T>>z#LdSdz+Z)WSVDXk|~xSmdLHD>f-Y9*M9BS)CYIO$M-Zu#KXhGCr_R% zm&-IwiRj|;;_khB^ZEQGG`+XCckSBsKm5Z#oKB}%maSH+K=g$#d|_wXA7AUc;~yR# zz468ytJUh@;GpmO^NWiwed$X(Z}Q{r`2PO>(b4gDzVn@;D55C3yu6%Dr+4n$+3_8J zd~GA*d=6KxT>0u(zq;9MXR~Qt*JtPFU-`;cUXHOH92}mUoLpXBrfDi77Z;be@7&pW znLi7}U^~M&Iy(C1H@~@Btrm+#+qUQD7r*+ezxoo!=f#1D`}+rnhevO|`MshjthJYy zm-G4J)~#C~w+X#CcE)ymeEi3M{KuQkW;UCB*vArqkqHxsQSx`O&m>)(oqzI zM^u?ecK_i_!5GMw{ThA6aWeqd5fU2BlQ+0e0!@ zJBN=Y_@I>^K-N2cX!2LD>?7(Bl+jkONwb7}Una>|je$XsV;$KjYPwDvR0fuptx}j4 z#n^{&@J#x-v}lq_NRZGe3Z9vQ5QX5KesZ=_#bP;Dl7H=o$J?cOv?FJ z|Mfp=D(;##&C_%mWjcHK?nM$Oo7Lb)e&ycLWTEaw6E{#>*QrTo(_A53y_&>ncmLtH z_V%v@GDJSlEvf|2ql&vOu#oFzk|j#@#l%LI+Gg0UH%G_&Wv25it*SaJ5*4YY;jAnb zK-V}=Y8aZjuBX%d=x|bR8X;Xb>o|)yRgX%cvLQHQRp70Oj2q?btRDU9+KoB8VLqE9 zTNb%{??zL??t<{5p6w`oAPT}FBIKEN zyMe^sllKz*j!jg2kU$a`0wePW)r5>9!h$Ry0xW@G4CI-tjg02)rZV;ic(6odyWPI_ z+G~g?{O7Hl{kLLAR&+~lO>yN!@0HxHOJ9p~3&a(94;_}|TdjRlp zcl_A|gm~@RwRhir_uyc^@B1rPu4tuR+L*_2yjU!TVTd9-j_&%k>+rHVj)-BmkAC)9YQ4}x1*j^CN$LH3qTkpR6?qV@-nr7$tzJ&34aqLDi zNs`HAI*y~Y#`|#d#y))fCiLQXKA3m!-hKG+;cPbh@TX1HZC0Hpiv~a_j-s{_U{n&L zQEk&Eafv!=hgzW-+OS!+Ns>kpix@ZZmfH{{FdMB+WEE;RIvd4kz>xOdCvj3!LxDya zwKhg8QLw9TWASz4iAagAmX(QOW=rCdOyy}lwtm?SN`Y08GD<|qOHrh8ZkQN241I8j z#8D8^)`SoMP-{g@fZ)AHg~HOeH2@e?ey9aCqCylzHFRAvXAv-30V?l0KeWb1$UJP9 zX&Te4tT!tFVPFvPexTq%A%GwtU=yXqxQRnQ3P~KL0u+2O+9-`G1g0Peia}T;$zo$w zUc_xP67O^)P%{C5R+tr5Y1K9Tvz=$Hg;8mxv>1a5S!q-X;#3amRtd5CjC*AvO#sp9b(=v%tL!J?J6l*tn@;vkoSOp?L6eI>FX7VnN(kQ`dTRRU) z48e`oMv=7?j4+o)sdR`eDhR>5D305f>s9ARKbsZG_;G~IYV;%;Ax&};AE!x~OF4nw zMVl3Cq&!v0wb{v|jVa5>TBQ_Ko96%fzqzk|tPw}YuTGC%IXXJ}&ENd(Yu9c+eDF4a zXrtmpk8b?J>)zUk3CM@(G}Q(J6B8+A5UnwG9LIHW6qh(@E7-CN|l`G;K$eoIH7)#CEYia|HL_tCg}ht{;Wa2;=D7wHpg$ zm&UxmpNtMXjS(awloe^U?uq;T!z7R>t!In)>7&-U=qY;}VG<`wfe0a)ZoszQf{yC8 zE{ZrYdi3GD-+Gv(akZ_AlC@<($6f-vya27xjr#1Q1HiUM^3CzlK4Jh2QDUmPy>sj4 zralG0x~}Ilvp1jFNL=5EFT^=PM1?yQ91!9VfOm=QEF5G9hd>LnYS zH3mLV?LqJ~tsEvQhN2a2v79BI zwm>@48Wb`Jv1o-rtWcMe7llr93#1h9~V0RUM5 z1Qeo4qhz``+`n>sq_tgd>h*bBoj*p9IMVgz(ik)r0R@;51(hO_zyS!9R=Z1!W7lq% z!7(#MI$^6q?~JetBor_N+=<~Tg>h=4ND~JlGTN}P)~Jm(29neilelZVfC5n@ptM#- z5fLh|7PVChwYJJeidecX>{3QpLi<~GIW>}iLifqQeD4wG~3gg^|;(r(`l>} zPmAp4^}VKEwf!Ip_m8K}LlE9pt$3{K?P9--UxOcq?{B#bWuVe zYt3#U@Dp9lpBjkIGAEwh8VE0~X#mh#?NmoY2)jInm(;q5QW!!2fZgNhrH=WIitmGj z6{YZ*>g7v;)+z)703tF*zs!yUKGXO7Aj0udjqOE%0v|REtzYi={Dk;mFkiL_y*RX1 zyTSZ0Lh$oNDHeAO+;#0d`9Ps-T{i?&MiB6PwSTZ@Ew-KO2Ooh=(~Jdt2;8;;EDRbf zBUYP=0*S))x+?QRfg#W1FlrNJS(If^OmvpUNi6TbyNr|Rd_Nw045O~wEfF(gKgI&% za>->8H?{Yqhyo0pmsye~oMupz{u7#lw3iWQQk_iHnQlb^0 zR@y4pdS=m9u?Q+H@QnR&7l8o8C^pOzLSRO~oyR2zpp;^k;OXLW*;XBjM!`5T8kJC( z&DATPz5CW%r{_;wVl2v7DYRCF5ELhXR+uR+z z|F>l+68IOb^Z&7kqAW>geb2^3eLWb%Mne*()yB_?L$u@GOs`hWa=D%_7I`Vvrn&#t z_EWE11wU{I)5#RAz5niV=)HH_gZ;T6vY5W__Vy;t;F^)@mWjwjaZ0 z-ApDECZiM#ejEn-=F>*FxpK9*IDZ;=1c;WKHbCUK&yq=9jhE|MIQS9LOb>kste>21 zwoe|86Gvl>O6`ixp7C`&QwDwZ+DSVDix3OT2T>~#VkCJM$_gwb7?ATbgn2{3mf z^&RA8&de+4mdo`IFW*H%@LKDaxn@RGyNCkQPPQ6f=6YRgLm}*<1xjgtiA^h|z4yBq z5~BJT*8kLPH{MRC*^fx|Apqd>2-c2l?*$LKi}q=)KU{$MlR&gKA9UPnZC8NC@;3nb1qb_l@ntQ<*|!CZ?cNQly!1FB$ql1>&|F83+M{<>7S zEQw73YUf7^1Oli{nq~diQt-3A{e$BxPaizwAWXrSScJ1QnG}|(vsxeQnR=5AZQmwC zS2vN}_ud6!1l=}cmd6O(H5`JbT?H|sC@`7M@}#<`0c;fOuJi5*SJ&t7o+)>w|!Jw2wN)aZ02G27f-n+^ z2oo~`8mmGe5Eus-daqHjuv@v&2>`ONLd8VZ8fGTixoWsOEqb;_2UPg18dxBB08t<~ zj2;xA06BrDZSRS^M6pdXgUGIk))9U|c z?mfdTy{a?8wRZT@N%x+cD_1EXD^f@zNnlJ4wm}#SCON?1Fm8|iW2SrTcK45Q&$yqS z@nhU}I|DX?7RVsLU}IsMXc=J;0tHk;QsrB9)5%}jVXgV`opY<|R;lV17#{COkLuiW z@3+&p_TFp1Ypr*I)Y5y8i~>QREOS?{2Sx6Mpd{u4SGEPxspVAxMLy!GxmGsnx{@FJ z*2y3Y_U&&lmO6m7wYBee7>HD;W3d_Ds__GaTBYIOlFxxqDR_&o;Nq&dG;1?BaoabKhNF z;t9Xbcw`g*@@=J8C_0C~{^;ns=iD%*zk4Yiqt3+Db?^tKSys_%oBnl^rvFvjrv8`i z`qPzb-uc!S&Tffim;j^9Gy!t9*ElnM;~NitcaqbGzxc)O z^s{ffab{~^%XiyPn26A%dzaTuXVU)2O-(hW`2L+TC|Q+V=-0Ny)bMi$IWAc8PNrHVWw?<#&L2KJtG5XI9|AmbpOu20Ph448ma zU>LGN&y*Rk69U6P8)Lk;6|WT_01%?0Di;U<05J0zWnkhN>`aL)5Lqb=fFKk|<+=1q z(B7Rp+cRzUN(kMk#{i&}4z!k1MWK%35GwB}sg;yUN~M)nYMiE#*m_4q&ROHUv(|ZM ztaYx6)O5z#qOe77thJ@F*15H{wdK>NeP!Jl3nw6;K%rw5#Dalci5|!pSUsJ3CzQ}r z&DeY6q%wxnQ5J+jlEhII=A~82IqRpI%~6(m2eo?L`;sL&LC!lC=)4z4?!ptQ`f5!QMR~fz%VXp=HhN_a-WP$2>NR0$m>Iv`wH0$vuitI77FSPn zrrV9_nHDlMYhf+YWF0cr8+!Fr7a6^`d1lsDd%Jc`j|QDE)-H36IPnf*os@+u3yYu$ zsTS8=Nl_9CDUn^RhK;HC;YTwDE-f|cdSeb+kHW-tNb*hTVR3oaNP`=>kawQqgri`3eqpZM(2m;A)b z=b|%OC<9iUJ(DkR`*Xg{!c?Am>Z!FQbAGiGV-B8KtaRz7nfaUF{O0@K_rB%j<)x*i z@1?gBFOkXX-bPjb@Q?p^=bd*B1{d}Rt%|kwB2`twRvjUgh45c}&cF9^wqR^>g?;ax zWM3Y6@Sl(FyY_iEwEtBUEUq>wJahDJM}*EU%ZKj!>-)`{f9e%8$#-`<+g>?aGnkYp z3`|}qt;0xV!y$ULda6v~X{iAPNt9s{Pqo`wUN#$zL4VEKGzbGzrpyE&oi&w>yNd1< zLP#mI!LYy9t<~e^%yc>$&a|fspJinMArOY^om_|@2u;>cPaN@5s#*g@DXe8vdha~= zFi^2$0R&2j64;a_Gc#}yL;|C-G}cz|3NV9po{1T_C`@x^MoYbR`jjPN7(+P{RHHF7 zy>qV&8q9%^0WkoA4x7z|y)w`nC%@ypcLeA?jJLh2L2%&k+yL_nKrKXMEfWKvlFCOl z?X7o)kj4Hzd*^4SMp>zp)Eb2bYm5Xj%A7#7UgstUmP&?7N~MI9DhzZrj{xYMcjT?L z&N*YP_s+2=B5N!YJMWx#WobRJ^R9B4S(u;KIyk<3f`GiMwl@S2o-k6_o)3DXo@Xr_ zG^RuA^E~sVG2O0_Qs!CVjfkQ+%j|I24MRCSQ+H;-B!rYwi?Xo&?jVR{trlx(Oo7(> zC=65}Re(~2wOZ1sHBKB~Ra~2CPe1nP`t(dhoNcUUh+)!{5`tPyudie4O zfVE&uS=yaa^HSr)sZN&4(Fg?QQV&{6<+%%MK^R8d%asxjKXNqG;Z;{JWTjbMSwC^S z*u8Up`SFb~X)wDm)Ja3O=OU@%#~-tE^R*%$Is-~Tx0A1}m@5xlB@~4LNCmU)L z3ScNhH(Wy_XSr3L75HB>D6wn6%&-k=Q?5) zDbJLRGH-;006k#o&^kZ_QSrxY>fzNk0l*dBz`y{GfXC1jdL~c6435~1H7)ex&)^sx zRR^gh$chpq<(W4Iq?Wn4V74gUzT1a$rLm6AoB-^MvEDNSqR?TeE_FRUx1sTQd+|qn z(f#a4@BHSxvytCGNVgQs{2TENg0?U`-N5W)`VHt+wYZp6H zT1OyM5C#$fAv=Ebbn1P6@GoX-4qIaGcqz(ctD@E8@ zW32}iN(WkrvwK2Rcp6`TE-|6o^E`X%$Wwp#M}M@jv2pXwH^1_guPBXy3F0E9yd1Rq zoHu?+VI!iieC7W4zW2RFQ2@Zw(&DfF>aTt2OJBP8-g}i&?|8>M@;tx$ukOy$47Q5X z`3>{gt$!EpO`9?%qz(ctaPrlhH(^y>8KAF1Uh0NP)5g3tkr7ao&)uh#|vvb>L>}KF-xw%;h;|*#;R|{ zjzAt*g<;%kH#nzc5NjwW7l@uz=aui-@O+_h{RywSRhyfWv06=a`uhR{J zaO~hNP=$dC>xfaF7v+(s;;88i)~06bGxH!NF({Qx&+G`0mXAMaZ2|17vqqo*U_?5PBs2bkQDWybv zI@!Ok9Yub5x!W6-QLWzT4)fG6pP(|26oz3^kCNoukE~i77!wwy1+F!kiIA$_AC_Tc ztu%#T(n%5mu<0I0WDs(k6b}UoJag(ZFcT0nc_yk7Ea1K4ObKpE$ zkJYc7N9WmkrNyb!C$mC;s3Qb>rFMc7_Ba^2Z87hOAyLh$g^zf>RFYf!=5!6_j;7n z8#D8@BgfZ-3IQaONXsm)N7yT_yK$cq=H&5pYsKo?Fp1SnJBsTeDsM=2T(Y-@H} z38un;bASS{A{woZMi@g_3@`>B7zkhj1VWYK*)vaYEbz>Z*fS7=WAMZb1i;L>@x9D* zpp=$WWP!q|c68xgiDA3D<-|AuW77G-=l=M=eewxvHH9r`|MTDc_8+^UCNH`#o~vJN zr)dVU_u#AFeem(${)6?O`ggDJeFY4_{=~Qb@h?8~*&<57m&yE%Z+gpXubiuGZy1xF zY;V*i?>_nP{rBAUad`P}{fAe~B2aqr>mT~ddyWhNuzAamzV%0+yIa<$WBW*Fl%6`e zy!XJ1gNoYaX$C$X^|^n*zV~;(`+xo2si;+lJPY^kZHxw^;b6eC&;Es9{E0nv9G(2; zUw!D~PYyhSXkYQdH@)#kcGR$U>}wzX%X^MwDvZSH$3yITtZSm#2aU%N4{rBH_=be>y1pwB%`MJ5D z{K+@YwA=gk?Yr)}>pu7S&ylCi3NO|CSwC%G&H(_x6}<=k@ss!7|F}Utf8gdjUjK^v z#@9b`*WVr+d0;Vr?aSYE$Ma{z`sY6Kfqy*I55sWBO|Sl$AA6?0T)klHjpOn;TKYx9QBlYI=OW*viy`3-o`NzJJIcs?OWk2=y7hTi-UY9cfKMj>U zA&3B)QRo~IN%GumHj83ZW@f4#?${|$p2+jzpgG<4#wn$Wf}A5}WCjER6y8&)brMB7 zjC7!7C>Qt4o;tGj)S*XopyPTn9P~_S(4q{aF-8YcA?BkjsWk%~jRsks+c?s-T4UJj zYo!6$l(x)mTn|vwbfW>FiqtBlgj6z&v_k>lT!{jUq6nfmsW+S{Q50oSfF}UfKqb*`QbC3PcnVQH45)$=k}P##CXE0uaJ5s(5oI z2=_TCU_}&K8Ka~W&U=NRoCPJd5?(2-0?p{1_iP*xcyGv~PBbtpEy4h%TT!F2lr;Ab zQtag#f_gm`wLl^=01!b|_~FR)(s~#zEwp{Jak$f6S=%s-#7v$%GkE8{BO)(=K!8-J z6jJVhueB9+u9nu9s1g zpmI_J0f&*2ih_t1cGMi2?&G7Cl@5R+kJfT`qo{?J!45}7y%}uec~MdnPLWN4FdY^G zp)@%ISzBf!Ktv*kfdrr`u?Px*Qda3Us@NM~ViJs=D}BCV0ssOgU;^*}MC_5OWO)Qt zrWf)|9;r&?;@P`ye{^`I(`wHJfeHf=1d^as7%C~!Uboq7hJif#)TycFT)U|SKpZuD z-BgDNk_tDHL0Foy-EQ=H`NsOdT2-&b&I)EPF%+!R;h@=S7&kn%wh@IV4bT8H(9&WD{rudlUMA`yT|Z1?Y(UD{bcb-EKO)fwcY z5&77hIyuY+YGEl{oS#`+>k+uou#i$)mlXvXgFCrPNl3QI=~4Cjo^n|_)lwN@Y@9SvC|wM0C5-`$`7)@WF8y)uMT_X{7n>xtkcKmW@&4IlpG z@4fdg4_y6!+)$re(7lJBe0a1L-2THm1)S?Zk75gS$L9^4*=!s?z4x|XfBQ?OAOD*_ zdheJ0ul(lE&)diU;J>{03lG2aEjPQ*ee~{!!;$5$(eg5O0 zc&zrKU;ep+i9d1I@B9yczWonzVt78M^^4l_SAhRVBg!{{o47! z$XbkSU|f|StgXxaulwb9T#+8T?~nfMZ@%)w&wcr>tr;CI)lCGrKtC_bl*!Dk{kQ(~ z&;IyaT?e6t)^mUE7oRO*c;7uA{QQ@ny!{zd=Pc(BUurpDsFP2ZswdAJkzis(Z3?iZ z_b#28O}gv0yD=POx#u9u`py|-r2{~rJdM|=kP?6aS?geKc6w^2+363+Fe0dmlz^Rg zN=oItBl5<1M6?D976PKI@F=lGLu*x$_xwGY>rS zDe(MD$w#F&oKAdIao_U&t}o*oGmuxCL|3(;y#A3wFOm6D*m_srH4X%3c` z2ceWpJDW2Lfkd%fcjpcRZ@bD9zbOc&q7`nO^t?BvYV`;0I ztgm&9vEI2bY(_B#L|W(Q)TrBSw3~x|PY6j~31G``pPQTBwXbEKSaEq-OtN(|yNtPpe>6D|pMPw;e!b)A5(-OeiEX$gnm&HPw)E&yL1Jo$O*b_oTTk zgW2*(x^eWc-hcPPOWyIatL zd)Ev0FVc4rfzNhqH})x?YF0Cdgli}2mtST=Q}rp^@!-f2Os>%-FJWLQ=h)=w%hma z*>ka4m~ktTcP2*Zg5}Vm$IsTTsusWTjR#-*+Skp@%mBmb( zHid1otQ~*Y&mXwqn!VGp0DyAs;RlZK3*PeFJ@X;Y-}=%UKk#=CAF|KA{<&A`Prv{7 z`89XE@`X2DruS5pXK)L|cX^$xN_+Rs;m1Ds!4Kk(z5b4a(}Mk^I%WXSwW;>>%uMt{ zi{WRFty|uCc?wn)EpTqfFINdk~aY&X1y#WIN5C}klQb|*I???%Wju;#;%+4*IJbBEMM?gz{ zcCIZYoL(-8*cfjtgh?FKMV^nmbH$(^sCZ^}K1+vXnJU3RE+2HA^MD|waJH0EskmOB z+0|?>$}kp)K5@=kts@jd2pFuajMh$(%Rq5+da6-xj#mUC@_2dZFwkL`rbA+fXL;yW zAl9a{UFFH*y|-L2gR;gWQpvzX62V#$0;ZbrC^gPIDMe`vv)-}L-oN)*>&4#T>geX{ z+BaUkx4Lk-DimwW>jQ{Fb@O#|H$7wa>yNH}{gL&lspnjG<-!w(zftBkFO7Acym#cP zph940N)J`Q5C9^o0ErB+R0`+jYg04Qk}V5qO24s@5oznZ_aIQLudlYIYsR=dHI!l; z$6*p~ERUwHO0K)MO@JqlciYXWK>Pde|N82h>27#|5XXUcmYlN2@4b2^8xFetf#XnU z9`%Q{`V@FF#_B*RO^8sdhhZT1?BC76-Z@0gW43?^J}3ZyD|oOv)qx4Q(xr&W^BAM5 zg4R5fgRz=5cGUt`Wh{0Tn&qvl#d@wjy?k<*<%6ZA>D84!LLA2pAqt^HUi#W>G}R7H zAM>S=Q5hI&P1No{+Y#-$FuH6ca#o=U=^q!sc)=x=jsh1{9rI_ zHFxJOTih83!WJg$4~JLpTv|SSYS1aNA!``}@z=h3WMRHF)h?O5$wfL$n~f$w=&Wzg z#2|vhPaHjYA_AmgF)R%TAzRIQc<`qI9}^qdxs`y1WXR3p@0wv<#h zh{L@LdmjJxdYOA>BoChb`g*tYWHV9{0dc&=B5$G$n^w5VE>@|vlh3sIACYGm(_pb@ z@BjqhnX3;n2$F^}Y!JdEt~ncfcLAHu7!4f5;2r@CVJ%i!wJM0&W&P9#?UrI@l+C#s57vgI5%EHEYV8>>zHOJf zkiL5MSA3y?Z@yt>MkRsCd1fs_iQZG?4&scfVuq|I5E4;H1XEbzuu3go-3HIM0G-{P zae~H+&bgHGB`m|GRJA@gLvv(&=hlPXwHa zS)vrcmt3J2F6StHyuD3h%kv16T=I7Coe$l4&+zKk|H?ad9R9*RpFLGU5N9oCaf#)8 z!9q-UUN$fQ0O?R+9LFeNG%SQ>9Y8j6Nv+nX$N6f%G$o=CXra0f@MLFTt{7D+V)K4~ zG#K>LQO;fwg49?Rr7bNYk^>N|gv83H7EuUkoezT$2u5l8)Zr7%90W3ql141&cSI%~ zoOT)eaM;U*R02z#G?+LW4HXDuZD$=Dt=6#Tyeo?$m$D3lh{y@_ghJ|Yap&H`>+wE@ z$iNjrs6feNfUGyE^C?-^^ZBs5;cX5;I95s6c^?1P=$_!8dF(On9I%g-!L&QxM zJpfQjDU`?zd1j&@bmU!W$&Z8*h(aqFg<|in9nGm{e&~Fkje^jSOA3ouX6w1x-k{hc6NG&YXd!s>Kh%y@mG7t)_bJ-w|;~)%zBvHol zaA>VD02PTa0V5D205d_w@>M}4-jN?`QACc(0oh8gV(*~RuDs_>y{h``U4>~u6(iux zpjUP`vLMn@3zR`R$aE|gcTNxbr=*C`MQf+}SvSf zecbu+j(?G+D_wMpc6VNHnV~kjFdMrQLw)6*#Sk}}Bi`kA%oFC_h8=>ceSiZ-hi{xFi{001BWNkld95(FE_+>iyA?^UCxxV zOFmfc6w%Euy8})?{FOtGXFu}n3R4*ygqRsNwYJNcfz2KY7Mq=#n71#d9_BEJxp(;R ziDlmsXh(%pyZ6u6lOzs;>W+E#az3;7U0z4wf(TX^DMTSq=Oa5J(cF39e85F1gw;oAj3GyM~($39XcZK9WY5L zq*B(F0A7NVWIeIX^CC-=q{(q21S1lG_uv4$wZ@i~*i90$jRSj)u?$GWD3kzp>??pv zR1vph`^wgI?8-V9>QJH(QZTdkt~8bif>0^N?BJR!_Js9YzjGXKxjx*tvjr^rBRfuL zT-AY_|C_wAO%02g0Ya^Bxo+|C!=0}_tgqPpto?hin$$NqF`~AOW2chJWiA6*i}DPDTh6J#}n-et1v_7 z!8$aSowIrA*jje=x~$a`ThbGU)_3ikC&GSj7}q26cGxKf=|~DuPiQn4&CDnDHhXkD zfGi)W08DAibfBeZPsc?GPdwR=6P+}4XDvriy_KvzGu582HQT;9CD6M;FZEs)Ihzus zP_;Nrhoe?g$MvRTk#(so!#IvdqqU?qosQhMA3hR=ftrr;OsubTHa3cOdnOUm*?~2d zgdOxp>CiY5l-Z;fv}eOkcWu3!PEXgZ<3Z|tDdTn+Mv$ex+exE1Y)!>lso7cO&}?kv z-$>PxPsHYiFu~g=M{A`*!Q`emL9++b`7b{?k8sa{5_sdh?H7*&4HFjaLM1vd=R;eKrzA6z3*k z9bXl;cDAn1MnmwMyp zyz?>t+4j|!_U?nPeBtR&|LtFX(TS;@H@@MGKmPJ}{9Jn1J@5a6e;`r2>NUUk@>}L; z@X%*I{K>;zgDiGE`xQF^y!f1KDME;IbppQR{9LfCe&=(4`SC|{&wzVh{KkWc*u0`m zE(SzUtsJJy>LFC`aZ7);Ekc{6z5D8Gc7FB4fBySPeevb5f8&d9|Dlh3?2jK-+Gc6v zx@Q5Ovz)69@v{1PzObG3EA1R{X1!%Z(eK+VcT!02AD6>1E7#;S6K>0&VvFG24P&J zBk)j*Lu8f!B-lHaAOOLGhstjs08k24N=M05%a#R^mxwBelu$y-tltsniODk|Ap42y z7FU1(Dy%lQy%Y|Rz=DiXo zXX5UiElYgg1FHwGe$F*lb-wlOb!*8x&)`uCL)s#rnSev;C1ddbH!MAO{d=OWYmUG|v&W1(d^E@35p;h3*Vr^zd2Fm4`VIlLf^wuzW zc9w-efs6nGD=={~S^}yvx3~#3<=J_17RFJ8mYrwk(R;9#O-ZGJ(xP>2Jvfh!T;XyL zsvhsy86G*jwz9He@}SvV+_|f1&GBr|4FgrAh6{VsZ8thIDpMNtvh~hr_r9sLKWsFD zJvZ)r@;m*bPxNNnizr&1PNy&=L*}ehG9IOUHjp%u*Sz|cul(~DPOf^T#q8`aMSX{CZ*udhXL;ELTrB#)mwK0Lkx=v%F**@|5$yK7bm0m=4?3Ozmkok!ad!fLbi$88=b$^M`C zvp+{$1)Ku_h%0V;{cpYitn&=@m%a7ZUJl;*i{lyRx@hnPOoTd_dBL0BF+DXODtz10 zwH}+}bXT;g3Nr>fUiGrwzx7vt_=(^}oqxI4?tkq|pLtbNUcg24OjE=lw?buG2QKE` z{+@BXttMduuI`%VA#{neLY`|3CT@_%}h5D4tO^Tf;$Oda^~cmMhwLR2uo z`1>ubSNi+rsK)^4wob<+N%rpDyE(K@r`zpzpYxpOyz5;*SEZG_$g|8`DG=vsk(U;> zMx*hzx4jJjKl7Q-7-NncIl5Wl^2z11D!YV<@El0vjOwyowLs|ljX(0HgD-uH5Xj@3 z?saeb)f$*?0ME(|MRU95rD}$$BcLU z=if(m&htxt;Xl0$y!DL1zW?q2`|p)3T~_6=dDT1f<7J3YRf5K@*Z=%)yip2Za^CZG z@3{F@RfnsinJ#xZpVvb^Pg@-qsbZyT-h*c^CD+@{NXyFinDAO!XlDxE@sdPLuyI`%0qDJ@BQSZxoqgIr* z7-VMHN5rr;-8^tjkmzBz(_EMnO0ocE5`X|0#Yqqa!(Pu<{_H~Pq^6_9bLIPw3^J&- z;`W?puN3yz*8otAv*V2eb|yL!D(^@K+Bxq%gCg&owMNL0h^D84nT3}{ z&;Wv{o<+b-vd1mtB$I!5f_Za=A22lQ(b8P_jqmuIu6WVx^rw!U=zH&pT$bhDQyfO* zX^^GPQDhaW&{-pbz_FK7ltq;o5saa-FxHAFh?BUUWu;$PLlrjaF|#l8aY!XG8_PT@ zy_Z1}tZsDjEK^Fvu{v?GHyGvY0IPgHgh>!AA0O1hBrl+FR!YBj|59gT5GJ}-V+r0B zc=C8>VQ0NIU9%=5XW1GMh$x^kDPVQ~9p|5du~O^76M4tpk#lSfJIB_NF<=Z>2gZW+ z=m}kgcrg$o0Wf<4Lp9` zc>VOSS*u4H9)0M^UQd(`kFT6=&O~WC6atjQes56Z9L5T3A}h<~S!;#Xe-VA0JT2ZJ@b%ymQloGUNl+tUlYv&Arv9=V-t*i~4 z=iR#(gNRR@IE@@mwUSn|y|y|8lv3!aRxFhBIE}H#%qI zL1bo66Ig5;fV^|%mT#<`kpBXh(x3OlmLh0!f!+*GsSuS*HqA`sxintv$xIq_?t&Cw zXFrZ0s$3s{Vlr^pI&f6+;!Iq9-)zlR?E(OU-f`tM!K|(_uI&1eU;1D9lV5)5pu&O2782*4z<1Z{WD z&o4jrW3PGjt6te`wYHay4kx;MrQBA8?%Nf%*S+qwME>E2A9*^3?20R{xM&|LVPk~K zy@V#J%Vi9lnTXEGf3W2hoc{-xQ;>1I04u@p=&%d-DFAghFnzFgKS51CY7o z3cX+%FI%jV(-TeJBvbN;M6f!>&NI(%8n`9cLJu-f@kr)sTs5Yl?PTQ5Xs#obd_+O9mL3z4w4f0_Av(7;CX8vP>`zhkXz#jsgImk9tB! zx>47omhWv8X@&@hPQ`V}BI|cojy*1dSd#0WJ~h2KhXRqt?tDT8alK{ovLH`H5+ICp z(nxw6JtVH~>Sdk>rbK~Epro#--Y5AG&fH{}Spk3$l}!{71QB~C=WL@M?B4U-hYvRd zrBkhi{?Oo%OzC4vN`{-CVKDhT4N@Pk3FWb8`s3|T-X z1Oy?`SQkVz8jOtfz@l<(l1d1W#ycgIkg6<86$_$tX=gkbmW{IR8MD+dQN12cwVNx; zrxnCIcI*fe+aK|8n6a~D%W+($INL-@02MWWBX8N+%Aty!V`s@Zb`G2aM^zqT@E(bP zDsD_*9%mp%0_WL*5QvRhQgN}%!bELrBaJ}!+`Lk zG(#j5V(s+6lA4`u)*Gs`kqt+^q!BK!tTv|Rlu}_#N-IxfeR1N%suTjGUtZ}av97hE zjg7%KH&&KAqv0q}VGuwVN~yJX<=(yR)5|MiBt_t( zL@h406CHQDqhXJZb(6aJ zg~r<206;_`$1#=8kA{UHIX%-1Y8qvfk1$V1TC+3haF9BpTCLtqGe*rs2=?Afsj8-{Jd8h>IY$%~>y412vYJ&V`sLb*s#2>})I^(x+KV@h z%;=m`N+F_t1{N?YBRjc+AhwUt|=Oupt5ptX!2R9_#;BvJ_Y8 z1iXi8eo&xyUMc;95sdAZ&3ry%f?33B8oxUc`aYGjg>8!wN(YMBfCzOMMo9n;U6Hlh z&9WSL`waFm&FVVK)qeGS5Ju6q-p8IoRaxpSVdV6p9%uhbSU)jSOwvH)hruyEd%%8)CKV-gIW8HJF5 z!h7y?2Gv`^DsBsq8HjyFa%!E4BYE{T?fq9J4?l7gyq=#+PM%D?^Vj^)zH~So^bEPE zbefStHz}tgb8Jd72CKL>1OQ@k;2o1?Z=p*2QyKD!$otA-SOHoUnfO?{sPmv$fo}#Zb7xXcPrXPXi!Z?xIjSR>MK@jfWoDvnLW-f{<|>J8M|t?9OD^&!*>E zfZ56^-|MXJ-@kW$t|kMq-bvdt30q&5L@bn$Gt<*WnPwx~Xaqv(^|gFyA&C=^+AW`2 z&5EqqNTMWS3dl&1Qt3c)vbM5rjZcR*j1i?iz1lr+)fN3=FCFHH?5r>j8dElR&eJICXL&9JP0uZsrT5X+>PJWml3?mPMfheZH~m z`%sXOxk~vCP$9CLm*MYo(*OdQ**Yhs1OTnIF-A&phO+V!h5b3l$(A24^|0Xa)(;>= zb?fCH%$$SZN}W=2oan<@SEX_NJ~s`FfXLQbr8HE+R+d2+Y=7WMob1_sLC3*K6Hhye zO<^1RelWBDfeG983L_wbb5`r|{1{`xF#I>wNdN>n_86?Fiv*%`4&etOLfbEuusP?d z$vnG6k&w~~kxE$#B&mR<7s@a0NV?sD^AZq*kduR*87qD=j^o%lmlrHhR0PjTNg)L? zW93!Jer~p1nylB!rBuvb2w}WM!kltoQLopSdC(sr2=Z(#d6M3_$^ArBVZQ(@1OirQ zD{{p?08}A{2t>|UV;qdM2?Q!+Vh{u#08CNXqGTp(oGCM45M>lZnw@uKVL}F1Z?)`j zXiN@Jy*dw$gpi(~EPZKmDWni0EixsAw;V))5Lo1yckb*|o`|SymC(jHfkH?@p7Oj5 z8fxdxn;-agxpS#C9GP)6r9cD_5=8|I3WyY-Kp8f6kHPC#@%;)FgA~xE1S5Lq|Jdxr&L6^CMSy4v0*iv66bG0atSq_GMQ6}W3$wSM4weUj zFr8I3nr0yo&}=*&WmEaoTi5!_t>yKGL{XKjOEKK58m*>^e5ohiiuJ+CKt+wF9PMYi z@{hgwk?HjCV0ch!j>6>T)y=piI_-$SS4GiZ>Nnc5)Q4J|A}zfxLZz})r=<&(kGJgB z%`qEd)T2q(Q~ma!m1oX4|J+Mg-u|}7CgVyM0tJ^PmKq(Z$Dg{uo;P0|?jIaz;~h99 z{A@M}<1z@b)uv|9&u6n{Gm6^6SHaSl0;Nva=iF`h*(zI z7;Uua^m~XXSOPj!5K3i?)7o0=hKCbDjtCmfIL``ZQ)eOU0THcrLLw4`QdO04g_TMW zN$;(*o(PzMXx>GM3pEWXgu^)@&pGQ%-B!SU8Tjmasy;}%qER30@41_Zt z0Hu;V&xQQTa%(tSnWb5`+a66SLO3Q`UZcnuOaH!itw*8Q+$*kbWqV_7YcVLEH#~Ws zv%S4%@4V-lS^=IRii7Jn_75jZD@)B+u1=Q?;Y3ZnLJ{o1RNn%+dSvB)#CGFa_)cs83I z?z^%|<91_bIPA8Xovs`19@w1sW@7-hrL@*mmC=>S)7jcmQz~BF2&dE8ne!Xz%-*=N zog`cpes?cp@`^>4YeXlbAU=gXL(q1Ys-fL5;BuK|I z6}7Hjo9Zg<^rOm_lc8H$UOMx5lvk7OYm?z##!Ny1GYQ!_`S`nA;;3eHZ&$x9BST1t`}=!w93x^Q zY23JZYh`6X^#F?durwU`90>`XwWHDK)Txt**l09H!_nH>Do{-?!~5j(niqkHH*ef% zwwj38?RKwSyY_&B4T*@xlc_P9h?G*!yS&I-&F1|Jw!7FNEc^qswYAl1wGgr0Zr{9l zv)}LC*TA^Dea=0JTAS%~((SepF^;0~c)YSQxPKvZcbkOU!FKEB&1SRtx;L)MXsum3 zEu`{MBEu*yGVfjZ%F8?25{kh4IzeFoUx6Jx>$*b#5QxZHi-?E}Ks9Bcei~!; zcuXk4I_sUUc}WPa)E0#hN`*mERoa@;n!@|JG$=E9?~2KYgm47Fz{o}yRSI*O7uFp2 zrnNfHX8$S?{@uj?U+a~7g?=T1F*OxOQ{=>1TI0$HuS#nD>MGxz)Tv_I94+d1eHE zYp?OpnKwOu=@v5xL5(PmW2LPI5HTe?TUh0l_DEhDZ%b2=5K>7gQEOk76(M>@yE{W? z5t!pR@ZK41yz_#)srX4)g0MH2gAc*p66w%BhTfe zICbJgyVab|(rl^`rILc37>!aXns0h^Ad@Ve(U-n(>-4GR=_o4;TwiH5`f9Mz9u3oM zqNNHMyo$tdIP*wJ(t7%RA9(+}#E<`P|HuBGmmD@5@wvBr_q$JC|Mwq$=^fwrU56ij z_G33nS9p;)6;P$4a0cwf001BWNkl(~q}zcBFE{ z{S-+iak9O+Yci3vR64DyB0oGVvdob1$fS*l<1lHw20X9t>Bd}r?zul*84Nm|wh)49 z6MyzV!8(&b|zPP-++-|jqkWipNqI+;~u4(LZQ2;+n zv;F;p>2&(&BM%daI7x``nP)z~va-_ac7s3>A(22L!h7I#UsnXZ^NuTB42Prr{rz^k zoy0MbXtkP`uUwhVW=l)`Mv~N5yLSA&I{1R>#N)|ifBzuMva@H;5Q%oHWvzMc+2;l; zgKnpD|ATEf91c%xY)GkqISRvI)i!YnNU zC4e0wCXLo;II^~;75Mo~ALJv4(V|vXQ?coARR*%=z^r_+)I2}x3-AR#59Kq&|bmzy9606+*DEH{>y z8c)4>?bDyT{+l1ax|1OSN+kpmGh64`v9;d2n&(}Y&2ejU_~vtG0|i8gz|ADmwq)-C zMV?hBPOTp7Z&wvnl~bVQXZp))aT2RP{`lp(8IwIYZ&VbL!J@*$VP#5|6r`!%KPVBVOUs@8?R=8Ww8K_2 z+TT3{OM|7hilq>U+IsEk2Gx23G2T|Km|vz^NgF)yJk6@pDV}q!c+R*2%iuj)o@ZBf z4r`T;hf}>b$!=}sK`3Q_2m3=rg`|pt4-Ru+e(2$iW~0cZs%#Wy_KFlzr43MzO^}NHhSR2tHps3Je{PyrMTH~VQ4klq(M;=Hp1m7QV%`+ zwoiQOivof?t5i=WNr=RIdsF1_@h2Y3Dl-6O`o0Ub???p;F$f1~4-Ie8unf1H9 zQddP$ZEqI@;mYa0HdPd$tpCdxMohRdK#O84uImayL-%q$)Z|V`pa)M2(ZD z*0b68=Cy471Apxu^b;=_+iElg#qa#KZSQu$ zG^0+t^}3ssl=7)3pWNNuy>$6fnr3;PYpw59ZK8gns^3S25Up10^y$-&J^DzJB=vu7 zY^=B2truT<>C&Z3d7c+VaSv&;$CnO*V10f4%<0peZl|sws33U!&2PSO^X8Yn^n6hi zS(Y71hu@Q>iH?#7(d+fjo;`E+%;|bMvLL#6;lgw}eetE2UwGk#JkQIryodFm<4Y$= za^l2^hu(Ct(QFDS0ifOKJo?BZm#M9a&|XV09uaQ<9a2Zj)jJ^JWyIDF;OrP(aa^Sr96zmP)V>q6+{ z$&(Mg>0-0ltZUreUhk10xP0ZxwQJXlqR8{y{n>4-_s3orY=gnz?3pu1!FJq=yws(2 zl016>BJNrL?s|3ahQN zUI=N7ML|Hdq!|#3qSRKWK^U%WtZi=In$9MwijB23$W%W@`MGpd%^&B51Q!56UC3r; zoHN3Fop~WJ*B}z1b=GM|7J*QZ0Pg{i1TuSL=1g`Ej^~=K2*Acv))@d2N|F-JT5B}V z#{(e=A{5SAZ>{!@y$hpQ1p#1F3X$hI025kmUH*XH|^D#Pb@!UE`Zy6nYI%x%3 zJ0ZQbSm9jbp_X6=z_w^;t>^uyh=>pb;yv#=|JElrKJ*`7{^;knH@7R}7`YBX6hw88 z9rIilWi}f7;OR%se`tRMNh2AJQs=!=veLOIY*CKGIGRoJAe60^S{kg~xVhySgD5oC zTU|M4(V}Lcy4OmOu`X%E>Q3h#(O-3J;GQG`B88s2*$sF5_|$Q$dV zBq{La7k76L@}!ZljIP|+l0sC*kdW2RAv4B}Kzp4UZ;gP;pteAB_-Y=)w+R6Nz)*Lr zGobhAYh6o^9>6iO2ha1=%FQvYx^y^4xd4nqRviIQRJWoymPEiT12LV9CKDM2VUl3G zrKXcDtZuFL`?Fc)*iXkrzo$-~?mYXa*KHAtAkcoYaYpU#U8)Bw zjwi0s^u0ktNzSWDmQ9Q;5WOI8jlKA$)05HA7?Mhj4rXDXvRspl^1>IT>vTe?sM!d! zNj4ZX8?orScDpke^q0NK$Jajl$s6DGUw`0he&K)rBsZ|N^6sZkj(_>5U-EM8dw=wo z$G`D`pZ)kY#_#&z-~I33yc*_dvD${~N>)`mIQ#YA^S8eDR3~PazWV8(`^4p2?GqQ? z^Zp-v^UA8Lit*-u`kmkXT~_MUli&UgPrqF_eQ@owzxG=n+MJp^FXJT4(^(^a{jCQP zRS;~P*jV3KzrWm+y3}7+;uldRq-=NEU-LCzbJU=69~WPgjgGz&#nHu!7cQJX5BHPr zGACIdKRBXPs@vlWO3%)FU#7?)^q7R3349TvBSDl2X$4cCK}bNEQ*Hn&wv@gc?%do6vs{lWtO3J zNF)O#h%~UXj+w2sToh22z-Wk^v(B3Nt{J4Y*11|47Klhn+3T$2Rb;gmGWMQLVQWpN z`Bf1p1ff7FL04s-=RpuiDUWW)t!DIrzxvc$9$)|cPv7{%XLb&!RvYV`_s+8iLaYg5 z2*}&E+r6dvrAP{htX%eJOwLj9#&I5T* z#yWwlRK$!jRMT0RH_?|RSXX0|bFNN3iWqM9QZfV9G8N3sjJ}Q#0LSc)B(G}1JJcdr zT&H3H0H7Ti42-owm^2#^G6<4kq>`9s)4bA#LFGkRGo zob2xIs|c4@d%HW6EZ2^~yL7o9Ia^woGrIkrjfI zIP|^@LXi`vSrw?L-RNf7)M`*t#bL~T>cLZh7akpWojmg=&z(QJoR`->@~fYE=l6fl z+c!SHoiyJ5?H`m|AO8HyLm4%N=gDrRaqWlx=l^y6OF#aP|K*?P)?0q$pZ$n6meksJ z{@_0xT>4i(_LE;!r@!Mz|IrV8;fH>>{r3OrFEy_Jvw!*%2Xy*7|MuVhtAFXGpZ>IY z=;61F{`ePu@?$Rrie|Hdi6%O0wHm-dI{OMB4Ko{UXK9+}`9epA@wJkiZ}heYT#vUz zLc}0Y%|;_>H0tNz+Pw2=mS^1|-N z!NV|YwVE{n>*!mYb7`7oS>~KQdKA1jj2oOYXAx0K*=RJH&8C#c1_FAY7v*d=s{y1r z>)>7<9ElJBlO%37n^6=U9lY+sNz*jX^SMCBz4Q6}UnE3SN;R8}#+LfY&9dCjtDW~QFz$Gh^M4T$NlMvhB(Do0?|o4evsrrYL+Eby z`C4bjt=4OT?U=E%J_wX$>%E(fM(KF!j5F4H_P|_Km2-=xK0u3d}`j>N{Bq~9|J!6 za^1tv$EJDA8`^66{L!xF-#M2RM4q#_i0A4BaI8tK?g3z-ln~OC+FR#6t03@bYihsq z9+8mdZ}c^&#>~ddl})6SLJDiGTwr}Q0gIVgs@7;U^~|$L#=uBOl7u87ss4aOjYvUR z7Fi~ZF<}_iY1YwIdi0@{GpBm*d}{5de(AaEht^r=EjiGz`R@Zcncxi)>$zw3FuX;Hko|(^?iRxQ3#%NbxeXd&Hk)-@ zajV-n+?`D)nG9U3qXzBv!QSCC&9c-W3ga|0Bcr6E86&Y;>9-n51ITM*s?uJ3_`>$i zWM}ihRl3NEW&pQ9NWV)c2}}L9)4`QXhXkVCp}}gL=cA;dJovQK;I#~-P@cF1u=jvAoh-)*x?%r@XTpkPtgXOtK6wy68_mR&%09)&3v+1QvmseH> zOG`@tP*v5fo42Ak?smIj7~GG8A9+5{i|y@gLE`k8)Abv`t(&*1s#;oJUR}Mv!DfsZ zkHVbU-2-q#3m5Q|0Bm@cR9b4;ac?2aD0Fa=fETTB_)>t+STvnzg#)YAb;!x`X z003B!K=j_bI(;SqC=>~4v;{yF${-NVS*xwCETIsA2*WT`qO{ht&&w*SB2!cn!Q)Z) z$kE>mtFbHKI_aLLR$NaTX7m8g1M@t`;;#T5SH|w{kJsY$lk4kB#k)J>*)%iS4py5% zEF4ba4kfJ+JoLJa{!+6ncsLw4;&wL8fkYhB)tfh)ai@_q6?$*0>Exi>X?knD%L$^r z&4~&ijG)nuobkrFS6@A-Dt-FYNsr>i7q=C}ou)i{u7C1mGuQd{rWVvTrrNxz(=;tK zOlN5v3c|6Bf^_6{2}Ghu3mHJOrB0q{@9yd4ifGwVuQ*Zy1I;;Ry(Fj`ydG#UYh3aa4? zpZ@8WKKt1FzU^=P(7WIJ+rR#QJ%4%c^y%*I{xFOT!0Q!arqk*E!NGgp^B$UO7T@1; z)ym4s=H}+%;b9!d&bj@A{qq+t^m@Gqu=LW>(uor%Kl#Z|b~>FTNruCrb?z;1c?%xX z(7R7d1Hj74>WeSFI2;ZKgF#Ugd;9zEc*i^HZ1R2|e0h0!b#?9e=bvvjn?Vp992~Se zopa~T;ZZr{zAfGB!TS38XFl_p@p#hhc4o8L?%v*e-}~MN6KsRQ%J%m5!NEZs$IQIH ze{lBPxjM`IYN)=|fw8)}`s}mM4u`{jzn^8<-roM#ecjhR0RP;%A>#7#U}a_X<(FS- zHk(SRgM))!uYcyunfo0=cW!mCt*xzn?sK0TkH_6^_jryaNC+Y&h4(IqM8HTw%m*~o z*$IGW&NT-rEXxXDp0^=l(o7JcDhnY+oP-G8n5xrFjLWl`@m?9@5zt#-*-8*uYZ*YB z%6L#xI%|#A2plJ|F$RE%=PLrhT(N&q!eeIdd_DAF4hQ-~Jl7t{3(6LLiJPfHuu#7Rsp{)8aTRYQ_ ze)4+hNd3&3Ml5p! z3{r?@BPxml7_9YD3PB=_RT4+j@mL^)ag>);WxdWV%9`GeaCC)VlVB~tQ|5U{);Jb3 zc$hQX>yMBB(6NuTaV0t-geN~Mr-jWAOgeaIQeD|Rh~H4rFt9 zSPVyHs~ZXxo;kf*6_unS?qVF-emB|L8h2am!TMUi7p|?hjN{5cx7XU)8i5yCn)bVc z**Gm++3h!{2ih3i*&MBI1VDCm(4HzhIH;^arIhxTh=U-kv~WHe9h6DZIXs+N_9Rd! z+}YjGRKAvrqozw|&MxYfaneb4fB(1s zb?<}UCv4N$>9b$lB*`EQ;%f*B%siP)9(m*uMCAKV_+@55?DzZQ@z{HBj7gG4qtW2k z>a5(ar2&ZO+_`hJ*(^!o{r!Ur7cM|eDZT$o1LBDjC$3z%G8iluMX|oVE{GnO&%-e6 z_xoj827#(7ee%Rfcu)sN#ETa%ZfqFMaZnFdi%lRLtI1nuJ2Z z&KgkdiYm2>EskwE~eAkao z`{?=pQo6sbtD=emG0V;2Ug})6cB0)e(QuS{#&hS|rW#YgYip~+!$~930il%G?1<@X z5{9nVPj23rIpd>15hz_~_Gl|0fG4W}`x(EA$n2I&BrvrI%-o zW>dxD;9!!30bAE>2jys{(-$uv=(nuj{0IN`McIs;wWA_69st1GTYvDYKPlh+&41&& zzk`J8rPsF(3c~bbzx6ZWd%x-X|IW7nSKD9ufBw&3`21)8)32WT&hPpDfAIAJs^Qg- z{lw3|Ap5Itd&dX9_OTO{apv&lmtWb=D)2h*_8a3-*6GEsyDnPmR;zWtsn*Bhfa?jt z%-(w^gm^G{Mr{a?B*}C-VdkX9KpqtU3U3KsKIYJ1CCJU!p~#I2&x^#~Gh2!u=k4iSMJLn7&XFZlQszhDpo0!SgV zGzDTIC?HwnRowts6s9P&b12BwU5xDK!$$oP^WQrVqO1yQoDjl$s5w$c4S~#ad5G7Z z01%MbF9=(J-XoEeiiGsQNP=qaGa$1Ef?8XGh_s#$a70ALy4n8-ESs;$%tUxBz|ea( z&X9L#$>_3HRq)QTcejxiz55GMIPbt)T++3s!IRXM_+w*Tc?I72o$+_hsv=&J7#7Ut!Cn_W&}ckNY*m}fQQkf z8V_@$nOS&eqc~s&1c886S*buoaqO%oBt$Tk@t!B6Q5;9syXiCs6t&mbZo5g&I6OK9D5urcTs@WCNIjW&`JgXY_%s6K|?4-d74W?8AjPO7c3C$=SJm| zEhTYL`@5Y>aUB_0_gnf!-{(BL@^iiS|I7<*0U;v*cz_pKOlH%y_1^mGl6Hj$pXH-4 z44N$^QCz>W>&WbEWe93Eod$_Kb9!ww)XrHCP!=2nZZzGCV~?oggjZB^Jegd$I56IM zksBx{2jyf^>PqU$dPWA@YPIsLvd*?Ut;$;V+Bz?-O_D~~iVhB^Xu2)Z>Wva&B^4}&-~-} zzxv!^vf8}*#ozvypZx87?2RL2wwSM;>6g2o{P~~x=xkpPrv?#KOP%izpMUn>{KsG1 zzi}(CbkRH6J>9MLUi$Ta{o(1Y{laQZD(W<%srJ)pWwbKo>q~^zI<*i-x%(U18?pKh z1@nhahQ+Le2V+8za~=S!wL*$H@!^}I^}aL!37 z9^}F6xrcBY;rI)b7yZhH495dQhzIMRyR?NfA9M)axxH>oLTv>2_(~kb(Z{b$fAvd; z%}BjFu7Z4yMndedpQEjVYaa|WDek3axS2&jU92#l@fgdiY6 zRL}ZkhN`TX!8>ry)yWPbF7i@bd^*RL>ic0mrPX^z0wF}L9aD3^ytCHScoNpHX9TRt zT8Jn}AfRWDj6w=#_O;;F0^&LXqK?Gs>qL+ck%5uDx88#_rWQu_%m_&0H4nhvd-h%m zDUbjO*}lJ(k^lf807*naRC8sjFp9KJ`zJe62_cCT%0+f1>y%3gDM=^-hk02>86Txq z#+cEhynM5G_F9>R4IhL`crs`S5gi`Y1?LHtV1}ioZn>GU2j^V<23Aw^bqQ6D2owf^ zHM-quG+OcD;iO14B6ivxEHEJQ+IqXcl8nYPrnrh}E$ywKOLUDwt!gCG&8kkBtJH&H@Sc%!{BRniCoiG-pmol>Dxn8Z<$ zr!o*+k0>XRWn~Ztjdmw5Mw8jB(Tt{(d^VgaDF%b4u3Vb?B7<1TYu66WzUjndlFg=O zy}fjLqa|Rd0zrOa^K5mcbN$i{8Af4}h>(0)d3H-Ht#o878w9F7N@t!uA+8Kovur0x zqRAwm%nC*{*7Q2j(rR;@?s^cDnYPvk3F*Q)7YvpgMOn_$k_8|#qcg@y6=bs#JbHFf zQ^+Qishi#^RtE8CH12ns&2EdN1BPZ4Dgq^PUFEG-&us?NG4^_GS5Bpj#uL5Nk0%G? zZX}DzO#31j1Rwm?$DjGsbJKlbU~STq55)kqwK?-XDy$|F%Y#IPjW`s=NF$h)(=ZU& zYPWRZg20utB8P1COu$wax!&91@%T^#s@^5CqqX$Fm6Ck&1D^&cjRfF zQW4IxFFJlzuUKGY^C6)EAs*EH749MWUD>5U9P)KI*o~yD-njs>Ep#s7p zGuHSxRE=h%5V|b2an5^_XO-1pv^*s+P*~%1>3}I|1f?zm zq3S8pNn1wTe)_1CkkS3G8M-H8Q8~h7)T7lP==x` zN^Q*2Kzi_qR22H*M=lp0|yS~@$C4ppM9R(7}RF!oavRO$AloC>@EK7@AvllBXy_JpV$}2a! z?YPl|rIqf^_Ef3FJGHdbSzhh$A7(}7ZtkQPFANZh%8WWoah6WKv#m~Cq|R1CDm?el z33f$MQ1vM_jfW0&|ht!g01bTkf?|%Ex_Y6(@#EfCQ@|eOFJjd z493}Bq>|aR$j23mLIiO(bNwaogtNV>mBc|1m0BAO5d0REj#(=3JgE}+(&+&E`H-%-_-fCP3TuY^O28j zpZ|gHe(M{^RgZ_zVtaS8P1gBzTFK>JL)hqypq74uix4|bMcEy%S(IvyJC@D2}vptQVFGm3`j}=R+ZZ1xydrKpT=3T z=A#BTRKVc9ch)=MEg{kzRfKsj9edC0$$Reg`kX&^bNe8ST6I;ehPQ}>ujLIG38iDJ zbq%*#?}5Fa&5RHv1L2*IqR3ktCy@$-l#pi?A@#bwgW<4-`@QqXpu*5-t%Qui&{{J~ z(>$+?HY(@{C9L+Qs?{u5O7zYbsdEOcwJ7b`!ETYSK1!RFu*J=(9((3wXMBd-jmUqB(1D0PbR50HqVQyw4Gi{ zJ2N@Vg~0XonlX#0a%((r&(R23LV64`7u(+QI-RESY5 zC5dT;p0O|`QDQ59<%Rw854EDiq@xO;Rb<*$)NI9hu92{+ypo}GG@Fhr7K4*#@xabz z)pSx!hNj<-%CZ6hB)zU&Evl=Xu3Q->&2pxTyo?%=HM*+2HFlQgUv@`Y1o55S)4iR3 z;=}*`qn~>92!((6+y95Z`Hq!4`Pq6MB%ZIzuz1Y6i?@@}tuOx0Z+`fdoqXxs)8GDA z-haLy{Fi^`bsLzIJr`L09k1@n&5!=duYBs2QFHyx-}=|S^^rkx7wbZOBRjga;hp>Z z&u@!j&K$p~p9b&pci3y6`=d{7_J8nH{06pt)IL6U_+9)4TDtI%{n>x>@wY$m9dGa6 z)li!{*yKKJ=(e`~w#J;UAX@_1kzp$cz!lkAF1fAWVIf9+Ej+pmKencZ}M zXLEP(#*j7{{2TGZF?i<4qzdH8 zH&YPcwP)VCLaiwH&@1}ao*xOqr`H?6SYI;lm>qcb2nfK|=*^oqyPZxJ2q8?7WuX#m zb&@33`N_EQj*J#S-e~O|JLl(+l4n>H9OpZjr#@730qX?o_+#zdrND#)i0r+os-tJo zV~H2SJSD=K?XXb8s@KB*%y0r;@R#^V58>#81*kS(2#M+p^$4VKl8~fat9A9`mB|9+s8|X*TtRWrxmr zWC&DPRh2PXS0;>PlE{-Mmd4}JbehUQMsb`Mc@RqLjAzZ>dq?f0y|Fgf+`cY}w6WeX z0J3Lrtc#-6rDoEa4)ypjTNxA&Ke|2|<%fGy6~cHn0-~f5Rt15Aq>)^{@@kQZI0}nw zPe?VLrRhv-V+Fb-qJzC%W*{%o$ivYvozj_;r_q#rv?ZcbHy#pIi zvVP*6ht~79 z(ICpQEZeR2;o)%5?^~OZt!A@aQf!S4h4h9d!<-qINeI%Gx3(ve{CG62GH)a4Dz@I{ zd2V2aI|o@N@;qBwZ)c`#$IVV#731n)FF$=@wX*KgD_7S~te^<4y?XQXiPm_W%NYCX zVc7Dmo|+w)yx>z8R<~~M${32Ql#yCLxxBlx>zxA@-a216V{Eenvvg~)+$;0a7#+1D z5lU-xWzA%US!&}}mxYPjv73=#D#}X9Ae-eivC*+Ds`4wp{O*|cfg*YQo!_+aNag`% zTYvf+zxmnauDmPC$ZNm(IOFdQewN1{`q`h|Kl`o!-S-YY@k>ATOTQ%l{@;CnPrYIF z9lmoO3A^bZ{M=9d^2=xb-uJz4^N)V*U;K0aCqMevm+u@3I93{1e16wd8*i%0Q53!L z10OAZw@bTn|Fh3szVN;eo^H_HGlX7q#qaju(ehIt_-~v4?hpRx8=m~;yS>(YtWB%_ z^bVKy&S-5sgOEX>Bmx^)^mn#N zm(ND~hwU`a6p0`V(dkNC1|%WFP~qIwwiYU_cf|nAt}OB_cO+Gy)Sb>a7a%X7UOt ztaK%$3I3vYL)-R2&$Je`!Xyw&ZzCx{3Y;t8F?tWyd+(g}glOgm7R(^Ms8N6K zy#N21d-FKUs_I^Rtv#IS4s~zM)$>3%-C#F@C?H@^0}deI9B0KLQGc5Jd>Rw;67$SU zJ{f)vNmQI-oM#1|ii%Mt1yqo^Y3O;X`OfE_X%Fl7$GNwA|63pfdQ-u7lPf05S$D zG2ONr9T{%SH=-BEAD43-zriqb?%iBOn5;>1N6b_HBCz&dWM#qb@)JYRKdEd%6&3n7y<<}w;zMuTkqXYT&zpbe-wLp&#&d>jEKZW~$bx#j93VL`h^}JT*D5 zt-s-v%B0g#2(?BFr4Ew@m*|i^xPN~VF(IVuSzu<@p+^E=6pFl2Yi4n3v}K$LL1Cve zSQ%0twd)CiqbYNXPHnc^Z7F5|00xGHSL9;Owi;=gSw}pY%f08wS>6@~yfQRV83wDn zH~!+fp|hTQ(T0JQJ#bINS1XwsY&JXHDeOG+DW_~1bT59=7jA3D8CAt^iZ@m=weB3b z`%wJMH@^CuCwcL3yD!@ylnkS{AY{i>aBVudLzj8{NUqP|8nhrfB#EX0PG%1 zkQHL2s5Un<@0_=;y3!Mux(HYJjRODxn|S)O;m!w-)-S1!uFPS%M9IsWn$phn&wp_3 zP4^!I;jKUOnJ<3M)3O7%e)F1}reh+@HlK6(m6x1ZrpfR9$7g;yO^)NPfBGw4^Q<)h z(As~?zx~TST4jatC;!o_F5ft~G->xSgX@d*O>q`>*@#4|XLgQ)2at-}1(@#$fkN-}(Ia?vW+W zW@&Zf1+RO}bAg~ceg79fIpeU57uH|)vX`E@X=piaLBhwBDsKZyo1bbKql0%pWjxS^ ze!Rc+t=&x`I%71D9F3uViXY`gr7TgFrqr^&FB~b7B#9zR$QZZA_Uk97meAx;HrH{r z)>+o8=gc|BUR_Uh#6kujt+Q<^b@XaIl!1obE^)^N_r za%MRV4-E*j`{?8x5g-FgmVj8V(pS$G6ujXvr31G zb1pr>g)mxi$ATuUDU8#gAW(3ttR)jCvFEu~xm(V^;%V$>AHQagB0vU?WNDh_wd*UR zXI%dLEkFC-_YSu;V?dUSwn;ZbK$WGABP5sAO3>}Z7TSPWtD(Ccon^*xq|w$Iw(hhG zo^!Ui;m5a!sj(K5xU02syL@E4JU(8UJUpjV+)5(BgcHah@T@^caOp{)f!F@oJBPyS zYjb`*Q+~jTg{s4xu-ytg;rW~ZZ9DY>J~ZU5-8fvEpYpkgy2_P>LcpUaQ`{gJ;XoKR z@4qM1+FENXr7{=n=#fc_)QzIS)s93?R-UqXYiwbrUaQSF9O;dZmb+0TT__i1+)=`D z6ar^XoF)^ihFm`s4lfq{MyQiG9v&?lo%pU-C_3#xmKB_!t2?C05EV+y^^MVLXt2`l)Eq}tDvz?`_p0)*=($JGoxSVM-Pto`Pz2sZe4oq~_xZ@3ITCuPFW!g^ifX)xcd@ z?pSYcK0)UzHZ}lR-dwSFG-{C@SqYj(JaLiBv~zv%{#$R_jhDants942B7)-Tv)}NR=g97%Yrb;L z&mKN!!@27oSHzR=h~*mwS#{vyJEM`a|M(@(@E~)F?(vLvs~VHDgFD{*_A6F5_x$i* zKKA7&KmBhUfb#ka-~6WY?fe5@{=$!LJ#@i~PA&g$XIKyumt=}l&(ZUELJ|SN&}kRH z^9|<<#$8v~?SJ^@O&6n{`_X@X=Gq&N?R@z}x6z=nXT1GQ=c?KJzx>4;Zas9t1)RL0 zt(U&)Wt*$&rfWWT+ugfQTX){$XIAvV$YTxHbpgO^J=eN{e&qIZSAoaz2m3nL>~0!M zrw)1tTj|nE=3WY==BDTJWLPo)2!acxH0Kjz8?y*GR zI01moG6jJ4IH4_%fZ4qGFz4KuUPpw*>sz3xFGLs@oKktUdOFT$KUp`h*eSKx!M1?X z@^TM(8s=i>)`Eoj4}vp>c_U#7zVG>ghukv8rY7%PyX8sswu@-(~9m$9}SV z^@erZH=3{2x)CrbrM7@VAmd>>nV$rQ`&nj4XPq=D4R})W$;p=E`cb#bI3HbiYUlb- zw=(V)T9x7IT&w(yE8cwB1>1!_cIyrQ`PJ{P4GNyFYvNwXVm)Sk2ANPEB=& zE5UHJxNhy}?BP8+FIiaVz|z86rxXMS_sxt%K6Ah;lqL^#R;?Kr8yRRdTb?X%XsljU z4o2+!Om|c`S&}6w1BB6Gw^T$aG!nRyl?uGmiNi1)94^LflEPzBZQQi!o;x4$TtA9q z#u*R^17S1Ue%h8)&x(Tfyr5lgM`0GWt(0QZ)-|p63^BFglu^%PM-EMQqqY>nXebus zzyR|DREim;DpgsoIzxlrqij6=`Y4aRHJyBh+V|6I_0YwquCJ^p@qOV%?1b52*{|&2 z7K*}9T0gw|zDJH#&QZ$@RKRh9%i_z?qxrud<8*)RHc zPh2A{{I`-(@X@5PUeWA*p5O7Am!oqs>gbXE<&+WVIOW(TjP%TP29pC8~8Ycqbmj|m=Uf8m_ z^5esE8I1vVf@-BYI4m}7UiHY4P#dDh4HM?Z_UJP8qG_Jz8RKLdpNv3y_iaxZD+*-S zJ<|BXeKpB3={4m$4o9rDS{os_R>o)|AZtw?Tw@#&nNqs1Z6bn9W%hUvWMqs>$H_7U zWb;bk#+Wb+8AB=al(qcx-Zo?m8Dlx;xd4peVoKFwo*wjql0AnOA{e6=Ne*zl86+=S|9Fd9e&8B&;4;owj~f zYtAsi9fxxP!sSA9V|p;l@Wn*49)4sTJWr4XYY{CXLj-QEDHMH+1}$yhbJy=jf}w3l8!6y0>&zWKECnfsGTLN49%#Humhfq_CW zGd}*V2a3>fZ9~~M9!rJW2%zP(O0M;7mlt+h$H$3-sFaO%luRav3 zhaWk3_9gGV_@Yy9{Q+mLd+5Rc`piDvF_sIrIS;;_t4{7 z6e^Wbr%;%!%^nzCJ=TrmuYKZuW@gq_%3SC;O2*clJ)$4@m%sUJW#1&76N`>2j;gQ$9_5;sY zHUGVD{_}_LdFW_e?s)Q;h~rAR)M#j>eBjmDMi_=BO(+NgCy<2J0&6znndx}Twl!p^ zRge5)Wo&%3Iz*kMlV$BnMZ}>6*}0-mE2(I|CKrcs5BjqO8>$uIorCYxTyX>^=Q`@NxF9MZ+Wq ze{ySM!z<1ziIpKUIO)kw{nx$aoU59*{pj}ad2fHuQ`fndJpD@_z2-*;&RBQq@Y3R5 zk2NpLv$2nV0*g|j9(VAuGp_uXPhZ+;wx;jD{@=bavtvT843#cAm{z#(jc2|5FE?Gj zz$zAAspPDz;=tlV?QurPatGsr8LiEVvrR2oMvMAP_uo!eb`hIo#DrXNX@K8A=XspP zYGZr-w*indAft1ag4UK089J+9{dZSC<>%L5`~8pJe)kLi>TS=kJ-ki?z?EvB#{d8z z07*naR1mFMo`x+fQqO|(V`(1TV+`DI)@6UOYU@w0zvff_blbCD@vi5cE&Dz&o8Q-# z2vKmbrswx0OT+*fqFK?mc>?I`BZ|j6Jy$069X09voge-9{~EdEjsNdc2JZdN=Wc?9 zhTA7g)iY5<(QiQi_%d3uNRJXrTyQA?fbaW42(|TTsZr{YU!5`PN6P&8Ks(HiqY79; zSF(8qp8){DMc#kKS_70@C#ZelkvC-5@lLLEi+;QfHiP6>d&I~eO43Q(}$T(vHnP5yZ$KeH+ zj|5`CVX1++SX)4ANgIL2SVP=c&e8DPrDg@=!^7i)eDc1%KkGypXWSZ#h>*wpfak>| z7(?L*u(`ol#(>CjjzK|cV}(XU35Y5qrJ&u403dLS+(&JdGI6KV7TnX3Rf)B_b^oqk zUisRmRlfi0nJ6m_o%!5zE5G>kw`OeVkKX!$*TbhTd;jgh$Z0Qp`DGIW{@7Uc{_C#( zx9{9BxaOR{dEawB^|$Z8XVRYkg15cs!nH|ch9?GY`{qYJ|J`3_U>sL^)e^LSaZh&H zOD_4ZPv5d9PBvU}ebK;6|KjtN|GMgvH#eCm&CE5M zjT=6BSEjgFSNy?|?6uu?jMb;E52ilx)o<*srQiShnQwXa*{pe!H#9Nx%ddTJ{&{Br z(^;w&uGw+rEB>JL!!O^gz2TvfKh>O%J7w2%9anIkX{`sUh5h@ECb7zt;SyD9xWf_^ z8zd39-MGt07K$amq?1&+tY z*E-rdQPO5CBf~gzlPGn4%4|A06-i#uCPP83PAf^0I5b)TfeoW9Y{!lZ8@7}iwPxCN zDurT}L}+c`6zX$L&vo4*y3&;{>nam<_0V`lda^Me0#^f{#5f5kt20 zvz0KZ0l+VmU1~R@gkXi4^Gm%|D>XI%02Ll=fM2eyMMWB z^(mtPF{fHN?d-MJ+;#IE>z=(u&)jwAG5?&4*RpJW-*h&z{rpSYv!D3x1M}*F+_dd+ z=(=1DFL~@)S}yJ(vYq;L7ltmp;+5Il2ag>*oSwB2`cqSWv4uApq8=IG_-|JrAtSaR zR6o4^_@@)Fg6}5N2lh>FFEJ8P7?Zzd-Ebk0fg>R6UFT$}^8al=mQA$02 z_kG84#Ew5mrIS8%`*{;Z1pLu~R-${6vIYJ3^ZxQLB`@+~F{js9%I~a&${L6aEEuxL zxEmBKuu7@ydTtVhMrBzX>qT60rBqI0$|uUhbDVQ2Wtygo5)3gf-T{lkUyCX`*nWkD z-ftH`5iL^1V!*WEl*)ft;JGgxb~3(%J|%zQNWnQ$URy5LDWEl!^O`1SXG;%%ZQb@) z!N5qE))Dj4smNFkvyd_5j7iRl4qIR3ZAA(3NZUj)BNzzA4Kj_n2aqw#7^@Bp4zbyN z4}N`WexBuJ_AN6CRc5V4p8G8cFz@Bp%XAfpL) zZR@VTd4J{<+}l6@ub=%{>sfF8+$*>I`s$B;vlTq$uRr|u)$qk#oj_Yu-K3pj5i%i# zU+|DIY0W8TT;@&QyYI;4_MK0{POaWf$40B++(W#0ZntB@2fq0eD4oCd5;TVE;>L}e zPCw&x*mv*#>7=y&f`FlqF+g4?fN)U9%!}ZTg|p`02vko;TJ_WHd!WJ zDH&jz8nU2Oyn4VL8X1_LQS)=HsAH=>n^;|$Ins3{mCHqAlU6$K(P0dE#MqKb6(lXK9f^r;|cC=A~Nw)EnktpeeZHz+YyOKzUp(>PoX45rmMh<0J z7^i8f(K^=ZLa|V9MIv=d1y-9*r0|g_OQ05KuFs2Q&#JgKlWIe2R}DVuwzT-gWf{ZP z_aD^3rt!jKWd%Rx$nUmA6Zf4+%bQvboc)}O_TKQFPv1%wMfu$4ymW0vkX@EP^UK5lNyzKosu^)04+`b2fP-}S=m zCw}L>`e%`04(sE3TF}5_2xqSUtec+xST=UcY%92yu^4znw zI*|1qBe|Xks2{TG!xaLXLtKJo8-GsxKH;O~nh;-m+RjaPe*Nl?e0Xql>*X)J_{wKK z_`kmL(O*cBb;6-@U3@gD`k-q8iZAOvJ=xe63%j7w{7=vGIOpuN^SN;1`))aJ0wlxh z_SExcWs4(dL}ZKw);rT0OGL3DrTZf0m-K~csg`kS0pWF39Zs$r&Sbk z&Dh|PV@HK7J?+Z>@y0(4KJ>1?N{3u)1d;X%LsNAY##zgd2+Bc_WT}jm)tQYOjc#>l zWT3G3%b&mgZfEHJ$xY|{^~<-HK0fEwC#PqpyT&ljPh26QFqMJB84o*}F?Z_Nyan$2 zexg!KXiYj;t-7w$O&flhckA8pv7v!sfA>QVc}^utq9h9o1FRjVDrLNjU_3@xDGhPu zaFKda4Gk2h>nRtmC3a~4+?MTS&I~}OR4oYs0N{$ED-A~{O~@0$$UrbVn;qWUsn=ED zD#vNZnTj(rI~$I#DkX`m*VF2NuXSWm$$-twO$s3jMTZoPts3v@X@o3|pxtOs3*ovv zO0iJ(Js~~r##zcU6-Q|jq04>A5;Aghe6-$ZaN+rWSvava)|J*TK2{dt@^JS*;+-aUw;7Rum#+o1XKAe|$b8 zYmDiEqvcKvK$d`?=uKJC!T|vI=0AMP-(Lb+o0V#vh>kD37eHE>{M;MfdCJ%qe{%2h z&R$bqZqhtZj}CD{l)|pe*uW%*uKUiujj#CQLHQ^#j>nS#mMnZZI_Lh-)312rg)icW zV2v@xP~q%1{rS0wh+wrb))J1L|K7j*gFIrRjkcDyUG(zzKZ}&MfaT}E;XRjv(dO}` zUFy!Gl^6!{ozHyJnSaO-fvnNS5aH|p{mW#OvGBt8e-ue;L+EY)pI`a1RT-WB)~A70 z#)24q<-7k5tkTQItBXA%04p#df8?~Q-uw5Q7mV%Eer3s8n^T;OA!9)BVxb^}h_|0dT1EHWdggF&xRw55 zDqMoD0DypypwA{m0wR+)?Cs~-0azknjI3ph5n!fNsZc7F3XFKz#w3any9<|Hz=HV{ zIkmhGDv5whrWdI3OW@SPSqq;t#`3oY>@}u44yBfy4t-bIlGlv>#ZTa~KPtUFU$#)X zcLm0nQbuKl4g(P5+>+(QdNL8Q+8gm4N0=UfN@#2ABe+3$2zX}~F0 zJ>l9gvT2g|o@=df98oO!gcQe#&a5#|tB37&B!rtJ+FEQjLL&OrbvK8ffBO|@e{km- z{Q5`sh`=}6WX2F#>5aVhsyDBj{`M=c{K?RnFaFbu83JPndC`4q+EcrK_VK^^tJ{vm zoHGV#H>FC|k&YfJfQ?e3+C2{(c+tz>zjp3(|8UE(HLuWa)l*@k)eHe7AniEs9alW5 z_5Q0af22L}S0DOQlR>MN3PhrK-R83E7y{Co%H@)_Af(H({gSBM&L}98W}Z^NsVL^Ex+<+KohMS!-t7Gs`$~S7s`kY;@0B zH&EHf){K^jKzjJlorgvSgHmyTvjCVdCLUj3oto+llnMy8HlM_yWrDj7GA^uvLZRFZ z<0MIj$E#5sM`2<~caF3;IQ6;68pAkCQpN=ocJ%9f8D=cSB++F52;0QKo_^XE#;I1XB}wXnXf>i@v7$2T zyZ&gkkR+KOu&|S)ipEz}+l|C!WvflMlg-Yx3sEvYG0+Kb0f8nr#g&UojrCrXJ zJ8UmJVRM$MwT2+a87n{xzvzz zJqNe_$jSQ+hvZ zoh?s7B<$UQxnUS<7_sFW#>sc0%6k9S>UinzEHwZCHd{D$$#NcV^lsZc;6v8-zsF^n zkXDQDo2801`edn&BXDEvvIRY!TesvFQ@^}nYTs^0aEEirnP8AMW}fuYw~uW*i!p{f zE{ylw%Q}s*f|G~LmP84mw^R0B4;C;C!(Iud9NidWgb>KMF})H|t!6`~8E1TCWJqOQ zYqdST+4hA-%t22t42VQFZx?t14}J0RC!!x*@apC;Y2h$9URanGPJFC)>4jsKWEvu3 zzr1X($U7hkm8l$1sZ3ey)xpa79$d)0!1|%dLs9aDE!!@2%cmJe1Tg_25wq4BlPcCm z%q#$-Oxes>YYZMQwuUY%`Dn4bYtJLsADfw0+HlULkj832Kw$Z@1?M>=v(}nSF~&XD z>vXz~E382P78JM;m~_dcuE}&Kjg8i>D+ny(maJwR4Qb&xjI$_CtwBU)v_XWK-9Pxk zO>e&H-EVy4-ka|@Fpq`^+}!61$OPx@xek>WbF>8qIgGC@`4SPae)NaC!%Hr>=xO`E zf0wKbjaFwfaubtuLrX+yD^Xc%|L&Wncdowqb6=g3W&_hsxhRPU34j2}^#dKx#>z0% z#sVO$USA#bV8-F?qg|X;04z;XnVQ@@r6&slh=_9vO3wUDw=i+$*{2VF^N~z8|8Os?0BOyUkB3z-AiPHoLCy&(} zmpG5p#5e>JBn>#I5E@XdIHRl-stC)#hP(Itf*}dUQ}h;*XfYi2+vx)QZwHl#Z32 zb^RdDLN2{VEuCw3M+OV7%)mGde2K}?BU3c)8Dq3jegSj>N(;$(vFv22A>*c*_5<|& zpc6KgiO`^qnaM;JQL#dY4^5UzE)a2$jYd`-^wV}{cwo$CwyEMcjn=QZ*7F$WL5hB# zxF>cXA^5s6T1ErdWs#+g<+Z@|3#g;%y*^yaN2Lvp3^_KXdCPeDcm*8HA~ZJ8q{ zDH{X1evqNjMhN-)F^uJpKA)O;32r^l&9Y*kzqhg2*xc~+=eK~A61cDyttF03NTD*d*xv&H0A%wnPrYUU&`(jt<1M1CWyl=Q)!Lu|lVzP| zi!(&BVHE422su_mYkNM+9%MsA#`E?*gbd-aq4mkIY%zXXke28;FaA+aKiPK${pwMR zG0FVpbqhV3*OCqZYSudN>T2e^IW+t2Mubi@R=kU5qcxi*xZEG@N z4OnJ0ivcoA2w<&M%8<2ajWvYY_f5%!`y0n@IB@L2C{Bzq`CY7(LPSf}S`dH$kauDv z0BgZ0gUAWMk{KUcJv}uo95fnhb5R-_0%M#KyZ-d8|M^D+LY%wflUQ&@CQ3wv zocr$NCqDGaKY80#pL*$gC_DE3um0_g5ARQG2v`jqk#$nCCYihM>z{k@kzMnHV}906 zAgC4#WHAMF0btjipSkBfe^oG^O#kY-P!&t)aUg5kjc||wGMP6Iau_;6$r{m2 zp{jJ)YGoyNV0d8t={q-Vd+O%@`5$itzFI}j^shanl{AUU-*Zm5VLPSTWfGdAuej7=Zw3M-h) z2(eYKbvrFb3P2OZ-BZsjx8qv7$sCMSDjIVUce2sp!2y5h=z+H9IY}In@#m*;)#}pN zs$#Ph&ow(%xSgYoP9qr^A1@N`5+_E7_tmmA1K@rDM%y$-!6}JNoMhdO&QhL4@!h}P z$2p4zORo%CuW)q3B5m zvseq}Np!=;(pEW~^E64MBUchE`;7-$Br-PdX^M#XCjEPv8h{}YDXsHLGg8Vd%Q$Df z{;5y!AV$5dAAm8Yv|jW&{Dck!)_ZLgoaM7?r4e!E-EtrpT~mM++vptX{+r=Kj#T-W`-N=N_%-lMzZ z1Y?G%wa%L&|DTra_{fb-Yn>}|@u>ak`uY72xSTtJIUG0t(R)!yS~QF$YkKCf7+&x2&}aXS*22mqKJsJ&RZq-+($$dby|!|={T>cy7LfG9Jr;e|=n~wMkCWq=3kNU$C!FK}JFc!pHMAD5cL_HO5m{c_-53DKw+>YJ{9#}8VeV*KG>eD$5L`f8?)vOr{u)q$wPK`G$=hEqxpJ#gJ$yyZJ_ zthr!rQLNt7%L*Y2vx9z4U#l=t3HSZwJKjCh;R6Fu`^MkA{(<}UCg^|g zW#>3t2dhg%!=ux4ja#n!$Tc7T+fG*lP@&{V&yl0WNAAA%1Gjyn8=6qV;M&Si#hE(V zMc%pov;XbewM;oqk}!eCuKVQwbKQqkoKi~Y4ivLU?b|mqHa;4564zsc!;nO+EXz(k zedNgghOrhYtWZgCwoXgzfjh&7?bg;Ey)5M{}2a1DYY`k)0sty@r7SbqA4WGpH z^fT5@Pc^koyY-|#SKz*H3=WMCDlKQG(}97?(L+t68KutL5$%;raYAXzm?)HoWUbkZ zBa<5II2wIwHkv^xZ~__5cU5M<^6|0Zk+JHo2Od_;L$pQTB9|Q5>b1ku(=%D3O$LKQ zuH%~Kd{`=aBSY1rhZ}&{3}-cOH(Fw1qS|RSf`Ux7E|n^++1MK?7fJ=oy4G6h2$jVH zmCDRax6{r%Z)wX_Aw-&{(vi^Pt2|*lCL#hM;eyK_kx`yPh`m&yCu-_NEM1kU1%Rcp zOavbMUKS1nd1XR?+-rC|X7U6tJf8xru_y!paK^OJQVRGD7QP}`^MwOsnaYu+5F$xa z$8}aV^>3u0yy&DQ+ke}~9Y4Y6RH`Lmz9mt@g$pk3NVw!WM8p_F#9qh4z6915o@)EQo39&YirU-bwdS!snM<{m|$cf ziBkfy0$j%lydYDWEDt*=1L+rC-!CMQb^SRzj#^+3^ZRtg9>m z|=cVHHQuFGx#dGA)GQlC|q*zg8n_%BeBd+Trol)f6R|M1wO> zva$9&XL!8i`pVdZb6%;I8Sr8|airP4W883a=+K;3EvsVY6+06JCsa|V8JRTmUC%2> z&vl!#5dlxyn#dN4&Z;#$N+E0;&-2mX)UjGn@O)p!-L%u`7RpY$)ijo*bfRwB?Zkow znMwgj2y`6bNxvAB!gk}(!CI zk*G{%$~a7@G;7S(g1`eIJDn_!u~c@tQK!|MFBEZfO-b2!c+AgKTAPaiokGxFv!T+7 z8uRrg2mu=F^R1xd#7Wj^XEwEIW)o$(-~h~VAx$Gs20+a7Wj9huwuH}s)oOMBfde~t z?qH0;LVda4aFct?kypseGjE%%rZI*w<~WX0DoK(;5LmGJ_V(=+ny+$BSVHp z>qeuocI_HOEEEcjdSiTi3>XkuSXx2ycQiHh__T<4&tu_lV6QnC2N8QTgZguZ@&O-@dhN+m=rm&-?v92p#}KB0!OGC6yi#4J)ydo05XOgkQf7FlvX-Pl1$s6;CjA*%n0tLiOOqH7-dRDFY4yC_KoYvZa3D} z2r2q^3U=C^b~|(&XLe@Z7|l5+0z{r?93rD2C?z_{lv2ttWGXeBVVWqidG%4NH8mTd zN^O>@Bm(XT=}48PX$)a2W$3sLx5^5}TmhN^GG;XrVy3ze|N58BdvDycdw1$M98Go1 zl_enx(5iz@RHv(J4|I$s;MOhpX_9)5o5hAf!ExPYqpNJ}50p@AO*B5_l?H=WOSkGO zwNS43(v!YN06Iy@qI-1j-00Adlwg#u4vjdj+wOEv-LxjsHNO-z>XFq@9rV(yJ26pB z!gy}Bks8x#=qw0*4>Uq^E{xNR2tDpO5~CqPB2h#(V(=cO0w8^th9D@ z<&nLUMq{xgyNNZLGh}fX&mK!%$y)8m(BZ++k{6h;)4Ax`=iGG5U0#NfhGu(?Ikq(5 z0>(+ggpi0?+NCUk>Tr3knUD>YvSXveGcz@-kW07KZ4HdMj?dIlGBQQ4z@=o!EZA-u z4G#Hn6nDEyI#Ov!)9!pN60Y_GCk$EGCMjP?haTEJG&D3=t$3c>Yt@jKu=}kC0p*+G)=-+o^?GA&ZmwJ|2foi3FO`aW_w8$UIzvN)g&@ek?OgG{tA+Qe zPSk9*=H}+R-R_1B>lx$aQb}ud-@W&ZjE+hB zuv+!~-?6bRbMy?ukR@Y@+U?HV+ zwA|6lz_*r&(ln|!8gp~=l}g3)e8zaOSlEByK&#yv8XO7&|95Lb%O8DZT1(avwOZ}j z*|~1Fd&au8c;a`u=g`q(M~^yEI*#O=|G`tw$U~kvda%}-UUF;CyJLIhLvub8SWAS2 zh-3j6Qy4`FET%HQ3CX$Qx<{1rR4XeN6;ej{t{lcXbdjE%hY^y>EEU};^#T)F+9 zb7~&}gqgi-R(>?NDgO=m@$+v35eD!7^dBF#hq`=`<}0i;s}B3 zv>VNJW9z#t&N9V>W3t2z++ig*sR5w&ZW0h2;Mq?7{pZ@p`5)1?* zAq@Xej}z)YjXEZdv5=>)rJut9$)+HSO4+g*!n)x&>C&XTBEZ4cisHU?|mDzaEre0 zJM~6ARhrO7U3KCY3qpu9cJ7>+nc1^6 zAPDkbty(ovE|(tKy?f7|Jy8_Jar`@^%`TqWah!>XiS_H&4O9m52!eE+C!K!!;Uh;L zc;LY}j=SBiQcIQd+f2>a0(junYIVbg^&8f&%RA0;#!lJ1x!rC*wEN**yLLrUlqAXT zFdnpc>L3VKuU@@%%PECokqZF;<$;0i+qUi9x9{$|565v7Me*Wzy}d-*98DB#LgW%W@l&j?%mhzcDvo~6Jl(LT!>PsxOVNj?b}Wb3I#+2#PNxV zQmORN?%jL$?){w`+wz56&<|s5czAfj`t_SPZFFZI$Fj! zfiV`0(Ngd{iN)%atTtM?o{I!RFk{e|9wo3}5wm|?L?Sdq(BpyOLU98k0LqD3)aS5M z&vVufbS?=6E?)lPu;9szt0kwO?D0A|{wSnFfVP+V${7<>Yt2m09J7kJ!vHNQ00zMF zzSWE@AR?Dwj3vWtuf7j528@A_Qe{>vg9wfzT%RK+ z5{j-@3OvVy@_<9cTnFB=WAI5;|77PmF8R5CKvA$iSmh4;Bj1_M9+;dfGWV2fkekLL zybS{2qP5=7?b?`P!Ohby*xqPF`}fUzj_W)AP_-bWR=l%evm?pY+t`g%renq(bRleKw?RFY^r0Un}^$in2S$(3Wb0h9!EL_}{jNG8Q{*3>hyY~#X?7Ggx*4lfYd~SUC zz0L`N$N<485EOF|MGh&7q|9K-C0Wwg;*8}fjV-z4vCCDqM`O)sMzTtjB@dHGijtT~ zF^U98Q3TP51R4#XbH9A^Njok7IQQPZ{knmE4WgSat$Ow9rgPTb`>eCix7S+xTW>~D zd;FeH_BPJ!oUT_J^MHK(d&a;LFyZdG^%W0)>&tmkaOSUVY$&Ts*RmIEoq7<_aoxqG z#f8O%E1R2wIEu})@%_(*sMe}4eBlenVgDF+T1{WM>VPRo@e*VH; zPS306iy0f|m1^aVJMOsB#x~iE^WI*}835;x4;Ny3dU|SV>L(qa3tgely}yWT7_1sU zWk)77o};di>g_jic$YDDkpi9lqIb0FiM5AZxTLbCAmImW%^f;G6)Am1`@fgy7biVF_ojr56m#`;#+k zt)&qq>@c0|To7~A$MJ9u(UP?WC-xFff}|}-YZ7ve=RlZ%O=B6y1jo3Fh6H2hL;#Rc zK!`{PtlVJ9m?Ip)!irBowkQ!5E7{wD&=CTWi~+C=fddd{TyV}f5<#9zvOr{!q3a?t z(pp;!rMnjZq^rscppCU?h@h+jS!Q6A3}=8eIUL3qt+iCj^E`%1%0g)a033mH#u)m( zGd;C<^3>_V8bnZ9dA@^4zVDI+r44C7WC+NSac09F2(%O(UI;=SH zlwiUzM>~!(*6*}Uo&tpkLPs^pxea4}sN!i$?#*w)sH~}SDUYvF@{z9|GMzUYb9$8$ zWu|r@L zh=3=O$MSU@**ZR zMS{;S2Hkd|Q{)6;>@kjck-M&=^ImlaS%dZx7yr^S^0AlC zIoEaKC<>#fTnCq8jU6Ouk_?p6=j~2^-n3&GfD6O0Qi)yn+z41pc`gToewO9qS?Nl2 z-1EFjB`y=N#y>H}3^N~@8l zEzk8RsUC0?@*V0ihTz=W@yHBSTu`2wM(O8c1D*s@V?Z|Pnws=Njlae7BY;EF)Qe>) zY*~g0WXvjS35Hq!3;>w#IlC5j#Zkbx5a0+QTwnN}%LQ|U69xegF%+B$m%Cgr*Kr(2 z2*H%nSuV9UN-M1lG9uD>QRKNYhNP5INoBNF+E|B%a#`dOhK{>(6DKI6ib85honlaA%4!mh6NH}962LSX6$0#a(xOnt5F#3F zRblHDzut6%Dfj7PQX8X-gmdP44kKzb>k7N^%s}ge0itm^afgI941g0WgeN#MtqdbH z2G}*PU{kv;ZQlSu~5c@0^ff#U@M>vTJo zWVfH!YvIoQO{ueNP*@YFj7cT3)M{z0rCh1F=C~0igN_AHDx;MqBF2CV##~0gf*{_p zIGbf{=BRe3EtMv~ELC}Ggu@*HOc;j1Q3zqX8+kIw>oa~BIkk`{d3P`vWJzXKYPGMF zj+!D-^6c3>?b|RGb90TfXHP!a-nl<&&Uubs^!wS=V%0KD0%n({vtC+{!bXj6uD2cG zs;nsbjxGdQQqqD2L|_8_&?B<4&`N4cWQ++TKZpeYT4S$m#%$z*+G59(Q$RU0#SZ)7 z>DJ7i+h6vMe|7I?|M1Zt{0%a;|EAXte^K%sTOvcA>(#53^^G-cOp$17fB{OmmH&{4 zPMtg@m71QOo}Zr|b3|SAHhT_IPAJwI0FY93I_;H})y1X7D2f1}+v%>ZuGZ@HMx*IC z4kDC~!{d2m*=&w`{d{$NoZdkMQWl$= zn@Xx(yLXiV%C*(CR;x8VGcz+YJ>-aD?0M?I!b-qE8^&d$zEO-%tnQ52_7 zo%VyEUaxze`@DDjrzn%grj+V*Ix8zHi;IhK90NeF*IQX$snzR^M#FI&L}ZMY3{TI8 z>T||stsM-KW5-X#QM9G!?@(|kkY$0emjY-=$udMT+|y! zQO@DXF6Pt1^CN~djD#>67KR*yFdA)01_BU>C>*Y|u|S+7ATfgdd-i$0%aA#o3&w@u zh>V6?d{7q3aUCW&XWUrB2^eWKhAfh@jI8G|;fR!s(nf2e4Ol_~K*ojZ2xNtVJXO9I z?BBcp=!vJbHb^W8Ls>{WWGE#-GFBricZ7n`www+Sp?ta^gXyK3QEFo)1;YwiIFZjC z)@k>+%V%dAjat0Cx*~NBSXOo{_kd%PsV9$a>^kHZiFP>mLV;Y?r%8jJp0!zGWi~(^ zW&73rWZ^}78<&l(YEKJYGy?#=k3JPiG=40k&g8N0ni=3)aBUh@>kY*AL zT7!8?)q2F4QHnRG8y(Yi1hZf`my7c?B^4FM_rs%4oOOL;P|nRwH>aA%Pn=Z7pwNDZ zi#zAmmb(DPCJ ztJMq`;c~4E0CPQ`5T~c=CAANcbzHC6YyxbBS!0VYUknC=B};OydiYFdcGnB;e8aDO z|MP$H4`2NAEU|}fyPGjK^j}$Ptvz(@?gxMLh&AN;t}jF(mDU9lTT>-^z25r9#$9*a zH5sS4LV}31v$JQ;oY~ym41&NIv%ayuZ~y*Aqj42fPfblNE$#T;_r6!F)xt1rwOZPk zTW-1K!nNJ=t{MPlXXhS!?6Fp>H8V4lW!c*L`ki;)S)$1+-SO$^>AAW2M<0DOj$_w# zH#Rn^wc6gjd+}T-`k$a6;>^tK^78V=#zqhXM6|xXv1jkz5@lZLF>f}fmX?<8z4zW) zy%t4LtJNx`y#4muua>dRKJmm8o13k zgf9TfEq>?XXk>{DSp)>+Tp$udDAVkRxUr;$8f8aKARZhcHv|HPNF2$Y%dCfCDD@(K zDHtK4u~TZ&)ie=9#B=Q&IlABiXm!!i8$+v6Q)$A-NTcY=@MnDIwfl*X2pC5oi-bt9 zXXlXB+ImE^K~d}(8}(STMN zt&J{eM72@cSZ#Er7M)!^UE)8jv@yEGsx%n%`yFHy_^Pb$fW6qDnv8T@(OK!-WfEhIPsk$oU&b>Q;TbbLmugO4E!Mz7+ zUa04nf}MN3q}%Ja5}P@p+bj~$h46(Nhr!H3By}43Zl21dM?nz1WuayX+#6rbqk8FM zcyEZ-S=4l=S({{7`cEolsZYHbYKot{CJOX)dr zx7`KpAbElB8EZCM9bLL_k&vU+CQqQ(GA{E2AFFj?jVV%__LP;(7w*E`;;B<>hpyk9 z%OXv6-~~H&>|9^pkcGAi2c10aONWcydlsZF{FqCXtHQO?uSC_=wbgEKkYq(`Jy(jt zFv=5AWUMhAR_mZrwRX05+a1^BMgR1fmexE^-SuTn2Csj?Vi-YdHBb6-qtnh49R{A` zGNla{3HFPxq0T;iANsd+;7Y-Au+O+41u*j_{yiOp*V`-N(2Z+k)trPbB$km*9XU! zkBHXR)^_dM6~{45%qdq&hycKGoOZht$FWk%7&|*V%NV;Fs)@?X#Ux4MI68Uq^xnOD zgCMx#9WT$1=y~4q@=CMW==b}TN~PIo(A66AlHn78JkQt{l=7gY!2T-71JJQu>TmH-*&!f||}5@u<^7#eMX4U-+oki&&4 zSwX=7f&~I3=7J&2mE|ZnBdrZ*JVv^nn>~UF91RvygA_{pVD2OaG#LPEtRk?4#)4K_ z8PeJqZ4ICyPz*tv;kX(*bg(%tcRa=!+qHY)*s+r)Q(QQXk0?;)z!`TvjB8?QN)%bF z3So>?T3fe^9HJVZS#k@?gT5tWD$O7>IV-r!ENd}sl||F<=R`gcqoT+MnZqF;NM?C| zqwrZUkd#mLKz-D(~GU~TeW7*IC%o}dF?iO?63jie^-)^l2&+{tPn%)0G z%betEe|oKfckO3?{6zMJ)9V26=3Nbc=H{9XOwP((5Of{#%&~bcn zU2}GI;JBjGS#w%a{C+jb%$VDg5XL|3KwzHf}#YYZoQ->LSF zL$@<7zWdjI{`mL)&U4+}H@$dRO4r(Kpl0Wq4rlFlC(Wf)$_t#emClySC#9@ZDlkHF zS6qmM5M#$Y=bSS}S8FpD0)%1M>vf4J&+{+{t_H*ziSPSm&Xd+Ujw^H(#~cA1$0;k& zYpq?+yP6&UsR@xI1dMJmESY|;qOnC$)NZ$i#ukQG?=A!IJWnY_M8+uJ58(>?uFexg z*L9VWM5L7RuA;G(V_vQ$CKHHvHo{m|e9!e<$8&@!3Y8AZuV_eV0@eVHqka=kpfZSz zI4t=$F^q(qIj)ehAUiZG#Bt`;*7#D-UX}$Qr9TBLXtUD5I27 zN^5J4l*AbtZ9O+oMFEIf+i?kQ!I9I{1XqH(W%urDc5S5 z&hK#6*9ZN6R;@7wskNS4cUrwOk`(imDM(5kS9#7=(M_03{r;wKF|LM;p&xqM=F4Zg zwR*ICs=qipT?=QEq+_k@wT&@2x3_v`V~y6OF=Qp`99_@7j;BDR%FfTRFR` zG^AOyCIJvURkZuh>~Az*mKh>-}xJdzxL-R9{IBH`NF>2ts!fv z*{r!PW=Y=e_BnT~B~=)~wkEl2Z5&4s&{d;dM1%?QIvR$!ualw&{q?y1KPy9^zM0zoifWSh6Yjz&v8ZAn`K#_!*xlo0>`AOJ~3K~#a9Awik#J4ALuNLd(T zqy)yzEXV6z$*Ew(7&1-_0l{zw@L=E>;T_xPtvLY-1_Yq>tjYII)eb;jq`4}eVAfC> zE7aPMJ))g;!?ZTikW|KVf{xA**tjqx0=hnr8r)A>GD*DdlJZn)Jjwz;{%n=F?-?idh!&&~r+A3e&9 zLud<`yB@}|*X^QG8Z4599Xn?Yq}-Kxl5K3P8ZCjS+v(-G;^fA0c;czEyY^HDwdc^uW|r~Phmwi3G=t3AP3waWWseK+r;aL{B7%05&o{?v|mc30@Qj&K|rWxP#>0^$6H%jDW+Tv@ZkSVVNAtUP$S z)12RP<6ZA;o%&wq)ZfoEXGFZntlhPHq0`&wttNgDDyco!;~b(bGz~;rtCGO?Dz0yt z9nmM3MdPoYZUD}O(Yjn)Gsf*zRLvMKoeEm(vi9)RQ;q1@y~M6(`TNVJgm+FDfO zaBCHsiwfefbj(#ZHsV~AciAM6Sa`)d;@e(V7JGJG*KwTk|GA0Rk}=SnY8;whJo?zt zG7r04iU5>F2hQa)S!;#k0-{km(`i|bspR5foLi%1A#ubDW37d8DD2$$j2Wl4hWRF? zWceyzjG4wRj9|L1TNK5(ZR6iuc+O|{nh(Jp8*X2ec^(Mic}|{6EprAw0s&Y;E2PpE z00@x?5sd{0-8?I_(VX+ZVb?kKcA4gd<_sOdUCudY7MSLu5=}W)#ClMZ9giab6oxDl zE(H}W4<;MJY9wp4QN~DRjJ2M?0-{yr6EG>Y%`^i6hKP?iUjaB{p3f>FnuK+=WmX_J z1QJc|IN;PmrF2|p^77^^b%_!OX`hVVM@xMQK%k=AiIha{8Pu~xY_kZlZ>3iS5=W~Da5yC**Mz^03 zq1Ku2MVo7SZf7;DMTN>ehX;XY$N)gQ-JkDA3p*mC?0T9GI;qvNG3|!2mt~&Ef|;4= zQzw@A9ImlrAHTruFrpp=DFGKhRHcnmG~CfsCV5{SuuK_ z`ufKXFa9^bdgoTUJWvmR{{LCo`K~wq%+e)k?{P#xaK5QOx2{~Sl$=#|i?{B?iQ`hL z#l=M-1m}E9vBJ_@L>6}J-1+La{j-1dFMeBTRl1-UE8TBY2K7dH-^}v@&-c@$FN=Z! zI-W;_p63F922e}`0OJD7U3d1}n80WO_GpDvyYF~wxhH>cto@ps_e|BRTI-@H=4Y2G zfv0Ujz_lSjVax^Bbad-qt~-TH{tsXJi+}80`@vtht8%HO{JEnDkkL?U89FDpEY-&! z`Qpbu@%;n{(S5;--ukvT-5gv_r4yndyeKmvE>}B%KK8)3zww_zm<3n$1Y+E$} z(s`+@cr}ua$J$4;_sE>i0givdQW{(7OBiM!|72rMAeSF{pzrUQi`Hlxry@E>Wi&)M z&q+H$_T4}J{nh=y`17wh=x&4G-~wZVk~Q;E$JxBIdi+FWENvk`Brx5x$JfH#5?#{d zCyi}*mp!Yonc~b}|LMn1hOhj!58Sb}gvfJ{i!nJFV~-v^n&TV1a%!kmBCv6%CIH#6t|HMe+*$e*x8!o2YuGT=%pzi*Cc{Mn zkv19(lvIm?&u$nEhqcOzs(j%F2@TbS-KTknSmmNPD3g)>}SY;q)z@mp`W(RIY?>Ux&uKv1vN7&?PN@5!Ts>#pBX ziS6n31{mP3==TzaUQicrWj$iRetv zR5mwT)oK%%6+oNqwd=0AzK}(_+~ds8(yrAkjy>+>RS)Be*?nmG$s;SrkGJ+8s-l88 z@}r8WFE;Z+t!;KI6~AXR3h+aB=bpKv$DT5dM07y&oeMk9n6m@Q+Jnpwd_Qm+GmYi- zGmR+`M%s76*sVSO$Vshir`@JuD$=ugu*T_1ThLYcKMX@_t=3vDRt}$RpI+~N>4!&N zynn{!pp*h)vao*SG<|XEWIHeNnVIQ}T{ODv6b({O-Sa1Z@#(|ijWg=P`S{rnJx@{j z%()EJy^S;O(v5F@-JOx(ac$aVKM6>o%gPQRlRWU(|Mp||`9JfzpS}Cw{s=Ee^(Y)L z@&2+pUb-UK(EIljk{Hny&B!66l(NkC1X&}c7Ou;$YLU8$rkuCi9G*ie()b!90)TtX z>wjs-+L6!v<@)wcb)M?WLA9ic!l3KB%xYDrbo11c%hkkg6QDguW25mOo!0=F>%xwH zaG7><$s63R{rDg5dF<&yzI^{{Z+O`b4*-a)l2RKBfR5)o9E?^{X(B*mj^~SK!eIm# z)phXT!RhJgvet7+J2#$7hv^EIjG?vloK_%;yjDALxX@akUjnj3HcSYoR%;*^9I#oN zI(_D3p68r%H}I8`Fyed%TQUGFLem zD{M|umrw&Npf1uZLxzrrWO<1Sfv7}RRFd3lTVb}))`C(-0YhU6fv5e#7=s8_3X^*% z5Uh0r0Pf0!q9{<>SV`8{yw4r*xMM2yXkmW()KhCg;ChTXAmX~e-dSIoueaB`n=7q$ zi#WPjo>!W_<_YrZ#>SwcSg)HTX~7+=G(nR>E=i_8e(GsutkDh_VuClDVXe{Vv^V=5 zIDNX)8*~oroS)@s@9D!@699~BwO)ADwDy?)@Q5jZoOGal04~mLoZn0>_(v*1a9aDQ5E3MJd)`BBk zsrA|Awav9eS?RmJW&mh8k{2*9gh9RmVES#TbDXM8cY8^t>Qx)T##3De%ys$AckO%P z$VrbmX`U%%_FPkCF6ksb^TY~SisLxZmI=^WciTzixehbF*zC`l$;m?2M>-=@^c>UwYO9$BH*vI+!>atV=fXcE;d{^q}acXIf1pZWXEw|(%J4o+Vpn)V!|)oL9%a-@7Mgt+OZ zo4gB(&}|vy%d>MZD@T5GbgcjY0IW85TyyR2fRD&1FLkP|gM2x@Gcw)pe*8au=JX5y z=YRR4qhI;h-<_I1SRQ;CH|hCJ*+$3Dp(g@sI^X_(|NUpz@A|zD-TL?!KKk{Q-8T;% z8{2Kb_@vK1=B8-fcmIj&f9}89bL2nY|LuovdDk5g$Ij`8KKiGhIAi?Ki(mPkU%Rb( z_RF97%;D1sW47BdFaP!5d*`(mHz&ev4bhfI8xa`;+Crz*gYM#M-}s8Z{q)y^s6t@0 z(xiy&s3Z^(5W2o!Yu5Yy!Jt3jtP;mjx6@_-<3Jq0!pVz5xLyg?M)U(n)^Z`NwKP#v z=)!G)We|CCuiqA*)+8i?5v7(X6_t_5iKB+;>ccZ^?e$oD`F~60oJnWc(^(D#)@?D@TQk0fCS)#OW$oVvI=UWGsM1Lczc`A_PJ-B#Y9? z10}8^8Uidsfwfu#<7kX^xvQie^m1#4tofJ<0RdUkeXTTVscS*NIn@>_E7a+AGej;> z)N9_peLM3cjXeK`8+Na*p0dWYHoDE`EF(^ZO=Xc4iY$`h^_hAQC;(Hb$Gt(ug)4P} zjv+|nn8lTFeN`rT=6Jp%xG|oV&gx25Z#J2a=oyu>c1tZBtlTzjz2fPUmY^)9{*xu; z1VKQ}CSCU;Lf-nyUu4IR;QE>Q>E?cAe*VzH=T??Q#5=8&EM-LoL|Gwe(*}W8lBNpI zvq8FidO7rk=W*8)AOIbA*W#Qe81#znAYlxXq!5CKzE>#9a><$Pv~$iG1klgZ$DVkC zyDaeiUbkzl0)RZt;+n@9cZ8Q`xnPVT`mQ@OE3(22dU@J2`}fWB&>laz+3yv;!^!Ao zBOp>Lw`*q;2ENP+FckYd3Wdr@YXU=@bgz{L9*gR>w`O+lUTpPxf|CZF^z&LhHibz$ zqSH!9yYG7G_19JhX>rP$y<`a&cru;)?s*IrcI0a(9(wrL=fAr6 zzJLCn{qgp-vn{SWx~z^Prl%kI`ad4Od8za8iR#b2`=-lqhu~-qK41G43s5=-ZoYl# zn;-e~*S;wpef*|Z{nDPMcO~|b8KXb`iBCvb6otI~_SYcBC`B#7Elb`y0 zJ3lLa?j3in{@GXBTnyR2FDWHG_<5?gV{B!2h`=JNz2xeHWHNms+Szw2dd zAOA*YJE7(Cjcs^?KeMrQSB@Rq^k4b919SUcb>Cn9@Z|ap*Uot|>kaI}+u!?(2WA{6 z)c61G7w*~E`zyb4_q15~=pX+1YTsOZYKM0~A$kP-Mgb+%bYNh6QPFqQ43=LCF0TCVH z7;BVNTUs~i$0||In5khh6gZyh@m$%;vFpo@!2Y=tUMQo_&l{dGq?=@W-*TP{{p95# z0xVgJ0Kgqk%5ctv9{iLaFQTTsV01u5W$$ zL1vjH%{a8yH@lmO%6PV{>oY^z576_hQCb#gksN^nY_DetFwMoohr3Bi!sTR?=efoxzgiQR=?nI?ed#w| zGo}o=Ecy9A|2{RR^r72Hcq(b_l)&cmV1>bJbQX&=dO8=J80?tA3Wabr?qM`%hmL3LuG9=#`jGT7BV#b!3HR% zp>TXKmi4+BPZ*NrLTGIRhlh=(OcFcH!LsAge*3@q^7-aW|I2&tT$+wP`1{|a@nlub zmBT}bh-RwZ|Mr19YsT!7g;Le~p4vR+?|O0nehD@TILOp-jMCC-RK>;aKpH+hwsToY z5AM6?AKhE;e%YSr>9sM)+pbj%vnbDh>RpyY<>uFY=$gCI)u-?K-%5#^4Z`0=tp1ij^DoP<{kVw zcs{lvQ&ZEw_>1rS@Q42_ilSfs;4gcww?)e+&u=8#8FM~0Wghz0H)rQ8{_$Tv_H)1e zyRXt*e}2Pab`sgJ|bXlP^;BybzcvTA33pc?JM7P?T%TKXMrQsGmRpZ%u*NmF3bxy`JfG(wW&R;~R&rn>%vk)XZ!I zK%49Bs1lGSW=w0n?F!y)^;DrPSpvIr=Zxp;GpEmH10%piM9P)RgL+&vr>aW(t)6rW z!r2lHV@ymf7z@T) zFvb|$9;9m) zY8(v)xz>h^LnNKRTUnP*?2y&7b2F=Jn|@pm;xNpRdtumAy?!?cVR|;|C#}Uj)2>(D zSn1BrgvU>w@k2gnwNxSJcTWv^(s7YFm0H#74cfUhNKOzsTtH`2>Jh#lk}nKv+gJdo z1RTo>rT_$hKn%%R>sD*GzxZ|nvSzgHne24&#eMp3ko152-g}5B3_}12U1qG+B+BBY zg;YtJb1tk^d19>E$`Avih4nV4ewFn%yUUM!@6Z0_S3u>1eh&ZEEd1_&d*QaDXOu0I zEnV_qb-oBEh@Bw5_4U6rxc|@o;nB_Prlsv=#u5+%wsq#W+gHs6$7CZV)(~E`5m398 z8={L;HGifCOwOd2*>R(iN51=wC*;D<+`Rd{&;Q-t|Kbfh>fU9gHBGAdNs=tLqpIkg zJ^biq)w3wvD_V}{#v5;Z$xB{x`)#)k*(@(?%4Ltad)@1Q;TwPOiU0U#wVU4ep}Y15 zaKX=!JN2oiE1r$<;Teo=`(Xi_tRMaEgL&vhj0*rUbLc>SD&9WH1Z};^E^TbXMb^+V z>|pK4Jr5P3hm4nQ9@xIUZq@w^$64EbF}2UNEgLy<*8TQv3sH&!_^p$ z>I9Czxu{-C7B7~CfAZVkdGhds0+AzfLJDq$AdWX zeILLoDXlS#&;kJhau$U_Yh$x*u)o;`w8HiLN<8TF*Oym`EHUtcfH4NZT^@M8k7QLL zjh15wH8BWw9EK}DA8#Zqg>$a;(2<6WTU&a@7y@uE!0Pf?Ys>mQ004|JWJpBDS~l9+ zGFDWAwk=h3==^9PW2|iImXxgW#{yj-u+~_xNCXadwXw*k$a3F!XvD}0#^`FeoJCs# zco5S|jo1FFw|E@@a||L3G2KxI^CTPfptZlJZ)hU|z6R%5qSs2sbU z%#Xcj+Ru0b;3a8s;=~yP7Euf9MuBM7{WLZGPVTr-F6Cys!?^7v-2&y=R^o|pP>`Zx z=hBoe@_tvwVP$#wwCB6cx_5S^d*bPCt_sHqT*j?5m71FsNg}hjQn3tMolVE}IRj%P zVcH)kKbW=FfWt?%2<_y6`t_Oq(+?!aAAQE2Pe{0UpmOjwz;hSX8e5*0j3#4~94c|M z)mladj?cL(xKF+dqtSz{MV7Mxo+yD%KR$BGaL6SQGW3CH8CI?Q)ISc%N zBa5QAR&%W}S{bdV)9#->vr-9TrAh)Ia$Q%-f^oLAv{>Y--QF0i_Jxbgq9t&-XEh*+ zw6BGWXU;5hM{I1ab8lwvp(#HI!zks(X4!zbJVKu5eb03{m#xhLt&^vi7Si!VcTfPu z!bOKWE6eR5=6;OavGoS3f;QJ=p_Da>7$4F!OiVx@{ue(xHu~}ZBv%f%jhLx)u=41= zvoCmw<3&U$oEH>>`$KzztQp^9)><-Ttp#hynoOBir)X5&q(@1rA-afboyy(Z+jEHU zX!Z^7`K?zgOJI-P|J5%ZhWEesM(1)o6kDeLvI^>UkG09Er&dHIrlNiL;dT(;?D0!3 zs>cU|g)L7wx{R!6QM=*5^u70f^~ZO-A#UG)v{!w_^>w_gj$aU@+kVGo+FncJfA-67 zxoO^f=PTb{S?w&=X4v);-HC`H+xpq|JARp>vdw$G^!XFv3xDJNvw!uCZ=8J5d-pY* zE0p3MMbSIo`3t`9KT}_}d`{cwxbUYNqPtwX>n(RoT@)Ppjh%0P*RJw$|BPoLurLae zj6T}tm=jUD`P3Ia@!9;A_y4^6y+yUZ$;ewzpki6cZdN-iEP_n`goF z*N%SnW1rP8{N*>oJ&!*4&>e?fRQhf#*=M)9k+DtU+GpxGC1<|*Sa0w9fAfRaObYj|yDyuWa1^4~*tbyo!neQsE_B)EX|YjwKZ0R%A0aF=n<3Lmn*s?A1~$Xj3OBB7KyLx-1D$}KRCj?axU zh1P_Elg%YrBBcy65k*lLx`I1W4T?4mdWBJBz$R%b3uUw|Y4=LDUBSh{Lwh+lPdq`# zj-ARA>-h|k0@n}2inTIN`wc%xlVpBJ=md6kW7Sd;`d$=Z+8=}!4qUp7Z>;ySUeWDH zqeYe(4J>L@Hfh*M!3jcTXYtxYpGw3#lLU`a-uwF1DgmaH}iY?2479IoH`<8K4N zL}-D2yCMm0jmVQ*LwKCcZ zJR+vF34+iME}9%lTkf%E7uO3tABb$^d%}Ux6J)oW4}^%56EuyTNZSlhs?B>o|M5rH z6K%0NbHkh8@sgTzUIF=MSH0!QFdVS$)=u$ncxBk&j{Lvo(kFI^wyI;QB-G0Z* z0`(KBhyIN1j(I%yGjDj45Dp@|>Rx_ zHS^)U-#EPS3%hCP@v|0KbjNGnc=qF;`N$vtNVsf$GrbuuK8zz|aFJHs@`l&%y!|%c z^E}se9k)MFU;n|GR3Z=~LTkYi&sarbObBU`)!oPuLKd>$??q9?^ZYE$j8SD_04<9_ z&qkG6x7)Trgpd^}(~1Llo|_wO4OuINa2XO9+3)nMQA!n)h-wmP!Njt2@&%44+RNW- zrAoNM5tX%s#5uRx5)cf_K%MJ60+iTme7(xJ;W!Ka{H*!&W{FAF7t&=}YX#%nsNoU< zEjnCyo=8*a5V=5LMte?yO0bQ#bfH4Yp2hr1eCzAb4f10Th?!j?YDBlaA^pcMQht#L z%Vd`V4gqJf0LC~16ouk~m*#G)l_p1$)}kyhFBDpU42pypGEzos>v8V+ywp)jtVhRBZ&>9Zu^@IGhqA2idLmUe8Q|ID8+&&x`B8M_$Wb5>gifz3 zbs=34gSO4JRfcf~!`Q9OINhQX%(zOYE)%HZ&bro019+nxEIR?Ph_sr!``vSQzx!GG zJ}IOXOpuQoYlrk&Mpv1C=w1}YH>V{#+8TWlZ%hIw* zp6|JW;(%8w&isz4jkOMeWnhJaoZ;D(77_LP_W$GVO`~nguJW)sSF`)m-u}M6sZy1s zs#4!t4UOmx2!vxBhsFtUY!93PiDJe;BiM29Fl2xs1QXj>1VRW3h6pQwECW$53M7?O z-K*xks(Q_Rw?FM}S2y!xpL6cH_q~#;O7$+oUR7hfbNAV2&%NfJd#!KHIoCJ4D^YhL z?vF;-pX*m6I(1w7tHBwM#sb#F*+1|h11B2%o0iX8? z*Ee|n&ENG8-wMW9dNEV=k#nc9ix=odI{E$o?N2epdNDomOulf@M^<_CqC$iqTj$^R zqyPA?F@`|KnisVXgd71sGU>gTjsr>|YR&UW$mT`qoDMo(KkgSH`b9N<-#7og2fl@j zu>@;>`yc%@Ib)BLFaJoJcWE3>Q@`EGkFcYpae|JA?y)aKoP^)!1i z6eNcwALWvIfyTzX&Nu(yfA`JK8b^5HZSVi7cUWs*{ZIZSl6iruBu9thlk@_OttQJN z9xi^z-~R8xS>vejig*9SPkp_$`HeY0&{vm!=g z88~C<#QQ(+j#)LmpnLa!_TPNq`x(>YOTYZHzp>D`JvBT{LTtDBs&{Y95Lxop@8QV;sUrRKheY>8`&<96Ts#@S`8(22{#*Ep^H6{;WH@w;GYFGF zdP4f>hv9fo1cCp+-KQUY?BOU3f~0U30uik&dih|>k2nkLc#y|Qw7eQwQ-OsG=T2_# zpLvd#qGMUW)quGYhI>UDBFor zqQ+>DSz{I!ma{BVN};oWt`S9?F$;Du8ufd_A}fHw(ozG_jq}m^`r2@m=0z4{?&kI0 z-fm&XvA5XW->HOfQPLRnG6xj__d`#a9MDe(rqNCiT)sbOH2hX8Xt$%$XsB%oWdW9f zOInTQcr<|Dp|ZjLLx1v_(VzzaWm$gu_kL~Z z)cGg=>`#M6i~AwX(zxn%YCW7;qbsEgW0WbV#IZG6C(Y&|d#ztuXQwyt;^slJQwF{l z(OB&s1(*~ioc8{O!aJ>Bw8**ufj>C)VxG^tLx|>Aa>$(}>oTbS^{1~tY z5=}>KhHeJ0?o5R^W7O=k*40-y^Uk;0*a!iTK^+Hw{*F_+ap?s^?qam)6Ew>zwNki!VQMbW4);D6T|Dz zm5eFtjMZ}OiLH|%^T1S9?Gb>Z9xQNLji35_|I2@R z{s(^g+9O~1@Gtz2_3<}<=U?Ajdi6c`zpnl>H|f8<^sC>}{I+j=^8+x;;C9Z@BnQh@ zg~>EoleDG9R4{NZ$j4S?+2S%+WQswBOhiqoQpXrNG@KES(HUjP_gL85$pz;{zld7^ zP6PVZLOL!s%yz4pv|9-xSdA7iiee!d=jaEXG1bMp&OG}p?QHKdkV(?wT$E)=R;bbu zfs|r2DxHN+s~bmw(nXrO!9J7B_c#wC-Cc~Bs7h7jWgbMHDoqsn#u`6Fjhykg9BTkb z;>43)e}9mVGEX7`sfv6d1s6%fD|0fX%`2BRw5}@fqDd5WPTRlqyAQ(DQ(v3s``&eL zBl5SNdot}kq^pUOdE?3x8&{qnqM|51@qhnoT7CO$X-D*4F9(Z=0L)s$IjhqVrVM1q&~appthJnr z$<82KkABCYb3}$nj)?I|jG%_pFUDv2A7!hJ4YA%@&xmFWf4A>=y#Bxs{8z6bXPtx9 z*MIYW{f7Gdmm(Sw0nk`eKXJ~PvG%x(4H(0Er&yh%GbP&ls-mg$inqS6ncObq&+dBn z_pUWM_|<~q^%fi=$2gz9WnZJQQLwOfdfjHqb?<-oyYISdk>CDeh)9IS7$F24#wf;^ zvMiswF}}KQcTxf=1#lupjyXbyU>O2~ny4a*f+Sr3_HX$sfBu;-ZtM+$Fz)x#*L~;T z|GLJ1_@xj2SvEl=gh0+&H$R5 z-x7f}6gJ%ChUV$O2H}`+-e?nw#wCDEvfW!TN^N(26Bxl`z zpK=Wh(7*lWp^zXTaMo$1jWM3bq~{fR>3J*&0;k8zCl~koqf!+p8TWNI8ZRvbgmnG- zUMu#RjaXOKZ^cUP)G+zyEcA=bwMD?rabxA9?VJ*S_|(^`F0WEiD#?K35(hm~=EMjB&y;1=XvNLtMijy3 z(|dVFvEO7)6_qxK2vxbc&xo(AoqF=pmA$Z3MZx2SGxgf=AU)#$`Q&sb!PKn3{|EX8YnHgI>X8;k|uV`!pcIGFduhA?R5`k8_HZ~!IQkCGsy`YjcUt_}~ z#%3qR_SM76(du1qUWMDGS>fs{-w0nl@2@sCs7uYj%VccH%Go!roSptf&vz+8KqO;~ zl=8?|6|%wQOMkw%EW(IO0l)|+0LwZ+oD#MZ0#K*Z1}oQNnGZ%)rJU6#U-P{`_HFuS z{^3Jo)(T1AOa!*0z(2o^dr7>24nyLcCRQbT#TA3H5jhncLXBANiI4xjz2JZ+$PUJdjuUKl${JCSl`=(P#hh{r~4v8xJ~FO}G5k z4`#aRao`Mqu*j?@7()@SH1;=3m6J2Z^CHU#EN}uI^5(K%Sx}>@9Oe=tuxO3({GcjI zE={xB8H@@)675ENd#mT117StLxAwEh50@6Z&X&a3LU-xLwar$e^~B>(Wm(~z^8zM( zm*wg9&VE@Hj1#jQ3@mmRilQoVZJi5!zOvZd*%?U|b0;rcIQjJD%jw9DGg}qb4-I;- zy_M?}mz zrXH*VIQt)d{s-qxfA;y0e(r}3L8!SlNxPb2tf>Rbfg@wdqOJ5;cmN=h!~@8VSga7D zsw(M8m@GH$*yxXlKu9>7#OlSaBR3^UzJn7F;$*|$Y|fKXYNbRJz_D~32(+GHJIUP#BE|LYf`u_=`=S!<=NO`RKKr1!NM+Y6Ij6E7*HkJNGo zfC51EpCY%?2t{cbmok(Rkf{pNk_-c6=!YU?2o9HUI)n@1`~ z0MPvB*=e=wXg)U!0D!=nNf9A(K!{Qb&u6NtZu?~CkIYM-{W*UeZb5!Wkl8GA3lRll z+>+rOea}~gt|P*nL4@F2Q*$cg+#MhhR3>=kTeg4wpTTffFed~FMuHO;j8EZukAR>Kv1Xsp$q zv%*=`@0W}-$%U~6f(KfVcD5pKp&@wXGiU@}zgO+`2H;?2y;D^g_oOz?RxXPDyT_Yn@T8g@p&+^-cBhwX+v?Gxy1-{=HQ4?xp+h>%Jv`n4ERyz=Ks^XOg($$QZ{3 zZ^mAl=R(*rAB~18kd34%;}(tvN{vMv#ohH}>~>tGg$qK@Q@P>{ZDj}ymyAi=+S&s^ zYe7TFISIj|hJXF$Rb2>cXk%mZt_x@Kvbc6*O9-ya*j6%%W4E&(ggzJa@WYol<9;Br zoIL5bnvJ!U6=dwvrKd*2ah$Ly;o*pl`a|yG8`!Hx8ht0Y@teLSm!%n5(eAdhF{)g1 z6w>45=*rXAO~nFVc%Cs1^w5Q|ztB#yD$V+ejBkA)^vlwfdF2~Lw~%6d_>+&;FVew2 zApWvDD|h3I>M@Bkghqv?&<>2#iX_SyUIzmG9C zOMH0QhyTfrVa6D;!EjI~V0xaXwJystjv@zjy{S7R8UPvAeZO(z`r6tWBCf0~-`w21 zc;P%_d=@i$d8HqWVGJ4K?(R+)hKLwP@wMwWmY0_pW3!OUozginWN3})_xq<#okYYq zj{Cj->gozGAgXJC{3q3B9cPRUh9j*NV@yhEoz089ktD}vY}c+`TU%R2#O39sn;SRp zy6fVdGq#EJsj=fGs5t-Jlc@E6vWnjic4%?$_} zOPz0ebGKRCtSY_r^hdOR<|p6(z%TyH2cOz1-uc}>{GIPSXG`r1^SR&u;P3qDqZFR~ zv7i0fi?G=*f_78=zrXr(AO7@njB`W|6EJ_wl3z}CE{ z>WDw-@IF3Lm8!o(0Bbbo?6&A?9vjVHt#*vf=ef^=xm(k}j(n)EDO6#BSdr;$R0W<7 zKull|_=!}$v$K)_IDa9*iqC(n@w&GoSp)*I2!u!ufP^TnU17UB1VGM}4}TH`qua%S zJ%Fg@-ce+wVHttV$qLtYQ zDEPnr>{tK6*ZmJ?I~M_9G#Zh!PFJ%>GTYV$0N_Yz*B{wIWk7nRsgQ|QH<66Bn$qe@ zkE>2APIa}lS9l>(<)Nc8s~U|ME#y`+KtMti#lQ+7ogqU75IAeoQLeNB$I7Z24n{?m z8?iXRTRbS}n$S zr`^7O{rY2%Us_sRY&L6SW60UdYixDL(=6NF-5U;vuekee#&{5hoUt!{@uB7ArB1u; zdET8eHb<%`dj0;+&Tf(4u2EHMWubdg~jXu6})$;s1zVB^!$^Y-Ve&gHUwz7ETL%;BQTT6Gp zE*U(SMz3Nv2N7O))mz^CP3J%L>%Z{Phx>QG`Mp2#zVG_NqgS5E{DwF9-Cz2rfBc00 zy6^p|Z~umOf94DS$H?>At@iHj4j}x|KL+;F~b^bxNW9L{i>{psdd5@61i zH33ZZW@>j(_4x?Q!o$1&X2);cML3VE=7HV(Cdc^`gf#%na)H(n7o5l;L+4C@jxhlf z*h_O|2mz#L`ZuC;uO??*G0r~zJM+1aER2$O{Wahc5cTd=7Ddm8#bbdSnIp2=0!(7h zj6vW_A;%t*Kx7m?^URHtr@BGtcb1d5z0@BK5Q6Q^v2!X{r9%uF5QRM5uWSJ)&b3z0 zE|4xAnj$m47siS3LToKA4*Jz-H*;AP1P!CB8_%Sr(azTp=*VlDvDh6BPF-9~`-N5J z^qEf5ZB#UN!6@{LRy(MyVvO3*}V zj=P}AS5LGB$Kig_O9#W7SCfXc_HKYfd`KVt=Rb19&}V9#yjN3ySN%hGkR(2B&bbNE zC@BjLfpI52XO$VJnr-)vn5z)tf&1^@-rj!t^3!RW<$11@x^+GD(po)U)S!)X-e@#V zpFaJ{d+&*&sQzkweXZGSTzcY(r=Na0&-0=vUdGJpdC{Kdt*xz{Ieog-Zq*S4>3Oey z)vK;uzy9cH657uI03ZNKL_t)ej}=8xSJHSHMKd--s=U+boIQKy?3vR+5C8yY?BazB zqtWQn6Hh+=_~Ut=mu2~K=^UmdHEPjO6rDJ6;_kaH#!1430Dxwzb?-g*T)uMUp@*&& zMV{xye7y2M-gaPYh+K$9BRO^I^u71IB8p=~1jN;~wML_H>4_&UU%q^&jcs*x^~~wh z?RHB@2~%Ucv9a;kN0R=(8&?QaTU1{C-z|!?=HKF zx~kUCbcTa!@8(GQB3TT_>4-^`p|4BZ8;x;;d4UMR&{mugFb3x@o=69&@A=l)O8NbL zRaT`tnRges(Y;pU7VeLG{ekbbE2U1ax0s02OgS}*qNukwc;ulC-`9)F-K3e9CF}3y z90T$kIm}Wl88@Z7>*DFO7-dB{O4WEg3S%JyW^~$Y$Asf?ra*85PUSgG@&XUx^hYjl z9C;IFuMEseRm?(!b&|AmlC!%`FTp{^+k~v4vQ$@3D2godf+z~B>gceJh|=@cPpq%4 zuie?)6hwr{ey-U&%!O#Sns0pL8}D>(N}b1A56H74K^R=Tc;UkN^Kd5>1xd>675eq~naSD30&D@70q%`Nxohb;MJ0ED~>HY@9cmjW@jE4Sz|- z7M?$U?%dh4aLmRAAcSal+HZdIUz)MK>Q%3N<-Pa9v2>iV+wVWaX_1u^)y?Kw`MHmL z^wCZJo*(&Jz6Bs>fx@J{cIISDUxG(2v)8_n964w5appJ|SQ(`n3z6hTTRSsnR&V7) zX008kgQ0VX42ZJPxRP8Ot+hE|gFA&z><)HkdT8fdCRl#d=6p8&Ca#) zCw?28Egt(cAi|takE|Pi;zR1pqkzl~wt?~IyH3KPcD*_x&P82)k{sk&)nKi`KB$s; z0dIGkjMEdEa=RX+%O5*?5n|9T@~T9v98TPg-7{ z2URA=X;F=M;X_ttr7?|8JQ@^CI4KZ`cDDD%FkbF#1Jv@u4Nm8neV zc_-ISR6Cif3@T&hxW#9xf8-B7B*WzPO1oXtMK)uWt3kjlL}(o4#tw!`a2@j2r}UP`ENJ%e-KWhl628z{%0p=2jSbT3K+OE^zbNaan0+L54hD@Jh$j zND~<@&>70gLQ_B>T8+3FaFk+md#}h#2Ey}#ah6IiXm=W(=Q=HaxSzSq2v1a{7+0Bq zX#4ueLFI=*61R4@_w%&U+O*nnzt8r2PB|9_q4c~wFRXIbS|IX5zSrL`^2!lW;S|KKEHr-QC;rC7fkm!% znWKfuSVLC$zH`P{R#pbt(fu{`m9;YCG|lsT<|3OfaQo6*U01Qr1VZ#YnZ$7v$MdB| zopouJXIZMXIkc1fWs{C|OeBh;MkDb&??AMpvQ%k0E{bx7T<=83ecx|1k~#rvc8aw& zO|vY^tTi<!W-jL)r|em?cE1N5m})Wvkxn#%Zbp3>zK|QshEN!Jd6) zi&9>$$57Sy>QIRA%|H1;x`pFzduRKzpZ#q8`E74|`^xh2krPgS&ygIg$-^`R=t-k9 zvV53vZoM*9f*@}CQA>DT+S{*OiAHIM);aWB(rYli1Av^%ATN8RLf;Ejp^b5!g{70{ zTGy`LP?_4lF|>}HallAQ2@DMxrz&L3SqGN+k&MH*XU3yZ4k$f8(%Mv|2IGc%bmi$` zzh{ybgw0qm*Wb6mqqP%@?M|?Db*Iep(KsgnQDS9`)(kkt2`{UHF|3T^j2Kc`nX)k5 zZZk^I>cXP&o8Xu-$~ps80Zd00ON~edK-n3S`%K&a>L>y_EtefzL0%;=TTq{ckByy`Q_m0Lyi0JyY>q_gz#l_Xt)fq?Bt%KA{YxS+vesZPs zV9?*%+Fn1gURO974u;#?+pTuH)9Fen5f5mKUk=eQqtvw4Wm)>nGtV}gjrH~Q`o^wZ zy@rULZnxX*&U*cFb=*zSGZ83N?eFhvrB9zZU58F~ws(5H-r~~I($b<3Vmgw(Ji@0s zcK~FJ9gjy(KYe+5d1+x`0RXD1x^ewR5Qgn`+xNXY(eat)^Ss#H+~ka(K6ARB7;ap@ zQB~E#;^NB6oi#SC^0CX1?y4}tl&^b+020$sbzrU}xw@;rwT@x1U?(FXG?=3DZFD@=h zdB=_Isi!Y5FE1@FE&_m3>iV_oeh_pzoyEmFVr($oCsY*W*47pRo;iEw$n`COV}9(R z$DB6qsS&>G+rGZhX!x@H+(-l1hrYPsUpV>Bx36~L9gkoC!*nCH))u{u>o>N3^EVqm z{6jzbzy45T@Z5tR{N>+xwqJ&=Y1d%_>zy@|G?+ogLtm2O4765~2R4BH&cVe{}`f{PW^xSwqX`mvuu-qJt zMwxPP5@?$E; zM*y;OWT(uorEw#u!XQM8&N6ExSpX0_n?t{c9TPPhffrL=R>nC(VVDjBW~??E!6z`D zBZ!tjN-Q&e`t0h$>DKk_tEO~NY9ixFPcYAy5`Cu~v)UF#)*H%>i^pmC?Deg+wRO)A zu3fu|1lG8P)vgrssV8?fx0G?BpX$Xj5WYadrPbi%iC9;;6if>L+}ZV_Dn!$@7J|)< zZB>AE(i etFVjd4}!9J#E>8?A^Ta?f%>2!`k^uofzi4!M3``OR7TCFIGdcB^p z_BF40&5`BZoe&KG%gZa5E?w&NdP_@7MN#bR?!M_wZ<>u|cSv+CeQ|MdWo7lT#~w?P z#Phtpy}f3ub?)3boX!S!PIRXOYinx{KKS5ZFl@J5T|GvKs-cCQy{PcvW=10I;tjCti%sT&0&XCMqkkc9o6J&ByOOd@|X z9cpJyUe$aG_Hc->2FS*kG)*6U^wH;@d+y}PllR_xZz$+A$ZPF=;h4+=3u*R1J|zYKDz* zR%YW|c-)iR7rrVgDf#a9zD3(k8anNHo-~d{VIvBoy{$bdJd5Oz0AXjZA4t#l{neGF zm8CWpa(^#mOdtbCY-1zs4V`x21xzX2-Or`O(`Qx(!`}9Wv&t63>f9^O5ZcvKCvNmF zFls-0>o~&I~WX{b6V>tisLx0;o}__4Zs*XckbMHJdUDpcX#i?g$n?1 zr#nv5;r7Id6IZTWSz1~wiehbTjkDYDM1J|DBl^DI?RLwu^gLNr>g0)&a9kZn#ETa% zZftA-us~10wA;<$aCFSZ)^4}^{l0V7S{npGk|f7zY!@zE7>&kp9PRJ-&Ye34$7pP8 zYin1oTv=IJDvEMtW##yc4M0k{xVTuBrSE%1QA~0ikIUH3pFe-?+O>AOedGkje6JA& zoC(gnVBx~szW*FCV}T5lB3^CyD_1}C4ISFIo!=e8g9?o{o+WDyA`*a*6W+_ocnjPQ zWzuLm=hD#-v_66$r=C%o1tDM>Xq&lgkKmhm&lXJ6&!<;A3dmr_Q^gSIXv)+K$<4Zt zb8Y_kZT((Hklg(7`ty`2-vQ^63_49fAP^IQ2LNjx;LbO^<;dJ~yd`pcD2k5&i9o@D zIjlF!bH*Jy#sE3+kVK1$%xrHDxd>O99+M_XlK$=*D7j_1eFAEenxk5g4-tlfxA=5AaW6qzfW(LKgw;J^X6GZ&YM z7u#EDRbX?;8;`U8PPyMN!Z1{dvdp#@F^YvFXL2L&YU$nYIm>K(^@<2O5?P0VH-0lxR6Te)?&kt znDpc`Pu}Pa2Ax*RC^H`P!#IvYuhm}gBQY5CH@DL)Es$ZS+cHM)?(_)7UTWW5^mp zj%BI$_C}J)!jQ?8#R<{qOkE%Nk?%TWTebJZX)xG#Yn0`*prcLWt?jTF&|L4E=ROfGCPaqahKMWf_IxF-*6!76d_^^JI)k zk_H{4&JjRLStraIV?5tKwvHn}k|b4C64CJ+n-l`3YnXaDew@Y@$8o>kn;2UZ9bd-* zeBakv6Opw#2qL({zN*(KM&e!M?Hte8l@EhAtJ$1h6Skc6M&Es8CR-u2cfMR+yFp555kcj&VbucktfwQAo|x45 zG|m}afT##-csZ5I01=S^tG80J$+yT5f$EwbnoArE~IjMbI)y+~{8d;V}VzW&TjWeivZhsG652FB^7wa)fVKF-|s_OPh3 zoy~rCDcQI>1WSv{AvqZJlvb|N1l(gjZtspN!?M&EhXBxA=s2iGgS1jQ%gV?D1Av0v z^@?*FH+Rx>8zd^wnp*&o=aqE^5Op>s8ogy8sK=%xN$PBdBkjzYGhgBHI7h|-0BC?x z!yu>JK&8kT01HtZ)rG5sjW2hmN9VMRyQ4{*RI|?eWtVd)b%3AXRr3sR3LfW^Q#b^82M#xj0WJ~hn@_{#I_u{vM`k)T`22Wn3ZJ(0D!N1(<_f?Z??F( zwcS?XHK29YS^x(?3`V1|?|IhNdy9_FF2-0X1p(aw+Qr*9#Q8kR$%}M6q5*(&Ryz)j zFrn&RSjX5&*2VLh$44_@t7>!8G%iW^6)m z`pYpkI(B2LamLixI6HP@`$|j@SOXFOL<~gI_JbAwDIcXMD}!JOcB)EM#u$T$$Poz; z(M?jUCW-1qV5}>%j0p}zQu@x->^3-E{kpnXAKa2-KKnewOf}O)J*v-RtT}N9(&zg^ zMD@no&)F8D zWgNK=aVIpkBm)R;bs=i{o(jFl51Gt$rHi4qr3?M2EUo9W6X#kBt9}r5pS`}Zxmnnh z?U+n@P36q~a1^zDX1&uFR`<5|cW;h^*keov4K^$?$#_;d;F56{C&CLeA$WJGn~!bS zf-vAZr~Q8Qr3bGWSAnyQR)`EOvEEKKRu&QR*j2He5RF=Et>&vkyyLcW+>B9(cd2vpx{jUUbB-R7tdYYzH+%Q{YGVD;d4M_4o{w5E{neBXRVfK zwqq}LSzZ7WXaxfl!dC@o=Ym)?;t*xEI~Y|?I4ASUsLDDqaq?-cYi%EaP4nmq=6uLA zj5P}{y7^`u5g8yuV2J=QFDofU5P1AZ4GAJ+^z_~S+Mo6dYKUxhpU%}o(s9mt!WvVr ztr_EArL@}1+8E=tQ^6Qh*B(AT;RpaY^I+9QijGS*aW1AE*PM&v>^LHuEIB4Mo{!bo zgb-%V*uDl96q^l4EN+M5h32;~#%s~mnCYzl{AZIH?(R~&)Q)dc|Lr9-L}ty4H8xU3 zIx3*sNxlXK)B|IizXqSHYgc0)1~TAr%y3Cux^U{`*4Bl-!R665K5`pkwg7FJY+Lu?(pJyKB{;` z;!Nm~4{$pKHv6hZel^0YbFc^zk-!*3fLw?uN|+QEPM`VS@BHqns&3r4o~9|zrHmc9 zi5igBACGizLP`Vx1kTwcX`DTCCXAxtIK6V?M(BrxnG84zhh)Gwu*3v6s%ZMWePL1f z+<_*j1PCdtk>DJ(x_*$ret#eKhGuM}VnGlVdDRF*Kkg3G+$zwD(qZMmGvF~9ojcXK zv9;+ySI*`sctR4{R?_eTS7g>`>j_*~3e!OuN6EIy(~(_XZyBTaHgXYgWehNIz{uc@ zRPV)d!h=PVWOjHt8WGi(y*V)3h1yCBRXQRkyxJCR632kVCB`i;Xj@SL1Iow76ilV& z?8PO=MholcEKkRU2Im|rOP6%QAhL$6%B#?ejOGY%@xBv#JH1L(B2c9&2SaX@B(j_f zOD?ZU&ZOsg%_Me6mMAX@N0xv9n5s;k7B$#5#xllH@P2=I{@mFcTiaDt5c3<$xV{*s zV;b(40z71C7^zZk#~mxe3*{lN2s+{z&SAcbXKk;)&{oL zPf--lJo609A*v&<#1W)53*b6;uyJVywybpoZfj)w);WiQa{%W_L12y5M;;A1su9oe zOguP=zY`I-$sl-);I8(c(X?(j9$(O=&dI11UXT8CY_g|$r{pHJQjW9Z09ZTBYUy=x zi{mslA|eN~3c<%~Y?F@Hb8WrL?UHy0e`$u2>H~-65FW!b`<#uupjLl6Z_^+gM zvU?x>mp?DQ;r;J@>(bYrp*%6Rqo)2JojmV+sIf=}=Q7dMM+njzb*rGtGaV$0Uw!gRbUpb$0wn0@hJrGuLLzcp(Jm zTx&hc3lc)0BVdeIWu?QAbAf=ZW+N-gPOItp{$Mb8{L-btU;r~NT0}Ob{5lfkoRuH3 z##w8vv({Q;jJ37~%iT`5yU=a4nvJM29HmJT=Vnakw6^<{nKZMuIZJAq~{y0xhMQkR+&ME4qS5~ z0k7(%`&v7!Fl_pad1Prc9>r}?&LSY^)>%eGaT3)e`JV542myzovWp8#XHIp2jkmT^ zDa2^tvfQDJP%5V_5je6{r4U&Z#X;nyS?)`T1VCV|0VFSwUhHRi35o%c(VEC@ZSNSH zcNbY}*=uyTV=5i0IIj60(q=3imE5;knNw~#Mch%~1xi&QbZdcm(&TwzQ3JD<9Fj%G zKHe`LQ)3>NjC;TR$JY?1g~w+;-Z_YM@Rm%ouqMVof%((OH8~cV87+Dk? z0IcUpKvK&1!7VI&)8X*NdKLQ5ef)Pnw(-vI{=U1HkLGoKC1W5!MiZ$7_1gM{izYIc zKJ)v3^vOqhrM&BP@AZ03^07~E4Bg_X*L?T)eapE{ z@FL^_63q{M_!4yflG}9noh>F00LSsPNfrxEANR3zyf!w(y5v24EjlM#KKRk!gR}2> z^Q#sv{mHLg4c_yfx1av1-X0=AnEEj4nein_PoMkjpFb<#k?NJ_>J>RLl zjm@~UG*>?ECAWEFo4jQ&$k?bzhx>iceZ^aS0hhTAXc#=ZYm5Qw0cS{1Z9VklQ(w4o z(Ow7n001BWNklZAd;JraU5DI3en`@7o+=*Ug)i?BG0t;?#yCEg95ppC%FUw+ZH!VMXJE6gsueyf|9w&W*))_V+0tYL{H~4 z%w__55+j8os$$23dx~xZTQiBC>)kJ&_`hEy0R70z8et|)0yPLgRf1*eC^Bw#>#oJlZX+mX?ZV0>2ZNNK#24*D|ekGcGx#)EK=L$2|E{WYUt zxuNY@CIOJKNRUvH&15}}1&0_P6pzR$xoB`Zwf>3w@BG_KvT?x@mrvEVWB>EV=G#fu zW!BawpV-!N?5ZQ#j(h*_R-q;@{ZPxK%_axAmnnFMKw)RCn#CVl7A~xNWX-SduKVGa zmQ4*>?&ozowLbq37da)-(z7hDd^&`Rs*|Zv4EsIt_t9`EnCp6608A7`nL-*ne=B+A z*Z0@w5&*L}RLT??UB2VlO{t+0B#Fyz_|6%N8v?pAyyKbw{oSA5=rxnL>eJu))|ty^$kbc6 z-}2oxTZ%J|zVO>Oe&(<^>{xf#4L|;KSJne#vBxG@?jYx4JQU7EstF^+$AV=6zQ32) z1k^F%r^=Wn{^v3aCAh$7qS2%Lwekiy=kFe3a014H;{hNLLcXoJQUvi=Erenz02e%y zO>2s}efu_*5XZE4?`q$(XV2EHTL~eWrYVXtefspJOP98{w|8`Oba!|ANUMylWQ7UF zM_OgPCB|dh&zRBXx~^+EnN(_IbkJqCg%S?n&aK_e%~egc4UT6iOkvD5of1Tl5G5E07V{;~qlyxYMQtH8 z+jCskBZx`_1?Ca}ObC?F&{Traz(CGr03p;+8>?#w=S(MFUA1jXJA{ZJYFi$coC^RT z+9e&AgOEg+V1l7x5Q2fnfaglbbqGZWL&iCTP}3;)ID|j~!MI=?V1#|wMnnknxZg8` zA|V8b;x6Gj8Ggd5#pzVGv%RaSCF*rL8ikTbhKmfJ78P1t91$+x1+_LEPn1BH?kz;ha+pi0}YsLa?Ij zepz}&L_-h)h$O;@F(HLN)JavLs-l!kQ%b-&FK=e?_gDY`5CW89Aq3-|LMdn5^O%&< zEe#ijcS#PV5ZP=o8V%dFqfnh7j1M}{jp4L|zIO*X+Zyfbx9cvu<`d7{_l940Y6xe4 zd^Hu(fanXqbn`-p0FVo_ufDV=mGWfE`*$0eif90ow&Tuh1CqNrYu8&3_nBP0^KRpJ z5?B5xrz-tFStOW(Xu(GQdhJ(ULTyb6RkG}!y@ii|`xmFQPL{o!$l6Tti30$;YBN+*@Z z=U;#GiOmPe_jj=Sm~5YquNHxnAk+KSowxmU2pAMPIM9051?MlGUNxCVF5$std5$Lm zz`(Oh1uHL}m%+2nKP&sE2l}mGT|%t6?WPwy&`B3wefGyr>bmX4lRo?HIk~&P{;3T$ z%Rhb1k8bGy%w1<*{Goxnzk1!eK^1!ac@H5d1b}c~n5asEhjTH(6&(Pe>w4LnYK*Dc z$Lj7Esi6#Ie7jotrvp9E<^EB%_V3Jny-+5}!~vCLl=nPEF{D{?JdU$@mmr;cqEIqRmYpw2EzRdG zXxqBI&rqo-3eRPMfWa685Ml(1B|D!N2qMqJ081l8a-~s{DF!06yC(|;h6vdu*R}+L zNOAxHauC?+nSuiaQjMU5p(K(4(-FBG8y+>Og0+AI*u#WYN0jtX0YXR(X-l_MahF9k_i_=sOq$#HImKes%vxsECjf1 zmTV4zqPW~f40#^$Jg<lS2p(jZ@>ltC(vwf1ZsF?l z7Mhv$&-!cADXq(Ws(hblFeTArwS-9TesRNS^~%+)3YfHC%h;$IR!lzY~-nX z9|7~uKKbxa@A}7|?Wviah~Ze_K)shg~_M_|mkT&@{-pu~WHuktDrEGGHSe3%FOEzj;eaZPP5&OA^?tJOZ z?Q@z}9O&I}py+qNSHLGi5NDPv5rFHTTf5-%=QbvSeO-dP)?iQ9p56I%Yo0&+;>Oy< z;xm`W*v5GuyLgtO#gxGGS#i6gH+RO$GmaU3Y~8DyT`my<2tny*CK{LdPHs>BSI2RH zls*~*5(p^}LSs?j$CEvmH$PTlDZjd?$hABHX_fKWfgBjD2tYb+uHCmW5R{?bc&U`) zpHQaCDovRXLL!8a!ruh|0hACDLMXzdxuGE#3}8%r6va6|?zrPlJMFY$vG~9P4{X@5 z!8A?Zt*Ww*CJ=6wU&VN2u+Gj-MNuGB8|!P^2YWEp2vI#IFaZDojG=AWE_4IYP=7X~ zgptPu0FWXWP6UzSc{Z<&$3{f9WZGUzFzLnX!oi@D%M=4ZEtyu)bd7+nYS=2dp0M-~ zA~akqh-}Kur>tacEMr=p<(dp33@|}1gPzL?B>+G!JcJPQWFc#+3d`qUs^6qkkH;g! z!&w4kRdsl9V8r(@0{~zQ1>-)o?Jz^jUc&TW`stiM?>ESeIfT%zqPtkz6ab8=7l~sAgp>uU zICe>zc}giy)aXK@Vo{a~0wWxatIUy_MzXmaQLq6Oh^3|j1d9;LT;2ZX4k6@%V}$*Lpup#)BtRH*CJ3RWf`cUGl0gUok|o=O87ZXToKr<%+{al0Lg>#F zoQqP?fd~?nTBhl_0%MF3wrv3bga{Zx!?hicdy$wLN#M+=t7r$KT*hnzlb`9Olwb^1 zz1KuDq4+J_`z3s{Dct(U^!^ziu_3Xst_I!;&oCBp#PPBg- zRdroAgr{Qv*krMp^aCO8Cwu&FGQ~~res)9eF<0C?yE^mYnoT8r=8PDgr1Wt=zkQOY z(B~-9sO|pKn#Wti)9?SsYx6&GO|xe{_2^%7O_zUXLF7HPt~}RONZ)S~dDkK`d$z56 z?#WkQH=}dD9p2FwoV%cUvi?`T^aJki-5V~(ZqUheZtRxFUbMV9smkP$s}}xc?b|zZ za{?Rpx<_1n-1J(F6(h>Kdb0gH$|lQjOai3n;Yc)|AgwbRcJ~w+m-0Q$gub%9nKP7(pb3WSos7*D{3l@fNNGMxr8mJ0_Sw0>+a%j~&EVj78TOJ5v5oMn7_Y z$0<;O>MCilivE!0ij^l%V9VhC(H~@mPZ;OC?1ohid@7|RR3V-##8~Jp88Ct+%Ty?C ztgVF*nx^^MYp)rG;kxeM|Ni$EUwko@N;!_>w`9SB1@q?3tCY86$Bs>#HdP*(&;^8$ zJ$v@}!Gi0nYZOcz<`{Y)pD!pXfe$5Fh4YsF->CSq!ywQfzi>Tjy07+gj|FKg3z+1 z?YPlsb#*vUvK4?lmxWIG%(d|?zrA@;yU^;EwA7pft8M z^K8#h#zPPWlC#b{W!@`~KejjJa8Cj#iGm41T<}0xw@e4CP(@TQOf^U}AOQ%dxUn^Y zi3mpH$SE9j+yVQqC?-=XM#CvqoM66?a!S%OJsa=6Z{73{fBxeu>)=%GS^|jxnmF={ zsWqI2TaGxo<*+*T%^yAS=J0VVlT)xy?zd)}V#8}^obbhKmy~mYA|)KvrWR_U^3=*? zqwiV#;d!jW*i1ZyP7_ifSvh9P4|p1;VLM5u>%P_{|#)rHlwmw)oGc}+k4`nt!~ zPXp%cBa%~%t05=8WbfASaVAy*fDi!OV?ruGa*qj!@t7CDm<6YdCEo3JCd!^npGzUf zh&EZNaS#$&7X4mDNCD+RZHba`h9IN_LI7(UXH+Yh7t#eO0|3C-jFUdsw)3&=06-x4 zNLN9rO@jWH_t;XYZEjn2_POmFp4;*A{omiye*Mj#o6|V0_55?m^S^#W3iq@3nkd z8E^S@!TwCufrdP|fAEC~2g_vwIGb=;P=RnNX|3{S2q8fPV+jNkk^>-ts;Z9d>8c)! zL^$WWckQ+;ixA>Bth>9rQg9}d*|TR)rLfV_(FxFUzxP&3DW&Im9qk=+=gp0UB0(+S zI4-3M!Vm~4r0`q;BuI~x3Ry={h-=%9gGwc->L@*IC2I`L(DE4oU04+fEvNuZ$T|J4Ar$t{d>1<-?b~7aRi45ARxU^OtV;|ZN{RRHAyO& zneH|D$n*KEz#Ll78jBS9*!&xsI1FGKx_k8av{&^IG@*^$)KNOP4bfV2J_| zilCzEhkg3m&%g4UYaia2HVicoZ(V)K`8C6j0uCe)imE`}^+-VtQwWe{k$ES45j)mBzSrmBB@m3e7Qh%= zuE)64btEYdhcqo9i&kFOMO}SWDVG8;y!f~a4>Q*uWbE;Gb5GG$C4m4yN+1N7+Rmd1 zL%$z_c(Qdx>6L#y=GGl^+}ubulfhIqbPZ3^16Be7Cd_bh@?OtU*!?|2oa!ocy0&$D zv^u6unui&aKT-7L8&0)IeN*IJFZj-Kr9==-JU01;kI%jmNLdb}IQfQ8WUHp2Y!XPM zP*tm6vHHTp8zX?rSWNjh`h1+Lo#Yirb$!g;WhD-;8hY>_TT6L!?#ZXmiEEQ{*#-iL z1NhQOiCu@pRF&z z*=Zg>)@MDy|5s#faH3Mz~`?Iem~>NR*7pT)o|&@?kbFqLNT|cXJ#+d-%U_wuC>l`edapu`<+ii~u03c9}_{^Ct&mssR z8jqe8o_EyJt{0F5pd8nLF(xG#4<;%-&w~&m2>CdUDFdSk_=ynWc^()?UGLWP3TRb% zg-U|zK%`YRBUZwxN(5GUOXYJ2L;xvJLMZ)x4-g6=s;jDkfq?6JZ)|)6Lg?Q&H~`Rf zbaePZiQcIVm7o28{dg5`Y~0W`vn?15#)FaG^oXu%szMkOQbHgBCaAWdwtt{sQ6my) z>2x}ub0D;^f{4nR62a7<9S#S$!_p%oRO4pJBUBZ_11=0jLY_1s@dV&p;AzKPb<@{Q z933rcZr7cETI-Vdf+J5p=8V{bkA8EvEwH~eUwG+sDjWeVt;w#=VJVEI=X`#3> z*ogxzXMgdEqn`VpU)=s=uH;4|fk0Rx)vYT&{OzM_to98XyR)!)`mAkhe;o+Wa2RU= z*4#Gd=;4mvKeWp*h|3%yB*dh#v3bRbA8z@_KYo>>jB&=KqM$%P$>&Updmi}TUw7;( z2}w=MiPy{aW&FH!3kr#$T$+>5J{G#P8cmC$jk5Wu^ zO)-mw{HO~dLkN0$M6UXpldS;rQ@3QP1X6mdEtRV z#ukDzmU;Wdzjxa9=MJvdQ=l})>WDFnFcyz@a>XB3Dg=*{NRtySovsb9cMb)LzuWZ; z0H|*EQRjZ_v>JUlT0f;tw@OChK26!I#Bv%49>niPFXg@7SE5QDr*Y*#MC5p=>a=^yCHiZdlj8PsVf|)Z2SL;Foce614sP;D-#0L_ zcg-K_8m}=rUU+?X;rW+B!#$mx#)A|{;iU(=`$r-lr(o0v&-=VOWqE)ZYrO;*6W!1) z%NmRL%6U1XPPvrhwuAlO)AEP075Mmex=N?3a^FrMu0RE7n?Oy$@d#U>f+vIH{_mAn zI}npq_CIk=7h~)PvY-e<2!#~Yp->-Lz@bIp=)L zFaoh)s3$d~=#;v|DcGD#OcB-5h&3QEm(cY%W56Z~mfTx*R6Pxtqa!7XE$QKW-o!el zz;U7QIF^D3bWKV(m(2#MsG*U9)qLLNN4)aWZ_4w3eS){GM?HD@j z%9}p*k(O#z2nkW~uiw6wo_6h(=TE1CgLBWdiUptrb%G!i0G$5TWztTk2D5JS^hN@O zkU#>2uYY>;bpSw!g<~;Ap#Vr=mr6=Fhy@$j{^X;t1y)~jTnI}EWZ&BlfA9N0tG)2{ z@13&(N+F~y^sRe-XY8co7X=8AQd)M->wnVCS#wwa;iYpyYG*1y|MmFWp=a;Au?xi` z5t-VUt8HlRd+}%AfAy$ue)C&5FZuF{rFHG=|8&#Mzv|->LBS>93=DP`8*8WS?#u}h zbSzUhkjI28SiCx#&*p*4hXzN(fw1kCTvtZpAri=81y?nA)db~7nPY)aP(e@{IxH0& zf{aK6r^ZwrC;<=_1U2%8>IgHBtEoZ56gCU&q;|5@VN@Je^>OIX>Zs+rV`~B14OSgP3_0*lO?siVRcmV?Y zCbr2*h7-O|)gBE%=!`Gie1fM(wW$T5mqPAmpOo*ZY-HYcTd6#@;AwmfH89juQ5(XNUe)^lsF@$#N`Rl&&xA41KNhjKWMRn1Mmmdx#iLPP?9AfgJj zEK71$4rEmZM*f{M#xzy;7?YAAjK}=-E1Kw^Uq(okY?IvIo>;!-1hgZ@GiXid%<@Gl zt&?yp#5^UO3(lovf*KltkYW-I231uZ9Ua}fcW)>Zs`QWtlY>?Vy@T>ay1Kdwg+e?Y zj~IrkP(pyn)}|{^tm%*0rBLkcRVvB zum4EZP2bt+^sZmufzP^dc45<>zwxtwB~G~V>le$lUC}d+yEO3T?U#K!by$P-(#G6J zKXXit%s+e2AOG>v(A<+hxBBy+ef-}09}Hf4O!~gxuT2G7S6+2-Y|TCVe`w!PY6i~-u%<$*WJ<4aP-%H|B1fm9@R?4$l}XxI$jr#488G>r}JPm zj~586Cz`r%`S1^Ro%_kJe)-aKzwy)m%ecbO71!id)m3}DvV|N}G$^GoOE!e4x+c&z zJCw_SRKH`oMHdvQhBS^NajFG_>FlUN8JA1~S>G56hMi(o7BXHuQft}Lwmgg!$M&?4 zA%JiNgB(aMC6u1aB)|Yj6q$eG$)295KI*iiyI;C{TMi$t8{XbEU%&o;Gl>(f``RU& zU)!>|dKaypx%1WMcJvPI+_1U!+~#S;zg_*~U8H*DcYpNdhUvjjKADJDWnTKx)xXu;H{o9LsHa@$1Nih5NGg}5w>+~5XuUgeX5CHp|nIM!>a>2)6=_wgs zgzLTcX$KS}WO+5VFB1JEcSuPfT=(4)jlEl42>}9}3n>9a;|&K>XgFj1eaZ$vjD_77 z<6DQg1U}CA000)0a-94}P?X`-qz#mwTXv9`YX8G=?CyhGKeYJNludHs^7o@^ z01$z(q_mT0xHa0nxrbbG?NxJQ+UTMqy4M%-o{UT-OoFd$LI??@uWbJ3slH`uAg%%c zrnFzxS2jPxDFi;-^q$Jbxfu6?0e<4hipH?LFZ}bBL2f8=xN}E%@tF$~_?`MtN(iy9 zY!V_UguerNQpzSJD04jJ>7MfgXrFg1;iUJh6`|(>J*pyX__@Zeo zd!BkkG%Y&&lJx64!AZ)N7rW^6jxC$^Y}s`C{M)X6>9=3J>qYHj*ZkzH+HL<@ zyKcv5!xwM7v{WqYT>FpCd8Zt$uYc@?ZDRTvpFbwpF-D3)Bof7fNdtgm&-GA1)AgXG8X{XT z?V@xXDiHw$8v&}Ro^*I37P3pMSa4LLU@EncmP_X~t@h+o7VKE_`%X_ZbiI)~>x3J> zQzf+UyhXDIpS}H_w{z2%AUoaF!t5h>k$rK1u1VK0$%8llU%Bk*>055tYwaF@zTbQ~+0EE;+ zvFI_z7|ENZqFIz~fU1GPRDs!;O9?TeSR3<32M8g6kst_jz#)VRf+#e7!5mL2!GLrf zUfbN*l+fb9Of5bAJgQd*LNljr{a*XBQyVrv@;|@Y@YUPCKD2IKEEd2le)Q?*H6>c2 znx?cy;pH?rlWr#GFquwGMeRsF(h*7y9b%$!p`sK9ub1reUL-+%biWp%1C2%2~cI(NIdr7$by02oXliV}1hW4@}u09Lr83B@ld4%BEGd zo_)y-DTENRYUc7wXMyo~XR-xC2moZ9`A-~U#5n(;lno#>7Fg0J9Ju&5l}!d4TAO6r z_3SME;xq-37-HJP7YQzp1JzGSz3Q5 zJfdb=E!BzZOixsA+P1b^9Cdl`+Yi+rb9!>`D3KBXF4bwPmImJV?Sp-Vz@E2LP)JsE zo9E77d~CAxYH;E5Rgt<{snnXiyXIZIdfVM!daAUlVd#;&A3x?dpI-H&hyR!o6S)|_ zKN$1;JW3D(gt4Et8C1AB0U#;~E!PzYA3Rva1PC<&&y=~b^1*U|_zATT+V^NH&#we( zQcA)+-`p;x5SpfyOgo~f)zxv%xT>lvSFSu1&l@46sw(F^9*=7Xo6-#gbwU9p&~rIJ z5&&j|fE1n-ittQIMIsr7Q1)3_NeFYXX%^esY6B{0Ohk1p{`523G^IL|&IM!GE;&{~ z%HWJebB;RlxCKvKDYZZ_3g6!T+Pe0U?BDPGGt2JjR|E4f!vq?UWI|Q&XhW3h?Jqv} z%$B0M{E4}Hf|E!yS=EYZ?alxnG+Wsp9rDtVcd+MJ%L{yi|v9oXX=NqJy zKn5fAA-$wP4ch&KBQ{kaho)~KL&;I)?qXxow#N#uxQJ~}%NU+zq|o^^8g zvAYQ7K@|Z2fnchE8Mo7U4zLtPB0@*BP<E3S01}~ z!6i=bS|EX$>v-3Ut0E=AtWj9p|3XLm=6)?%B03^Z^JSefV$4${c<8+3}nyV01=X^Cp$33TplMwM*{) z>4WRqBa4=_A-FH1u>`snjp`}@KnjVKP>?t|lgwHto$%Su93!_rJvull!!bjVIYzABj>5de1f|6oJGM;~I(7TS z`zTOADY@{s+dv4%l2CmRq5(iqO6f7?d!ABCUDw4J34X|jegJ?(a%|`a03qZtHfAk5 z^nDJH^aoRd$Cky+V-Ug*AX|=v07B_`9w8L?%H}wVs(i4@=FdGqO35duY!b+_R!H!^ z^aDXDf#;5;ZzF`bu0t^Sck{qZs=x`##>bRx3ii$Y3yMvfcl5NeFaBEWokRm9rQ8>6 z^MhA5#+V=Bva)!N<#4GYC_D+IN4kphRyA(B z?atu^m#ikkFGBzzB7sQEK%T>6(`PhoUH`U=0h9s;<6+8Qd*R8Kauh&Bcz);B(Th$Q zc85xBA3Z7d&|RHri&WL92mn!O?-D{Hg{uAmIG#ojLJ09huPG__(NO>Z&N&)qp2klY zLrw>>LY4klm1j=)6^sYsDkHfv^(Dr4IQsMz#$$megb-xh=pl`OAtgW%Xp{;r28RYi zq0nikeds^@Y%9v(;GjaOf{Bedr6d&AnUIWe3^Eu**!qg{(+Qf@qz>5)d9gsYwI#&?|q;B=0gKnch(6Xzy3mFQ~&VZ zZM%;9%r~!W*l_7BkCsMVC?|p4!uI;2FBkuAes(_HdDzvZP*gYCwc~*5hWbi?8IeFTR~S)rfeB&->X`@uT*zV|LJ;Dfj(j3Xg)GGq z`ar*}8Ues1lrkKIT+q~Lkue5cgbDLCmnbS$nPLPD1!PA0&Gg8UM!9$Ab_WRrW0(E< z?q%uc$zg3xH3bL}rXo{x)ZowqcRl>3TyhD9`z4_8Cx&rPN?~{JNY6j&xS2hw8cEJN z_UK4{?VfB34i0yl#dVvP&OK)7G0k+17QmE3BQ(1ynC*?kB7s8Mlr6Ek7|G^Mi&+zQ zZxBKp$Ds-ZWBw|KY#f9T0tqE7Q~v&9S4aV%EITM1O5qZKeRCeA)N@^8Xy5~BIFP{e z#;_g6`#FFf;)eSofZzfW0sz1WG0rF@;Dc#60Iuu#lRY8Cb{s`j4!LN*;nJVI;Mfc# zr4%28vW>-A0l?j-Y>Ml;#K7h0?huLw5=g+>ALWrN#*>zplbxWoR05EjjFbtnhGflIjqa%?>#G<@3fpUo zBi(hUUfBBT!%x4m;hfWN{-3rkqh-#tm_9<1XJ2&ju}ernR?SbOZf|clEHS$I&DpEJ z(U5inHH%`n^PH=`Q8hCGhJu?P{ijQg_!LCgh$ZR|0NFq$zY8@rfA{;iDKPMY)4nTx z;)lO>WBuOJoZ3(!EgG6<&YxAAjD7OxQUI_1dd-4VRFR-01n1Vsu*Aj17k+#0x$v-h zux;%>o>TH_pefF`(R$X`1f)hUbrNuO1uuKs?@rOU{F^;(I`sJ-NUYh z1(1r$At0(6fS#8gEkJ>D=@KQlp*9`}@PVNW7aUUsBSlvOo(Dn0Szr0uGNRGyx>o$k zU+(?q>$JFT`4>O?t6zNB^xWaS>r+ha-?nZ~-FaWWc6LKBa`Y)H?tbot%|~7Fh425c z-%HGEG&-NE%=za3KYoDq-tp6Wue{>I!;Rqlxl4lPQ@?t(Hzk@+yYMryNMgyNX}LFF z7%1Qxx3-}*=RWlEhTZd;1Jlm>_@`*CN=V!K#~vygOT+Bt3Byt>7VF%zXW_yH2%)m$ z!+(4f^r0d|2tkz1WqlU}MNvG@vu!(I7y<|>#ni$cOkT9Vkr*KWKyPnPU0of7u%;&2 zKQPcXV>&|n97_JP(kqyEh#(vp8P;_jLKrXt-95d@WC9^n-jjBy`WzyNAZIL-$uu=J zLI?waKqj53t*rqFNGSk-hp5kelLLgXr@K2C3PK2@(dgd2dp{s$g9ss%&E-AMMF>$! zx!|T{hJwKlOxe1-yX)#|A%w|fqQ9?y=FGN3r)*==$CWLW8c`GlLKrZN?w;OcO%fqg zrk)O2!;$ZIl}?W~Ha0>CL!r=UdbGZ-4xn*td1yqJm94j@Cm0M)AaoQ}ak=NXA`~G| z^5BsdePV7Xp=E}vm!C1SJ{eUJh@FzogzK7vX7A>qQ$KMh1g}IPc_0xb}-T z_3hd6of}>;AtVq|N-+U~3&EKG5U8d)CB_*;5Ca4tfPxDEScTb6jxkseO8+1j^OQd* z#wxQ=;2rQV+~0kELPa>9e6U=-GBAYyp&Tw19)9X6Ku8E>V^f0=(y<&2U{$mGK zw{Zupr8|a*-qbj^F%T?T4$F3K9l=M;t?AhEb{;piCIU*ppinxFnHuaT(OC@%X?em* z_qXrrtzNVuncbc>W;Ir82(nyi)RBQ`L@)Jh*fPZRQ1dZIH1}=Z=p<*xR1%EUg>mYw zw>IOtwuGW7lmO`!2DWDCjD~8>%oVU6HWbL5VulB!GT*U#yNE0}ZVBGohhh9!iR$sEY zdgh$Pg>K7cP;fgv(w)i|X=LV%nqVQ_)7jVWNTFcZ+!7Xu_jTLZloJl=w&{AFlt3Uv zsuK|-Xh*70Hfy;io!&fM*I~Fy-LZQI#GqJmOC3`LV`$pEwlGBb zf(-$*3+bNT5w&LeGW=QdZqb)M&K+O&yMC7DP>B4K}5uqFwv8bl0{-lU7Iv{S-`zgMm$1jYrOg1|_JPZJw zKYyO0D6Zpd-m=9ojOyy@a46&t0}w-m{sRq{z8m{kPykUVmPSTW`FwuP?8Cx-D8Ajh zi^WnhnT$oFib4^B2w{JO`}Z3@p4*EHAsyFEr!ylXBjIqkZN_v=NH&vc@8}4JBk_1u zz%cx$?RWfts^R4)p3UV(MpC6xY4M_knyxd?+q8Kz!6cDPL?e+yuWadbI^9rTU*Av< zr0nnS9~c~}s;a7r#dQ5pDjVmSOm=v9SO~Fj;exWV>AI1qt`3KNWkV37L!fN3SSpQ- zq;k33VY6mMV^Pj|M|(%UP)H^dv1n9LltZU%uIr{Vnc?A)U@$myW*Z?SpUdsqy*m^N zSI6UlKv~)Tqi-1>^P|t@^25U;rBZ3pqJ_GySDyKoo3768ev@$&i$y}v{l#_>jwry& zcK4?n=AVAmCzd|-*L%9MtzZ1csn7l4w@>W!K6>f(M;b4G|GytS_N%v^S+mounQuIN z&6n4D%}v#H)6V$DS7+RQBA|4cvI+ZG+09>uaL;&hk3QwWC^vMl+cqC>Us)TQi&)YHX@C zO?OY{Ft@Q_0ut%Do~ltJLW@O{ySTbemw-WlA;6imV;4*$WuhiN*q25^OH?NZh6W)< zrdeugZWe$K4GswgBmkQ=JeS8}(bF!wxRrK~ zn4vkxUo(C57oWf39xDbN&lMg*9OwbPFj|U40%};8q6FQLD565vq5*(|o&=^w6yOjn zl=_BHb)7Oen6Is^9U2+Q<=oV;XXhd3ZXjYLYC}UkxiimPLi9n`qYvM|Q&WPPrsZ=b z2(b_VBSI*0ykd2YZd#US^I0>d)zycA?(ORAu}lj}VA;}hkyYf<#kyih>|!cw>xd^D z1XSDPoI}fEK;mFP5kNYQph(9UWzsp%6__F+7$yi2Y!+OC2>@gHaQyKALg=sXe5V8n zq(9OEApI>cQux^(fIsp}Aqi0|+e8=vfB!QC5I_lJV{4MCa%do1%$iUVAOXTiRaK0s zW@zCUaqU8>;8`a3TsD?JTJTUP@b=~%`wdc3GS3?t8tUA$r&uhRrdb(N_}?u4TUvgz zLZMJ|b8~%Ntzj6xw4BvQo67D0OvpEzQl5XvBB8mQp&l z-QCmE+uLVZR;g4f2gdu4h(@Rk9&jucn>MYbCYjVU4I%`jWQ^tW`RzM)777K^G;Q1d z4;rm1MH`0E(9qD_)EEc`ebb2$!ZOYFj*gL$lx3NwX;s=Q|IJcvxbL))OeUwbG{@s{ zMOFPiXP!4aJlxT_r&KDHN~J@hY!G5XLZM(&Q*(V?tq}+S37>FG61^N=cAG#VXKHeL5;V#Zh@pD({H4|JzrBScIWY%hW*o=ypA8`dRTR#7KA%@rwNS|K*xl}V-iqZ%aqj&;;@&&XuIjoMUu*Au+C8_= zovt=BLJ|lW0RluX#@N{4g26WKaonFB=lvXi65DynOB~0ElOHj5T;qnji5sS4I-&@K zgbrW{d++uBICn-PAsb=CWJ@2FnK^fzz0W#(uku~rwP(++Mxz;o0Yk<) z@9pUkg8%M!cl9q{9>?+0B};PIY_V80O~dn>d-u&O>glOWPid516aZk_c1+XCSqx)s z7>1n|h*+Br$A?FkENcTJo&s6wv>QRQI^;XH88kfCaqE@3W1`=zmZyTaDYepqQ=ypg z1HV|zR-4myiU*2~?5dd#F6k>Y!-`=N%K{?vV$VrC0)P>-$^ZZ$07*naRGngH7F}Jb z%$QC#4E<`QDiF=I9fpyT$}~+SW7FYoIyEs`t2G*2pe;DFR4^R^2w-Ne<5}H9H1rhXg7AJ;- z>FKC#Q3^OsPL73flev`cB;d>tu8eh~<~hucn~hRi{;AC)X)DW3OQR$XOZqyd$`#A9 z1k;siQLO~&jO$v4=Y{oVGxB`K7@!gPgbH(cUMw1;`>Oy-Mp7xP*Q0D+n1&ttP1`ZT zP}(Bpa2FYH8A(lk;BymGX}3|YBWi9KcFOS^k=A+^Lq&)!U^mQm(*#VI>5wStk3)!v zy!D1?rGbERuCzpkvs{lFfdMjxI5srZ-c`^sA_!y%8VDc=LerwC?w2dE;9M}CBn)&M z0Wt&z&+8+Bh=ytQ^!9Z3bicgV6hwqpJ=fg!$A!q|vS*xe#>{q_>hMt%)&HZ#Lm26Ah4r zE9Smpm}YlRPgi%>|A4Y_p2=p`ty}j$q-;)qe_!9SWw5}?1|WpU7xHJF^*^R;t5=_N z(upU+!YbSRK{5@NqWW{S;t%*;Of*^h4s z``=9VB9kMjm^fn$0f7M%qVueiv%7xrmCye7uENPz{quESuD|0i(@v_=2)JNcht-Cc z=}I$Angaj=Fk~7Ll~hW`K*+gar)|&kl#=DC2?PjyO-NFz!1GCKWN09lQX@k^G)+qb zMNy2%7#E01n{5JML^`pmDCudgfsjb+?TA)PJ5U5!;?*MAw3vd6%r*De1(o`xHBV{x26hYE@ zLD*brB?JO$Veq#0j2AR)i?2SlkV;c?ra4pbw%qy8H*73VRWveDY7(v7CqY&POp9#KjDl1axTCz48~GMTh#nukSe3WBK7sQZ2}&%Jx;CvI6* zCX-G8SaUz3lxj4Z&1O?6nZ)&98qu@T8AC)ALb$G*PN#*K*AP%^&kySLdJ;e)(#hSv zv}+E4sg#pWr)}Gwn>Z20aolJ$JkM(pbi8zH-ufFEA{vH~PP^{&l&$G`jm82fo0CbW z%~_-`01#0aM)i8b_x+b$+0w3)N*$qWQq>nk*;1)gCY=_>5z6NKLA_BA!CUNu2gwq#{-Q>GKPR6zv%RLz3&>m@7=QYS9s4Tg(61l=i?^JAYVPScc1!~S0Jv?4s2(XI)Bwmx zCzN}$^!5mvr0+F_A&8WWW5yW8k*ceNzykmPxM?u0V**7)f$sr;PQp$^0LXw5AOdO7 zKo&s^2t}%M9$-|Kmsblhp!jZtN`N6F@tW?6XG2b#{j0t1_K)@MC(g5jfR%-3I zcCnCO+}rCo&itI<++d7FQN$Q?UDpqzQmNF{)&1Z@4?g(lcJ8hrP+_AS)b=;4BT*DD zTefWVNhi;EAu?u~MiBV6Z7*B0v@KuoCWA1J-AtxhtAJ!m>xyiUhNxLTG&Iy~`UKLk ztRRq4EW_t2+>iheG*vEZn3fL1rUnGAO^e#wJB#^_z59m`9h}gbgLbCJX2Pc6L{`?R zmK!QynlSL?(7~!wq?MCjdhz)y_iTHj;?SrH>G7;!z1;co`R%kYNDzXg+5x`%{oTt`Pr1p z6|Ir|%5Ny8L&jt+Q1w`rmRL&EVj1T0PQK(AQ4lu$iSb%TaS1b&;z1PoZVtns$z$%= zX-V2-OvawWoH#~1V~1WO4BpY{WO6cSV(4MUEuf{floONVQK(19MgU{W=E#kinI;n^ z5hAcCR8lHrzy)I>@f(1Yo(r)Ofu_T)2>@Dq4QbLa*V~+su_Unva}?4Ed^c$nJ*)7@ z5D|6Khesu8azq9UDF{QYG$JEHB8>#kPt6n2;Gw}Nj!UIdS69~@N7VB-sXuPC=BpI| zL{VI=R>sE0dwP3Z*9Cx?>dg4~crKqW6pDsnAhx=9y(H3!W{D7pl+w*+W8c30*=(k# zrzg3wLkABbVxd?p7K?MUeyJut$B#?|Q4~&3PsdTbWa*M5buuwNQ7)HD?d|RDr4~mN zV=vLX=hj>Ukd&%kukGHwr=z32t*s3J!Y~{f9I_oJpU+#C`EpErZsk4C9~~X#j4xTb zB-zS`28Y5hY%7&IJ6~R9i{rRjt&WY2_4M?l(`f*x)oNp-W4V03P$(FNfryN8#Ft*# zwAPJAbN_*ZY1i%P?MWtn@W4R;D7Li~i-nhA%?W^Jl`Wc{o{q-Hmn>P55Ee{MOioWv zmD)Q>rIKO1?8>%l_nwZ9_EMpDu#Aus4&e4;g$WF+i zW+aie&%org0%VdAhs0S20DvTts$2A-^PL=;hiwM{JQ9pG-{hMA=iJW=)3vo!S}LtH zC@>5|Drp!-XQ`CbR$a=FYHw=9!LD=7`A*QXvPA{jS=W|c7vqX-#q zZ*O0*;)KRby<9H4uFDv+Evqe8JTN?@5z^@tHo1x@DNEO&E46yVk5W0Ky{j-bT-5;s zCOl7@rZ5blRNx0H)*%;MSgP4d$X`y2*uT@9A_c3S%#_0+PaZG7N=@QHY!Yd;OKKEtQJX$h85y=6 za9!7sI8$xPNO8`Rz7Ub3B;W+dTD&_+_)2M|bmHaCSw(Xg+r$n-Y&9XGxgJ+76(@$R zqBGI}pp#@HL#C9RYvoGR`uxP8OFo5&TJ18_(H2&%R-2rfy5NEf*lcabOS17Db0A_z zN5}B+@bvVw<2XvG$*IZyfq_DyumGal+S+=17d`UGBe`5Il}eS%WvSHKwQJ}5c`uV_ z0O;uG+_`gSxm<2D{_@YdW2_ENg0N+D)gIFJHa@6E75?tE+3%rcKpqHJ{JVx3PLwoquv_-}kTo z_O=;qnjAs=zxaQz{N6`CeAj_cG0lMy zQy{hGj3et8@VWEdb$zx{@Uc7Vw+(94tzsH@arSf&I*gE7WK6(O+%)-R)l;gyn$2kZ?XR@FaVK0$2TioiVDR7!V}>x|uo-rA6t+FHjSEz< zQ6AR@lZ8~b0x&J)hORa1z(@mgQoK=bG7yeq8wS^!_4MZ4ls#1qqJRj=N^#^`D{`DP zXk&7$5(XLoOoJ;V&;S}3GE#&LRIDiJ&5|IiTEs-4r6wRunpw;iiV$f)M8*MI7(*b6 zqL?w%lw=KwF^14e3UI~|nM}Tjs9Nrk)*3h$u~rGBy48XK^ih5z5zWlZtXj1SXDfkU z){z*R#bU8qt!k~~I8LQp*L7#D(U(~?0AsALudiOOr&7-3;o*EfJ2O*TU}eka z^OZ_PYo(O3Z9AP#FQl>!3=Gt2b=OTzPnY}p`d|T-t-HH>@7}$go$bCKbar+woU#EJ zhEXb&f*`Og)A#)r#&MyPt-rtj(4j;5e186SSF}&vapR58)wF2}1_+GF+VIu``SllH zWSS|*mRvX6qq{!$nS&>sdFJX<^0$BEUvGbKKd?RmaLlN8YRjRKM!l&w)}y`#lTY1@ zedl&HpZN4ge=?{}+3@R6-uTo0H^1q;9{=FK|NSq+ApY_d*jc;pr}rJ&I$eEdZ+Y>? z4UgV8^NtJDBZGVI|J?%zs=j1opdi$mgyu3U;>&u|*REje2NWPAIg6zCrPjbjVkK!H zy&{eOe0KWuf#{$w2P>LFFa@4av zo!REJNHw1MumAYmh8>mmo`DN5I`1QY^M$1atE=7KGRXVOzq?7<`L=W>WpORX_8bHr z9vqzP;Kd+{hc`byd|A&-y;(TrlvT^!d%pd{NvqIz@!PIGfB8@D+&U;H+7_Mv-Va{5 z^TC@BV((dN*6=V)**G(`_ttNH%U*lMl^36y&KGhPmKL2@*nU6b_T}&ROG`e~!!LTRmHg*eBL)p9bl zRtffkF{YFz-OA51feaV`YEtvwpQAzUQ50n|nU@>=dUy~CA!gq;l_cgDVCzo?0;E!@ zT5X1if*?pa&H@~_bHldn1oI@NOs6xnfNPEbhG8Ud3Mr*&SqnCC1W2dTVHgn6!Yi9G zTgx^_NWGBC=DKdBQf?_*Dz$JE2e2$Fj$rnsFQvQ5?tC!YZ5V zx?vd3hW=Z_u(PYyzkbcR%t*3DLI}=v9L18Q)23-Ur>yVn?!wo-VI?s1CU%Ohi$49i zccnynbpdzw1lHag&GSEVjT}R#N459jQ+Gdf|iSsVH;*wPt=AyAjZvXig|L!Ik z8*PUCm-D)pU;5E!_W$I@4bSau*tr#Ny8M~DPD|JNN@=P+@$IiX-jrwoCq@7uxIQ^$ zzI_e5d;klMp1o@XfW+4ZBxFnoLn@h3{O$ej+NJWzAo!OD!u^w6ORy0y=rBHUmi4Ya zXZxuB<(A}RILyM(id5-Vl_AWtndVlFD50mt1SLGDDmY7&HFs6AaWf@J$E0En1S!`+ zj*Me5mvd98Ia}&*`cvy9(>eD=%d$>9an&UkU3AWwXYAd*XT#&0Mkl9C+i^2lH6upU zL!bHLehOhqXeT!eceq#IR*2f;d=e|wT5vWM&NP3mwp~_fDS`z{2 zFx1^^)-9WPV)MbFom;o=n{F`P92%+&S8IclqOGf|Ip$vV`ae58JGFJwzI5-}<*&H< zoV?N9d&*VsyfSs@v0LtVvJyH#fGI1VFD)-v_ustXcMmttdhx#+C3FMnUA;h>Q} z?G0D0%TL!ET3D#0aGkXBqcy9RpL5PC=1?P!2M4PpZHf#TiqJEpA|+!+a&&M^#pu^# zzZn{7NVf@YOF#;mT1k!|7=T}|J8ob&o|C3bo{fy|-S*7RYB`os7+-Fl9Dx+qT`PMl%(^UiYS_Yko5(0<9Dx(+X8gq$mkRDXF#6N~u{m zEdyWxa~%ohbhzbGaL#7S43Tk88f2{FSSDrX2!I?RNgx7nfo>)xOu+;*EMcU$W>RB| zY*z@u1=j>hNdh8`tpqwd`gD;}8HS)1hJGP_Bf=bEF#xs5^A_qi=PZfyC6&@Z3niK~ zW0=&aYpof>g`71cSY6VGr6-+_7i!Iu{=rHqA^3t$e0J8e5sv>cWfOwa|BSNHf-4&x zp=_KjxUwD11d(s<+wjmM8yVQ|=GAMcI@6WX#=wePW6vWG z-FNpde)_=pMW6V~YfkCm8y~#=yI=dxEgQ#2GF+W=&YF`t?!W1`w{IG6yX4wpJ+=1K zPyN{^K0rHfe{>K3(C4pv@5-#r@w|@I`egy=Wz+fflO6_P$FfT=*f2I#u9x}^<5itj zPaBwEAYejuYbx>Pw*1>xxP>$w2<1KFApiiQB!j^?W57shtrcUeV8baLXgK=2Q`Joe zjPWK;HuaE4zu50TQwdGNb9$Mbn(LEsI7WrPr+#quKY&1-qag$`jKpiHLDzxGsdEN#n;+r%i~3#n9w>N_a>$$Om3+d6lu$LNLP?C(xjO- zO#^_m1Yz2U+GN~zY|rz(TBMXh#+1~74mro(#cf6^sLw#7tfz*(W-W9xM&!mwrV!i@ z!XSt_qG_>?&J@FdVOS_SO+P4>tT;3RI~#bcz0{GmeYoM;ZhG0BId(+cLnY6-qRS z+oJaDh7FsypM3EpS!e=tPF#IjcI;>G{EIIin9+N!(%)Uio(#-I zi&y)1eeG|)bR%RIov`kTGeJUtr%f9GJS64& z5=f?V=^#=nWX-A!>srMo6Q(9*r&6_ggiLcrf-xzjVH!#*nx%@?lpvr8kpU2qLOk5Y z;V8XVidxMII45WYu^2 zGU+|MaKaG)a4v$CG$~pr*~Gb+op{W-_!B3tRn%w%wwpG^(c#$V4@9Q*{D$HSs%)b5 zKDLyNVBv%_#uL#>N&s9?WdlHDN*E^Yn33xCfztZegR zG!#^4>bWbfT(*B(U1iv_w|r}3^XylePu@Lr?eazb-d!Q@lJ%i28#ivAtVUwnKi>bI zUo4v#8yUlQzxT4O-@9p~yyAS5AH453d&c6Wyc*{(ZSVcbj>RkcfAOiW{OGZ%_TrcYw|tqG|;IIO++zrh71^> zfS71^sO}uAef46Ml3Ph2D+#y^2#J6pGfj?+;z-I^=O9>S`VP~i zl#k{}wtuYL4C^z7DNM^$01TMY+U6Edm{<|CCaF{uDbqHxJywWK3a}nDRjdHfam>Df z#m_#wmoy`d^|F^EmNL*P@zFz)LNtonNgG~OMGzXUa@)9Ly0IU2cNa&7M>sbHiSlsM zb*WV9cGEedkj@uekdrF4D6EvHr^7I=cwV4pHvjwIePLU5^%WQ7x9^p&{=_F=-Dz%K zb?FB_%rXY#E_}m^Tek0>@na3l6u=lV7R52=NC>1PAmfao=BqDw_lMqk@?HOR{jSnm zE?W8@cMVp#rGOjRbZK2^ok|7C;)q;kMQN~CD zRLrE(9F%Qy$1#v=WXcdcmMWETNQ18x0wQp&6i^bCr8(r^e4}d4A(;IWF=2OROloNw zrq{Q0_{DzZG`OOfCG+-3PfKaP?$XcF|jFgtG4`vKCkxp1r7+AIu$8pOYIdY>T zN{U(79R115J+Ku3C!(bGxOEo`AbRcwG$ozjbprB!@xrM-y#3*)o9iz-D}U_X_Q#gn zDjJ$4CRn%>;VeXf^eiIdkDT})DZCXh(?m%$`IMT&{F(5@;h*V~2k($)8?A@Qd?964( zV6p9vt=;b=aF$$rGioOcF0Y; zz1N<2!jc)|P1fXNJ4U0DWU7|$DXMj@d{B^9N&Es8u$wFX&+ZF$k4YPhBLhns<_-%Y z032%KXC8_yWIh@i2??2I8p%TJTM_`*&1sB0I64Ce^D_qXKK?MciVMRefG`M2OPno+ zovRs~yL_(TS3s+J3i8D~p$4WIg6pQe+TK@M(>*CLojS?`OtV%+JB6`ZJ%H@Kpi42q zI1o?*yiXbcF~Pw?Uh1wrjadL!j2>5#~g(1I=1bXgZ|~k^DbI6J~2E~mWbMG#+I2v7G=`HwUz0b zDhj=ZVw`8%Ow*yjk6o8f%*1wZyK%^Y2~HEK#h#;4x*@5_ex8*s?52? zJbz|iGmNEDVYOPW*7yalIsf1jPskK*{rSKDcyo<_kABH}-5bw4AB!!BXUj5hqd-+4({QFyX);{`QZz|mU{RfAep+}_SMsvEo zyJPu4e(%niQYk0o#8f?)nVe`}T`IJ7opE~q;%*1`VlH#>%6_x*pm%8N?{-YRrMr}~ z_0;geTdDVxZ+u-jdi?esfmobI+h9`qq11y1nsErGBb-cHM|^s)9)@17;Es&eQmH~S z@<5YmnZsjMQb5`WeLZ}@2O_TqfZWcAPAPirJkOprZF`&K9S29 zDTf#Ht}yw;xQrqhMv>NtjBCE zWMon>i@-V8L`#JQ3SH7hdtkb658q zf7=TpKsF0XBuISgg>nTN|AdLlpgwYN#0%96en_HhhzPAt-^aD)kvD$xcfR@LSO@@_ zQvcbPTzdAJrPd$SO@{~)CgE1W<_jtt`I~(M_NU5vXZ~?@LM+90&()0d%yd`O)Jh@-|N~8fmG$uJ08Nd?@Af$$lJqA z*CKK7TQ}Z+#z$V&aok=^BIIcE0sxS6VcYvRKB6yvO}aCe&S0%d*lqXpy8g}~PfI{V zF6@lW0>5L$Ti0gF-}~0rZ-1uelb`=ganXsRw^Zwj1|R$Jb-%2>>Z2b&b@1oo!?axR zXl1_qFd$}^4CKQ@&su2qni$YXAa%@#qmhhkRF<>TvUYKl@WV} z^QIt%j5Dd#)_SaG2$Z2&3?OC^=Pi=zIYS2lW8w#!S}2C75CDLYmc-%IthK(60#p6= zkk_c2&@zVjEG%6S5zew(&nNgz?0y+Xh-lg=DO4QB^L?-RX~Fpn4gy->VeO_}MN)&d z9b5VJE8VFJyDiH!0Ahg3;RhiAY_^y+_czA3#RX)5220ApfD$G(5I$(Fr6d3(MRkGP z#5e|uHH{9{YPD5YzH4~nJ;g(hN3vMzY$FD>Y9o`$)N2i`6#_%xj%^q6*_xa*O@k3Y zq~k_d?6CS)*ar^o47`YOL#o)cvwjfSDF&zqmUr$yG@=Ow*V(+$(d#zq;rL*qHd#k9 z>OsA&Pz24I^`K*E&!R=$&px|ncyuy|v?fHdfmOUzo`t8Uu#=q3N_L)Y|P z_^Q!;%hs+R`t{#8%y7%zha2zy(Di@2d?GTI_7rFrMd27>Ve#p&{_vl7tmx@DvFEIZ zzWujj!LxhDmVWe_CEt1Pm!xGIQq}8C$2DwjjaDM54L6a zsRDu4GW37~#hB1CvK)hh-Sm7S6b3p)L_uf-s4=KY(i}q(faD?KD=dhCRxa7uvhNuaWCI)aU7MfWN)?pYT#{{ex_z~w!OG<*NdhT2#0syU4;t3?MF9c3Hd4Grt zWXPn{N=nd7E5!|_F*^31)B;Z&&(IUk-2Js5+8CH0Z5n+~;~x4!pJIeio1 z3%lk=Jn=s;ajl{-lmx)IVVXu#E~_DNBtUCIh6F&Q!oY8Oz?d*hga7^}iY-5T-hW?k z;wr8W9cZk%_|0qk?E~8${MFaK8UMw{FJ0Y5T18Q$G%+qr(>%V$jYo)nL93QP&W!9o zfDKJrsyK=z5g;-lm{Lk>U|d+1@xqdiTiJ+o97R%TL~dFZXQbjdiX|Zm!!!j404?Jv zmWijBe6gc{{rf*a33l^1R-h%CC^+!kzPR_IH@xOdi*eI5numV5WvcM*)B6R5p07>I z=8WPX(9AS5%U*j)_h*0do6!s2-)kMe19$8e-r1F}7^qbZXCU8RRAb@VYv12B;aWZC zU6?-f_1pHIboD#>vT0`I&VS9H1tYtcymnRCsATd3r=PKU?TPM|9jH{J=|^XO=<^>j zf1N#j{gtmpHvOMVr#7kg{M*OMU*0Xw`16aiUwi-ET2r1gU@$f6Ju$lZJ^%5kzdT{& zV}H3nMn+1F`b_}GbO=x*pwgO1&vGb$=7|YJtu@0I!C}kRNoY(NXULJ1CS;1G46tl| zcFO##v)s-?^wVMQ?kBA|P%jZBX$eGzn8d9S0d*4D)cPY-+%t*xu( zY0E4IE4fK7SQJH$YiZK$ZKbF_wcJsrVa_Egj(RkK1__LDDsFW%SquIIulu`#lI5jzKW{GJo z7y@H<)+m-z2L{WP$tVa(>&Q)~6sb@~wy+H=%{bt0;EpLk2#BF!qa@(Hi z$$Lj;3@10bXUl_+1|~cG>bI=}0A0D~#>dOOEBkjn_sgF=j!@q8#C758F21BF;s<|r z{ieaRC)>YRSXitfB(RaODmN0h7y(!u$3TEAX-bp$ADS`Lnxs?-U3;r9 z`YbNtd7&(nQZbH(Fa@JVqe&X1R0OC=0|7Ej8X9Otn4|!c(~_9h31P5CBxEQIgGlR` zNGS=D8{BeD?i|Y#Zv}FWYX{S+x$T)<=~J$L&uh+tddJ9tZ{7XO)QSrhy$IgGBkil> z7yZ(YKT34mIP{}${=j|Z2i~%_`$dbJ`zO6<=>$~Ueg7}-KJCmidynIceW4p!s5L)2 zYV-S_IDwwtcIUT$yE&9`#5%5c&wI~amhr}SJ-Tyd?fTPG!RV$f!zfv=M5SXb`yakx0%oLo7Wc0@sdU1!&f4_#TlP&|vMRs*p_}jA zu(PQoVg8~wzU|zTyNy4{mU;9dA5REr&U@0{lfU}j4G#?#3sw|RM`vC|e!bq5&a!Ji z_?}mEys$rW)S4et*$C8uCvU&$j*Zh1vr^r!f8YBCXy2_j{_5#54;jlXI{lh!uUL|f zx8Hr^4R>s}vzCsc;_?gM_pVn5d+xvC*N5Kz;kPesdm)U}{KrjNN?qA?>zDuk4VmuM zZ+gR}wR<<1omVZ&^2Xr(*Ijq(Y4854iFHU#c=1tX(S*l-zT0+IA)biI+j#dKnPSNZ{B&p6(wg;Wnef1kKYrlWCu-Wc`R?2Eqf_~nr{*TM z+`D_^5clre@|8Ot8D4wdW$WbR*FXL7Uv95ooX;45pg|K&?0#b7fzi%g-`p@Bq7Z~! z&ngSGtU#O%D_7t06<#DQP9Ff&BoALS>~i+F0xkJkp%V* ztusv5W@dn80W~rVeBVh?AmuS%3$1lEh#LxkYel4EB0?>Z0T6GM9V*bMnbb1DGH6Y} zk&r1L)7h!%ienqZ zxaD#LZl}1Eamqo?$*a@I^rYjmbSmZ7o2itg7*(elT3QUiNjaykJ&7SqOiVrZ+@5N+ zrZf@3Ol2llN;A#?h%}Z*cmC+B|8RpMB@?P}&Nced`#*nW zrkaYOv$VIn!dI^9dHB|w_E&r~%`md+jksR*bU|e@MK|vf(=n-&PF=NQ+b(Y=L}Y+k z#X1hPVOoky$2Q%(sY&`+HM5!+i|VYHb9K}t;(?MVEWr#X#mQix!1J3^)5CrcX5B(2 zpPeXAG(BH%ZkeVRMchVU3L>Urt(E2m6HGLlK`do9ZDlj&_^6KRVDfZGzKT^sK%(Vr zgZWt`6cGVJ3p_Ym2YXZmYaR}f0ioCMRg0B0c^MABdb1JZBi*&R4K;aT86rUx#YwF% z7mORsFj1>xw3ww97wK^w_&WB=Gc)adMXoj3xz1erkv$c8e$O$m7{?rlNA3K_FZxd% ztp%UIi6y7tiwk0TmFY^|J+;GqanY}Ya^vtIdeIY~O|-y^gz_9obu%aZICDl(^_idE z_=q>Ffy}T^z3|OvEKeVojfbAz><`4i6n!2dd*smgsnyWx%p51z4fH40wY zcGuUp4-HuRr*PGZGk}21bk8NPf5+*|GkYGt?asUIKWU(QY4KPmJ>rp*JU%^dx#uCq@_Z-3y24?OtTi34xwaDM+9%pO)p$c7g% z@n&}bB2u-?^v{W(GfTB zyfvR24?T3><}F(oVzM>Q-+LM7oA3MillN*ZHL;zW@4GQ+z(+qV5Tq=`N-Xl-j&X2ORS+U{p$k_;2e>T74S@w z*T@*n*6YoFqm@!8qB+V#(v;9CAZbn%A>27#JNRUjGW0o%#W{=2_=4#AhrMQ_mHJ3} z7jnV1CPdD}9K)!bPrH!t`$(;U2!W7sjRb0Ti7?4=1LF*m_J=^ENFX3ELSRuOr=}*| zlznJq=#^GEXf|e4e5{6SAf+6e@<$su$s!E|2&hp<#F2B3i~}JkrIU(;@tu0;Zu*)Mp30>+g`ZIx6Bx6YgS}}uJy}j*SogKBA>7l`~O0A&? zEyuP6#-WVDxK?QbAOoS9R+18;3&D9(70*y0C_AMFPAa0^pjed0f{<%w8J4XwJg8Ng zhGDt|Q~B7@p0R8lP6Ux3xsGE96a}NFx6N;am5IprVgO8MQvykFW?}xs_1Apj?XSx_ zP#)g)!+-zWlW}p`s{H7_K`9wyWEv)Dnkkoe?4Jxza{+L1Zzs2%wXgrw)u;76eaE*x z|Eq^07DtM=PHzO_nDrjhWJ-V#H#D0?S1eaze&ph@&`|iHT{;Wx$nF;F1TC ztU&BgXs2>1F2LYMM|Wv#yf!*k&g9&bs~A!~(^jdKD^;HxCUPFBMyAbT4Qf`KmSuz* zV;LgIC?F1|(vlgR2xqDR0a+rdcopem7$`euSf-95iGWfmDHHN5#u%He5=R77q!?hr zgEgms$*z;M6G+UmgbGW_q{J@46&}u-lcuCRXTIvry_|^1I7{}uD2zx0L$Do3stACz z4o&k|xZqZa^Kl)wq_kFA@C3lb1ZOIU^>HVhk~jOPQ*U7cDmW`{o@j#Oo%i8uDpTX0 z)lo`WFX}=(Mr!m$O#ImmU;o;VpAMpCJ>2@gKm6m;iLd*s4_;n476Rs2q5+O6{rE(4 zr~Axv&W>h#03b6vO4hM6G0z`!eKzOIp8fT_p~?p~{rJYa_D$AVTKYH{wf=6~)BYFjG@ z)5;|pseB<{a!=^7t$l7=spLBS9hu!jHATlf!RAYU-tr!6;{NCp`-A*D&sg1A6aXL_ z2X-AQpLo%=Cv=wp^5>mW`sceIuUy>=0K&-?3Pqk;(VhL>fr)rsrZu7G&*l#)8vy_? zVL49903cbZG|5ieKtN#hoq5&j?f-nsv;BYj4`<~C5&?jnx2akSH30%}#xJ_);>}y0 zI&k2?x^?T;tve$*`{%D-QhELS1u;$2GRc?a`yVIVfb@&^%_EKvBZN1H5$UXMX-R2tr@?F&;d z#z3pNN5&Y)+1DU}2PVEZ=SRFMIL{`VL$e{G=A0zPr0<>%?w%nb@s924UtVdwf0@y! z1YdbvDy@l#a{;6v>0*S88wLVs1q|6-qqgM3g<*1rpec@GVH(`vQ4r`P8`FBGNvmAM zRts|wvwd?>6B(SRvu+s0?cTUk#1z*p^AK?kaI1-Cv>0aD*hw2?5YFm~fjVkYehCwq z)}#OdNrNE_E_fKkhH0P%O&}>25F6=?TyhmXcU>lz4dSTPl!qfCvoe+kEC?cIIGRBE zVK5;DL9^ji%QYo2pU(&zY>O9C`K%i=suxN|I?Ft-s1uuPqTV=?MA7bD zyBp1hMkZ2bI>WPt^wd~c$AnyhM#c@s8G+Oq7-K-%$=GIEC>hJT>RFV_q;+FzhB591 zSe=2GnDTtfps~1y5>o9(I%|88Ur6VNhDUX52MyU?%1hOZtGcVJYkl?VZTH>nteF`xf1GgsL^)XXRI4eO33Kn{hHvWS+=~ zU;Lum-FChZ1{V3^$NtTCejG*_CxiOYV^g31^&k7lPj$}^q1KvjNskb-w5&IpOAAY9 z&Ym}+c4ax(9@Znhwz|fQg?C{b1))|Ym3i4{MD?k_Vv5RWC9EOKd@?MRP0|q|$>q&K zQ9!K`)|-%JsdHwOrh{JUy$5jhdZRb$X5}!7O{=37nY7HTW#_yvLm>=8jALUh7Mav* zH32*5+bm&3-Rq7J!8(gbFs}ck00aqu$9s^7C{*LHAdDTcR|UCc*A_gkKSd-^RmZu4 z-K=(m9ri4kqz!7Vl~RDhEZ*4)T?{cp3Zb$Pl`Z_`OedhqH}_Aq_}r*ck?MfEo~3pxf@8Z$usL9zaV3 zNTi4mkS(wm5eBRhjafw4i-=fjt@Z51vu9>fh>dAf5l5Y{7AaDCpejrb5+aI@bj>$L z$;joU5KDnt6M;%o8-+0_EJv=P6*;)}kJ+1OZL z-`-A=EZ4Eop~|yTn3B=3%!?p2bBog(D+3)WQ!`L_r4=%jN$I^WlCs?j4j!FT^>p>( zu)8Xuj-s~mXiDo9V$_N-!bYuGt3|8ldgA56%1WNI)`63JFdWRZ8x3v1Q?EPfbf%38 zNtp}hx@De4apWW$rKv-X>aidYQM%oC)(&u(jFP|vnJXt0DPFXywTxG|)k|=Q^G6QV zvvPiZp+6jK_lAg}_q^R5v^vdZyJ20bL&nlaDjeh`ie~FeUy|rXJ#My4f7p#XX4uQE z_05^OQl5;IX{lHTHA1cHu@)Rz2}-M6DV}pD0-%zN*S7|PL6#+D82fsIqsZ1{Q#zHT z0099@Ee_(Cuo;6A@PZKA(u)8HI{^_ffi}jJwiLuFH+j6#$d!K*A)=~WQ?SdlLd2^+ z0RXKvg9v*BoZbnWngeV_dJXCJiyIlrvX5m&jefGWhjlOP^@VOzvYah6YI}35k zPsb+gEbdvX?SzQ0>7K9DyWB1P8h>s_XFvA)pH6l{ggUaO-yy`ZxB zGRrwQesHc)i{j8=0wSDjURV!r`;qs3^K^RZk3aEDH!V6M-e%pcjmu`^vCn=sY3*O? z)Lv*TSA8zmFmMJz3Oh3k%LiWZt?yp{&%g7BpTBA8-le-2;WwW?eQ|I50QmwaMto5P z5Mbcv_)A|xv`jV%-U+K!HWo~5!z=x~M4Q9}CqH;TWeex;JrsTJzkmAkQ?EW8f(@GO zn-0!?_~U=_=+YZH{?ea(aqH&S|K-+%@`yob?1q}yNzXT&iL&jsYh~ghztWWe2-XfA zZk)WllJmaUcR%%Ce#77Vt>5>JtM7mR2M#ZO|Gj%-m#&^22KO&Fc5g2S4;}pRAAjHU z%=GimYW+lVQ*MMmG6fDXrC(SiBWlQ`BgVB{OQ6U*zMF1fCmr6|ur#%^(b0rv$FWcXg;45zA=+Mw$}!z2sEWnJ zGqYzAw$57TyccUr@7X$6W~nOrU^DN1F;&YcFOnY39)Qh@L1?V^Rk=k#XiU|;F1FYD zwg5raN{4|-k~9caXR7W}uR+Z&N2tBgt!%($U*$F)S|3G0ri%lI4jDx&7gviUV}Ri> zwcZQrqAaQ+zRAEwLA!JDPVR53_0CiAN5wtT3rQo-;8yhyIMzw3e#dVQ>&-LB-Ei8H5?|JTPYzn z>T$O>%8IPoKD7oQ2?A}4QUubZP!TRH%$$1=RGg)Z7(jND`a!Ml+D5F`OWo} z!SqaXs#%|2nAe(=*28{UTAwD#V7P6|9E(~jYHsv5L}^!|QP62M!+`Q42}n}s4T&mD z&5)kg>v=Z6FkSlGx+08oXMK^funyx80F)wIa1_;MW@d?Wk-9v0%#f$NxPLAyT#|1E zhP1LuyIL&_o50EwM;D&iW=3PQbIv-a6e+D7TR=eoqcv&F^P++XObQf$h-iH!%VTm{ z0;P$FoV^nJtLV;=NG58nHJLz{r3D78JY-{@0S|s-_R$^M*HF{H@>o*Z+ca{g&6f?f&IDUvv2p#A-3@2%b2R zuGw4>mp%RPC;sTto%i0eS6z>Rg?RPV<8$8i)J|dBUAf?wZeP$7&*C*UqG#nCij4gk z*FJCnn7Qp;Kd`rMWb)Fzw)UJvipj9AtrOik{%zlNWY@K*je%>MwTY_lmVHItuDaMv z-TbyU9R2Wb{=&mX+fmZKCqjYdo?9Py=WTHSQa}354;<1)=e|}~o4@;kU;3{kjk#lQ zdB-=*HTCn}&aU_6L^#V!Q@)MO2Nvd~o4)Q^Qvyc*36j(kgqEvhDP9)xa@4@Q!bP z+wXkj_kQuuoDOH+`kwE*{~I6Z_CEBRzx;C^!{uAv{9SL`rzIa-$UJfO%EWlP3OO_x z_*HVQ3|x4pD+U12hhKMp{u__34(_R)_Ua6B&R5oLOMGfjTI3wqD;o5 z04R(jQp!2!eIe|t$c*-mLB^$Zv_VFnCqqJPHCovLifXYR{VCh z@M$@Og065uEdWAc_TnyIy6g&zRs$gdm6@x}LSxE7QTA3ww;o^WOkr=3-+9;4>V@*$ z`2iCY?9#-swI`EvNitN3v-7j7YwLye^?D-=g8rayA}R|HLP9d^+QCMlRfH_)tPXK% zI!5O-pg3U1Sz6?qlG%EHvt-t`^utloOM9pyS9%~0Ozh4O;7*0|ZG68wMH)5TVi57cX8Y3X4*O zaYaBbonLF#W(V8(!rrCFA3vK9Oq%vLw+G(YcIV>$U4KB z=#|d4rkd6|A#T*e;b?eyHSf%Y?WT#?bl20~nwwv4U{KcE7`BT}9ByyrWibj((-s;4 zyk}tWPP7T?adUNLy(sdm$VnqOD!gAlwCCg#rvbniuGb@lNPzu~jZUYwy)`Or0iczp zC@^_ywbsm@lmbB~-g&Q)#)p%!wKQHd)j>+6QeqVGh^iLXy!W;oe}!YyiG{^iq_x!ClgIIqx7VV`)UxoFS>kbj3p8xKj z`f2v=dO0J71=Lk9z3Ut}fNm}xYF_OFye8>m-$V7E%4d1)qS2VEBg@zLTNzVP?+(-n zzmT%2=6&yY@2kE=RkjJUb6x~hsK-ej#wY-Zr;h#gpZZxM1OWEld;ekp!rd;79i;V( z-h9wJ^f!Lye`n`e1WoIW@A=_36FBFa_rK#uU;Qma2qNA)|B`mvRY0k0QnvaVf9zj= zqj=}}P5;~f@fPsbi(Y=yKlz1k^3Jlvulw#Ff5W(Z{ELcac~*Qi1Y z4azyk(s=t{``Zr?AqcZ~o&};;eftl+7T9_Qz4%xE?$3xX&wZ)zguAh!S4+Qo;MHVZ z>8iS-dF&m>=$}9S_}bfF``7;2Yr#1u(0={*|J)mq%WU<-AA55DTYhj~e64!AqioOn zEuuPf>+AlfyX2RD^$+?iNJJ!&0cI{7Rt~Hy{Rk8RNi}p-grxJ`mFoT4-E%N z49dLfT|aer_<{fMnbSND6riAU=!Ot{cw_K@Y86AQPiM7lOdT5bdjtKKj@5wjXP!}~ z&Kd_Q1Y$&i-5b8_23<{@R;&bsKoHT%pA@}sbMd#f+yCkC;E~hJidnP(#m>F=&Q^%> zr)Ko9E0JpBK1d-UktRf2mLlvcHy)wZnz>3shl(mfDJ3A@dj?jZ01#0HVT4+fRtmtC zWi_>etO*e&E3g*Tj4uO1W-=6HX`zi46at_kxg&XWK+ET&<)NunBrBfrlgZShS^aft z`#2_hIGuNy@*ccbo)1}fz_~KF7rlQ3@iKZNzSF7&=1LxwtA+Pn+Iq+?+D1Khg^I;{ z4;BX7!_ihD77S?+u%%ao5j94eX}O(i3H!q#24>i|k8G@Mu9wYLtJPACJ+0o>AkSPB zMW8q^!KKUVg>^(^eI9D4Ppigst=}CLJKQ4q72!O*r_Q=L}h+}R5h;^!ZFk_<+1 zT%^8Ps~e@#WE3|IL+HVV^(YxwaVpRnoE$!~P?X6q8JPfF>0uJ@*M>-;Qi?EG+Ha$P={Lu38WBYPvH@5nlTYVPU+UyPo zLvN+brPFHX)}Pr-HN+v!3fT9S=W zlQI~`(dx?iQE$|YTX{ZA9n|Z!wbin;=&Y0$5eN_jy$6nJibz}QZ0Qs!WaW|O$aa?jE2JzTq%}3K5q`s zXQtC6$@4-Oc8WVQTjx9gb+?{vU?GZ#uL9n?-@z}{yl4M>35nOxsH$876EEFlEZ5;i za_)KAyk4S-Aka8Z1!*#HxW0h{fGz!(A)UwIIfgNiuBr>p*CqPPZCLq10RX8=q`K}o z|8t0*3=_wGp%+oMYt$=iukjI7$|eYa1XXDAS_Z!R5mz`C003d;tBc&dP^*-!0s~aa zR{i@WmCa3twxi@CT$b*t4_~}7jQw3zHd-b6d6i9`GpMR+0MB1?HHy1{k&KfKl3tR|3I@}cE|G?^kVE39+DoS(HK z5@>^3(v(yHS%Cy$To08|wJ_|iZ#0|rLkIVqIlD4S6I%>?g{ccwy%T`4At>-poJUbk zoVOlDjM1G=5H=+%t+fomL8KfzLTPoH3kyvh3UK)JiH-htnf0(Xr4|+xiMjMl(u$P{ zJ&M#jn$4iqR-%#750i8>%G1OVNtqUeTI(Ro$|UokdAi-KDU%c>hlOdO&%|h@ElxM$ zQIet~49I9*GBbOnabbCy0=Ir?xW1Mhooe>Cdr`ngj!*S_aO#O}RwTwKK_w1itnw#3(?q6E%_BRJ{+(OD0kX7{yV&-Ym1S)oOTeQHzPS(%6}4kA~aq++Z~F?2jGWHyVv>$yv_M z=cu6BY@})KooKD9%1Z1Rkvy}okjBb7LfFl@COaVu5vfqZh(x5zvUu+CQm!D`Vd9!c zt+i6xIR`9dX$53^dk`AqVo}CWS$gZ8bqL_O;sB$nBpCue*W-f-RUzK$t#kdJk?U?m zz&t@E62hd~`pfXLM??Vf-YG?uW4x;H{;~`liNt%al&(Zqbr@fsIp5*1AvLBJtW4_b zij97`qEQ5$b6V>v#no9?rPjV|%7$akMiK$`FQ>Ah^R9a0N|E#aRg|hqw|^03+jrYr{=)t|)>p@zYfHEO<@emX z6kLar?p8KX2C z;KJ#}*S+T_|JGlzCq8*DpIMl$Ulss}%pLFjfp;yP_{g%Vj!0>Uj;Vef;@=nqCEdT>zisvG7duP8zvs@a#yl!w7DBS9 z&Zzb|-PSQ16a%cQTucN(WFk=r=Ptc^@QHXgNCB}OsA()gz)(;QEol@4Q!_eHMN%rD zcDokW<6eK{o%5bqAd2e4VFoHxR12b7P~-mgV6dIWLF6pwdA8l{dJkb7rAY{@O?wgV4C#0V@FTY==E9K&_c5s;eTm7gqW@3Z|yxqlXrf-d4NQ+1@M~9i_v# zC^GOa4ox~l?@Z~8c;B8;sxFKBTD|qH`T6N|B89jBuV3hb>F zmoAMEnL-T$&U$97)lKP&WLN;$UQ(R7pz4pGotbU!S)N&*YfZIpzIbW-?3s;GKRNfz zMi>W12h929OIr&|?a~gik?*cqglMD4+wGbyQlm9n5cYF(^PW+OR!R?t181!Yv~yhM zd6v37vzjz8)oQi1wab>hXD=4Sf>z89*hA^Oj&*CQ#ob$8e_^V$B z0G0MWS2U1_fcIQE&tFp6$i%a=HF%C!(bT4v>LC6)Zn#o5=bSND(`Tgf_q_9){^7!|AQ*r(I{^^S|(8|KPzlzw>+B$L^o)|I=Upwc@Y8@Bi-p?r;3F2Ory9 zBb(cL^XuRJ&LbcF$NzZ$5C8maTf>!8AU7aa>eT4ula+5A&a;HWS_prFFI3+&=z z5Rp>g^J^SDk%@;(!^*y@tj5YQh+gEgz2b*Hj_*8Bd-E&O+ZHqc6eyqVmLL2=`OyoI zl|+@-7CdRAbpYboIT3auBEaZHkj4=Baf;&3@~B*`z<{I>h1r*77NUT6WBeQe3IT{_ z$3TK4ovF6-UKmMKJ&b$XT{P&tpS>ORa?scGd+!Rq{&xoRn-UVey4QWhX#I<~z3MYd zx33TFxOgrDBU(}pF|T0tL{;JLD&F$?i z1city(Co$Nz-YC!JP#;on)lLF1W4(m$fjoMajRahH`cmq;!7(y9OY7nQR;gA#CZfj zsu2O&gu!ExJ7cs7HGuZ)F<@hqcc2uC_r<8(yJv5+=IT?aV1O#NXaL~ydUv#yUcQu- z1t~J5+}?d1rEO7IWEBReG)n0kZ4Bx>+S=@|mq~Y!q>?5M1-)YiCEl-HUMGMcHYOr4 zl&6IeuD5EI8A%QL8Tu#)byALMkxo5#f=-bS0f4kY^xNIR%%WFBXqE$H?K=gwYWW}_o6g_-+X zLnlR}Rgc2hI=8ZN(OPFMiy$*tTjt&x6%vYocVdU5URcwkVWLnApfGyyf`S6p+C0xH zy)gk5g#*!`2uUUw*>T>A)@CQwMJXj?Xvq~`-O4Vh-0u}X77=Kz+wI2Y=9aaVg%ueV zVfKLz@;vv}X=AjB0im=dJSVwcYh4tD2@H(!DmQHRM??@5^z0`ekW?vzI7ykhVGSp4 zz@2xVF~*jqu0`;&3>*Zk9ou%5TXE<68$9qz1h8k+8UPfL^Uj!Yxr-Y2s8AcRPLF-F57y`gtIf+56u6FMs4<7{oJk zwLks$r@8rt+itEs_{HA+x85={zdkqJ{Pe$nWFs#c=pq7*`1soLnY?-a!;hWo&cu7} z9$YLB-Ez<45C6ws{q&KJC*03HL)91e~xbu&P^IIG*?TOz0K%;Zhf%S5> z9&S6Ac`ku1h_BeRY0Rq)AWFGV70n=-ZuZ>Xy$zO<-Es0QNx>n ztaaolio-^$v9;NC1(3%1eN&rjTY2ACFqc4wm)AD?sXIPXANCVsf9&w`*4D7QK14*% zf~fo5LL9AZkCc`}H!Wq5i7~b)2cx9ksT)PP0|;~wwTGjjLLntHa~N!vkZ~gLppNpc35x4AVcqfJ%b>UB4%6qnh63jotBxNnQt`AqmP_S(nJJ| zAr&G3Iw+EYi7Cxf=e&19q?9%eydp(NPAn?Y#+1%Fc4SceBpN8=dY#&6%T^gupcfX~ zmoBcmvSR$GD%-#Wkc8g*-Si{?0M&VLVopI-j%@;g_Z|SzmbSaqD@%`nL|SP@EFJ^_ znVFEBE44Aq?42+2s{k%IH8u6jnKO6XaXS(1K=Hrg+kX`%MIu7#^?Mc9Ul0V=+C0ze zwHgD9@U;>TT(9T~$VmhM7cX8|T3SNHg@yS`tE)$k945K~CHcxqzk;(PB*cx4^*D|Z zv0kg6zi@GWevXKCqAWLR&XJJNJGZ^Py>H)MM6B2A+uiNO#f6Fm3E+iu;r=|LVVseL zh!@VEZ!{Z-*y(i6o;~|ADH{?I_4)&A%Zl;Hvrn_M*=W3M%69(z`K6^rM4X?WyR>rY z*s-HGPT9uNC(5?Dxe){bBGzlQ^A|48FU%9sj??Le4V)_6RkypfckfID6?EZftO>uqE%S>4z=@rUpK%=*#4`4fNVmwx*1 zJ(hMQ+|z6X)!SZJ1c^lpY9It*p)mm`?8;c&ZLN;85fMoc0eQkYS`jD6__VDMr9h`d zc@ibgPZCB6fItJVfFPnUTjxc1>2jLL44tNL4; zP}#zN+BVdzywj$jN|2{`Lx*D+}_AJ?V^HRds7w%y+|Ys(4=Pk)-R#}JFf99Vtm8&qYiQLA4I^Ln%cAIQ zu%duj5KR!PLD$6?hDvQ0X_17!Ecfl359(#3g+)J|-_uM638I^u>i`zs`*f6v_lzpb za`wO$v!b8?qmEVv+O42;#r&T3V9jM&5h-l~Y){oHxObq{!eU1SVhit`Xr-rTNgVfk zE=v>Z%elFkRyg&{$#ccfp$2P}MjeoG8JC%8lq|~xK+p?v?)}Bf+n!w*(el29yYD*k z)YGd)SrnOdu0R4sdVO_h9U`(g28Fh?6*0e2L1fJ7r!VySNn!KRXgD?7h#G{-GIMtW z6^7|3(_~2LDwd^`vZbqxunPOC6_ElIBBkP*%2SIh>;(`_po!42Lm;h`D}Ap!5&<9q zP(<%=atZ(dAOJ~3K~&(quN*5CLuqAQ?OJkU-&I9a3jh-k#klls^{rTzms=HlZV`27Okqf8U zXlrY$+uh!~cUdV-Bw-MoIB{}jW@dV-6GdV5QY1ys;cfbInt)W88)kNe+wS$&*Vh5C z)oKx`>8YuU7cV|>;>7IiY^&KMLPCWK$8-JX6%EXOLJGjcQL?eIIT#FXIes&difc6@ z{K6L=nxCJa>U4s@5FwGm9XtBZ*CwT!JbNk1tlQn**w|>bTD3SPQq5-L>C>kN!{N-# zbiG!qo_00yU#Wplpia{3_ct~+lO#EK@Boo&HJi@aM<01~Zho%QZr^xi>vp@{_)fAdW@5veGS712WvJv=`@H`VC`L2#p#jit=8?)LWj`bMMCsMTsj zs@-Znb?Ve`IGUZAsn>Uu?JK&<{1`{y?+@13H2AK^yTAW|b05fUzH}gX^k+WXzU58tdEmA3*`NLV=Qh6Xjqm9+!tH1N;Kb-# zzU@2TF$&F|JMTL%yRL5gjvssXT@U`NAN!3*%X|Nqzx}`7SNqL>^!Gn;$vp6rKmGM| z>fipeUwmqGB`hlAymEjsc$ar*)MXqa1cY(b<}vG!CyxwLp{o!Cd575gO0ScHKB%1p zi;7=i2ihe&X^gu}sNMhA`R~p(noH+%4?ua56ul%0qO?f!G6mpZhRc#TvAZ8ZdWe#@ zwqD<qtM52?VEMuS_PN2pMzLm+jjbe(YR(r9K%tqQij%bTp0uXkum>2e zZ>=C9=wNncc6Iea6jD~Wyw8CFjUhWwiU5HOmEMAYA{~Wsnr5UGAeET|6z?klmSS;) zC?o{)8HnkP=4Jay_+nx#gT6TzKrU$FnR;lEm6CFE8@>MHB594{B;^>fpfx2M_Fzq6h#K(a|GE z27|$glTSYJ#1mDbXA3;{rCeaG#$udlB^{q*T1Ns=VFA<@n9DdL0n~adBy>*=(LTdGhI}pT5z`wz#->VE_J3r>%{FiLzZ>S$X`4C(<;% zp~}|jbPgUoaQkhyMsW-PN~yy~4i5)|6DLnT@x+N6s%&u_FE1}2J9?ziY*wqR(QMvw z{P;6x&OH3ZFJ@Vmrs<7Swz;{vg9i@mDBJFK`ePsZwa=_d13&lpeeZtTH^l1Im)AFn z^+*2gCyxBp|M{)+`tpZ=?k9ig!8JDOxBvN1(+~dWcYOa(EVm8Y?r)tMIQEy5^z`Gk zzws~r<8*o9WAFdT|M1A+_x98A zKQ{E*b@femN3TEd`!)MpAXl6LBE+83M1AnnbASBU5^8L<8@4D$X`&-Vq`5#>a(?mR zg^L#vRCQX6;;<1%Q?sqGA;Zz8=rU@X;cztQm+S&^H7=>qXq1wNO#>RzysrbydcN#4 zdR=P!h0|_VNXr=e{+kL#>LD zwHXH#j=jgh&`0&!<<;%7aGk}v3So1# z=kq`Tg>_VIU+Vx0W<86Jg3ug1T=zb81+vvzo80+cUgQ~5DWRb>cTpTH?loDKr9(79 z;MnDkz0-rWl7yz`!g$)`-sgqI5_GOZ6Jm(#s{>m~5E>KeEX##i7(#8Pn$6`sb9dZx zOS9EDdGf-^r_RJ3j#}mUGwW&B?^&KLY{Is@>#ltdeST$a#WriL*S+!1!WZ4{K$E_B zZte2sM%2-WU{gRQW0X-8g<5m%SGdf6qO4uWxLutX!<1>l3&L!0sB)$Vdddqwz9Ucp{~UfU4Ss zfCvJJ<3GNtE`aDgg8+MOG@2()Jn`JEYMk4ABatarq9;hZm+Khm%{L@`@GR*Sij8)g zn3JUL8xSpemgwgjI5S^25!RO_9Vc+noe!%#ua|4if#_MO75}3u8!-E?ma<*p$GBml z;j6D~mC5xyWrW`T_P0O$@FNrdkoSf4L`rEzgdpBpRzVbM!Z85DyRs-PGZEt|J$snh zSJQQez-YNBN}JiHZnb6t#+(rIk)LX``hK)`DI}pwBQ_B!#4zI04oUH-Z_@#w<8+jH z>mw5agd3aPC^R}y7A$!iwX^}A+Z%@sa#CjN${-a|Kp}SM!3WCKTwdyIvAu5tDtm(zU0g~9n_r7qd4B)?t!2VD2jt3bEBkeE!Wa4Wh#|1dFEQ} zx(f=`7h}Tt#Tg$Iy@AaJA_XE+R=P*N^t82b%Pj|&=Gt@fcci?vonA!gYzE12v^_sh zt+pOz>&6HOdFD8b7Fx~ePD^Vw8YPMJqZzR!7MUdi?`5jpn3-v=Y>cvDUS!_rKq=)s zvlk@tr3YQDZUm4j*8{L}n}ZHi5a~vvv9;9&0VEL*CJ1`HL7F6$EftucS+70z*gBxv z;eOs(NV^sf0q(X;m-SL=T{mKkbpgi z^V*P78qg`N>R^sjdvkk`)g39Kil2Kju95T~w+}X2Up)NU;|~O{ZmU@WtbAB~yYxh&95Gg`ZB*$+#w6b#f z!ubm#*2EBmDob#f2|6y7RZS=}hpcqdso0JBeVeAG9R*>OZdoJ2fy0ZJS2msXo99Nh zAgx_%SqD=Dp1m5C!`zpsQM1D+44QSCn+;vU&z#<#ZqN3*w%>F4b`(dEFI>G@f99Es zQ?vE3ZZ_9?=}434nYq^HW)G1SDO7=`x&!6WcNSZ-2YOq%%aMq*PQ6h%Ig&a{c^#xbP1XF#Ql23M<_ycl+-qwVd?F?h$u;Pgy;l#kG1 zt5MJEZo8L&Qyb@!B+sK-z$j4+q7zZ&+}`NWp2MTGzgY|ew54V5X*3)roFeF_PG11z z`|dv4YN&i;Ga$}65Fn%* zd2;?*`&#>2`&#?|dwX8PLPRFCVLSX;Sb2YT442(D%I+WTfI0+$l+q?3rC5ZN8utn4 zt@CABnjoq*MHvxd?u(3z99L0JsDK|=abfL(mhZmv=Ne2q#@SVu?f9+`akqnN$7b5` zRLQd;?N@~hckZ(S3TvA&2v!qDN{tB~9N*dO+#5_ivVte$EjJ}9g36Bt6EmyiqRZ=D zSbxfXQll{xikCFYxyWBzUwzZuB{P`;W&$R5%9Yv{y1Nmcd-C96Snh@W&kVXn!2yO! zbeff@fdX(jlcQQ3FU~KYe)8h#<;z9~Iy4)X2WkVSXWG-#&5dqXhe`(?T_iaN4wKEa zNQ$VYTlHptkdQc+hy;L)#6hfw{i0Eiw4uSU5KW}Xxk5qsS$Pp!xv&++wRBLD)6RKBl@~HKSMLw|5^$qqT#-HY z$V2;%?j?dUcf{IxAk++=B`+CQRyV-$frA|(*SlQU5|ci+=jv%%bl0RPYGFi0SyI4B znk>#W2_;Q)YeB3Ub=hd8Q5*;}cDJ)E6J=^e-fz@fx8HI6vBw_M6zo}Cym)D~C`#u& z3W9)RhgJ2Tv3JuWt8`eL+&Zm6dl99SHpUprs|73q2;Tec-au*PoU2aOHTh3){f|%xE|~>tzZJK+C8Y<_SWv03-1%zfTcwnU z=qjGVC;%K7jf}+Ds6{u`8V2B&Y^r?5omuXc(_msk1Ec{}1wEfI$Dmj#tt*}7P~2-f z8{fLHs*#vMn1qqNVy9fGicD{9*Uzlnk|&D|kt0$3(2z1g0aT=G4Jf=t6a=g_V^C9@ zTbr}99UaozZQ%~|Ttmz=GudgPfG%cO5*NWu)`7Nb2 z5hZz{waQX1T@luCdZtz6HZPNG#Lc*trhVrz45Py3p@~<{ZvKDly-Ck4OOhaDX6_!t znZEN4cYg1_`Mu1_%Fde91&s=5bt5Q=6(CwryF%jL?Rou16*=K6NoY*E>Ia&Nj^)kvfbIN7S4Go9z9dhzuwbLIe*Kx)4sGleWx z4H%u1A?>Nemb>c47bdH#&NZEH0Ti%6rjZCOwZ#b<3nu`d*h@j&lM|ID0OjatlVVTl$jN&uCYqN zho78WzOaVItM#_)ymzvwHhF0XaXKqZQRjtjwt@&nku_bDmzif~8`eFebp;6EomY~L zCexdnrS||p-uY_VbaubNBJhm&ephnskf{bYEaB{np2=B|5Mf_6PWt0RiIj*41V%y@ ziOY}wwleAOuD`qf?)tmy|1VcG5#T6}bywz7NVnL11c!@m(aVii2s0xQvv;AfPJjsjs%HD@)vM`r(loV*8&69CJu0%38QHqpE*6uLYN593#%0#FVl9(a z&`Q0M&29Dg{$oQ}j?1=r@$;X4`PDCx6s)e-x-g|NrRm;zJoVykZfd(>;(Rt8HEVb8 z!JHjzng&syoQ%5GpPWustF^Tu?Gd|w2f;3bLm`-V+}yt ztHxG{MDw$W*825}OJJjwRz!8(+%C4(x;)2Gq2GCOJ~_$mU7Su%x{YmH&!bTZ>^AFq zy|P(>uiw04*=|>DQ$g2Yc4BPjz4M`FjW#OFvgtg3_4-ZMx~_B1*|u$vgfwVW*=Tfo zvkbdnl|lhvCrTM>xvJLI3J3^WXAuBF5R=uqSVV5XOKAqc?tkg)ILI*k+mn7c>$K+$ z>DL(pH6u4o{YQWF-^DhSBBhkIwy(d1N~ush;*gmG9|q^f0|1fgnYrHylDye7?fyLE zSnl%pI`Sz+1c*Y>3hJZu2m6^rCJpYYIfg6PkTA%j#a(Hch*eQa$6{lHF^WhirVqOv zJ^yCl;|l?*w`cKU6kq9BVlHre7#l$(rS$IXygpo?;6Rvn%M*8XC*JehsxCylF*676{EU}`GNt}BKrmL1Vwk~zBoYvj4*2v zs;ChIRx8{CIX1SS6_VvDJX+pk(7!?#vU7YnitUT z^@fCy5QB_GQe?6Wl@bvJ+IB1;s5Jm(`AFv@of-BvD>81$v(uzaQ6i$Zp@P-UJPJi( z2k07T1b`uXyiJe9o4D37u%9Hk!t>-nk-%bSKER^!$TYz}`R4cA)-F3HEuhx^h|TZG9=Oxq4H-e#u=$zx(ffux@Ur_wK2@{Q4KKy`XK_yJ|X{EpC@4)5e&p zs*ng+Z08+i%^Jq1nfI=(-FoesroI1gVtvhj6s zN6#*=tm*WGw(Itj58m0V*SIiR(`aheOW&>J#pe|ge)7YUlXv0f3SWL(0c%hUgtm3p zm$$Q%X*nvZbqk_8+aa=NUao6d%XDP2GTYYvWL~tJZakihGyVESHPU%L$-n#h^0V*1 zd-di9N#1?;-LJoXadC06S}mRR%s@z4rs}FOjKBQ+nI^?vvFB&cUkHGB@z!Q#QP-8o zu449ygiVd7FhI6jZ>C>0L1 zj6@7X2ng{k6bvPKm{aXJ058QroSpO@;yE7u6&s1)Mm(gy_6i640zwDqja^3;i`T#< zNPmq~8Yakl7f#$!y`l|Wl2WjXXB=qglm%d?y(DP#-mDC>s{lAaolGmh?#y2>CUefE zNdj-XQVNNfNmqi>3u(9YSbBdc;!Tp}s+|cDa0_>yLU<5yIkpB;goG<(DWzaTLTmwM ztrZdZonIFUeZ$_w4<0Ks`@O9LhnzbAEXtNcf=oxT&(H|05G>aLAw^52??r$}DOHR{ z%(C9B$}GnWth2(Bl{tjXhi%i=TLJ-v!lH~(+H_6htPN)@-)S?&`?txWK%aLaIYnv8 zP4Umr>~YDGV=)y!RF6LTkO+ZgRE%<6wvBa-`-hN0XW4sZFJ5%pk}iJhxBt;^KK$*h z9j%tNZ$Mgdjrf{fBT&1~r1~et0vcU!vuabWH>34>y4;?v?FY-^KhaPA>qj5|!-r4a ztLys9pZ(1J#m}g2*|{^+KlRQz7Es>0rtJuc(72n`V!0Aw7O3l%h>D^Rkei#uc59o4 z+uDEf$-~K9UtTV~xA&inN0Z|E)y8B+G0L09cdc7(R;_i;OI~Ko?fJ#{$p`szaXlJo zm1m13v)2zE&vfBVCgV>({iK`}&%e7`E$SzapNuDkwcE3cLWpm#wo0iiH=cJ)o@G)_ zX}fCI*ZyQOy>~GakyX_qs_A5ukD=POC-YH}XTSW#>$<}ArfE7rB&C5pbe-7FiGq{+ zV?C4NB&U&QZL5as3NthD>=-jw`Wep@bUd(l;7Sio2CVz-O?P$ zu1+uzvmow{ZUsSRVCJUjL{I<-F)Y(b*p&?u9CzFuH7Gk)gu7X#*BsdUXM(s7;Uc1d zD5FM`!dW{wy{l&f=)=qa07$4*VoCI#We}HuAi#qIGzJ?>d;KyEe^zMBbX!;b?RQv7`B>(`Vf*kiz(hcBwo4}3sht_(a^Nz*q;Mb^H z!vBZuV;@&IFl%V{As`}#5a1v-afrQ$jYK)^Zw8}43^2SW`sZ-Ca&Q*<4`o16DS0G{5E7gZIwfPYNYL~L z;6+0r4P>T_bEnq4gJ2FujB+Fj5Qp_91}5VGlW=I${OaB#kO}SWEoo*3QaiIQRA)sB z5G}Nyiv(Vr8-cbES>ok;4;iLcNK%@2T2N zje7jaM?~mbKby>j!FxAl_+8SLy(gwvY+PLXdmlJ3kyT0+>Apmr(1BEB&lkrIo+P(Y1`Gd!^_2y=FGVZDl z^W0~KlrAzjy)bQE-#l-={`vKbZ(kviwerdL-&wDhn@x3kku6pmGTC%q5U9+c>!iqY z=bYANdE0ec-F3L#*t%_=ynl+yBD%A)Y&4;&YTvxtR+Rvn&N2cqa8VQ{&zq)kPEdoH z!svm@CX(l3GA4zZGRv;!Hp?`CK*3b_`83yLO~IRLQ#Z|MRA`moJ3IU47cUmCJKK6x zc=0g5|HNb_uUiY6SfE|2NjY_`>ng05Y^?wwd+(SLNIW765<1UFhy+=tz4z8KvslZ3 z*>=^4y#6p(-!e25JB zUF1G2xP)3eM4+|OMu+7BM4+8y7gDGcfk-OOQbvW|Cl174mSrdi9w=OE#q7NgCyT*A zWJS&tiRTrP_feEcpWYaF2{G<`Jc`x?7A4x1wF_*i6a_5;ume90GsJ5kky9OzYSugX zKYXjTP9kkINbrvmB$cYE$r4m)@Q>q@3kVYK!Xbwh0#oJjHsKp*Gd0cMCT9l|6j9ov4zN#4jU+k%p!fJu5eWyE0I@eW z-`44|sWcc!010~oVj%R>mQ%#07IxZZV25A>9oq+Sf(Ek_u71d*h?F9uRoAt0Ksm6p zvk8Smt;paY?awubgf|mtgKP=pN&~2p>5fPqPF9M9<4J^}5%5+kHWc#@-3BbBz#Pxx z0Msn#XVsgvmfar9&R@X>_O}*pXCX zC<{aVEfMd%?JPSRw1W4Zlv2i!HmI}+cXicOTM!0e5Mk%Mv*N6X7Z$)fcy=%scj7bs zGezT_zrJloj_G7DDSLFi^J^c4=T7kF>cjC<4v<@BQ{a`7a;;y&vBHIGQD^I!Q+oVIsfd_ufO>wzgYm0)9Sf+L_nmfsu00wJp#VGyxLVH5)lz= zt+m}~R1%`K%%0cFR$(@s5Fu*H7dK5Yp3l!_%hiS*nGEwWoIjeKT3Qe|HtnR-*8BH~Ja&j_f zAFKz*VydlgTVFS}>$sd`<%sIF^VYSsx2?K-wP_mwQOL?o5NYZTjLk}Loh9VPRit53%-R*+J3lwteD}qhu15Bt4UVQF zvRo`WH0AVslIQ08A3vRr%5Oejhtv0%ML>K9?8tSlC<~Km5n&LWkv60i6=S1v6cAx# zFHLPHlhMgcjdIgg4k0@|n`c?p)ZMmjY-ev5%eJ#f3Tbyt8zG5=a{y^P9fvd91E*)1 z5&)$&2v9iiX;(=_nat4coK8lifB;aGqGFV5L)Kd1C|RN(ymNU)g!&WBw8@-vva{2G zS=f2ldC5D8(2E9$3zX6R=+kkcyBq`+C?e?1qXCaWZ=mc}7=b~8n<&ud8)>bT(n*5{ zR+=QC_>?n`*?V9WrF;F@@XqnCsRWNA z9`Dlk138}ddkjyC^MP<2yl^Kl;ZjN=g)%aj^n74MzD;~53Q59QnJUSf!Glz}q4ylk z%0s<{VZ)IzIquGAKA_SR8+Y0b@ktua=}CHzlQ8fUu=HC<%;L}ydv@L-D(gG|LZ1h% zlnS<#F~&NV1gH)M3x|dX0BCJ`1cEVHx~?4oHb#>|X5ZUt2La|g(Q>RK2ls;(5D{=! zJTJIpxDU7AP3`GC9^*d+Y4BtqE+|O`7=)j91`{R;tGiXfeng=`7Ni}j2aG=e6%j*e zXgs>&EcgEBfvt8Y>L4+&xDPM_h%hTf>^W?BQpzZ;y|cjHb&ahX_D;m_5)DPdlG=V? zZ#lIleSVDI)Iv=mJ(h&&eU!cFHv``_1t7kx-u>Rk%;GHr!)P=X=HJt~@?Ns6`2P1k z{Lv3hmQnBBZnssBbn5DQ`Lmy%zIgu5OrM`ko5s71Eh=ue@TSZ0*FOB-@BfGMdly-j z=S88En$BjyQPxK5Okciu$**1m`OHW*4K; zwEW-y`JZ#kc8lM9UafCowXlxKJ9+ZaLmcr}pTE*PdGz$28q56QWO}NJAkWR|*|?ng z`;Usept|a|>yAC3@>!ix3%v|T#`#dj5 zDPS^?Ke>PQy&pX4Hg3CYs%?GoaCCcF182@NQb$ye3awRf`D{}!vDt{V?4YY$rzbfx zmf1*@Jw2azZ%4DS)=E>Jkz`75mv%Crt=6lsRg?X0rAAo1^I?gu9Gmw(c~H*b$!F)~ znUMCj?L4EkVjDZ3Oo*YayCNTDnQ@k@rrB(_jq5twX%phn6iyig02X1-fZ!Zk>rlvh zF-A>iBSh*thlqs8UP7peNHdGI&NCxmSTqq9ZB%BAcyBuoyNnSbBCShrL79c4$F7!>(DO=*HdA(#fPq9{LvFt&35*qvhZ-{#l! zy3@28e4FZ$-m0MEZ{OBqimvoZZLD8?;lQvXh`t0KEiI)GLW15@{w4qmB!>{h5Y7PR zIBTiRk-VmKrgxiR8DjV%CjTDO8zi(bfIR&(HCt0iBE7v0UAT+(2Iop-pP$6Nh~Tg} zBS`?eqmghQb#r_#rZz`xhm|bvU7y#rZ{TgSJebyq^E(lBV73Ms1p!U4k|t@fu(eEJcI##4mc~F z#CV_D>p?V;QrZ}$HIZiaF6@o69eW=R-VCxGk{as+RHT@^Q;;6dNCXF9I2{9)`4vs2 zA+$kuY$O}?@Z%4~K~PTX^=90*A6nPdbw#K?c$$sJ+s&r!+NNphy4r5HbzRk)_4e7f z&0qfoeDOEL&F#9rd~w}fZq_%=vz2`VB9BJnAAM3>oOQOV>$+(g@11k5Y3l8EySTkw zEthXzzg&Lth25;X&i=CAzS*qXuG3nVW$CPU%guJXozAAkxNN%)0Z?}FR04zC$7|3U~j$e);0t%U5rzwXfD(H}>RgG(XF(-dxU4jKS>Y zr3Eg$1pu7RM`*xuE6{Cj{d&>lQ)cZl6l$fq?XoP(OP9 zANrc_&F_i$@nm*&xe`IGjmeC64p@M|j8rj0GTby>yX~~m;Zy_^)Iy_-#aGp;Lq+$V zl!)f~daYFE8z#hjl#}3gsoAR=w!#42NSIVy!R zlNsl^X}g=n!n4oI%z0amazJt3@2YozfB*ssi+Jr7B;WV3GA2>^J%7axKU&-#_H zp=l?0!C7|QE&vw!7a(k%3u3fi`;*8X0C0y;fWw>s?43fbLj^2J<#_bw`-PIQ?067h zNHYM4s9%CiV;H^o20S<};*fz;&uO>+=+LwpsMR}H{i9fk(x*>z*$rnP2jdHez29N~ zMQf&C%R7)$gXI7`yndyOIw%PnTTUg^amnU^$c7}%D_!NhQ~nM{cihx5RB$A(iO6Up z!Gu1nc9?dAI9!DpC>ar0Aa7YRsi9Q^F91`rrr;lO&R2E zXi3e)^o8T~qqjAJ{mL351hYzjwNgZi`3}XFl56~PFo_W@;aBGzk#f!-6Y8<8^EQCf zHe(_q99c^MfCOOTL zqg*_lHEPwk6&qv=qxqN{G+;909EdP<4Zi$#VRCPgskO!oX1E8KMUiosqKQy|DLMX%y;@84v(ZN-L#8Ac_c#o>Kk~S6DhE zQp^r}!-AQkF%+`UAg)aU_F^Ueib>lTwP5N+AyUXo3s8qQd)*df%5GQMKm>%o;<$o% zB*I|D!l5jVsTwIZf}Ki~qPmwFI}x`Z17j4Hp`*47uq%^Bc;T1SmN+-uum=8=x{`MY0GhR7!tjc zgt-7xe18y(9E`EoULfqfgFgH4fO?^iX5ERR6dQ2}5hv*k#>l7~u0kH;JZ%9nc*PjW zVXx5v0Z0*g+?hnN**H6~@xe5Ov}@`&Ga@1q3WD<N4de^_EHya3S0wswVDIPT$(O&#+>YPB4rG<|;nb_6(KWTa&K!k{mam?L|~%G%(D z4@92)6XzX1c2;VlN$C%D=l3=b)VPEX;>?Rf?RqO;al6?wsG)&hDLHQ3>n{ zCiZafZYfgmkXZ&uIQGE?Od9W%QX0GnOE}3y6FsJE0?0xjfX`pTi&vayi=uevgAYc+ z@{>QAe)Ts^wSDpO7PfX=G1YuoWmluwCx7&xU;OYRr8R0rTF1_^EE|nRVQh=r+uNW2 z9RBjJRMU}UCd^A{_yd`Z(sbaD$L0vpK0~v-Pz^k z<@1}%RzqD?ldJ^rfGi^ADDPISF}fJ*vvzA*Z z`KSQ0P1AL?Ya1Y)duC;_wsyY8@??sWRw;v8Cg<65xnT!QE6%%D)g>Zs7EYR+LCnZ! zxz>bD%U`~F*>#r5BXOP=b=9zE0m$-B4>PEaLcXgvP@B~ z8s`?9RXHj=!A7R8T8>iTAt7X=wsT6Z43_hIunA|U~xo}HXHXWPyq zIz`BWTB)wxktzGYhk>6(gaHn=I1RLp?6&@e$O-^p6u+q)kKYbtLHyHM7uF|~+NIk= zUkxbigdgbFv}j(IWo_Fkr4b#367WLI2p}ORgNT#@#1L0-JGPab;~Tv8pdpB8Jf19< zO8`MUI7T#8qI6gl;!YVCQKS@w3Ja;b+3zpgSyar?c$GeV7<$|$mw;B9iFZcuUWA23 z2Z4SAU7C)7iH#L8d8|Rhb!VU@{RxvuoAi0*zSpMEJIZhYPssT|J5zK~n|Bt?4?<`miaKR|?8X7aqK>&99uyCsO8fFWQ>!Wc#F2+u!vziG{|~sv*WK|r^a?dkT}ku9NLBHSSZ6c^t~ z#Zfv&^*{X&|Km5$o-J1^W}XTBj@At(c`+>rS)ntT&&DvCnc2J~C8JT%S$A<(KDa+UImw!?-P8gKvJ7q0WqHvFGqDh7 zW1Z!Q0&G!Z?pn#SEYD#&Gac7mCs%LYjL(J9zWjEPXS4Hr7foy5efQD)bhKP7uWy#5 zgKa^Gkmp&wX_r^6tyn7~LWnd!8&4+LlgIZr?dp2!0-tx_2Q8imZsq3mJ zz+}Qe)_J83p=Kw}hO|};35?_M%zIZ=TV)ggyMD`INb*HQ0OFk|N`cU0$RT8V41`OR zkcX;tNBVNOAqx@nJP&DA2V#o_5d#~Ga9F^=UZW>RzVD)}*WTmzA z)d~CflPDEx#08!Yes-vhxr16M#VlHDA_z)R_6wcE-0dvO5yACIX1`+XjCMtn2a%GU z+(eXMQ6(8{dvzN^gE6QkB18&_1OSs-Vz`UwAR-_hh|YmXihtgzxd(5?Mh2}7*F;OP~AmRl=-L+8M6_`0}mq+aD*Y?%3 z5K&MY zL<7d zLm=<>6Or0&CqCL~n@sdUr^kc6v+K}^F(&LC9?V?|Vfuf>D)ue` z^b?)>U?~TsaPHTm4})0o^W#i|NDT4i^o4Zn2w<{|R3<<#tOZ0&M>Y@+Z)^Pc zW`IlyT(++ob2n|I90!Ne;~3{D8^-4%qW=3o{^Rd|{E4&nn`h6?M1F@d6b@@Ngb1VT z;=PNf>lc&TmpAL`#kbdV+ZJ1HH~3nn@|!>U?7#glzW<;7rGEADrfC{g;N&E? ztv9M9R<}1x_RcwbeYs>$n{^F9b=7pObJn-D?P@Cyi%B`V7&&(A{CGM7are$9>+Ql} zGaj2llLqCi+EijaAkk!|0DYk*MsQS`**p{6xNaeqZ!QH15q(!X-zjiewPtSt5EUw5 z%Jbss`;SS{W?KQ1usG{>)v6Gz?aEPsB(Afz0oO@hn)zwDT5fDjz^D~;t<$8x_k*X~ z%@!JUaXvAba%?yCrnU9e^{sV&IxniKZY%B@KORlDn=07xIx|3wfWpwUEr@8NO=eiU zcN|VHOn(YTOE1*hghyTO-u$L+QxZofo8$4|z!YTDVd~Fuo5zYX z&Fp@gNf$A5Y}+LWr^6OVX{9uIVM1Vb*sH+kQil+%A{9vwDX1VsM9)q{sE>XH8UcW) zfMc|SXkU`x7<ieXN2uH8Eii@B}%rs}S0ceTZ(b!&LN&92TK zzW)dR>974)zkl!3_jP7MJwszmh&lu@XRU49HsV@DZmzF?@&Ej3`)7Zi-!4K{a0u6F zpljh52+9yCA`MzCZ!cdf^wNpjGFvr2KO?29Rcl*|1eRTAJ+c&;^1#d0mXO+YbNgb` zuEe#?**rTtQ^h#Dx~j@-q==M35w;yKm$qxQ(xz#;^{TNAH+9X@v2Vwt5*SyjcDrb{^vI*$S&Bj`RYPNEF)pjlFLT3fePE@97`KCp0x`w;9n@x;s-6)@} zmSS7wTD4trSD9+fT?fKal!g?rAc)$otIfK$jR#QTK}146W=MI|q=R(u9uyg2=^E!6 z#g;(GC~aH&_?@%g`$s>#dcAn{-NJS)ATqmcvu^x$wW`>I2zRa67TAM#>^%cwmS?6= z%78Y?S}y|3;ypX(yz|f}+6R)*+OT*+QbfIwh297_;Qy4>Q_e`aJx0I7PccLh76|e@ zXXfDfVW7R88k0~MG+GZ~*I|s1_YakXbv_6(OB10N7SADQM~F%(tra3_t(kW_UL{Fj zibD&HNOB#EiGj#SclyAgtQp81k@SAwxQK*AtMDxRAHF?|=In9X&r}G>q;KrfmYF48 z)f~h{jO+A67@S1 zFdTmg0kwcasIW&$Z@nI9N9orx`k9TmT61?uAJWFWk* z>(cOQ8tq6C7*~;c4T{dWkbZuwr29B=h*j+28SH-?D7Jxd5T|Tlj>mUWIMbif8IOZH zCa?i{giitDx^Q39lN17l*suU07; zbe7Ww2V+lpBqg4d2GW<)b_UEfz~}L#L{toZMa10_%uoOJZ~xi<_AmY*ABV9J$eEF| z2h$f{-oB~5Wh^$`J(kPbJeRC~bTa?Lq<60isWgM3Wp&(JyRfHW!6MBUb+)o4+y5(CyZ zi`!dYYq4IBw38N;%eBEq!a}^V9JJDeHu^V^T(`OfPQMs?8@QK72H9 zI{E6Wo70CEFTTBb@l~ai8js`$KYZ+^di`>Evk}WQgbW+4G5~RonHd=Y&{^@`0r(@)w%<1$b*k2? zU(DDifev_n!0oAMNLw4Qclu$f!s9!A=BW_r@Ji^nmkT=|E^QVQw@d_+hXEdy?goXV zR8kO~FQ<;^D*C5}yKbs}Sa#E~D6W+W4@r!vB*c@BH$@jB3iw@2izt+Ofw1#H z*ma$-N9O$=XXv+-^;bj!^RB>s$cuyKF`qRZ<{v~|*6;@RMDTt|nUj#To`d6;OTq}(toHd)v7fWe0`BA-+YGJEe#~ld^ zDng*H>P*H)>uN=9%~_G#+T|)Q$JuBq^HUJ)Sh%j7!dwJIuq?-Q(_|V)BQ1)mb$jz_ z<67!k5P)i1H`}gm(TpIQGN^7cG1DovRl}Vut~PDsx-PrD_BU6y-oPk7SuMM^@p+MZ zk$j{&D`ip6&x^(FS}V<=(3Aw{jC4jOLw4jH01E=0-!FB!?Yc_)Nwt8sg~`1P6ch!H z3tipv_SPbbpetwEYy0ijSDUpsQJoE&SP?-Z$?4gwZ93r{1v~42scAazB`j9$YM)Xbm zC5BLN{O(%{K;EW6_cq4)hb!9gL=M=2Fd{sAFGFB-5*6NB>G^`ep;p|z6pDkKmpPe001CTh;$6YF<_EZ zXHDOM#CaX41nfQafmTbGB;Zg8rjibOrJKsfJ0Too)uh!j2XcS#`LP&H2PhJ1A%a$# z+3f>W>5;lYs~l`wFv@p5UI6N;<89s=fEoOgtV!Oqxj<>Uga%Z4=-Q z4ox9}gwhbx$NQIehr|;hVF+R}iw8y)W-kd;yE1sRhbL)s&maS2ViGP&5k43QCSg46 z1<~ERFLXN7UmV!>&va0byV->_fcgX(YCsY}0Dm&WEL$bla=Co*#h3QyKR25yLo|SeX^GovK1sOD7(kW6w@0$_u4SFeR9r zm>b&>l0j0gl~U!S5zS6Osjh7r+ksL!0+wZ-=ehH~?K&{hIk#Rmi^T?%?yL~$qEzP> z9}q>qcs6f##yy-n_E_-jme8*dVSs2wXmnMC{IsM*6ZzNQ$K!hnvYnQepA(+ zux{&SV?&m3INUeOazRlBy>~@1I=h%Rb;nK+-FRZqD{;^?p2-rz=GJMIDN~9EVHD%@ z(@vG1QCy4cP{a!Z0)>hICR15v>e_-J5owJ|D{CzR1!mhNb0ENONAb>nVG(DYx4ZLv zqvH``Go&;k5^834&U**W`T5E8#mmdpy7r!k)Y<8Lelo9`#yRJ_2MHzM#TY#roJ@RRX~h@3kJEa5(2 zAf%8Cj7~B{X6Jo!2I@e9_b&TRh&$)Qx)>ZLd!?*}cn~~~?ZDA>EIS6WDOH&RkueYx z$DU{^$K#WM&gj45s20=aQwUS}a=f}X5H15vkU}2qj0jH(-asiHca$PCc65BSOA3Dq z%wRZCSPx)3R>}Q+G=Q*=0tSbnA7Bhz%FdBY)j>K(VeCY-DkST5-Q&dF$tEea#P^}!Y#8Z01tv8jDcMvsKzOjE2dGG= zBaZa=`JlD*{{fM_?Ml9dgMF`v$DgKnPOtc@{(pb=GZq1s9~dPuzzzVJaoRvBCrIa+ zA+187!LxV~A4*lPx9}(b^1J`*Cqn{uZq~MBOjsr%z~CJdqW9iAm-=XkAOH;fJyCzv zwdJ^Qx!|IXKJ;E!s96Dba$$&|aP$_XFmS^SER`u!W$!Nxl>uP=L zx|Yw*OqNmQyL>bvg+*zEk>G_LwCfRbe&QGK)z0%;89+c=@*Of(4B8-ZV z#2B^RZUGpH5Lp`o2#QsvGeoe?PG^(las?tFD8K*|PO||4&oO8d-0L6>y;7ktJ34QR zT$57l003@RYwN^1o9DS}tc>9Hc2QT2^A-UCRG>HKob7OSGOMb#sXN#ulmh_8dYe57 z?lMl8IXV!C2q2zA$(h~S;$Wpo`l_D2LIOkzq7Fmcg1ydEw`s%BjLE$B&bd(XD(nFS z5S=Lyw07_97!%}p09B$`k79*6NGKpWSXhKaog_m$sErg~pgy$)dQlZh`=q8otaBJm zkW@OPqH`cS2BG*UK+{E{C^e*CBn{^`$B(ctPMBgo6&&FvZG0dxlUd$d5{L3DU4PsQ zXzG`);=l){YHGu!7?WhR5qq5!*RA4*p}cr#Dji+yC8&oKMUdEYp%_OxWDx;~wF!s> zLz%V+!+yxLi{+A1F=o3T0_-ZOL1G?7gGLTy=6?30F)^@vLb_o}lbGmc5%Jy+&cjLZ zDT%q9(pcJlin<6@8f#49j9YONk_Hh^gaG86OVKsZ-vE%lkV1vKFp`fLkRzLKFa$`L zXfVs^pa%9?I<7&pA_5}bI}{XQ5f6fb$N)Oakbtdo&MFnS-uGn!c3GZ-Ns)t;&EdQc zp2XqAsqCpVrM-)QYuuEL^LP$UW z3UXtzJPYhEEMPEDT#V;IYy0xu{jdSiWI@~QOu?N5K~~fVc<*)!m4S98?7(`S=ccLK zs`XdjRn11~RcG>oNb*8^2n8EOJorYGBLPBPXvsW-QDjs$yJw1t>AJdU$a_;1nbNv# zt64d=ZQZukvYkz)qPkY3Zdr*YL8oiS_9DAiZCYW4q}Ge(WIidf+;#TB{1gd`a)hLx zzW4Oyi`UL}op(8Dk6?1CJUhE}Rx=o6mQKoXjtabGL_p%K$bgyAb1APcZ`y4KXtR>; zJusckUcYHar=m*d+D<%|lg-t&yM5J>(@H6}D9y?3a$T>i!HLd{>zoK7kO*t7F3vBm zu5X%ps}zcW^WjuSbl!#kqHF*V(SMuijjSBDDaa9zkF~@hy8NP3@2LM;3LNg)wtrOt|MyV{62A_aoZg+vh1TIIQ^>)JbJVIm5yvv0X^ z)>#%IM9FhQin#U2LGrC)Fml1N4^bLlm$_`4b)h;(qx@f zDy7*im>3_ig?I)lueXaP-6H(RSfM zK(e<0f^MLsE(Rn?UB_XG2x00C58jc)P>X_f&^sLJT{$xTVhhr5R_zOm2ml4!9eQ<} z&UjEfseMWa%z}IFL+nkfn9v&>o`{yz&>svu{Syysh7E=($+pL!s0L0#`Y?WriM5A_ z!5M&Lg(&zTarzQIJqT2UnT^RnktP8!8nwqYLXTNvFjD{!77)YCMr(e+LFtFF@xc>F zXg)2%jfOl)}hXf5wW~Wb#MyB+<$mloFF2;`fhpu-b`zH_VsnW!F;4hYmuxN<()EWl-3GM15chl zUanWqpFO+2S!-hi8CbWC1%;|qjdX(Ky)MWIcvF(jsI5D8q)3&c43#+X`6&sZt7X+x zWj-E{AuIj$qR}N?JRV#3!iym@*=D1tt5@N-L$W4RlgEilFCqlfK)tc?@CjV&XE*f$UCiFfpy7 z?vK+nAcH~9{vZMb30)1aai`{vq#IEbfk{=@0PM67eB7Md>(pUfHf=DrlXBegRHlS| zEYRYg1JxLN9M}Y*wRA&Y#Pfih!WBoiGffCVP#H~HvG=}n0A4`EiBd#JsCG%GcvP^U zHwchguCVEo!?PU9&grbB2}Ku2H=Xd>-E~0tk0_zMEw5Gilad@svabT$ySo_UYPGug=Ij6W@Bi** zvvJm}I(Hj}+hG`xU<5!U12Os-xn~~6Xsi=pB2zV1L^#U%v-8(Kd5*Pj>*dF{_tQS~ z0mgk?K3%q58)fKL%{Yue(O9yk-fjJ2dFEqUbB&g4UGtZ(7jNHgc6%@c+pD<2`1Iw= z@%#625<_<152LZpn5J8Q_x|H%bHD3{sxwH49t2>V;$dCmB*wG^P#Fux#2EVf5!p%v z!H5o^Lb5`pOV-h(~6sGmG@llS8&=;ZFx&Jsa|byIC_y`zpA*L!aqfW;WWIB2`N z@5gF2b!&U~Vb2oS)3K{fx2R&|5CnjQ1;7eK5J0E$3$zsVDs z>|mYB2QWj7Q2?hg00@zF)*7J@r`lGZuC5Qqzoe)sFbD|)Am{O@G30}X2ji{aAk}eL z!U8NJB+eRU;mE_#=jDVVk3>Nbk7pem+%q7e5G3yXG_o}o#0W#*5Bb{=;`Qxqj3OYI z&ItlB>D<}KNSM?lMoB;c0M6NB5+rL{zRysF#~1_5hH=?oYyH=%STJ7$I;$++8W!<% z?Lx+^kr3rKO|wWz37QJs4JkgOFHcxl6?iPZK?+k^ZSC``{Z=%`!nT6XUqTWBJS&dsl7?%`?N5frQ+w&o>A;keZx zrFtpFMg$Ou43ZIM?*qU?GKIo)%^6#m+j)o%W-^)kNOK@xdLpLaw(jwK>a%7(vk)Z~ zQTDpDXyvN)x7nM)Q(r#?mUNu&(IA#K#>Fg>Zu{J0(B4%Z=V%#A`DKp_*$EJ$pExi; zO4XC{4W#urkZk4AoyvWiy8yD^nWd|!P7|y-mb+DV7N}i{1qU){XjbG4l-I5WBi|Rp z%fiplBBc9QzgcK{ZbIfZDE!gw)rD)l!_(EMx|~PZRp7&1wM9ks3OUI%6eQ)MYmYP=uB00B+%dY(evi&4u%VBc)PhB zH~#v5Um*ugNAGak~y9cG}#-I0W>~iyy3@9=83o-G_@W z*5elMZ#HeW9O58|>$7UV9mzt7a(%tq-B^fpIIteXI9XjfQ}gRrU;XW0|8wjO2qQ&7 z0|LQ&W^m4-!N@VWBOFr_MEgVv>V0szJ!8QN|4RfW6VezzM4O_azSiHtB9 zON=ahz>5RS0kI^PB`H;8K5Q9GPD~PJ4uLG75o>80WAqUv4aL%ehQ~KlAE*^ULLv+y zAQK7&e{w`a`gfY9PoHknF@JpU?S$c&RupXt+obvNJV_zPF=aLn1-NAK)`}{#Rhdb{ z^UO#AC8z>gx$ra|6&2BW6mDRKcOnAE4E3m9(4`e1cpM$&IL!n13ZA3#CbNR)dQ&Sj z(iJag-oh;5cs85`KZ{67ftA|z(G1Ztke_R&C1X?A<087F1C7~9g44a3xsAFyQL)Bc zot(N{cyw9hX#e2Um>F{jV?2mTIs;uqL@XIW0{|iT9HWYd19J|6Lp?o|IgmRm6aT15 z%RJA0mn}_Zf;O)CTYM}?Sr{aE2uq|xOLXX{FB9iSqNZxhYceK6;;fA-|03 zDmph`+EvwG0e~D*vmhdIi~uMcjj?2{aN5Qkm?r=fAplWTJ&1t@mdq0^TAD?R@-^FwD>mn^_(_c`24Ga7>y@c+4*#V z7tD|?OLZ3JEIfGJbE9d)Q)g~YRnY|da0_6KbyXGmp{}bx`rY6C(?9u>rfG<%swzZu z&gJm9Ugxhb-3@R=766DbdheU2Nvy1@>c9EpKi>NNFW>xHEH_O1i5(DpdVH{)AwKuoB zrm=Okwopm%E4yeN{_0nsZofxA3{6-0&39X_=eVxn(u=X+ z_`=BoJ2`ccvk2*4$V{8t^~^3rKtw@_9IbJwKZ}OvR8@1HXK_kBUT}Uc!`b!GEX{TZ zm47^MR~8=qJd0B{X>+#ZDvBGUPOOsI*kjJLM};a2QUU}Wm&zsJ=Y7OSZR*3g1tCNr zBtfvY;ur-Efk}=L4hNndGAb)^N`myD4n@DiW1>5kVR%f1^-sCI1!Cx;a$Dqd>|I>i zgTdpanUlq1-kdpr==)-xv5@UYY0wBT=fI-|?ooPjvFTFEev)6bpd55xq6!&C+WN!yw_Uf4!5|qRF~*#)&KlE_soJ{Q-fus= z|FqrUb_=emfAI&GU;K!xj^4lBcZ(VXq8C78oe9BnOx7D%VqI4;f`||p7C1X!#wcir zBZo1r+GX(E)$PTT)oM|nt-IB_i?XlRoW_r}uM`TEJ(y0+FB8mFlrrWB+yWYXGP0VY82 z{S>@)<}k&UCWuiG2nk(lY-fN(f}{a?yR4hF3*Muc5JH-2L^v^TnaC3;I1Kwh@3<)x z4;~inigPYT76Bq`+d37c;zq0orfE=%$IUo$I&Rj0l9@(CdM#Qe7-k8C=3YWBYHn=i z2JDm@k1z`Ji1;&$mWt9qIkMU2<#i9m05p@NxuKb$(Mp#O$`QoJ91i6};Jn^>WAppj z-JIhu&JbKTp_q;=P(J@#xNgS+GpZsU5{NuBSzDJwzaNvLX@4torf6fPM=B^m;u2UYtSGf3r7whEFAfGk`JEhNNz!{ z_tD;g*`MKMjtqEgC4TYpoX$*4(fdW~ z=FpL=dz4qdZQA7Y--1g3hjg-O*nf1eL`0-=u4!67P5<+s{n>x}Cx24c^pC4R znI^e&xk+I(`&ccB$W`VTT{^5VombelZC%&TpFQI-{+I8*A*lLY@4Zha)dK+ZyD{E3 zH3<7@?mc_sP!OFu1O>CRG?&=U_44xdg z%JtjH_x$X|dUeL*Fx^~DNTzD&{Jc3^hi(bqeY5S{*%x12-fuSo#6dv7S{nl+N>$qg zksSH#Y!PB0G~J?N45l)E3=qJN?EC0Pxxd|Q?{^&(E>fwLs9=fQ8tavdambme-j&n=TFv1jF``j zN%_so&Hr#ZKZVNU(FO*TgQDS}K#c-2G%{u-D&PZVpq4*L&z*BR)>t?SMU8X9ausV*0%D}wsQFBkvnQHoTy#*G}aar@Wz|izu&(P_< z(~^Lv&P1lFC|~=IxtWEX)`FyaJpc5lPkB*-UH?L8i=K7P6`TYm zy>lroM)rEgzUH20m*$2j2MCm?=jVlylhZUDSpf9p4xC=O{M0m2ssC~20{(Vp7XK>o z1~i0p$h1sIENtj-c4_38mS6EPvf#jgeP=iDeduBc9{nAQl* zfBkZ9MG?-=#bz#PfC4q!4@sYe zxvr`hgLwZR{;&V=tAGCIs;Y?S_V)I#{_3x`+ill%UDvg3oBmB#(=;i9Ro8V@ReJAI zig@Ll;$IO7A$<4dO>`WLZ<}Vf>k$PJk)ZC7wmy!uT+)-*XZtO^{dVIAynZ`OVY0@o zFS<8he`uD?4}RzJ_V&gAE$hX_xgEhxA&{xBZ}vkUBZQ`{$8jH`T&$lA(-w%MK)Y%f z{CZK>#%}L+pFWKc%pd;OuYUEbH|?Sp17p7v#$jY6G?uEyHdJpm+iKZd{?2)|*>2tr z!+xA_g1r}(vG<06Av!0*yq{w9_~FCN%deK_i*DR(Up`xro320J8#3eV_UTL4bmjIofo8$3nI_9Cv*Pwu>-b{vmYi-WJq|<8^Kvw9st}g$Xjf8eew1%@v zXHeivrb@Rll`}gPn{oiJs3I@U)ud|lDX=C__-fYW0y8}tqvzD(XDlMBAd@a!gJ3bu zT1)`xCTMo)fDN2pxw`C|rZ%$L9L~%LkOEmV$vRnJK7T$3?zzd-BKL0=0;+ekwL>** zNV%rw)4@dvdBg%UrPC$nb?aFgS*<9_1?t_Sph6Lv&!D{C;`4lI7U_TKI0>#!Qt+fVI()lUrlsO%uc`cl|^7)>R3%|6u78Dk90yqm}^XZaG zRBrvFESmTG92traHRW?%w$>gZSV?a#E-rkC?1Mv~<4%?k!gRdGam@b?!!W9A7>3<;H~29+Kxdt;?r!hN7(_rqHx0vfyL1&rxVsJe z4fp%V5q)5eC<6QYF!f-`)wcQi*Wd3qVI0HLr)}L$YA(wE&>NLH2ji;1akUcl`9SefFZVuIl$=)l`IrV{97t zi(mW@Y7rwG1=41fV~hs?L;wVhMdP5VtGa2u_pWj&pL-g&7;B6(%n=0vkwFl_TIanN zK?K_E#&Pl?NC+YDgv3|x_E&F0?HW^|4*>+7Ggakcj2u%2EV0%YW5X0AE&O6g^MC>( zk^K?Amm)d;eaVxe~Q7qh$MsiC@8>j1#VWe6s9_=rHPUKVNsSOcu(~dyKG>F zWsgE(1`$-QRo1%s7*3WkW3?qN2Gbh6Gyz1EGa(fv zYlaj!TZ~!ZbQG&0Pq#vshNq#9qCg!m(*zXd7jp9GPjg$Y%Pc<8y^!BOP$emK%27Pv zm|o;G0$0pa%;`Y|=%ki6X=3IXF*J*c&MKI!%_OSm4$*_8;3>l7tfb4hu*pFGlt#zHN zQ~Jlz`(c_;5J1Qf9S+_?LX*xFPvVt^y?k7Rnd~VuAC@=6;pe~%P&0(Ksa#btGk_5W zzl%S8^|EXEm%q8X`Y^_n$`S#=fCw;;V_2Onknmsr>ANtYbL8sg!>6emK_;`g3LuAd z2M_@ww--c~8(TT5H^Xjm9#-dY^=Sg6Z@=sNJqh)TMLUjh+)P5)bX5oe3H#k%BCXC> zP3yd$d_Oo##!-y@ZZjfVL<9rt)nXhcj=>ltW1Tb4zHrrI^wYgXnfgtL?)@9zE*8}S zU}0jE&CPz;%hdU%!Q1WDEom}fIz!&|yU9cj0Nyi<68CPkSl!)j9GZ*s&e2GK0OZGr z5?;Mp{N%^yuYa_7_vha%&pJN@gVOgAjz@VMyPe6=a@CGQn5Ky%kHf?)z<`8E(sYg` za$pt=!2h5je_mC7=KR$Af5yAOQN&qq?#{XP71e=9EtTah%O+od4A7#~kyyfhz0)A`cU7 z`K!5Ohsxs0Y+P8-lfTkIAUqvK6~E@HAH~E19g6A-NK&d^f&!_1G5UQxxPQ8xMc7l09lBT97CI$m`rLmhqMOr_=;U;N zoHoa!cdI4j(Q@EaRatFHc=UbUo4FPGUW<@!qfR87UF;d-y;8xBvBgeTGOkx3}NEebZDG3H;r!|M}+b z?stFqlRx?XUzFV9vrr??R-KTd`-&<3MDF}eE^y1>#_U3*F90D(w z%e&hEr~mrRyWqWT%=%)bm33j<#t;oTTbt$54f~s~ zfBA8FhHZtr`~LOs)OVYYWV+w`gCD&4?q9m5iUOvRi!UnINOVzJ?h*FWSTF1C$0#Fu zCP8#=J@_ze!|wJI5(U6-e{%~IeIP%AbLK}sdO2?1(g%gb9-W#eo1Y-;m8bcujV@!x4G9cpNtRzMm zVcg5&5-+~6Po4+CxVe|jPGZEQ#vw$J2!P)E7(Kw@q(Vdh7Lel#n}@ZZgef7_DPHJ> zeTB`-uj%;nTnV$Dq#2MxfAaf}!YH1`c=8MR;0_HUg;p1}YmLpeP{U|px8~|y)RHNe z<0NLWVk|dSX2ZB#V=jl(LY4wSiWpl6fryNu8Pq&{J|8veH`2qLilQ)++C1oTG(+%s z%t(GM+ve;Y783-zqcdTJF(~+~t9w*1L@fX+0+w^HRP!?nh8B{!Fyx!;(rKB&W3orh zguFd4PnYC~RBl49f=)M<7B@$ZnPl_<9wbLj=T8f<$>e4CLe#KF`@VAYXz6q^u~4qL zRn}za{B!yyf0z##(1oOXHF7)Qu$GV_6jZeIbA7F49+Y=7XH?NItddjY))lgs%bX{3 z(e>&HK156z(u-dH+#)bIRhEDAwDo-KPv)fV&D>=gOma(g#}zoB`KIgDgSWJjAw4fL zZe+RAP^E>T=qXf7GvyR!a{~*D0H>lNB8Y-W)>U=0I5=1c(sivwLBxxTi~G&C=~~Dr zO!)lS)BpW{`Jevi_kQ15_xAnwmZ+*4L|m_5|Li9}cCKcKufKZT57W!1&k2wPnE8J^ zTQ_apHVuRP`CtD(fAKfd)$JX7uBbAOL?BGz;_~Uc4S2rKnc(LNDN+LJQx>=H2TJha-?MEKRVS4`TRbAut zr|*R@_UH(2uij4E`wts~wGRUQz#&HNJ%|ws8~}k3xoPX&{W$GCB5m(?i_SfJW?dcq z6x+7z@22gYjQw_+n2ce;I0XSfE8U{oY`07@_S99~$D7U1fB5ogXO_$A>~ebh_E#K6 zZ+MzQRo9h+&D~u;O=4`ri0}*Yv!+t+a1B0Yw4TeRC1W^poZoB7b zML5YO2>2-w5dt9}5l2KM00Kw!JG!63`BNK5FHm6=gpiI*77@h5ZscK@;E?YBFuX$~ z07>qbz(W#nOvm*c$UabR)WI(a&C)PBxi~57f!2_W;AdxNyWP%vkEu`q00f|XXh+h) z%p5&h)dm1gLpWMd=N3h4tky$3b!akLWjj$=lmaUYEGu3vXeb;DjU#$yN`t9}DqU%= zD5G1B9;Mw3sFv*L(PX+mX4nFiW|}jlg&9L-s_AqFc8+(s?41wM^{^y ztO+PqyK9yffvcm$(qU+XEa^Ngb?!|OKhxqTr*4Gim^Qks5(i{&4Aso3QoUsSPR1d6 z^rgGFkXtR=`5shAN%vHtuo?lh_~o7|x>f(Fr`S+I&7<;=$;du|ZbEJ{9=&Q^ED?ne zbRqM)@|>f_hXM*RyYe!-%-j5}rZW*xG(=Zah#~-_b*Q-^TG$HWHTQBkqQZM{I?<^+ zD7~CL@2u~-%QEt4{_9bbuD6huj8v%L>+l?sno!d$Ru`{qVu>*nVyNpHNfyh+_1&FO z%PbJlxk?yfl%_I^ZZ-6KLQ~hxLn1hYv(?$Niv~o}x-0KJvj8I^ZMXL*6c0xnlCdO! z5@ekGv!@GtZ2+n7`-j6&EiEn@H0Ua-&*^S^Z(5E)3<(Nbg8)Iq#0b$x2t4-V>T=br z2`w=9SWh9E+BU!c2S5JxcYnWn8aqpkt-t=~Z-V&XId~I75Hbi35t&0%cPTl0WeuYA zw=qtpYuYJz54*bU!U((Ddj~apdwqR3O^j$3s|GEz=it$hoxJb+VHhTk5P+|*x6htl ze*Inl^|#v}{M1Ibi^!(3O}iRzZtB`jabj9yrpinM#vle65d4m;;A*wl z?Iw=Uw3RVn9slchAEO7V?Dfr_jlJD@VY<9ni3CEnL_VZQkj4(2MlZtFIAduTdO{7^F<(H4C9GHlS3^Qr>qfnR(A6dh-<`>AT5n*o9 z(&pI^LLOJ;qSDKH^|vlW+rI)hG}-zS9l(H7`&ST_|J7!uFclhN<}Jlz4ro%RIMeA) zB2C^A=mnI8E;yz+od4AFqmh)43;a{2m}!~{<`h;l^RsXZbk&)FY}=SQ+xOfWP3OE9 z;M6E))@d>dgQ44)@jAb$%}HT|iZJ2)K7TUr&D_#L_B3q|76`={lNNRqk&M%skjw$e}KIu8Bo&W_IbO z6#>GccXXf1?1X@M2jOuNUk6~aFw9j|cXu8bXsOFz&0D8E<^mga^B)Z_Y3>!^qpvLa zy0df>=GAE$L^HPA?0yB((`SDcc=G5~zKzGn6ayxHChOI1}!wD0?IoVL5o_07j&=n-(5 zrnJs|-}l3?4s^7#Wbj7^xb&-wzTo#uOI97@{z=ZEFp!R;#=FU9*xWUy#Qwk_9lkUD)1o zWva1<{Wg-+t5uB<4Ar-vd{eEa$yc@Gz;TlOZgkE8&~nu_b$xf+Z}0g2jzNs~ULsp- z#vuTpG1L!}kIcuF-C0kJHBDW^Vd!s+A&zP3_W^=ZmUDm;C@Iw5Id_x?0Fc$H6O>^X z>#800F$Q$jWgjRH7c?#$0Sk`*VX6(Y2>}2u$6;D?a%^T6Zyp=)Sv6sKv00uZvg^ONq4j!W>wcE&@t&rVM_H_6ON&a0;)8H8BGd|0EL*k z-i(rSh}4!+PVG9*Y>8%0Zabb{0C*IQ&u$dY{g{C?OQ5K!zycYy|C%v$o`_YCtuyf& zuQffIT>wYnloQU+dtWz4mz>$IAzO=zM)0DXEcseCMDJBpb-~Qq>0fizh5TnS=&<1t zwerGo0F(ejrBtZ*MWTE- zJ&9JxN!}g^M-|8n%=Bnd;WY56)uDJ_Q+Og;ic6YldJHDV*pimIf+|gk)*5}~GXKp> z6F-*(-6G9@ktDiEWSefae*S84`N9GU8WO-LVY?p<(dfth)JGq~6odre)r> z=;OzCgl5sLIC9%9KydP72;tp_f302f-R@gsObi?%ryYo0+pgA23vj!+*=)9>AAqE) zZJcE6BSajAo`|;l9TAbUX(B1a5JEHvLKxy?!0g}1(sa+BHNo$Af)GM5f-Fd*j}pfq zynXtzj?)mwZCx$9ORSdi;Wsyx7-QVs{pR-F@aoy~|L%Wyz4!Q=|MTznTi)J!S2a<1 zn*21~BU%&~$Ej@_0Q6Iwh9H7pg#>$ib|b=EyutzQ4+`8U7$w!atO z#}J3McFRTk?RVb;lN`p=jEEt?&<}vb%=>=7T${7!i|ebMzdIbPK}2LwKzvGIC6M;e z0iZH7`M(EoDdzqWvFkeKX}=%6_ac11iA3OR?WeRCPrMIV>@@0;nw3w5!C|S@F=8bm z!kCWHd2E6sTNEAUO_MTdV44l5h9sQ<%NR2bvbFmr>0g0stU`U}BFkzikkiaWlri%sCTBt|%jEx)S%aKbLDSa%;_v zfgZu*>6t~xq685o9lFWo09xN@?ma3kSz>e8Z?0mxKwWGGbUi&(SU5S2PpW_D$-J+q}?SHZ)1j}&ieDJ=}Mmenk=I`;FZ?az@v?d$6ylP0Wa zZxIBA(-l#=)u`sh@HjNe;tDets=%Cij7^i2MKsH2!4u8cIoow8EQPqw4>JNTSh5#7|jiDz`&gHOr)exew zwr-p5Y_VJ~>!xYjwr#8Pv$Koyi>7U>$~}2w!0z7Pm|6^=_;K7$<1Jh) z7ftQrWIw&zpRb?p?A%^pdC+*5C7bXsI>Qi6|h8^7BNLN?UPH(Sn zmlsb(s@?qvObCJqRa=pT=pzWmz~ks+OsP2dfEX;o5<(17LP%1@bzPmEtu~vj9MZ@M zA~8QG|&cE}sb5Y3gGbTvxBh(f9iuKwK}{ zAAb4e&wlpPrmLS`UW~(dceepBNA)m(D9m+TGqWKBDD9f;g8Th2^&kM&+NyEsn9-DM z0`ZW$g@}&Xqz+|d&2(wJnG!22kfDj8KVov?9w?xh1Biqij zgD>ew4yw&(Ml#A27?H2^a$1p-pB&BDfgV5k6lFBVAc9)bk)Y=!Vy`uA4k8667O{s% z7g1_DAN^IAlU^Una$Wg}?w10g=yaDHsRe3r#&B4J+YmXph=sk&}oCt}& z*EDO!=2qy6G#`pj=2tGch#uu`g=4I)aNKd`9DkN(0z@Q(fFK}5$EgsZLX|}&Qp&bg zyY-skMPJMqD90F8vOp(6pkqhl(G@G5NFDP)#1ynfwfLs!<)YsU`6=!TeSuTA15Otp zYADFH>-H9_^5xVM)dGM=AGDBjeQA%OV8x>aY9%e&J}+E9%yeqMw&0bPOi%)uU(TiJ z7d|KO`6vBa(Yi-zF3QYmlIbtVn76kOiGqj4%esSzOuJa0KYg{jcv&yb&Ff$MjF0&! z9oe>7^xGj$F|Bnr#u#gCZM$U$0Q+Hh@%-6WU%qbY_Bg~rW6W}~cCKohMcZ_S%(2U{ zuBxi8fAjsDfBp24h=y^D5)7d=Rw70ZC@27xbK^L%Fr_fD0mA(@+!6tTClCno;??@; z^X0geapcw0dVRV6{_Bt3Vo`Mn$W2ql;4vC&T-Vk}akn2w4-x9^UGO6gJ&b$YZsP67 zuwGoC#1HRo`%M4_L;}aI1GhjjBrJ3|&kb2(4$K2!3h+*&&l;Yfr|$=jg2(g7jG?M> zBGR^PKlF&$v<(oy_@YIQ(-`l!A+Q0do}9bN?b|L2)376ux~e*3-2GR|? zw_V4aT*f%p4Xr|mhw);5(zY!KOw*L1MnvF{NipeFv@XTK2|xhzsI<@r)LNIJ^Qeu8 z2pV3saA$%Goq@*|m8&NR2vucS4#!WYkNA)xE90hU$kQq$r-mgf{9G;bpK~*x-!Dqb z7oA4VwesirpzNa*t6?%TPduC1bOW8v1{SV{C0Hh-@9`W8Z&mXlqbJ@`B z)h}qlp4%kd-H3>Um||>+PB zG~F=t{WywX({?Yvtcn-iG(a5(r4dX^0?%NX8Hu zV+{G=B~5>Xh&|vAsFG?4h{hT@dx~M)?S?4?czV9N-+dB>+pGS+#vs%l&5D+zreW0>68I_u>8Dpg|vFTKLphWJxFFz+&0f zRXt79cDrSkwryf$KSXP+#V&}Tunz$+l8IGChzM*$oMH@!Cab_))C#T6xEVr7;cY|$ zhyY+r+9t-v80L^fB?b|RfT5{6YpU&Tn}^Xlo{WdEyrjdY0RWK@IqS8kp*Ef_IF-{y zBv}*moR@Y8l5KAqx8Fx$AY+)L2;dQ01HtjV=&2SrmNr-#C7VaO2?1t^C&yq;yysC@u&KmlNm zxtkEdSSyi>6x*7mkBVq+uU>=)3df5c(H)A%39<~e^GPM$xkvGkJjx=X!@yEX8>6d} z(*-57Mu~nQlcz%+dXr$9SS+SHl>tCwP4JRd&5GJ8SWI?j!idOwUl4H01c)J~_5vdr zicEw=L;}K+PPJl9e7;GGobpdboj<50N2@>*mg6S?hjZdf&pRvM+!E{RQW}wY)TdD1 zJXedSGvF}WXQ%Z=D{q05xh|T`z3L3(*{w<4s)Ie5uzV_j?l@2v9;Za*7^Kgk>pWc! zM+q;4TvJ|zKj)HA&;|-Oa)rGuF~bYA0i+L5@CF5#lWxF3Ks)Y3?(@`CfNN z!8AQNt9vtDMIr`Wpe`p*+KS4LlfSL%Zn?f}muI$WK*)UgyFX3zaFq3OWm04n9wPR( zvaYgK?N(j;^77)z`kVl!al+$_fVEaww!4iX6FBty-EO}h$I%$$Y=y`-_gDQeT;JT^ z?=~WgfYF1sWUV2>^;wf<+{R&al|6rY27q_pe7gI1=d5%qI}BV|svLiMH%Vxozqq)& z+HS5!i8cgjSJYNqToqzWUJVh7r0v1rDp$F@CtRw^HEkP1tm_&P5V39RsAc=96QhlHhG0+zRhx$_B-*a%?mO-4ECUZe<@BN1_Gmum zf9GASUntzKfs;UwYjt8YKB&6u6Vk%7=#Z-7zIff`H69-Y6p-ryU zL30nOf=@z0sC-1NkNPIp%PL(+TKb)6L_`3BWAHN5mYOai#oDZ5G@{KjD6ua9AFMiOSJ*%1}B3Uwo2x<7!H0?M}AuuNtLpV}RovWXpUp_y-;1F(aZ&G{TefYkq zyR)&?{{6@Ou1^TXEa|A5p&wY72$*G(0Ei$)t$8{TwL)nX8Ymc|{4_}( zAVNCI5P+B?fB>>JaC!M8_=&a>xd`e4A`oHn`;W?e5Z4s{*HZv=ntdRXH;+BQDJEvM zNyuw0aSYB{O9)^D1P|L7A4ZnBQa#Gaid5Jkt+9o%PnWiH1!1QQd9V#xw|Ta7wD1Xv z8Vlr|Q<$9+&DA;X>*mZ0gi}1y4?%ee`OhRL>8%7n4~0jG@Q@0mAUMNiLDig$+&Ycg zbDC*3>6x9vlra?`jU}*X%dvz+03=p}oJ_IJr2-#wKH&61HT{%>7Ws2NT|1Tk)HNRY z36Udn6k)`Nji~wM%$&jt|6KF}3CLg&vDT%A>rEtv3`f@VWS@R6Hdzev%UUb*ui44g z@=%O+(sId^^)%ztZxPXq54o{fg$rFMel1i_x2PDsklOZN{8S81<_Zg^I|Fokiyp}> zm1DdlM^JKLOy{r349`$jNRF0=%!*uE!BVXbMbBpXweZkvVgVjY<)Dk5mpu1=GBNp2 zjbNJWdF|=asRwm0vD`QWKN2tl`ueL5U8oU)!9YeE$g~LBmiqo1tRG8 zT)E0v6Za7gv+alm0R%xp?^~$9ym;R4``_%o9>)n044Lbzn;-q?tHokrtpkC5zyHnG zzm74StA1%9DPcmf07;9T0rb*I+m?;Gl zL_k6U!_2og8$=Q@X?2LT28p~M1qC5veHyA}#W(2iEH0#FJd)5>4G4^Ud=T&$*CYj3u@p92n5&Y2!#eU4^5 zXQZ)}jyu}4$$2!aH79cJN5T<_P6G*vU65J9Dl@0**<>dU?JBlVf!ZCJpTK8e9Z#K` zM9lG6Yd*Ty58Y9Wa*y!Ma5{et49tlS<>K7AU}!PW+$-3Kr?W_?#^rjlJ98i#NJL`| z0SXyHpQd6ZLqDC)Rb?5|<>!u5swW8OtV6Hav=?^V$H?dA-4hU;dZhynFZI^8D=Ov*%sY5F!!Qb^YnpM1Evz2EKo-F_bf^Yz`$=JvzQr@PI4KTZJ7RajLh@-Ld%puV))EU3qaU_mYj9b+|M*Y;{Pg8H zQ@q>k6K`IPk`SZKYwX54cj;=%DIE|qqyWQ;~I6@?n z7(KIm{BQ*z);c)sqmjC4004w9&(6BV;@fZEgecD1pZ@qq(fj?d>xZFREWSKnHS&061BYTZk9TA}%6AWU8v_`!S<{RuV0Xpb|O4(K4k8H9bg5*(;7Z zAS`jY?7-lDH$XJw7!ZjCnFAU$F6Dq>d01VMRt*6G6`lFl(6W(e!t8t;Rq&)xJl|$z7>a7^I){0=`^}c2)Vf3Mv;^ zcr$VgSZcoMP?nr}0GZ${=edyVDQYm${7HW%rWN5p9m@oTx7vfzN&n}f@+dR)PoRWN zBV=Zj=85hg{iGz#^oL3Hi<*F(L>7ZZ3?b=|I()nZN6 zLa<^cK(KL&Rc&o;>$VCZKpL45AYeYPx2h@-x$pa%?dD&;{w9XVF{DwBHO5(6RaMGp z;Jx=DhUmx1M~-#tx^)#Lk}-g$TP_h1kO2T9ARr+aA}|!9U!5)X(>)9LF^spb@ypEgti9iLLkG4^@>(c%=)V*cl%+y#pymkM3yKi_W^)N`j7AL?<-r?uDZRw zN5H3-Pk_*(`QpVn5r6$nKLvy64U!SVQ@HQ%zyJE(yZ5)d-O#q}`Ps$0_gDMT3yC0s zfREGV)Aj0Q)%9+;_WP@d!5|VC;3$R&04DDNg%APQRd%^t+};Ke)&i7fI((QoMUfs$ z!)La0_pvW}}!xX(SXbk1G^NA%f1{A>A>S@h~90JcD7J-U_W5r+(mAjCQU%?{y z{CsX+Zmii@$g1uscuefI6oDF?WD(LplqD@`C96Fmn)7-{peucpm{d_dY)Z>RrX)$% z=gK+hP-O@}ZST;Uq9q}-aqh5wLa+o$Y`Kmg^cQh8WQhN3qt32#PVr`e{NS zTO%41SjfRJ?inHrf*>LZun6?M2S7IF)2Cq^2LfbZV;rJkiODc?B(#ieSbtf4_;4>a zM6@?MKaGRbrfOif-$hTppX6%qL#XT8kT*uAUi=O!YoZy!dUqzG2l^dgM z$6=DlAQFL*3CNkM>$#?=2{ekpZ7`b4(exmQSCsZJ#?ix8w;3=o>vLoq@7UHXN&>Cy%`zh6j&oR0D}uTKADKmw6?bWZa-8Uf~<5p@;yq972MgJps|Lz}+K z)1!0w2Q{hzHOv2Kr=U9UZZ2SRG0==vVa12$;A6f^A!hS_hf}r1)3s1|8lcr`rMXvh zO0HK=Jmu+#f(iMP(|9Uq8j5a()1(IaP0a^gZz@v@`J>%XdJP(r9b(acZp7c(An7G)HY8I0>2&G4f8bl+)M0BvQ2`Iw>FRZYEo z;<|Hk9e{zuutzMQFhk&QdvjBp!C*x~a@5v`iUA;X9+WZY(BA@Q`TFKg1mAxD z-qm*UVY3~LH7wkZ1Mg#+R){RCb?g1;W7zjS^C1Al|9@TAvePgS1MO^*hE{+;;>Zd9 z|DWIj1&Iry^pUkWY%`g7OAl2NZ4zf~kG-?6WFq30zP8_2*Q>jS;rZ$D_2un-EBR!* z-LH=-p0rU_X&Nc3R$*z-^=8O9mt_-N%q*K_m8MOaQj0NxvQXJ&`PL5Zf;iq)^@?$xJKAu{lhT~U@O4VcLI$YWYP<}@PIyU{F1IE7FFh2nOy90#GIs^uAGR$POlEW#Cs zQZ@;9FU%~()mbuhr<7DN?FzF2?}$$pGFQIB zY>F;(0u*lB)U;}5ji{Tc#%cc`lM34bY6o>F6iy(OW$U`+Zk8vXO`=O*_t+;S7Ee>^5=cP7cfP^F$n~Ut5u$&Oc!%vreYOHsorB&)Ip%hNjUcEKj zr!>;>B3UkEmKOnv&5W z3=wREQZ)sGFeuE@@&Rih__7ds&u`J9cS$Mr!)9}H->+}mVXe}Zb=uwi53~A%vMH^5 QQ~&?~07*qoM6N<$f=vD{p8x;= literal 0 HcmV?d00001 diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..8068eb9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,22 @@ + +Copyright 2020 + Federico "Larroca" La Rocca + + Instituto de Ingenieria Electrica, Facultad de Ingenieria, + Universidad de la Republica, Uruguay. + +This 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. + +This software 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 this software; see the file COPYING. If not, write to +the Free Software Foundation, Inc., 51 Franklin Street, +Boston, MA 02110-1301, USA. + diff --git a/MANIFEST.md b/MANIFEST.md new file mode 100644 index 0000000..8ccd3b7 --- /dev/null +++ b/MANIFEST.md @@ -0,0 +1,17 @@ +title: The TEMPEST OOT Module +brief: Short description of gr-tempest +tags: # Tags are arbitrary, but look at CGRAN what other authors are using + - sdr +author: + - Author Name +copyright_owner: + - Copyright Owner 1 +license: +gr_supported_version: # Put a comma separated list of supported GR versions here +#repo: # Put the URL of the repository here, or leave blank for default +#website: # If you have a separate project website, put it here +#icon: # Put a URL to a square image here that will be used as an icon on CGRAN +--- +A longer, multi-line description of gr-tempest. +You may use some *basic* Markdown here. +If left empty, it will try to find a README file instead. diff --git a/apps/CMakeLists.txt b/apps/CMakeLists.txt new file mode 100644 index 0000000..3b443dc --- /dev/null +++ b/apps/CMakeLists.txt @@ -0,0 +1,26 @@ +# Copyright 2011 Free Software Foundation, Inc. +# +# This file was generated by gr_modtool, a tool from the GNU Radio framework +# This file is a part of gr-tempest +# +# 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( + PROGRAMS + DESTINATION bin +) diff --git a/build/CMakeCache.txt b/build/CMakeCache.txt new file mode 100644 index 0000000..84fba06 --- /dev/null +++ b/build/CMakeCache.txt @@ -0,0 +1,761 @@ +# This is the CMakeCache file. +# For build in directory: /home/emidan19/gr-tempest/build +# It was generated by CMake: /usr/bin/cmake +# You can edit this file to change values found and used by cmake. +# If you do not want to change any of the values, simply exit the editor. +# If you do want to change a value, simply edit, save, and exit the editor. +# The syntax for the file is as follows: +# KEY:TYPE=VALUE +# KEY is the name of a variable in the cache. +# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!. +# VALUE is the current value for the KEY. + +######################## +# EXTERNAL cache entries +######################## + +Boost_DATE_TIME_LIBRARY_RELEASE:STRING=/usr/lib/x86_64-linux-gnu/libboost_date_time.so.1.71.0 + +//The directory containing a CMake configuration file for Boost. +Boost_DIR:PATH=/usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0 + +Boost_FILESYSTEM_LIBRARY_RELEASE:STRING=/usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.71.0 + +//Path to a file. +Boost_INCLUDE_DIR:PATH=/usr/include + +Boost_PROGRAM_OPTIONS_LIBRARY_RELEASE:STRING=/usr/lib/x86_64-linux-gnu/libboost_program_options.so.1.71.0 + +Boost_REGEX_LIBRARY_RELEASE:STRING=/usr/lib/x86_64-linux-gnu/libboost_regex.so.1.71.0 + +Boost_SYSTEM_LIBRARY_RELEASE:STRING=/usr/lib/x86_64-linux-gnu/libboost_system.so.1.71.0 + +Boost_THREAD_LIBRARY_RELEASE:STRING=/usr/lib/x86_64-linux-gnu/libboost_thread.so.1.71.0 + +Boost_UNIT_TEST_FRAMEWORK_LIBRARY_RELEASE:STRING=/usr/lib/x86_64-linux-gnu/libboost_unit_test_framework.so.1.71.0 + +//Path to a program. +CMAKE_ADDR2LINE:FILEPATH=/usr/bin/addr2line + +//Path to a program. +CMAKE_AR:FILEPATH=/usr/bin/ar + +//Choose the type of build, options are: None Debug Release RelWithDebInfo +// MinSizeRel ... +CMAKE_BUILD_TYPE:STRING= + +//Enable/Disable color output during build. +CMAKE_COLOR_MAKEFILE:BOOL=ON + +//CXX compiler +CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/c++ + +//A wrapper around 'ar' adding the appropriate '--plugin' option +// for the GCC compiler +CMAKE_CXX_COMPILER_AR:FILEPATH=/usr/bin/gcc-ar-9 + +//A wrapper around 'ranlib' adding the appropriate '--plugin' option +// for the GCC compiler +CMAKE_CXX_COMPILER_RANLIB:FILEPATH=/usr/bin/gcc-ranlib-9 + +//Flags used by the CXX compiler during all build types. +CMAKE_CXX_FLAGS:STRING= + +//Flags used by the CXX compiler during DEBUG builds. +CMAKE_CXX_FLAGS_DEBUG:STRING=-g + +//Flags used by the CXX compiler during MINSIZEREL builds. +CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the CXX compiler during RELEASE builds. +CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG + +//Flags used by the CXX compiler during RELWITHDEBINFO builds. +CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//C compiler +CMAKE_C_COMPILER:FILEPATH=/usr/bin/cc + +//A wrapper around 'ar' adding the appropriate '--plugin' option +// for the GCC compiler +CMAKE_C_COMPILER_AR:FILEPATH=/usr/bin/gcc-ar-9 + +//A wrapper around 'ranlib' adding the appropriate '--plugin' option +// for the GCC compiler +CMAKE_C_COMPILER_RANLIB:FILEPATH=/usr/bin/gcc-ranlib-9 + +//Flags used by the C compiler during all build types. +CMAKE_C_FLAGS:STRING= + +//Flags used by the C compiler during DEBUG builds. +CMAKE_C_FLAGS_DEBUG:STRING=-g + +//Flags used by the C compiler during MINSIZEREL builds. +CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the C compiler during RELEASE builds. +CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG + +//Flags used by the C compiler during RELWITHDEBINFO builds. +CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//Path to a program. +CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND + +//Flags used by the linker during all build types. +CMAKE_EXE_LINKER_FLAGS:STRING= + +//Flags used by the linker during DEBUG builds. +CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during MINSIZEREL builds. +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during RELEASE builds. +CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during RELWITHDEBINFO builds. +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Enable/Disable output of compile commands during generation. +CMAKE_EXPORT_COMPILE_COMMANDS:BOOL=OFF + +//Install path prefix, prepended onto install directories. +CMAKE_INSTALL_PREFIX:PATH=/usr/local + +//Path to a program. +CMAKE_LINKER:FILEPATH=/usr/bin/ld + +//Path to a program. +CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/make + +//Flags used by the linker during the creation of modules during +// all build types. +CMAKE_MODULE_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of modules during +// DEBUG builds. +CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of modules during +// MINSIZEREL builds. +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of modules during +// RELEASE builds. +CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of modules during +// RELWITHDEBINFO builds. +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_NM:FILEPATH=/usr/bin/nm + +//Path to a program. +CMAKE_OBJCOPY:FILEPATH=/usr/bin/objcopy + +//Path to a program. +CMAKE_OBJDUMP:FILEPATH=/usr/bin/objdump + +//Value Computed by CMake +CMAKE_PROJECT_DESCRIPTION:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_HOMEPAGE_URL:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_NAME:STATIC=gr-tempest + +//Path to a program. +CMAKE_RANLIB:FILEPATH=/usr/bin/ranlib + +//Path to a program. +CMAKE_READELF:FILEPATH=/usr/bin/readelf + +//Flags used by the linker during the creation of shared libraries +// during all build types. +CMAKE_SHARED_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of shared libraries +// during DEBUG builds. +CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of shared libraries +// during MINSIZEREL builds. +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELEASE builds. +CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELWITHDEBINFO builds. +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//If set, runtime paths are not added when installing shared libraries, +// but are added when building. +CMAKE_SKIP_INSTALL_RPATH:BOOL=NO + +//If set, runtime paths are not added when using shared libraries. +CMAKE_SKIP_RPATH:BOOL=NO + +//Flags used by the linker during the creation of static libraries +// during all build types. +CMAKE_STATIC_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of static libraries +// during DEBUG builds. +CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of static libraries +// during MINSIZEREL builds. +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELEASE builds. +CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELWITHDEBINFO builds. +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_STRIP:FILEPATH=/usr/bin/strip + +//If this value is on, makefiles will be generated without the +// .SILENT directive, and all commands will be echoed to the console +// during the make. This is useful for debugging only. With Visual +// Studio IDE projects all commands are done without /nologo. +CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE + +//Dot tool for use with Doxygen +DOXYGEN_DOT_EXECUTABLE:FILEPATH=DOXYGEN_DOT_EXECUTABLE-NOTFOUND + +//Doxygen documentation generation tool (http://www.doxygen.org) +DOXYGEN_EXECUTABLE:FILEPATH=DOXYGEN_EXECUTABLE-NOTFOUND + +//Build docs using Doxygen +ENABLE_DOXYGEN:BOOL=OFF + +//Enable GRC features (export block YAML) +ENABLE_GRC:BOOL=ON + +//Enable Python & SWIG +ENABLE_PYTHON:BOOL=ON + +//Enable testing support +ENABLE_TESTING:BOOL=ON + +//Path to a file. +FFTW3f_INCLUDE_DIRS:PATH=/usr/include + +//Path to a library. +FFTW3f_LIBRARIES:FILEPATH=/usr/lib/x86_64-linux-gnu/libfftw3f.so + +//Path to a library. +FFTW3f_THREADS_LIBRARIES:FILEPATH=/usr/lib/x86_64-linux-gnu/libfftw3f_threads.so + +//git command line client +GIT_EXECUTABLE:FILEPATH=/usr/bin/git + +//Path to a library. +GMPXX_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libgmpxx.so + +//Path to a file. +GMP_INCLUDE_DIR:PATH=/usr/include + +//Path to a library. +GMP_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libgmp.so + +//The directory containing a CMake configuration file for Gnuradio. +Gnuradio_DIR:PATH=/usr/lib/x86_64-linux-gnu/cmake/gnuradio + +//lib directory suffix +LIB_SUFFIX:STRING= + +//Path to a file. +LOG4CPP_INCLUDE_DIR:PATH=/usr/include + +//Path to a library. +LOG4CPP_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/liblog4cpp.so + +//pkg-config executable +PKG_CONFIG_EXECUTABLE:FILEPATH=/usr/bin/pkg-config + +//python interpreter +PYTHON_EXECUTABLE:FILEPATH=/usr/bin/python3 + +//Path to a file. +PYTHON_INCLUDE_DIR:PATH=/usr/include/python3.8 + +//Path to a library. +PYTHON_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libpython3.8.so + +//Path to a library. +PYTHON_LIBRARY_DEBUG:FILEPATH=PYTHON_LIBRARY_DEBUG-NOTFOUND + +//python interpreter for QA tests +QA_PYTHON_EXECUTABLE:FILEPATH=/usr/bin/python3 + +//Path to a program. +SHELL:FILEPATH=/usr/bin/sh + +//Path to a file. +SWIG_DIR:PATH=/usr/share/swig4.0 + +//Path to a program. +SWIG_EXECUTABLE:FILEPATH=/usr/bin/swig4.0 + +//Swig version +SWIG_VERSION:STRING=4.0.1 + +//Path to a program. +THRIFT_BIN:FILEPATH=/usr/bin/thrift + +//If Thrift has been found +THRIFT_FOUND:BOOL=TRUE + +//Path to a file. +THRIFT_HAS_THREADFACTORY_H:FILEPATH=/usr/include/thrift/concurrency/ThreadFactory.h + +//Path to a file. +THRIFT_HAS_VERSION_H:FILEPATH=THRIFT_HAS_VERSION_H-NOTFOUND + +//Path to a file. +THRIFT_INCLUDE_DIRS:PATH=/usr/include + +//Path to a library. +THRIFT_LIBRARIES:FILEPATH=/usr/lib/x86_64-linux-gnu/libthrift.so + +//Whether a compatible Volk was found +VOLK_FOUND:BOOL=TRUE + +//Volk Include Directories +VOLK_INCLUDE_DIRS:STRING=/usr/include + +//Volk Library +VOLK_LIBRARIES:STRING=Volk::volk + +//The directory containing a CMake configuration file for Volk. +Volk_DIR:PATH=/usr/lib/x86_64-linux-gnu/cmake/volk + +//The directory containing a CMake configuration file for boost_atomic. +boost_atomic_DIR:PATH=/usr/lib/x86_64-linux-gnu/cmake/boost_atomic-1.71.0 + +//The directory containing a CMake configuration file for boost_date_time. +boost_date_time_DIR:PATH=/usr/lib/x86_64-linux-gnu/cmake/boost_date_time-1.71.0 + +//The directory containing a CMake configuration file for boost_filesystem. +boost_filesystem_DIR:PATH=/usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0 + +//The directory containing a CMake configuration file for boost_headers. +boost_headers_DIR:PATH=/usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0 + +//The directory containing a CMake configuration file for boost_program_options. +boost_program_options_DIR:PATH=/usr/lib/x86_64-linux-gnu/cmake/boost_program_options-1.71.0 + +//The directory containing a CMake configuration file for boost_regex. +boost_regex_DIR:PATH=/usr/lib/x86_64-linux-gnu/cmake/boost_regex-1.71.0 + +//The directory containing a CMake configuration file for boost_system. +boost_system_DIR:PATH=/usr/lib/x86_64-linux-gnu/cmake/boost_system-1.71.0 + +//The directory containing a CMake configuration file for boost_thread. +boost_thread_DIR:PATH=/usr/lib/x86_64-linux-gnu/cmake/boost_thread-1.71.0 + +//The directory containing a CMake configuration file for boost_unit_test_framework. +boost_unit_test_framework_DIR:PATH=/usr/lib/x86_64-linux-gnu/cmake/boost_unit_test_framework-1.71.0 + +//Dependencies for the target +gnuradio-tempest_LIB_DEPENDS:STATIC=general;gnuradio::gnuradio-runtime;general;gnuradio::gnuradio-blocks;general;gnuradio::gnuradio-fft;general;gnuradio::gnuradio-filter;general;Volk::volk; + +//Value Computed by CMake +gr-tempest_BINARY_DIR:STATIC=/home/emidan19/gr-tempest/build + +//Value Computed by CMake +gr-tempest_SOURCE_DIR:STATIC=/home/emidan19/gr-tempest + +//Path to a library. +pkgcfg_lib_PC_FFTW3f_fftw3f:FILEPATH=/usr/lib/x86_64-linux-gnu/libfftw3f.so + +//Path to a library. +pkgcfg_lib_PC_GMP_gmp:FILEPATH=/usr/lib/x86_64-linux-gnu/libgmp.so + +//Path to a library. +pkgcfg_lib_PC_THRIFT_thrift:FILEPATH=/usr/lib/x86_64-linux-gnu/libthrift.so + +//Dependencies for the target +tempest_swig_LIB_DEPENDS:STATIC=general;gnuradio-tempest; + + +######################## +# INTERNAL cache entries +######################## + +//ADVANCED property for variable: Boost_DIR +Boost_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_ADDR2LINE +CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_AR +CMAKE_AR-ADVANCED:INTERNAL=1 +//This is the directory where this CMakeCache.txt was created +CMAKE_CACHEFILE_DIR:INTERNAL=/home/emidan19/gr-tempest/build +//Major version of cmake used to create the current loaded cache +CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3 +//Minor version of cmake used to create the current loaded cache +CMAKE_CACHE_MINOR_VERSION:INTERNAL=16 +//Patch version of cmake used to create the current loaded cache +CMAKE_CACHE_PATCH_VERSION:INTERNAL=3 +//ADVANCED property for variable: CMAKE_COLOR_MAKEFILE +CMAKE_COLOR_MAKEFILE-ADVANCED:INTERNAL=1 +//Path to CMake executable. +CMAKE_COMMAND:INTERNAL=/usr/bin/cmake +//Path to cpack program executable. +CMAKE_CPACK_COMMAND:INTERNAL=/usr/bin/cpack +//Path to ctest program executable. +CMAKE_CTEST_COMMAND:INTERNAL=/usr/bin/ctest +//ADVANCED property for variable: CMAKE_CXX_COMPILER +CMAKE_CXX_COMPILER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_COMPILER_AR +CMAKE_CXX_COMPILER_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_COMPILER_RANLIB +CMAKE_CXX_COMPILER_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS +CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG +CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL +CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE +CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO +CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER +CMAKE_C_COMPILER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER_AR +CMAKE_C_COMPILER_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER_RANLIB +CMAKE_C_COMPILER_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS +CMAKE_C_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG +CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL +CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE +CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO +CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_DLLTOOL +CMAKE_DLLTOOL-ADVANCED:INTERNAL=1 +//Executable file format +CMAKE_EXECUTABLE_FORMAT:INTERNAL=ELF +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS +CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG +CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE +CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS +CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1 +//Name of external makefile project generator. +CMAKE_EXTRA_GENERATOR:INTERNAL= +//Name of generator. +CMAKE_GENERATOR:INTERNAL=Unix Makefiles +//Generator instance identifier. +CMAKE_GENERATOR_INSTANCE:INTERNAL= +//Name of generator platform. +CMAKE_GENERATOR_PLATFORM:INTERNAL= +//Name of generator toolset. +CMAKE_GENERATOR_TOOLSET:INTERNAL= +//Test CMAKE_HAVE_LIBC_PTHREAD +CMAKE_HAVE_LIBC_PTHREAD:INTERNAL= +//Have library pthreads +CMAKE_HAVE_PTHREADS_CREATE:INTERNAL= +//Have library pthread +CMAKE_HAVE_PTHREAD_CREATE:INTERNAL=1 +//Have include pthread.h +CMAKE_HAVE_PTHREAD_H:INTERNAL=1 +//Source directory with the top level CMakeLists.txt file for this +// project +CMAKE_HOME_DIRECTORY:INTERNAL=/home/emidan19/gr-tempest +//Install .so files without execute permission. +CMAKE_INSTALL_SO_NO_EXE:INTERNAL=1 +//ADVANCED property for variable: CMAKE_LINKER +CMAKE_LINKER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MAKE_PROGRAM +CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS +CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG +CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE +CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_NM +CMAKE_NM-ADVANCED:INTERNAL=1 +//number of local generators +CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=8 +//ADVANCED property for variable: CMAKE_OBJCOPY +CMAKE_OBJCOPY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJDUMP +CMAKE_OBJDUMP-ADVANCED:INTERNAL=1 +//Platform information initialized +CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_RANLIB +CMAKE_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_READELF +CMAKE_READELF-ADVANCED:INTERNAL=1 +//Path to CMake installation. +CMAKE_ROOT:INTERNAL=/usr/share/cmake-3.16 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS +CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG +CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE +CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH +CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_RPATH +CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS +CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG +CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE +CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STRIP +CMAKE_STRIP-ADVANCED:INTERNAL=1 +//uname command +CMAKE_UNAME:INTERNAL=/usr/bin/uname +//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE +CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: DOXYGEN_DOT_EXECUTABLE +DOXYGEN_DOT_EXECUTABLE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: DOXYGEN_EXECUTABLE +DOXYGEN_EXECUTABLE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: FFTW3f_INCLUDE_DIRS +FFTW3f_INCLUDE_DIRS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: FFTW3f_LIBRARIES +FFTW3f_LIBRARIES-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: FFTW3f_THREADS_LIBRARIES +FFTW3f_THREADS_LIBRARIES-ADVANCED:INTERNAL=1 +//Details about finding Boost +FIND_PACKAGE_MESSAGE_DETAILS_Boost:INTERNAL=[/usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake][cfound components: date_time program_options filesystem system regex thread unit_test_framework ][v1.71.0(1.71.0)] +//Details about finding FFTW3f +FIND_PACKAGE_MESSAGE_DETAILS_FFTW3f:INTERNAL=[/usr/lib/x86_64-linux-gnu/libfftw3f.so][/usr/include][v()] +//Details about finding GMP +FIND_PACKAGE_MESSAGE_DETAILS_GMP:INTERNAL=[/usr/lib/x86_64-linux-gnu/libgmpxx.so][/usr/lib/x86_64-linux-gnu/libgmp.so][/usr/include][v()] +//Details about finding Git +FIND_PACKAGE_MESSAGE_DETAILS_Git:INTERNAL=[/usr/bin/git][v()] +//Details about finding MPLIB +FIND_PACKAGE_MESSAGE_DETAILS_MPLIB:INTERNAL=[/usr/lib/x86_64-linux-gnu/libgmpxx.so][/usr/lib/x86_64-linux-gnu/libgmp.so][/usr/include][v()] +//Details about finding PkgConfig +FIND_PACKAGE_MESSAGE_DETAILS_PkgConfig:INTERNAL=[/usr/bin/pkg-config][v0.29.1()] +//Details about finding PythonInterp +FIND_PACKAGE_MESSAGE_DETAILS_PythonInterp:INTERNAL=[/usr/bin/python3][v3.8.10()] +//Details about finding PythonLibs +FIND_PACKAGE_MESSAGE_DETAILS_PythonLibs:INTERNAL=[/usr/lib/x86_64-linux-gnu/libpython3.8.so][/usr/include/python3.8][v3.8.10()] +//Details about finding SWIG +FIND_PACKAGE_MESSAGE_DETAILS_SWIG:INTERNAL=[/usr/bin/swig4.0][/usr/share/swig4.0][v()] +//Details about finding THRIFT +FIND_PACKAGE_MESSAGE_DETAILS_THRIFT:INTERNAL=[/usr/lib/x86_64-linux-gnu/libthrift.so][/usr/include][/usr/bin/thrift][TRUE][TRUE][v()] +//Details about finding VOLK +FIND_PACKAGE_MESSAGE_DETAILS_VOLK:INTERNAL=[Volk::volk][/usr/include][v()] +//ADVANCED property for variable: GIT_EXECUTABLE +GIT_EXECUTABLE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: GMPXX_LIBRARY +GMPXX_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: GMP_INCLUDE_DIR +GMP_INCLUDE_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: GMP_LIBRARY +GMP_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: LOG4CPP_INCLUDE_DIRS +LOG4CPP_INCLUDE_DIRS-ADVANCED:INTERNAL=1 +LOG4CPP_INCLUDE_DIRS:INTERNAL=/usr/include +//ADVANCED property for variable: LOG4CPP_LIBRARIES +LOG4CPP_LIBRARIES-ADVANCED:INTERNAL=1 +LOG4CPP_LIBRARIES:INTERNAL=/usr/lib/x86_64-linux-gnu/liblog4cpp.so +PC_FFTW3f_CFLAGS:INTERNAL= +PC_FFTW3f_CFLAGS_I:INTERNAL= +PC_FFTW3f_CFLAGS_OTHER:INTERNAL= +PC_FFTW3f_FOUND:INTERNAL=1 +PC_FFTW3f_INCLUDEDIR:INTERNAL=/usr/include +PC_FFTW3f_INCLUDE_DIRS:INTERNAL= +PC_FFTW3f_LDFLAGS:INTERNAL=-lfftw3f +PC_FFTW3f_LDFLAGS_OTHER:INTERNAL= +PC_FFTW3f_LIBDIR:INTERNAL=/usr/lib/x86_64-linux-gnu +PC_FFTW3f_LIBRARIES:INTERNAL=fftw3f +PC_FFTW3f_LIBRARY_DIRS:INTERNAL= +PC_FFTW3f_LIBS:INTERNAL= +PC_FFTW3f_LIBS_L:INTERNAL= +PC_FFTW3f_LIBS_OTHER:INTERNAL= +PC_FFTW3f_LIBS_PATHS:INTERNAL= +PC_FFTW3f_MODULE_NAME:INTERNAL='fftw3f ' +PC_FFTW3f_PREFIX:INTERNAL=/usr +PC_FFTW3f_STATIC_CFLAGS:INTERNAL= +PC_FFTW3f_STATIC_CFLAGS_I:INTERNAL= +PC_FFTW3f_STATIC_CFLAGS_OTHER:INTERNAL= +PC_FFTW3f_STATIC_INCLUDE_DIRS:INTERNAL= +PC_FFTW3f_STATIC_LDFLAGS:INTERNAL=-lfftw3f;-lm +PC_FFTW3f_STATIC_LDFLAGS_OTHER:INTERNAL= +PC_FFTW3f_STATIC_LIBDIR:INTERNAL= +PC_FFTW3f_STATIC_LIBRARIES:INTERNAL=fftw3f;m +PC_FFTW3f_STATIC_LIBRARY_DIRS:INTERNAL= +PC_FFTW3f_STATIC_LIBS:INTERNAL= +PC_FFTW3f_STATIC_LIBS_L:INTERNAL= +PC_FFTW3f_STATIC_LIBS_OTHER:INTERNAL= +PC_FFTW3f_STATIC_LIBS_PATHS:INTERNAL= +PC_FFTW3f_VERSION:INTERNAL=3.3.8 +PC_FFTW3f_fftw3f _INCLUDEDIR:INTERNAL= +PC_FFTW3f_fftw3f _LIBDIR:INTERNAL= +PC_FFTW3f_fftw3f _PREFIX:INTERNAL= +PC_FFTW3f_fftw3f _VERSION:INTERNAL= +PC_GMP_CFLAGS:INTERNAL= +PC_GMP_CFLAGS_I:INTERNAL= +PC_GMP_CFLAGS_OTHER:INTERNAL= +PC_GMP_FOUND:INTERNAL=1 +PC_GMP_INCLUDEDIR:INTERNAL=/usr/include +PC_GMP_INCLUDE_DIRS:INTERNAL= +PC_GMP_LDFLAGS:INTERNAL=-lgmp +PC_GMP_LDFLAGS_OTHER:INTERNAL= +PC_GMP_LIBDIR:INTERNAL=/usr/lib/x86_64-linux-gnu +PC_GMP_LIBRARIES:INTERNAL=gmp +PC_GMP_LIBRARY_DIRS:INTERNAL= +PC_GMP_LIBS:INTERNAL= +PC_GMP_LIBS_L:INTERNAL= +PC_GMP_LIBS_OTHER:INTERNAL= +PC_GMP_LIBS_PATHS:INTERNAL= +PC_GMP_MODULE_NAME:INTERNAL=gmp +PC_GMP_PREFIX:INTERNAL=/usr +PC_GMP_STATIC_CFLAGS:INTERNAL= +PC_GMP_STATIC_CFLAGS_I:INTERNAL= +PC_GMP_STATIC_CFLAGS_OTHER:INTERNAL= +PC_GMP_STATIC_INCLUDE_DIRS:INTERNAL= +PC_GMP_STATIC_LDFLAGS:INTERNAL=-lgmp +PC_GMP_STATIC_LDFLAGS_OTHER:INTERNAL= +PC_GMP_STATIC_LIBDIR:INTERNAL= +PC_GMP_STATIC_LIBRARIES:INTERNAL=gmp +PC_GMP_STATIC_LIBRARY_DIRS:INTERNAL= +PC_GMP_STATIC_LIBS:INTERNAL= +PC_GMP_STATIC_LIBS_L:INTERNAL= +PC_GMP_STATIC_LIBS_OTHER:INTERNAL= +PC_GMP_STATIC_LIBS_PATHS:INTERNAL= +PC_GMP_VERSION:INTERNAL=6.2.0 +PC_GMP_gmp_INCLUDEDIR:INTERNAL= +PC_GMP_gmp_LIBDIR:INTERNAL= +PC_GMP_gmp_PREFIX:INTERNAL= +PC_GMP_gmp_VERSION:INTERNAL= +PC_THRIFT_CFLAGS:INTERNAL= +PC_THRIFT_CFLAGS_I:INTERNAL= +PC_THRIFT_CFLAGS_OTHER:INTERNAL= +PC_THRIFT_FOUND:INTERNAL=1 +PC_THRIFT_INCLUDEDIR:INTERNAL=/usr/include +PC_THRIFT_INCLUDE_DIRS:INTERNAL= +PC_THRIFT_LDFLAGS:INTERNAL=-lthrift +PC_THRIFT_LDFLAGS_OTHER:INTERNAL= +PC_THRIFT_LIBDIR:INTERNAL=/usr/lib/x86_64-linux-gnu +PC_THRIFT_LIBRARIES:INTERNAL=thrift +PC_THRIFT_LIBRARY_DIRS:INTERNAL= +PC_THRIFT_LIBS:INTERNAL= +PC_THRIFT_LIBS_L:INTERNAL= +PC_THRIFT_LIBS_OTHER:INTERNAL= +PC_THRIFT_LIBS_PATHS:INTERNAL= +PC_THRIFT_MODULE_NAME:INTERNAL=thrift +PC_THRIFT_PREFIX:INTERNAL=/usr +PC_THRIFT_STATIC_CFLAGS:INTERNAL= +PC_THRIFT_STATIC_CFLAGS_I:INTERNAL= +PC_THRIFT_STATIC_CFLAGS_OTHER:INTERNAL= +PC_THRIFT_STATIC_INCLUDE_DIRS:INTERNAL= +PC_THRIFT_STATIC_LDFLAGS:INTERNAL=-lthrift +PC_THRIFT_STATIC_LDFLAGS_OTHER:INTERNAL= +PC_THRIFT_STATIC_LIBDIR:INTERNAL= +PC_THRIFT_STATIC_LIBRARIES:INTERNAL=thrift +PC_THRIFT_STATIC_LIBRARY_DIRS:INTERNAL= +PC_THRIFT_STATIC_LIBS:INTERNAL= +PC_THRIFT_STATIC_LIBS_L:INTERNAL= +PC_THRIFT_STATIC_LIBS_OTHER:INTERNAL= +PC_THRIFT_STATIC_LIBS_PATHS:INTERNAL= +PC_THRIFT_VERSION:INTERNAL=0.13.0 +PC_THRIFT_thrift_INCLUDEDIR:INTERNAL= +PC_THRIFT_thrift_LIBDIR:INTERNAL= +PC_THRIFT_thrift_PREFIX:INTERNAL= +PC_THRIFT_thrift_VERSION:INTERNAL= +//ADVANCED property for variable: PKG_CONFIG_EXECUTABLE +PKG_CONFIG_EXECUTABLE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: PYTHON_EXECUTABLE +PYTHON_EXECUTABLE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: PYTHON_INCLUDE_DIR +PYTHON_INCLUDE_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: PYTHON_LIBRARY +PYTHON_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: PYTHON_LIBRARY_DEBUG +PYTHON_LIBRARY_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: SWIG_DIR +SWIG_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: SWIG_EXECUTABLE +SWIG_EXECUTABLE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: SWIG_VERSION +SWIG_VERSION-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: THRIFT_BIN +THRIFT_BIN-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: THRIFT_FOUND +THRIFT_FOUND-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: THRIFT_INCLUDE_DIRS +THRIFT_INCLUDE_DIRS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: THRIFT_LIBRARIES +THRIFT_LIBRARIES-ADVANCED:INTERNAL=1 +//Thrift Version +THRIFT_VERSION:INTERNAL=0.13.0 +//ADVANCED property for variable: VOLK_INCLUDE_DIRS +VOLK_INCLUDE_DIRS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: VOLK_LIBRARIES +VOLK_LIBRARIES-ADVANCED:INTERNAL=1 +__pkg_config_arguments_PC_FFTW3f:INTERNAL=fftw3f >= 3.0 +__pkg_config_arguments_PC_GMP:INTERNAL=gmp +__pkg_config_arguments_PC_THRIFT:INTERNAL=thrift +__pkg_config_checked_PC_FFTW3f:INTERNAL=1 +__pkg_config_checked_PC_GMP:INTERNAL=1 +__pkg_config_checked_PC_THRIFT:INTERNAL=1 +//ADVANCED property for variable: boost_atomic_DIR +boost_atomic_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: boost_date_time_DIR +boost_date_time_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: boost_filesystem_DIR +boost_filesystem_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: boost_headers_DIR +boost_headers_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: boost_program_options_DIR +boost_program_options_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: boost_regex_DIR +boost_regex_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: boost_system_DIR +boost_system_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: boost_thread_DIR +boost_thread_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: boost_unit_test_framework_DIR +boost_unit_test_framework_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: pkgcfg_lib_PC_FFTW3f_fftw3f +pkgcfg_lib_PC_FFTW3f_fftw3f-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: pkgcfg_lib_PC_GMP_gmp +pkgcfg_lib_PC_GMP_gmp-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: pkgcfg_lib_PC_THRIFT_thrift +pkgcfg_lib_PC_THRIFT_thrift-ADVANCED:INTERNAL=1 +prefix_result:INTERNAL=/usr/lib/x86_64-linux-gnu + diff --git a/build/CMakeFiles/3.16.3/CMakeCCompiler.cmake b/build/CMakeFiles/3.16.3/CMakeCCompiler.cmake new file mode 100644 index 0000000..c5ece7b --- /dev/null +++ b/build/CMakeFiles/3.16.3/CMakeCCompiler.cmake @@ -0,0 +1,76 @@ +set(CMAKE_C_COMPILER "/usr/bin/cc") +set(CMAKE_C_COMPILER_ARG1 "") +set(CMAKE_C_COMPILER_ID "GNU") +set(CMAKE_C_COMPILER_VERSION "9.4.0") +set(CMAKE_C_COMPILER_VERSION_INTERNAL "") +set(CMAKE_C_COMPILER_WRAPPER "") +set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "11") +set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert") +set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes") +set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros") +set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert") + +set(CMAKE_C_PLATFORM_ID "Linux") +set(CMAKE_C_SIMULATE_ID "") +set(CMAKE_C_COMPILER_FRONTEND_VARIANT "") +set(CMAKE_C_SIMULATE_VERSION "") + + + +set(CMAKE_AR "/usr/bin/ar") +set(CMAKE_C_COMPILER_AR "/usr/bin/gcc-ar-9") +set(CMAKE_RANLIB "/usr/bin/ranlib") +set(CMAKE_C_COMPILER_RANLIB "/usr/bin/gcc-ranlib-9") +set(CMAKE_LINKER "/usr/bin/ld") +set(CMAKE_MT "") +set(CMAKE_COMPILER_IS_GNUCC 1) +set(CMAKE_C_COMPILER_LOADED 1) +set(CMAKE_C_COMPILER_WORKS TRUE) +set(CMAKE_C_ABI_COMPILED TRUE) +set(CMAKE_COMPILER_IS_MINGW ) +set(CMAKE_COMPILER_IS_CYGWIN ) +if(CMAKE_COMPILER_IS_CYGWIN) + set(CYGWIN 1) + set(UNIX 1) +endif() + +set(CMAKE_C_COMPILER_ENV_VAR "CC") + +if(CMAKE_COMPILER_IS_MINGW) + set(MINGW 1) +endif() +set(CMAKE_C_COMPILER_ID_RUN 1) +set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m) +set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC) +set(CMAKE_C_LINKER_PREFERENCE 10) + +# Save compiler ABI information. +set(CMAKE_C_SIZEOF_DATA_PTR "8") +set(CMAKE_C_COMPILER_ABI "ELF") +set(CMAKE_C_LIBRARY_ARCHITECTURE "x86_64-linux-gnu") + +if(CMAKE_C_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_C_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}") +endif() + +if(CMAKE_C_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "x86_64-linux-gnu") +endif() + +set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_C_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/usr/lib/gcc/x86_64-linux-gnu/9/include;/usr/local/include;/usr/include/x86_64-linux-gnu;/usr/include") +set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "gcc;gcc_s;c;gcc;gcc_s") +set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/usr/lib/gcc/x86_64-linux-gnu/9;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib") +set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") diff --git a/build/CMakeFiles/3.16.3/CMakeCXXCompiler.cmake b/build/CMakeFiles/3.16.3/CMakeCXXCompiler.cmake new file mode 100644 index 0000000..278ef39 --- /dev/null +++ b/build/CMakeFiles/3.16.3/CMakeCXXCompiler.cmake @@ -0,0 +1,88 @@ +set(CMAKE_CXX_COMPILER "/usr/bin/c++") +set(CMAKE_CXX_COMPILER_ARG1 "") +set(CMAKE_CXX_COMPILER_ID "GNU") +set(CMAKE_CXX_COMPILER_VERSION "9.4.0") +set(CMAKE_CXX_COMPILER_VERSION_INTERNAL "") +set(CMAKE_CXX_COMPILER_WRAPPER "") +set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "14") +set(CMAKE_CXX_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters;cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates;cxx_std_17;cxx_std_20") +set(CMAKE_CXX98_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters") +set(CMAKE_CXX11_COMPILE_FEATURES "cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates") +set(CMAKE_CXX14_COMPILE_FEATURES "cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates") +set(CMAKE_CXX17_COMPILE_FEATURES "cxx_std_17") +set(CMAKE_CXX20_COMPILE_FEATURES "cxx_std_20") + +set(CMAKE_CXX_PLATFORM_ID "Linux") +set(CMAKE_CXX_SIMULATE_ID "") +set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "") +set(CMAKE_CXX_SIMULATE_VERSION "") + + + +set(CMAKE_AR "/usr/bin/ar") +set(CMAKE_CXX_COMPILER_AR "/usr/bin/gcc-ar-9") +set(CMAKE_RANLIB "/usr/bin/ranlib") +set(CMAKE_CXX_COMPILER_RANLIB "/usr/bin/gcc-ranlib-9") +set(CMAKE_LINKER "/usr/bin/ld") +set(CMAKE_MT "") +set(CMAKE_COMPILER_IS_GNUCXX 1) +set(CMAKE_CXX_COMPILER_LOADED 1) +set(CMAKE_CXX_COMPILER_WORKS TRUE) +set(CMAKE_CXX_ABI_COMPILED TRUE) +set(CMAKE_COMPILER_IS_MINGW ) +set(CMAKE_COMPILER_IS_CYGWIN ) +if(CMAKE_COMPILER_IS_CYGWIN) + set(CYGWIN 1) + set(UNIX 1) +endif() + +set(CMAKE_CXX_COMPILER_ENV_VAR "CXX") + +if(CMAKE_COMPILER_IS_MINGW) + set(MINGW 1) +endif() +set(CMAKE_CXX_COMPILER_ID_RUN 1) +set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm;CPP) +set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC) + +foreach (lang C OBJC OBJCXX) + if (CMAKE_${lang}_COMPILER_ID_RUN) + foreach(extension IN LISTS CMAKE_${lang}_SOURCE_FILE_EXTENSIONS) + list(REMOVE_ITEM CMAKE_CXX_SOURCE_FILE_EXTENSIONS ${extension}) + endforeach() + endif() +endforeach() + +set(CMAKE_CXX_LINKER_PREFERENCE 30) +set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1) + +# Save compiler ABI information. +set(CMAKE_CXX_SIZEOF_DATA_PTR "8") +set(CMAKE_CXX_COMPILER_ABI "ELF") +set(CMAKE_CXX_LIBRARY_ARCHITECTURE "x86_64-linux-gnu") + +if(CMAKE_CXX_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_CXX_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}") +endif() + +if(CMAKE_CXX_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "x86_64-linux-gnu") +endif() + +set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "/usr/include/c++/9;/usr/include/x86_64-linux-gnu/c++/9;/usr/include/c++/9/backward;/usr/lib/gcc/x86_64-linux-gnu/9/include;/usr/local/include;/usr/include/x86_64-linux-gnu;/usr/include") +set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "stdc++;m;gcc_s;gcc;c;gcc_s;gcc") +set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "/usr/lib/gcc/x86_64-linux-gnu/9;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib") +set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") diff --git a/build/CMakeFiles/3.16.3/CMakeDetermineCompilerABI_C.bin b/build/CMakeFiles/3.16.3/CMakeDetermineCompilerABI_C.bin new file mode 100755 index 0000000000000000000000000000000000000000..249b0ff65c23949b1f16486dfdb06e4e46074b65 GIT binary patch literal 16552 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 literal 0 HcmV?d00001 diff --git a/build/CMakeFiles/3.16.3/CMakeSystem.cmake b/build/CMakeFiles/3.16.3/CMakeSystem.cmake new file mode 100644 index 0000000..3087070 --- /dev/null +++ b/build/CMakeFiles/3.16.3/CMakeSystem.cmake @@ -0,0 +1,15 @@ +set(CMAKE_HOST_SYSTEM "Linux-5.15.0-53-generic") +set(CMAKE_HOST_SYSTEM_NAME "Linux") +set(CMAKE_HOST_SYSTEM_VERSION "5.15.0-53-generic") +set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64") + + + +set(CMAKE_SYSTEM "Linux-5.15.0-53-generic") +set(CMAKE_SYSTEM_NAME "Linux") +set(CMAKE_SYSTEM_VERSION "5.15.0-53-generic") +set(CMAKE_SYSTEM_PROCESSOR "x86_64") + +set(CMAKE_CROSSCOMPILING "FALSE") + +set(CMAKE_SYSTEM_LOADED 1) diff --git a/build/CMakeFiles/3.16.3/CompilerIdC/CMakeCCompilerId.c b/build/CMakeFiles/3.16.3/CompilerIdC/CMakeCCompilerId.c new file mode 100644 index 0000000..d884b50 --- /dev/null +++ b/build/CMakeFiles/3.16.3/CompilerIdC/CMakeCCompilerId.c @@ -0,0 +1,671 @@ +#ifdef __cplusplus +# error "A C++ compiler has been selected for C." +#endif + +#if defined(__18CXX) +# define ID_VOID_MAIN +#endif +#if defined(__CLASSIC_C__) +/* cv-qualifiers did not exist in K&R C */ +# define const +# define volatile +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_C) +# define COMPILER_ID "SunPro" +# if __SUNPRO_C >= 0x5100 + /* __SUNPRO_C = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# endif + +#elif defined(__HP_cc) +# define COMPILER_ID "HP" + /* __HP_cc = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_cc % 100) + +#elif defined(__DECC) +# define COMPILER_ID "Compaq" + /* __DECC_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECC_VER % 10000) + +#elif defined(__IBMC__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ >= 800 +# define COMPILER_ID "XL" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__FUJITSU) || defined(__FCC_VERSION) || defined(__fcc_version) +# define COMPILER_ID "Fujitsu" + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__TINYC__) +# define COMPILER_ID "TinyCC" + +#elif defined(__BCC__) +# define COMPILER_ID "Bruce" + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__GNUC__) +# define COMPILER_ID "GNU" +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) +# define COMPILER_ID "ADSP" +#if defined(__VISUALDSPVERSION__) + /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ +# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) +# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + +#elif defined(__SDCC_VERSION_MAJOR) || defined(SDCC) +# define COMPILER_ID "SDCC" +# if defined(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MAJOR DEC(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MINOR DEC(__SDCC_VERSION_MINOR) +# define COMPILER_VERSION_PATCH DEC(__SDCC_VERSION_PATCH) +# else + /* SDCC = VRP */ +# define COMPILER_VERSION_MAJOR DEC(SDCC/100) +# define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10) +# define COMPILER_VERSION_PATCH DEC(SDCC % 10) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXE) || defined(__CRAYXC) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number components. */ +#ifdef COMPILER_VERSION_MAJOR +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + + +#if !defined(__STDC__) +# if (defined(_MSC_VER) && !defined(__clang__)) \ + || (defined(__ibmxl__) || defined(__IBMC__)) +# define C_DIALECT "90" +# else +# define C_DIALECT +# endif +#elif __STDC_VERSION__ >= 201000L +# define C_DIALECT "11" +#elif __STDC_VERSION__ >= 199901L +# define C_DIALECT "99" +#else +# define C_DIALECT "90" +#endif +const char* info_language_dialect_default = + "INFO" ":" "dialect_default[" C_DIALECT "]"; + +/*--------------------------------------------------------------------------*/ + +#ifdef ID_VOID_MAIN +void main() {} +#else +# if defined(__CLASSIC_C__) +int main(argc, argv) int argc; char *argv[]; +# else +int main(int argc, char* argv[]) +# endif +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; + require += info_arch[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXE) || defined(__CRAYXC) + require += info_cray[argc]; +#endif + require += info_language_dialect_default[argc]; + (void)argv; + return require; +} +#endif diff --git a/build/CMakeFiles/3.16.3/CompilerIdC/a.out b/build/CMakeFiles/3.16.3/CompilerIdC/a.out new file mode 100755 index 0000000000000000000000000000000000000000..e82fab493fdf7ab5d55eaa479346af6ef1f959e7 GIT binary patch literal 16712 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 literal 0 HcmV?d00001 diff --git a/build/CMakeFiles/3.16.3/CompilerIdCXX/CMakeCXXCompilerId.cpp b/build/CMakeFiles/3.16.3/CompilerIdCXX/CMakeCXXCompilerId.cpp new file mode 100644 index 0000000..69cfdba --- /dev/null +++ b/build/CMakeFiles/3.16.3/CompilerIdCXX/CMakeCXXCompilerId.cpp @@ -0,0 +1,660 @@ +/* This source file must have a .cpp extension so that all C++ compilers + recognize the extension without flags. Borland does not know .cxx for + example. */ +#ifndef __cplusplus +# error "A C compiler has been selected for C++." +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__COMO__) +# define COMPILER_ID "Comeau" + /* __COMO_VERSION__ = VRR */ +# define COMPILER_VERSION_MAJOR DEC(__COMO_VERSION__ / 100) +# define COMPILER_VERSION_MINOR DEC(__COMO_VERSION__ % 100) + +#elif defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_CC) +# define COMPILER_ID "SunPro" +# if __SUNPRO_CC >= 0x5100 + /* __SUNPRO_CC = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# endif + +#elif defined(__HP_aCC) +# define COMPILER_ID "HP" + /* __HP_aCC = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_aCC % 100) + +#elif defined(__DECCXX) +# define COMPILER_ID "Compaq" + /* __DECCXX_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER % 10000) + +#elif defined(__IBMCPP__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ >= 800 +# define COMPILER_ID "XL" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__FUJITSU) || defined(__FCC_VERSION) || defined(__fcc_version) +# define COMPILER_ID "Fujitsu" + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__GNUC__) || defined(__GNUG__) +# define COMPILER_ID "GNU" +# if defined(__GNUC__) +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# else +# define COMPILER_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) +# define COMPILER_ID "ADSP" +#if defined(__VISUALDSPVERSION__) + /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ +# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) +# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXE) || defined(__CRAYXC) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number components. */ +#ifdef COMPILER_VERSION_MAJOR +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + + +#if defined(__INTEL_COMPILER) && defined(_MSVC_LANG) && _MSVC_LANG < 201403L +# if defined(__INTEL_CXX11_MODE__) +# if defined(__cpp_aggregate_nsdmi) +# define CXX_STD 201402L +# else +# define CXX_STD 201103L +# endif +# else +# define CXX_STD 199711L +# endif +#elif defined(_MSC_VER) && defined(_MSVC_LANG) +# define CXX_STD _MSVC_LANG +#else +# define CXX_STD __cplusplus +#endif + +const char* info_language_dialect_default = "INFO" ":" "dialect_default[" +#if CXX_STD > 201703L + "20" +#elif CXX_STD >= 201703L + "17" +#elif CXX_STD >= 201402L + "14" +#elif CXX_STD >= 201103L + "11" +#else + "98" +#endif +"]"; + +/*--------------------------------------------------------------------------*/ + +int main(int argc, char* argv[]) +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXE) || defined(__CRAYXC) + require += info_cray[argc]; +#endif + require += info_language_dialect_default[argc]; + (void)argv; + return require; +} diff --git a/build/CMakeFiles/3.16.3/CompilerIdCXX/a.out b/build/CMakeFiles/3.16.3/CompilerIdCXX/a.out new file mode 100755 index 0000000000000000000000000000000000000000..34ec4a035bbb8902315ba9a0b3b352eb275bc2d7 GIT binary patch literal 16720 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 literal 0 HcmV?d00001 diff --git a/build/CMakeFiles/CMakeDirectoryInformation.cmake b/build/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 0000000..f91885b --- /dev/null +++ b/build/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,16 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.16 + +# Relative path conversion top directories. +set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/home/emidan19/gr-tempest") +set(CMAKE_RELATIVE_PATH_TOP_BINARY "/home/emidan19/gr-tempest/build") + +# Force unix paths in dependencies. +set(CMAKE_FORCE_UNIX_PATHS 1) + + +# The C and CXX include file regular expressions for this directory. +set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/build/CMakeFiles/CMakeError.log b/build/CMakeFiles/CMakeError.log new file mode 100644 index 0000000..d7ee0ae --- /dev/null +++ b/build/CMakeFiles/CMakeError.log @@ -0,0 +1,58 @@ +Performing C SOURCE FILE Test CMAKE_HAVE_LIBC_PTHREAD failed with the following output: +Change Dir: /home/emidan19/gr-tempest/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/bin/make cmTC_72e2a/fast && /usr/bin/make -f CMakeFiles/cmTC_72e2a.dir/build.make CMakeFiles/cmTC_72e2a.dir/build +make[1]: Entering directory '/home/emidan19/gr-tempest/build/CMakeFiles/CMakeTmp' +Building C object CMakeFiles/cmTC_72e2a.dir/src.c.o +/usr/bin/cc -DCMAKE_HAVE_LIBC_PTHREAD -std=gnu11 -o CMakeFiles/cmTC_72e2a.dir/src.c.o -c /home/emidan19/gr-tempest/build/CMakeFiles/CMakeTmp/src.c +Linking C executable cmTC_72e2a +/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_72e2a.dir/link.txt --verbose=1 +/usr/bin/cc -DCMAKE_HAVE_LIBC_PTHREAD CMakeFiles/cmTC_72e2a.dir/src.c.o -o cmTC_72e2a +/usr/bin/ld: CMakeFiles/cmTC_72e2a.dir/src.c.o: in function `main': +src.c:(.text+0x46): undefined reference to `pthread_create' +/usr/bin/ld: src.c:(.text+0x52): undefined reference to `pthread_detach' +/usr/bin/ld: src.c:(.text+0x63): undefined reference to `pthread_join' +collect2: error: ld returned 1 exit status +make[1]: *** [CMakeFiles/cmTC_72e2a.dir/build.make:87: cmTC_72e2a] Error 1 +make[1]: Leaving directory '/home/emidan19/gr-tempest/build/CMakeFiles/CMakeTmp' +make: *** [Makefile:121: cmTC_72e2a/fast] Error 2 + + +Source file was: +#include + +void* test_func(void* data) +{ + return data; +} + +int main(void) +{ + pthread_t thread; + pthread_create(&thread, NULL, test_func, NULL); + pthread_detach(thread); + pthread_join(thread, NULL); + pthread_atfork(NULL, NULL, NULL); + pthread_exit(NULL); + + return 0; +} + +Determining if the function pthread_create exists in the pthreads failed with the following output: +Change Dir: /home/emidan19/gr-tempest/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/bin/make cmTC_72b66/fast && /usr/bin/make -f CMakeFiles/cmTC_72b66.dir/build.make CMakeFiles/cmTC_72b66.dir/build +make[1]: Entering directory '/home/emidan19/gr-tempest/build/CMakeFiles/CMakeTmp' +Building C object CMakeFiles/cmTC_72b66.dir/CheckFunctionExists.c.o +/usr/bin/cc -DCHECK_FUNCTION_EXISTS=pthread_create -std=gnu11 -o CMakeFiles/cmTC_72b66.dir/CheckFunctionExists.c.o -c /usr/share/cmake-3.16/Modules/CheckFunctionExists.c +Linking C executable cmTC_72b66 +/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_72b66.dir/link.txt --verbose=1 +/usr/bin/cc -DCHECK_FUNCTION_EXISTS=pthread_create CMakeFiles/cmTC_72b66.dir/CheckFunctionExists.c.o -o cmTC_72b66 -lpthreads +/usr/bin/ld: cannot find -lpthreads +collect2: error: ld returned 1 exit status +make[1]: *** [CMakeFiles/cmTC_72b66.dir/build.make:87: cmTC_72b66] Error 1 +make[1]: Leaving directory '/home/emidan19/gr-tempest/build/CMakeFiles/CMakeTmp' +make: *** [Makefile:121: cmTC_72b66/fast] Error 2 + + + diff --git a/build/CMakeFiles/CMakeOutput.log b/build/CMakeFiles/CMakeOutput.log new file mode 100644 index 0000000..8f43f5c --- /dev/null +++ b/build/CMakeFiles/CMakeOutput.log @@ -0,0 +1,489 @@ +The system is: Linux - 5.15.0-53-generic - x86_64 +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded. +Compiler: /usr/bin/c++ +Build flags: +Id flags: + +The output was: +0 + + +Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "a.out" + +The CXX compiler identification is GNU, found in "/home/emidan19/gr-tempest/build/CMakeFiles/3.16.3/CompilerIdCXX/a.out" + +Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded. +Compiler: /usr/bin/cc +Build flags: +Id flags: + +The output was: +0 + + +Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "a.out" + +The C compiler identification is GNU, found in "/home/emidan19/gr-tempest/build/CMakeFiles/3.16.3/CompilerIdC/a.out" + +Determining if the CXX compiler works passed with the following output: +Change Dir: /home/emidan19/gr-tempest/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/bin/make cmTC_31f7c/fast && /usr/bin/make -f CMakeFiles/cmTC_31f7c.dir/build.make CMakeFiles/cmTC_31f7c.dir/build +make[1]: Entering directory '/home/emidan19/gr-tempest/build/CMakeFiles/CMakeTmp' +Building CXX object CMakeFiles/cmTC_31f7c.dir/testCXXCompiler.cxx.o +/usr/bin/c++ -o CMakeFiles/cmTC_31f7c.dir/testCXXCompiler.cxx.o -c /home/emidan19/gr-tempest/build/CMakeFiles/CMakeTmp/testCXXCompiler.cxx +Linking CXX executable cmTC_31f7c +/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_31f7c.dir/link.txt --verbose=1 +/usr/bin/c++ CMakeFiles/cmTC_31f7c.dir/testCXXCompiler.cxx.o -o cmTC_31f7c +make[1]: Leaving directory '/home/emidan19/gr-tempest/build/CMakeFiles/CMakeTmp' + + + +Detecting CXX compiler ABI info compiled with the following output: +Change Dir: /home/emidan19/gr-tempest/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/bin/make cmTC_0c2b8/fast && /usr/bin/make -f CMakeFiles/cmTC_0c2b8.dir/build.make CMakeFiles/cmTC_0c2b8.dir/build +make[1]: Entering directory '/home/emidan19/gr-tempest/build/CMakeFiles/CMakeTmp' +Building CXX object CMakeFiles/cmTC_0c2b8.dir/CMakeCXXCompilerABI.cpp.o +/usr/bin/c++ -v -o CMakeFiles/cmTC_0c2b8.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake-3.16/Modules/CMakeCXXCompilerABI.cpp +Using built-in specs. +COLLECT_GCC=/usr/bin/c++ +OFFLOAD_TARGET_NAMES=nvptx-none:hsa +OFFLOAD_TARGET_DEFAULT=1 +Target: x86_64-linux-gnu +Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu +Thread model: posix +gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_0c2b8.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + /usr/lib/gcc/x86_64-linux-gnu/9/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/share/cmake-3.16/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpbase CMakeCXXCompilerABI.cpp -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_0c2b8.dir/CMakeCXXCompilerABI.cpp.o -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccVfS91x.s +GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu) + compiled by GNU C version 9.4.0, GMP version 6.2.0, MPFR version 4.0.2, MPC version 1.1.0, isl version isl-0.22.1-GMP + +GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 +ignoring duplicate directory "/usr/include/x86_64-linux-gnu/c++/9" +ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu" +ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/include-fixed" +ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/../../../../x86_64-linux-gnu/include" +#include "..." search starts here: +#include <...> search starts here: + /usr/include/c++/9 + /usr/include/x86_64-linux-gnu/c++/9 + /usr/include/c++/9/backward + /usr/lib/gcc/x86_64-linux-gnu/9/include + /usr/local/include + /usr/include/x86_64-linux-gnu + /usr/include +End of search list. +GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu) + compiled by GNU C version 9.4.0, GMP version 6.2.0, MPFR version 4.0.2, MPC version 1.1.0, isl version isl-0.22.1-GMP + +GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 +Compiler executable checksum: 65fe925b83d3956b533de4aaba7dace0 +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_0c2b8.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + as -v --64 -o CMakeFiles/cmTC_0c2b8.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccVfS91x.s +GNU assembler version 2.34 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.34 +COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/ +LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/ +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_0c2b8.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' +Linking CXX executable cmTC_0c2b8 +/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_0c2b8.dir/link.txt --verbose=1 +/usr/bin/c++ -v CMakeFiles/cmTC_0c2b8.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_0c2b8 +Using built-in specs. +COLLECT_GCC=/usr/bin/c++ +COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper +OFFLOAD_TARGET_NAMES=nvptx-none:hsa +OFFLOAD_TARGET_DEFAULT=1 +Target: x86_64-linux-gnu +Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu +Thread model: posix +gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) +COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/ +LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/ +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_0c2b8' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + /usr/lib/gcc/x86_64-linux-gnu/9/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -plugin-opt=-fresolution=/tmp/ccs3jKaY.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_0c2b8 /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/9/../../.. CMakeFiles/cmTC_0c2b8.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_0c2b8' '-shared-libgcc' '-mtune=generic' '-march=x86-64' +make[1]: Leaving directory '/home/emidan19/gr-tempest/build/CMakeFiles/CMakeTmp' + + + +Parsed CXX implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [/usr/include/c++/9] + add: [/usr/include/x86_64-linux-gnu/c++/9] + add: [/usr/include/c++/9/backward] + add: [/usr/lib/gcc/x86_64-linux-gnu/9/include] + add: [/usr/local/include] + add: [/usr/include/x86_64-linux-gnu] + add: [/usr/include] + end of search list found + collapse include dir [/usr/include/c++/9] ==> [/usr/include/c++/9] + collapse include dir [/usr/include/x86_64-linux-gnu/c++/9] ==> [/usr/include/x86_64-linux-gnu/c++/9] + collapse include dir [/usr/include/c++/9/backward] ==> [/usr/include/c++/9/backward] + collapse include dir [/usr/lib/gcc/x86_64-linux-gnu/9/include] ==> [/usr/lib/gcc/x86_64-linux-gnu/9/include] + collapse include dir [/usr/local/include] ==> [/usr/local/include] + collapse include dir [/usr/include/x86_64-linux-gnu] ==> [/usr/include/x86_64-linux-gnu] + collapse include dir [/usr/include] ==> [/usr/include] + implicit include dirs: [/usr/include/c++/9;/usr/include/x86_64-linux-gnu/c++/9;/usr/include/c++/9/backward;/usr/lib/gcc/x86_64-linux-gnu/9/include;/usr/local/include;/usr/include/x86_64-linux-gnu;/usr/include] + + +Parsed CXX implicit link information from above output: + link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: /home/emidan19/gr-tempest/build/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):/usr/bin/make cmTC_0c2b8/fast && /usr/bin/make -f CMakeFiles/cmTC_0c2b8.dir/build.make CMakeFiles/cmTC_0c2b8.dir/build] + ignore line: [make[1]: Entering directory '/home/emidan19/gr-tempest/build/CMakeFiles/CMakeTmp'] + ignore line: [Building CXX object CMakeFiles/cmTC_0c2b8.dir/CMakeCXXCompilerABI.cpp.o] + ignore line: [/usr/bin/c++ -v -o CMakeFiles/cmTC_0c2b8.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake-3.16/Modules/CMakeCXXCompilerABI.cpp] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/usr/bin/c++] + ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:hsa] + ignore line: [OFFLOAD_TARGET_DEFAULT=1] + ignore line: [Target: x86_64-linux-gnu] + ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c ada c++ go brig d fortran objc obj-c++ gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32 m64 mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu] + ignore line: [Thread model: posix] + ignore line: [gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) ] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_0c2b8.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/9/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/share/cmake-3.16/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpbase CMakeCXXCompilerABI.cpp -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_0c2b8.dir/CMakeCXXCompilerABI.cpp.o -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccVfS91x.s] + ignore line: [GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu)] + ignore line: [ compiled by GNU C version 9.4.0 GMP version 6.2.0 MPFR version 4.0.2 MPC version 1.1.0 isl version isl-0.22.1-GMP] + ignore line: [] + ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] + ignore line: [ignoring duplicate directory "/usr/include/x86_64-linux-gnu/c++/9"] + ignore line: [ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"] + ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/include-fixed"] + ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/../../../../x86_64-linux-gnu/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /usr/include/c++/9] + ignore line: [ /usr/include/x86_64-linux-gnu/c++/9] + ignore line: [ /usr/include/c++/9/backward] + ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/9/include] + ignore line: [ /usr/local/include] + ignore line: [ /usr/include/x86_64-linux-gnu] + ignore line: [ /usr/include] + ignore line: [End of search list.] + ignore line: [GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu)] + ignore line: [ compiled by GNU C version 9.4.0 GMP version 6.2.0 MPFR version 4.0.2 MPC version 1.1.0 isl version isl-0.22.1-GMP] + ignore line: [] + ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] + ignore line: [Compiler executable checksum: 65fe925b83d3956b533de4aaba7dace0] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_0c2b8.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + ignore line: [ as -v --64 -o CMakeFiles/cmTC_0c2b8.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccVfS91x.s] + ignore line: [GNU assembler version 2.34 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.34] + ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/] + ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_0c2b8.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + ignore line: [Linking CXX executable cmTC_0c2b8] + ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_0c2b8.dir/link.txt --verbose=1] + ignore line: [/usr/bin/c++ -v CMakeFiles/cmTC_0c2b8.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_0c2b8 ] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/usr/bin/c++] + ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper] + ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:hsa] + ignore line: [OFFLOAD_TARGET_DEFAULT=1] + ignore line: [Target: x86_64-linux-gnu] + ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c ada c++ go brig d fortran objc obj-c++ gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32 m64 mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu] + ignore line: [Thread model: posix] + ignore line: [gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) ] + ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/] + ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_0c2b8' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + link line: [ /usr/lib/gcc/x86_64-linux-gnu/9/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -plugin-opt=-fresolution=/tmp/ccs3jKaY.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_0c2b8 /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/9/../../.. CMakeFiles/cmTC_0c2b8.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o] + arg [/usr/lib/gcc/x86_64-linux-gnu/9/collect2] ==> ignore + arg [-plugin] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so] ==> ignore + arg [-plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/ccs3jKaY.res] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [-plugin-opt=-pass-through=-lc] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [--build-id] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [elf_x86_64] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--as-needed] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/lib64/ld-linux-x86-64.so.2] ==> ignore + arg [-pie] ==> ignore + arg [-znow] ==> ignore + arg [-zrelro] ==> ignore + arg [-o] ==> ignore + arg [cmTC_0c2b8] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o] ==> ignore + arg [-L/usr/lib/gcc/x86_64-linux-gnu/9] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib] + arg [-L/lib/x86_64-linux-gnu] ==> dir [/lib/x86_64-linux-gnu] + arg [-L/lib/../lib] ==> dir [/lib/../lib] + arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu] + arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../..] + arg [CMakeFiles/cmTC_0c2b8.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [-lstdc++] ==> lib [stdc++] + arg [-lm] ==> lib [m] + arg [-lgcc_s] ==> lib [gcc_s] + arg [-lgcc] ==> lib [gcc] + arg [-lc] ==> lib [c] + arg [-lgcc_s] ==> lib [gcc_s] + arg [-lgcc] ==> lib [gcc] + arg [/usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o] ==> ignore + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9] ==> [/usr/lib/gcc/x86_64-linux-gnu/9] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib] ==> [/usr/lib] + collapse library dir [/lib/x86_64-linux-gnu] ==> [/lib/x86_64-linux-gnu] + collapse library dir [/lib/../lib] ==> [/lib] + collapse library dir [/usr/lib/x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu] + collapse library dir [/usr/lib/../lib] ==> [/usr/lib] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../..] ==> [/usr/lib] + implicit libs: [stdc++;m;gcc_s;gcc;c;gcc_s;gcc] + implicit dirs: [/usr/lib/gcc/x86_64-linux-gnu/9;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib] + implicit fwks: [] + + +Determining if the C compiler works passed with the following output: +Change Dir: /home/emidan19/gr-tempest/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/bin/make cmTC_0238a/fast && /usr/bin/make -f CMakeFiles/cmTC_0238a.dir/build.make CMakeFiles/cmTC_0238a.dir/build +make[1]: Entering directory '/home/emidan19/gr-tempest/build/CMakeFiles/CMakeTmp' +Building C object CMakeFiles/cmTC_0238a.dir/testCCompiler.c.o +/usr/bin/cc -o CMakeFiles/cmTC_0238a.dir/testCCompiler.c.o -c /home/emidan19/gr-tempest/build/CMakeFiles/CMakeTmp/testCCompiler.c +Linking C executable cmTC_0238a +/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_0238a.dir/link.txt --verbose=1 +/usr/bin/cc CMakeFiles/cmTC_0238a.dir/testCCompiler.c.o -o cmTC_0238a +make[1]: Leaving directory '/home/emidan19/gr-tempest/build/CMakeFiles/CMakeTmp' + + + +Detecting C compiler ABI info compiled with the following output: +Change Dir: /home/emidan19/gr-tempest/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/bin/make cmTC_c50e3/fast && /usr/bin/make -f CMakeFiles/cmTC_c50e3.dir/build.make CMakeFiles/cmTC_c50e3.dir/build +make[1]: Entering directory '/home/emidan19/gr-tempest/build/CMakeFiles/CMakeTmp' +Building C object CMakeFiles/cmTC_c50e3.dir/CMakeCCompilerABI.c.o +/usr/bin/cc -v -o CMakeFiles/cmTC_c50e3.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake-3.16/Modules/CMakeCCompilerABI.c +Using built-in specs. +COLLECT_GCC=/usr/bin/cc +OFFLOAD_TARGET_NAMES=nvptx-none:hsa +OFFLOAD_TARGET_DEFAULT=1 +Target: x86_64-linux-gnu +Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu +Thread model: posix +gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_c50e3.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' + /usr/lib/gcc/x86_64-linux-gnu/9/cc1 -quiet -v -imultiarch x86_64-linux-gnu /usr/share/cmake-3.16/Modules/CMakeCCompilerABI.c -quiet -dumpbase CMakeCCompilerABI.c -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_c50e3.dir/CMakeCCompilerABI.c.o -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/cctKvE1w.s +GNU C17 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu) + compiled by GNU C version 9.4.0, GMP version 6.2.0, MPFR version 4.0.2, MPC version 1.1.0, isl version isl-0.22.1-GMP + +GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 +ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu" +ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/include-fixed" +ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/../../../../x86_64-linux-gnu/include" +#include "..." search starts here: +#include <...> search starts here: + /usr/lib/gcc/x86_64-linux-gnu/9/include + /usr/local/include + /usr/include/x86_64-linux-gnu + /usr/include +End of search list. +GNU C17 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu) + compiled by GNU C version 9.4.0, GMP version 6.2.0, MPFR version 4.0.2, MPC version 1.1.0, isl version isl-0.22.1-GMP + +GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 +Compiler executable checksum: c0c95c0b4209efec1c1892d5ff24030b +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_c50e3.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' + as -v --64 -o CMakeFiles/cmTC_c50e3.dir/CMakeCCompilerABI.c.o /tmp/cctKvE1w.s +GNU assembler version 2.34 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.34 +COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/ +LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/ +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_c50e3.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' +Linking C executable cmTC_c50e3 +/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_c50e3.dir/link.txt --verbose=1 +/usr/bin/cc -v CMakeFiles/cmTC_c50e3.dir/CMakeCCompilerABI.c.o -o cmTC_c50e3 +Using built-in specs. +COLLECT_GCC=/usr/bin/cc +COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper +OFFLOAD_TARGET_NAMES=nvptx-none:hsa +OFFLOAD_TARGET_DEFAULT=1 +Target: x86_64-linux-gnu +Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu +Thread model: posix +gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) +COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/ +LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/ +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_c50e3' '-mtune=generic' '-march=x86-64' + /usr/lib/gcc/x86_64-linux-gnu/9/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -plugin-opt=-fresolution=/tmp/ccjkKm3V.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_c50e3 /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/9/../../.. CMakeFiles/cmTC_c50e3.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_c50e3' '-mtune=generic' '-march=x86-64' +make[1]: Leaving directory '/home/emidan19/gr-tempest/build/CMakeFiles/CMakeTmp' + + + +Parsed C implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [/usr/lib/gcc/x86_64-linux-gnu/9/include] + add: [/usr/local/include] + add: [/usr/include/x86_64-linux-gnu] + add: [/usr/include] + end of search list found + collapse include dir [/usr/lib/gcc/x86_64-linux-gnu/9/include] ==> [/usr/lib/gcc/x86_64-linux-gnu/9/include] + collapse include dir [/usr/local/include] ==> [/usr/local/include] + collapse include dir [/usr/include/x86_64-linux-gnu] ==> [/usr/include/x86_64-linux-gnu] + collapse include dir [/usr/include] ==> [/usr/include] + implicit include dirs: [/usr/lib/gcc/x86_64-linux-gnu/9/include;/usr/local/include;/usr/include/x86_64-linux-gnu;/usr/include] + + +Parsed C implicit link information from above output: + link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: /home/emidan19/gr-tempest/build/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):/usr/bin/make cmTC_c50e3/fast && /usr/bin/make -f CMakeFiles/cmTC_c50e3.dir/build.make CMakeFiles/cmTC_c50e3.dir/build] + ignore line: [make[1]: Entering directory '/home/emidan19/gr-tempest/build/CMakeFiles/CMakeTmp'] + ignore line: [Building C object CMakeFiles/cmTC_c50e3.dir/CMakeCCompilerABI.c.o] + ignore line: [/usr/bin/cc -v -o CMakeFiles/cmTC_c50e3.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake-3.16/Modules/CMakeCCompilerABI.c] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/usr/bin/cc] + ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:hsa] + ignore line: [OFFLOAD_TARGET_DEFAULT=1] + ignore line: [Target: x86_64-linux-gnu] + ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c ada c++ go brig d fortran objc obj-c++ gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32 m64 mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu] + ignore line: [Thread model: posix] + ignore line: [gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) ] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_c50e3.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64'] + ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/9/cc1 -quiet -v -imultiarch x86_64-linux-gnu /usr/share/cmake-3.16/Modules/CMakeCCompilerABI.c -quiet -dumpbase CMakeCCompilerABI.c -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_c50e3.dir/CMakeCCompilerABI.c.o -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/cctKvE1w.s] + ignore line: [GNU C17 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu)] + ignore line: [ compiled by GNU C version 9.4.0 GMP version 6.2.0 MPFR version 4.0.2 MPC version 1.1.0 isl version isl-0.22.1-GMP] + ignore line: [] + ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] + ignore line: [ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"] + ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/include-fixed"] + ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/../../../../x86_64-linux-gnu/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/9/include] + ignore line: [ /usr/local/include] + ignore line: [ /usr/include/x86_64-linux-gnu] + ignore line: [ /usr/include] + ignore line: [End of search list.] + ignore line: [GNU C17 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu)] + ignore line: [ compiled by GNU C version 9.4.0 GMP version 6.2.0 MPFR version 4.0.2 MPC version 1.1.0 isl version isl-0.22.1-GMP] + ignore line: [] + ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] + ignore line: [Compiler executable checksum: c0c95c0b4209efec1c1892d5ff24030b] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_c50e3.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64'] + ignore line: [ as -v --64 -o CMakeFiles/cmTC_c50e3.dir/CMakeCCompilerABI.c.o /tmp/cctKvE1w.s] + ignore line: [GNU assembler version 2.34 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.34] + ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/] + ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_c50e3.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64'] + ignore line: [Linking C executable cmTC_c50e3] + ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_c50e3.dir/link.txt --verbose=1] + ignore line: [/usr/bin/cc -v CMakeFiles/cmTC_c50e3.dir/CMakeCCompilerABI.c.o -o cmTC_c50e3 ] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/usr/bin/cc] + ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper] + ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:hsa] + ignore line: [OFFLOAD_TARGET_DEFAULT=1] + ignore line: [Target: x86_64-linux-gnu] + ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c ada c++ go brig d fortran objc obj-c++ gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32 m64 mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu] + ignore line: [Thread model: posix] + ignore line: [gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) ] + ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/] + ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_c50e3' '-mtune=generic' '-march=x86-64'] + link line: [ /usr/lib/gcc/x86_64-linux-gnu/9/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -plugin-opt=-fresolution=/tmp/ccjkKm3V.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_c50e3 /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/9/../../.. CMakeFiles/cmTC_c50e3.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o] + arg [/usr/lib/gcc/x86_64-linux-gnu/9/collect2] ==> ignore + arg [-plugin] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so] ==> ignore + arg [-plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/ccjkKm3V.res] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [-plugin-opt=-pass-through=-lc] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [--build-id] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [elf_x86_64] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--as-needed] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/lib64/ld-linux-x86-64.so.2] ==> ignore + arg [-pie] ==> ignore + arg [-znow] ==> ignore + arg [-zrelro] ==> ignore + arg [-o] ==> ignore + arg [cmTC_c50e3] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o] ==> ignore + arg [-L/usr/lib/gcc/x86_64-linux-gnu/9] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib] + arg [-L/lib/x86_64-linux-gnu] ==> dir [/lib/x86_64-linux-gnu] + arg [-L/lib/../lib] ==> dir [/lib/../lib] + arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu] + arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../..] + arg [CMakeFiles/cmTC_c50e3.dir/CMakeCCompilerABI.c.o] ==> ignore + arg [-lgcc] ==> lib [gcc] + arg [--push-state] ==> ignore + arg [--as-needed] ==> ignore + arg [-lgcc_s] ==> lib [gcc_s] + arg [--pop-state] ==> ignore + arg [-lc] ==> lib [c] + arg [-lgcc] ==> lib [gcc] + arg [--push-state] ==> ignore + arg [--as-needed] ==> ignore + arg [-lgcc_s] ==> lib [gcc_s] + arg [--pop-state] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o] ==> ignore + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9] ==> [/usr/lib/gcc/x86_64-linux-gnu/9] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib] ==> [/usr/lib] + collapse library dir [/lib/x86_64-linux-gnu] ==> [/lib/x86_64-linux-gnu] + collapse library dir [/lib/../lib] ==> [/lib] + collapse library dir [/usr/lib/x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu] + collapse library dir [/usr/lib/../lib] ==> [/usr/lib] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../..] ==> [/usr/lib] + implicit libs: [gcc;gcc_s;c;gcc;gcc_s] + implicit dirs: [/usr/lib/gcc/x86_64-linux-gnu/9;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib] + implicit fwks: [] + + +Determining if the include file pthread.h exists passed with the following output: +Change Dir: /home/emidan19/gr-tempest/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/bin/make cmTC_cf55c/fast && /usr/bin/make -f CMakeFiles/cmTC_cf55c.dir/build.make CMakeFiles/cmTC_cf55c.dir/build +make[1]: Entering directory '/home/emidan19/gr-tempest/build/CMakeFiles/CMakeTmp' +Building C object CMakeFiles/cmTC_cf55c.dir/CheckIncludeFile.c.o +/usr/bin/cc -std=gnu11 -o CMakeFiles/cmTC_cf55c.dir/CheckIncludeFile.c.o -c /home/emidan19/gr-tempest/build/CMakeFiles/CMakeTmp/CheckIncludeFile.c +Linking C executable cmTC_cf55c +/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_cf55c.dir/link.txt --verbose=1 +/usr/bin/cc CMakeFiles/cmTC_cf55c.dir/CheckIncludeFile.c.o -o cmTC_cf55c +make[1]: Leaving directory '/home/emidan19/gr-tempest/build/CMakeFiles/CMakeTmp' + + + +Determining if the function pthread_create exists in the pthread passed with the following output: +Change Dir: /home/emidan19/gr-tempest/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/bin/make cmTC_6b720/fast && /usr/bin/make -f CMakeFiles/cmTC_6b720.dir/build.make CMakeFiles/cmTC_6b720.dir/build +make[1]: Entering directory '/home/emidan19/gr-tempest/build/CMakeFiles/CMakeTmp' +Building C object CMakeFiles/cmTC_6b720.dir/CheckFunctionExists.c.o +/usr/bin/cc -DCHECK_FUNCTION_EXISTS=pthread_create -std=gnu11 -o CMakeFiles/cmTC_6b720.dir/CheckFunctionExists.c.o -c /usr/share/cmake-3.16/Modules/CheckFunctionExists.c +Linking C executable cmTC_6b720 +/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_6b720.dir/link.txt --verbose=1 +/usr/bin/cc -DCHECK_FUNCTION_EXISTS=pthread_create CMakeFiles/cmTC_6b720.dir/CheckFunctionExists.c.o -o cmTC_6b720 -lpthread +make[1]: Leaving directory '/home/emidan19/gr-tempest/build/CMakeFiles/CMakeTmp' + + + diff --git a/build/CMakeFiles/CMakeRuleHashes.txt b/build/CMakeFiles/CMakeRuleHashes.txt new file mode 100644 index 0000000..d96e801 --- /dev/null +++ b/build/CMakeFiles/CMakeRuleHashes.txt @@ -0,0 +1,11 @@ +# Hashes of file build rules. +c631fbc0d169ca39fcb1e01525b3e13a CMakeFiles/uninstall +dd287d08823c120fe5194508bdcf4dac python/CMakeFiles/pygen_python_2ccf9 +6e2801557d13c5556d56cf5512537472 python/__init__.pyc +522bf23c89b9b69220fbf6708b69a9c1 python/__init__.pyo +df740e86614f6c13c3b60ba0d3d885c8 swig/CMakeFiles/pygen_swig_8088c +7a3c0fc01bf16bf36cd61ca8e14a872a swig/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON.stamp +df740e86614f6c13c3b60ba0d3d885c8 swig/CMakeFiles/tempest_swig_swig_compilation +df740e86614f6c13c3b60ba0d3d885c8 swig/CMakeFiles/tempest_swig_swig_doc +37adc07be59d5b69ec898f88b9b16c91 swig/tempest_swig.pyc +b163bda164537e092688a72ffccdadbf swig/tempest_swig.pyo diff --git a/build/CMakeFiles/Makefile.cmake b/build/CMakeFiles/Makefile.cmake new file mode 100644 index 0000000..23222ba --- /dev/null +++ b/build/CMakeFiles/Makefile.cmake @@ -0,0 +1,165 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.16 + +# The generator used is: +set(CMAKE_DEPENDS_GENERATOR "Unix Makefiles") + +# The top level Makefile was generated from the following files: +set(CMAKE_MAKEFILE_DEPENDS + "CMakeCache.txt" + "../CMakeLists.txt" + "../apps/CMakeLists.txt" + "CMakeFiles/3.16.3/CMakeCCompiler.cmake" + "CMakeFiles/3.16.3/CMakeCXXCompiler.cmake" + "CMakeFiles/3.16.3/CMakeSystem.cmake" + "../cmake/Modules/targetConfig.cmake.in" + "../cmake/cmake_uninstall.cmake.in" + "../docs/CMakeLists.txt" + "../grc/CMakeLists.txt" + "../include/tempest/CMakeLists.txt" + "../lib/CMakeLists.txt" + "../python/CMakeLists.txt" + "../swig/CMakeLists.txt" + "/usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfigVersion.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/BoostDetectToolset-1.71.0.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/boost_atomic-1.71.0/boost_atomic-config-version.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/boost_atomic-1.71.0/boost_atomic-config.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/boost_atomic-1.71.0/libboost_atomic-variant-shared.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/boost_atomic-1.71.0/libboost_atomic-variant-static.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/boost_date_time-1.71.0/boost_date_time-config-version.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/boost_date_time-1.71.0/boost_date_time-config.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/boost_date_time-1.71.0/libboost_date_time-variant-shared.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/boost_date_time-1.71.0/libboost_date_time-variant-static.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config-version.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/boost_filesystem-config.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-shared.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-static.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config-version.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0/boost_headers-config.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/boost_program_options-1.71.0/boost_program_options-config-version.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/boost_program_options-1.71.0/boost_program_options-config.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/boost_program_options-1.71.0/libboost_program_options-variant-shared.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/boost_program_options-1.71.0/libboost_program_options-variant-static.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/boost_regex-1.71.0/boost_regex-config-version.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/boost_regex-1.71.0/boost_regex-config.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/boost_regex-1.71.0/libboost_regex-variant-shared.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/boost_regex-1.71.0/libboost_regex-variant-static.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/boost_system-1.71.0/boost_system-config-version.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/boost_system-1.71.0/boost_system-config.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/boost_system-1.71.0/libboost_system-variant-shared.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/boost_system-1.71.0/libboost_system-variant-static.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/boost_thread-1.71.0/boost_thread-config-version.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/boost_thread-1.71.0/boost_thread-config.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/boost_thread-1.71.0/libboost_thread-variant-shared.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/boost_thread-1.71.0/libboost_thread-variant-static.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/boost_unit_test_framework-1.71.0/boost_unit_test_framework-config-version.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/boost_unit_test_framework-1.71.0/boost_unit_test_framework-config.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/boost_unit_test_framework-1.71.0/libboost_unit_test_framework-variant-shared.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/boost_unit_test_framework-1.71.0/libboost_unit_test_framework-variant-static.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/gnuradio/CMakeParseArgumentsCopy.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/gnuradio/FindFFTW3f.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/gnuradio/FindGMP.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/gnuradio/FindGit.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/gnuradio/FindLOG4CPP.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/gnuradio/FindMPLIB.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/gnuradio/FindSWIG.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/gnuradio/FindTHRIFT.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/gnuradio/GnuradioConfig.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/gnuradio/GnuradioConfigVersion.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/gnuradio/GrMiscUtils.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/gnuradio/GrPlatform.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/gnuradio/GrPython.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/gnuradio/GrSwig.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/gnuradio/GrTest.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/gnuradio/GrVersion.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/gnuradio/UseSWIG.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/gnuradio/gnuradio-blocksConfig.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/gnuradio/gnuradio-blocksTargets-relwithdebinfo.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/gnuradio/gnuradio-blocksTargets.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/gnuradio/gnuradio-fftConfig.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/gnuradio/gnuradio-fftTargets-relwithdebinfo.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/gnuradio/gnuradio-fftTargets.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/gnuradio/gnuradio-filterConfig.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/gnuradio/gnuradio-filterTargets-relwithdebinfo.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/gnuradio/gnuradio-filterTargets.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/gnuradio/gnuradio-pmtConfig.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/gnuradio/gnuradio-pmtTargets-relwithdebinfo.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/gnuradio/gnuradio-pmtTargets.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/gnuradio/gnuradio-runtimeConfig.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/gnuradio/gnuradio-runtimeTargets-relwithdebinfo.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/gnuradio/gnuradio-runtimeTargets.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/gnuradio/runtime_swigTargets-relwithdebinfo.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/gnuradio/runtime_swigTargets.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/volk/VolkConfig.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/volk/VolkConfigVersion.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/volk/VolkTargets-relwithdebinfo.cmake" + "/usr/lib/x86_64-linux-gnu/cmake/volk/VolkTargets.cmake" + "/usr/share/cmake-3.16/Modules/CMakeCInformation.cmake" + "/usr/share/cmake-3.16/Modules/CMakeCXXInformation.cmake" + "/usr/share/cmake-3.16/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake" + "/usr/share/cmake-3.16/Modules/CMakeCommonLanguageInclude.cmake" + "/usr/share/cmake-3.16/Modules/CMakeFindDependencyMacro.cmake" + "/usr/share/cmake-3.16/Modules/CMakeFindFrameworks.cmake" + "/usr/share/cmake-3.16/Modules/CMakeGenericSystem.cmake" + "/usr/share/cmake-3.16/Modules/CMakeInitializeConfigs.cmake" + "/usr/share/cmake-3.16/Modules/CMakeLanguageInformation.cmake" + "/usr/share/cmake-3.16/Modules/CMakePackageConfigHelpers.cmake" + "/usr/share/cmake-3.16/Modules/CMakeSystemSpecificInformation.cmake" + "/usr/share/cmake-3.16/Modules/CMakeSystemSpecificInitialize.cmake" + "/usr/share/cmake-3.16/Modules/CheckCSourceCompiles.cmake" + "/usr/share/cmake-3.16/Modules/CheckIncludeFile.cmake" + "/usr/share/cmake-3.16/Modules/CheckLibraryExists.cmake" + "/usr/share/cmake-3.16/Modules/Compiler/CMakeCommonCompilerMacros.cmake" + "/usr/share/cmake-3.16/Modules/Compiler/GNU-C.cmake" + "/usr/share/cmake-3.16/Modules/Compiler/GNU-CXX.cmake" + "/usr/share/cmake-3.16/Modules/Compiler/GNU.cmake" + "/usr/share/cmake-3.16/Modules/FindBoost.cmake" + "/usr/share/cmake-3.16/Modules/FindDoxygen.cmake" + "/usr/share/cmake-3.16/Modules/FindPackageHandleStandardArgs.cmake" + "/usr/share/cmake-3.16/Modules/FindPackageMessage.cmake" + "/usr/share/cmake-3.16/Modules/FindPkgConfig.cmake" + "/usr/share/cmake-3.16/Modules/FindPythonInterp.cmake" + "/usr/share/cmake-3.16/Modules/FindPythonLibs.cmake" + "/usr/share/cmake-3.16/Modules/FindSWIG.cmake" + "/usr/share/cmake-3.16/Modules/FindThreads.cmake" + "/usr/share/cmake-3.16/Modules/Internal/CMakeCheckCompilerFlag.cmake" + "/usr/share/cmake-3.16/Modules/Platform/Linux-GNU-C.cmake" + "/usr/share/cmake-3.16/Modules/Platform/Linux-GNU-CXX.cmake" + "/usr/share/cmake-3.16/Modules/Platform/Linux-GNU.cmake" + "/usr/share/cmake-3.16/Modules/Platform/Linux.cmake" + "/usr/share/cmake-3.16/Modules/Platform/UnixPaths.cmake" + "/usr/share/cmake-3.16/Modules/SelectLibraryConfigurations.cmake" + "/usr/share/cmake-3.16/Modules/WriteBasicConfigVersionFile.cmake" + ) + +# The corresponding makefile is: +set(CMAKE_MAKEFILE_OUTPUTS + "Makefile" + "CMakeFiles/cmake.check_cache" + ) + +# Byproducts of CMake generate step: +set(CMAKE_MAKEFILE_PRODUCTS + "cmake_uninstall.cmake" + "CMakeFiles/CMakeDirectoryInformation.cmake" + "include/tempest/CMakeFiles/CMakeDirectoryInformation.cmake" + "lib/CMakeFiles/CMakeDirectoryInformation.cmake" + "apps/CMakeFiles/CMakeDirectoryInformation.cmake" + "docs/CMakeFiles/CMakeDirectoryInformation.cmake" + "swig/CMakeFiles/CMakeDirectoryInformation.cmake" + "python/CMakeFiles/CMakeDirectoryInformation.cmake" + "grc/CMakeFiles/CMakeDirectoryInformation.cmake" + ) + +# Dependency information for all targets: +set(CMAKE_DEPEND_INFO_FILES + "CMakeFiles/uninstall.dir/DependInfo.cmake" + "lib/CMakeFiles/gnuradio-tempest.dir/DependInfo.cmake" + "apps/CMakeFiles/pygen_apps_9a6dd.dir/DependInfo.cmake" + "swig/CMakeFiles/pygen_swig_8088c.dir/DependInfo.cmake" + "swig/CMakeFiles/tempest_swig_swig_compilation.dir/DependInfo.cmake" + "swig/CMakeFiles/tempest_swig.dir/DependInfo.cmake" + "swig/CMakeFiles/tempest_swig_swig_doc.dir/DependInfo.cmake" + "python/CMakeFiles/pygen_python_2ccf9.dir/DependInfo.cmake" + ) diff --git a/build/CMakeFiles/Makefile2 b/build/CMakeFiles/Makefile2 new file mode 100644 index 0000000..146d9ec --- /dev/null +++ b/build/CMakeFiles/Makefile2 @@ -0,0 +1,445 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.16 + +# Default target executed when no arguments are given to make. +default_target: all + +.PHONY : default_target + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E remove -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/emidan19/gr-tempest + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/emidan19/gr-tempest/build + +#============================================================================= +# Directory level rules for the build root directory + +# The main recursive "all" target. +all: include/tempest/all +all: lib/all +all: apps/all +all: docs/all +all: swig/all +all: python/all +all: grc/all + +.PHONY : all + +# The main recursive "preinstall" target. +preinstall: include/tempest/preinstall +preinstall: lib/preinstall +preinstall: apps/preinstall +preinstall: docs/preinstall +preinstall: swig/preinstall +preinstall: python/preinstall +preinstall: grc/preinstall + +.PHONY : preinstall + +# The main recursive "clean" target. +clean: CMakeFiles/uninstall.dir/clean +clean: include/tempest/clean +clean: lib/clean +clean: apps/clean +clean: docs/clean +clean: swig/clean +clean: python/clean +clean: grc/clean + +.PHONY : clean + +#============================================================================= +# Directory level rules for directory apps + +# Recursive "all" directory target. +apps/all: apps/CMakeFiles/pygen_apps_9a6dd.dir/all + +.PHONY : apps/all + +# Recursive "preinstall" directory target. +apps/preinstall: + +.PHONY : apps/preinstall + +# Recursive "clean" directory target. +apps/clean: apps/CMakeFiles/pygen_apps_9a6dd.dir/clean + +.PHONY : apps/clean + +#============================================================================= +# Directory level rules for directory docs + +# Recursive "all" directory target. +docs/all: + +.PHONY : docs/all + +# Recursive "preinstall" directory target. +docs/preinstall: + +.PHONY : docs/preinstall + +# Recursive "clean" directory target. +docs/clean: + +.PHONY : docs/clean + +#============================================================================= +# Directory level rules for directory grc + +# Recursive "all" directory target. +grc/all: + +.PHONY : grc/all + +# Recursive "preinstall" directory target. +grc/preinstall: + +.PHONY : grc/preinstall + +# Recursive "clean" directory target. +grc/clean: + +.PHONY : grc/clean + +#============================================================================= +# Directory level rules for directory include/tempest + +# Recursive "all" directory target. +include/tempest/all: + +.PHONY : include/tempest/all + +# Recursive "preinstall" directory target. +include/tempest/preinstall: + +.PHONY : include/tempest/preinstall + +# Recursive "clean" directory target. +include/tempest/clean: + +.PHONY : include/tempest/clean + +#============================================================================= +# Directory level rules for directory lib + +# Recursive "all" directory target. +lib/all: lib/CMakeFiles/gnuradio-tempest.dir/all + +.PHONY : lib/all + +# Recursive "preinstall" directory target. +lib/preinstall: + +.PHONY : lib/preinstall + +# Recursive "clean" directory target. +lib/clean: lib/CMakeFiles/gnuradio-tempest.dir/clean + +.PHONY : lib/clean + +#============================================================================= +# Directory level rules for directory python + +# Recursive "all" directory target. +python/all: python/CMakeFiles/pygen_python_2ccf9.dir/all + +.PHONY : python/all + +# Recursive "preinstall" directory target. +python/preinstall: + +.PHONY : python/preinstall + +# Recursive "clean" directory target. +python/clean: python/CMakeFiles/pygen_python_2ccf9.dir/clean + +.PHONY : python/clean + +#============================================================================= +# Directory level rules for directory swig + +# Recursive "all" directory target. +swig/all: swig/CMakeFiles/pygen_swig_8088c.dir/all +swig/all: swig/CMakeFiles/tempest_swig.dir/all + +.PHONY : swig/all + +# Recursive "preinstall" directory target. +swig/preinstall: + +.PHONY : swig/preinstall + +# Recursive "clean" directory target. +swig/clean: swig/CMakeFiles/pygen_swig_8088c.dir/clean +swig/clean: swig/CMakeFiles/tempest_swig_swig_compilation.dir/clean +swig/clean: swig/CMakeFiles/tempest_swig.dir/clean +swig/clean: swig/CMakeFiles/tempest_swig_swig_doc.dir/clean + +.PHONY : swig/clean + +#============================================================================= +# Target rules for target CMakeFiles/uninstall.dir + +# All Build rule for target. +CMakeFiles/uninstall.dir/all: + $(MAKE) -f CMakeFiles/uninstall.dir/build.make CMakeFiles/uninstall.dir/depend + $(MAKE) -f CMakeFiles/uninstall.dir/build.make CMakeFiles/uninstall.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/emidan19/gr-tempest/build/CMakeFiles --progress-num= "Built target uninstall" +.PHONY : CMakeFiles/uninstall.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/uninstall.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/emidan19/gr-tempest/build/CMakeFiles 0 + $(MAKE) -f CMakeFiles/Makefile2 CMakeFiles/uninstall.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/emidan19/gr-tempest/build/CMakeFiles 0 +.PHONY : CMakeFiles/uninstall.dir/rule + +# Convenience name for target. +uninstall: CMakeFiles/uninstall.dir/rule + +.PHONY : uninstall + +# clean rule for target. +CMakeFiles/uninstall.dir/clean: + $(MAKE) -f CMakeFiles/uninstall.dir/build.make CMakeFiles/uninstall.dir/clean +.PHONY : CMakeFiles/uninstall.dir/clean + +#============================================================================= +# Target rules for target lib/CMakeFiles/gnuradio-tempest.dir + +# All Build rule for target. +lib/CMakeFiles/gnuradio-tempest.dir/all: + $(MAKE) -f lib/CMakeFiles/gnuradio-tempest.dir/build.make lib/CMakeFiles/gnuradio-tempest.dir/depend + $(MAKE) -f lib/CMakeFiles/gnuradio-tempest.dir/build.make lib/CMakeFiles/gnuradio-tempest.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/emidan19/gr-tempest/build/CMakeFiles --progress-num=1,2,3,4,5,6,7,8,9,10,11 "Built target gnuradio-tempest" +.PHONY : lib/CMakeFiles/gnuradio-tempest.dir/all + +# Build rule for subdir invocation for target. +lib/CMakeFiles/gnuradio-tempest.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/emidan19/gr-tempest/build/CMakeFiles 11 + $(MAKE) -f CMakeFiles/Makefile2 lib/CMakeFiles/gnuradio-tempest.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/emidan19/gr-tempest/build/CMakeFiles 0 +.PHONY : lib/CMakeFiles/gnuradio-tempest.dir/rule + +# Convenience name for target. +gnuradio-tempest: lib/CMakeFiles/gnuradio-tempest.dir/rule + +.PHONY : gnuradio-tempest + +# clean rule for target. +lib/CMakeFiles/gnuradio-tempest.dir/clean: + $(MAKE) -f lib/CMakeFiles/gnuradio-tempest.dir/build.make lib/CMakeFiles/gnuradio-tempest.dir/clean +.PHONY : lib/CMakeFiles/gnuradio-tempest.dir/clean + +#============================================================================= +# Target rules for target apps/CMakeFiles/pygen_apps_9a6dd.dir + +# All Build rule for target. +apps/CMakeFiles/pygen_apps_9a6dd.dir/all: + $(MAKE) -f apps/CMakeFiles/pygen_apps_9a6dd.dir/build.make apps/CMakeFiles/pygen_apps_9a6dd.dir/depend + $(MAKE) -f apps/CMakeFiles/pygen_apps_9a6dd.dir/build.make apps/CMakeFiles/pygen_apps_9a6dd.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/emidan19/gr-tempest/build/CMakeFiles --progress-num= "Built target pygen_apps_9a6dd" +.PHONY : apps/CMakeFiles/pygen_apps_9a6dd.dir/all + +# Build rule for subdir invocation for target. +apps/CMakeFiles/pygen_apps_9a6dd.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/emidan19/gr-tempest/build/CMakeFiles 0 + $(MAKE) -f CMakeFiles/Makefile2 apps/CMakeFiles/pygen_apps_9a6dd.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/emidan19/gr-tempest/build/CMakeFiles 0 +.PHONY : apps/CMakeFiles/pygen_apps_9a6dd.dir/rule + +# Convenience name for target. +pygen_apps_9a6dd: apps/CMakeFiles/pygen_apps_9a6dd.dir/rule + +.PHONY : pygen_apps_9a6dd + +# clean rule for target. +apps/CMakeFiles/pygen_apps_9a6dd.dir/clean: + $(MAKE) -f apps/CMakeFiles/pygen_apps_9a6dd.dir/build.make apps/CMakeFiles/pygen_apps_9a6dd.dir/clean +.PHONY : apps/CMakeFiles/pygen_apps_9a6dd.dir/clean + +#============================================================================= +# Target rules for target swig/CMakeFiles/pygen_swig_8088c.dir + +# All Build rule for target. +swig/CMakeFiles/pygen_swig_8088c.dir/all: swig/CMakeFiles/tempest_swig.dir/all + $(MAKE) -f swig/CMakeFiles/pygen_swig_8088c.dir/build.make swig/CMakeFiles/pygen_swig_8088c.dir/depend + $(MAKE) -f swig/CMakeFiles/pygen_swig_8088c.dir/build.make swig/CMakeFiles/pygen_swig_8088c.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/emidan19/gr-tempest/build/CMakeFiles --progress-num=14,15 "Built target pygen_swig_8088c" +.PHONY : swig/CMakeFiles/pygen_swig_8088c.dir/all + +# Build rule for subdir invocation for target. +swig/CMakeFiles/pygen_swig_8088c.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/emidan19/gr-tempest/build/CMakeFiles 16 + $(MAKE) -f CMakeFiles/Makefile2 swig/CMakeFiles/pygen_swig_8088c.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/emidan19/gr-tempest/build/CMakeFiles 0 +.PHONY : swig/CMakeFiles/pygen_swig_8088c.dir/rule + +# Convenience name for target. +pygen_swig_8088c: swig/CMakeFiles/pygen_swig_8088c.dir/rule + +.PHONY : pygen_swig_8088c + +# clean rule for target. +swig/CMakeFiles/pygen_swig_8088c.dir/clean: + $(MAKE) -f swig/CMakeFiles/pygen_swig_8088c.dir/build.make swig/CMakeFiles/pygen_swig_8088c.dir/clean +.PHONY : swig/CMakeFiles/pygen_swig_8088c.dir/clean + +#============================================================================= +# Target rules for target swig/CMakeFiles/tempest_swig_swig_compilation.dir + +# All Build rule for target. +swig/CMakeFiles/tempest_swig_swig_compilation.dir/all: swig/CMakeFiles/tempest_swig_swig_doc.dir/all + $(MAKE) -f swig/CMakeFiles/tempest_swig_swig_compilation.dir/build.make swig/CMakeFiles/tempest_swig_swig_compilation.dir/depend + $(MAKE) -f swig/CMakeFiles/tempest_swig_swig_compilation.dir/build.make swig/CMakeFiles/tempest_swig_swig_compilation.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/emidan19/gr-tempest/build/CMakeFiles --progress-num=18 "Built target tempest_swig_swig_compilation" +.PHONY : swig/CMakeFiles/tempest_swig_swig_compilation.dir/all + +# Build rule for subdir invocation for target. +swig/CMakeFiles/tempest_swig_swig_compilation.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/emidan19/gr-tempest/build/CMakeFiles 1 + $(MAKE) -f CMakeFiles/Makefile2 swig/CMakeFiles/tempest_swig_swig_compilation.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/emidan19/gr-tempest/build/CMakeFiles 0 +.PHONY : swig/CMakeFiles/tempest_swig_swig_compilation.dir/rule + +# Convenience name for target. +tempest_swig_swig_compilation: swig/CMakeFiles/tempest_swig_swig_compilation.dir/rule + +.PHONY : tempest_swig_swig_compilation + +# clean rule for target. +swig/CMakeFiles/tempest_swig_swig_compilation.dir/clean: + $(MAKE) -f swig/CMakeFiles/tempest_swig_swig_compilation.dir/build.make swig/CMakeFiles/tempest_swig_swig_compilation.dir/clean +.PHONY : swig/CMakeFiles/tempest_swig_swig_compilation.dir/clean + +#============================================================================= +# Target rules for target swig/CMakeFiles/tempest_swig.dir + +# All Build rule for target. +swig/CMakeFiles/tempest_swig.dir/all: lib/CMakeFiles/gnuradio-tempest.dir/all +swig/CMakeFiles/tempest_swig.dir/all: swig/CMakeFiles/tempest_swig_swig_compilation.dir/all + $(MAKE) -f swig/CMakeFiles/tempest_swig.dir/build.make swig/CMakeFiles/tempest_swig.dir/depend + $(MAKE) -f swig/CMakeFiles/tempest_swig.dir/build.make swig/CMakeFiles/tempest_swig.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/emidan19/gr-tempest/build/CMakeFiles --progress-num=16,17 "Built target tempest_swig" +.PHONY : swig/CMakeFiles/tempest_swig.dir/all + +# Build rule for subdir invocation for target. +swig/CMakeFiles/tempest_swig.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/emidan19/gr-tempest/build/CMakeFiles 14 + $(MAKE) -f CMakeFiles/Makefile2 swig/CMakeFiles/tempest_swig.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/emidan19/gr-tempest/build/CMakeFiles 0 +.PHONY : swig/CMakeFiles/tempest_swig.dir/rule + +# Convenience name for target. +tempest_swig: swig/CMakeFiles/tempest_swig.dir/rule + +.PHONY : tempest_swig + +# clean rule for target. +swig/CMakeFiles/tempest_swig.dir/clean: + $(MAKE) -f swig/CMakeFiles/tempest_swig.dir/build.make swig/CMakeFiles/tempest_swig.dir/clean +.PHONY : swig/CMakeFiles/tempest_swig.dir/clean + +#============================================================================= +# Target rules for target swig/CMakeFiles/tempest_swig_swig_doc.dir + +# All Build rule for target. +swig/CMakeFiles/tempest_swig_swig_doc.dir/all: + $(MAKE) -f swig/CMakeFiles/tempest_swig_swig_doc.dir/build.make swig/CMakeFiles/tempest_swig_swig_doc.dir/depend + $(MAKE) -f swig/CMakeFiles/tempest_swig_swig_doc.dir/build.make swig/CMakeFiles/tempest_swig_swig_doc.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/emidan19/gr-tempest/build/CMakeFiles --progress-num= "Built target tempest_swig_swig_doc" +.PHONY : swig/CMakeFiles/tempest_swig_swig_doc.dir/all + +# Build rule for subdir invocation for target. +swig/CMakeFiles/tempest_swig_swig_doc.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/emidan19/gr-tempest/build/CMakeFiles 0 + $(MAKE) -f CMakeFiles/Makefile2 swig/CMakeFiles/tempest_swig_swig_doc.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/emidan19/gr-tempest/build/CMakeFiles 0 +.PHONY : swig/CMakeFiles/tempest_swig_swig_doc.dir/rule + +# Convenience name for target. +tempest_swig_swig_doc: swig/CMakeFiles/tempest_swig_swig_doc.dir/rule + +.PHONY : tempest_swig_swig_doc + +# clean rule for target. +swig/CMakeFiles/tempest_swig_swig_doc.dir/clean: + $(MAKE) -f swig/CMakeFiles/tempest_swig_swig_doc.dir/build.make swig/CMakeFiles/tempest_swig_swig_doc.dir/clean +.PHONY : swig/CMakeFiles/tempest_swig_swig_doc.dir/clean + +#============================================================================= +# Target rules for target python/CMakeFiles/pygen_python_2ccf9.dir + +# All Build rule for target. +python/CMakeFiles/pygen_python_2ccf9.dir/all: + $(MAKE) -f python/CMakeFiles/pygen_python_2ccf9.dir/build.make python/CMakeFiles/pygen_python_2ccf9.dir/depend + $(MAKE) -f python/CMakeFiles/pygen_python_2ccf9.dir/build.make python/CMakeFiles/pygen_python_2ccf9.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/emidan19/gr-tempest/build/CMakeFiles --progress-num=12,13 "Built target pygen_python_2ccf9" +.PHONY : python/CMakeFiles/pygen_python_2ccf9.dir/all + +# Build rule for subdir invocation for target. +python/CMakeFiles/pygen_python_2ccf9.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/emidan19/gr-tempest/build/CMakeFiles 2 + $(MAKE) -f CMakeFiles/Makefile2 python/CMakeFiles/pygen_python_2ccf9.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/emidan19/gr-tempest/build/CMakeFiles 0 +.PHONY : python/CMakeFiles/pygen_python_2ccf9.dir/rule + +# Convenience name for target. +pygen_python_2ccf9: python/CMakeFiles/pygen_python_2ccf9.dir/rule + +.PHONY : pygen_python_2ccf9 + +# clean rule for target. +python/CMakeFiles/pygen_python_2ccf9.dir/clean: + $(MAKE) -f python/CMakeFiles/pygen_python_2ccf9.dir/build.make python/CMakeFiles/pygen_python_2ccf9.dir/clean +.PHONY : python/CMakeFiles/pygen_python_2ccf9.dir/clean + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/build/CMakeFiles/TargetDirectories.txt b/build/CMakeFiles/TargetDirectories.txt new file mode 100644 index 0000000..7afa97a --- /dev/null +++ b/build/CMakeFiles/TargetDirectories.txt @@ -0,0 +1,64 @@ +/home/emidan19/gr-tempest/build/CMakeFiles/install/strip.dir +/home/emidan19/gr-tempest/build/CMakeFiles/install/local.dir +/home/emidan19/gr-tempest/build/CMakeFiles/install.dir +/home/emidan19/gr-tempest/build/CMakeFiles/list_install_components.dir +/home/emidan19/gr-tempest/build/CMakeFiles/rebuild_cache.dir +/home/emidan19/gr-tempest/build/CMakeFiles/edit_cache.dir +/home/emidan19/gr-tempest/build/CMakeFiles/test.dir +/home/emidan19/gr-tempest/build/CMakeFiles/uninstall.dir +/home/emidan19/gr-tempest/build/include/tempest/CMakeFiles/install/strip.dir +/home/emidan19/gr-tempest/build/include/tempest/CMakeFiles/install/local.dir +/home/emidan19/gr-tempest/build/include/tempest/CMakeFiles/install.dir +/home/emidan19/gr-tempest/build/include/tempest/CMakeFiles/list_install_components.dir +/home/emidan19/gr-tempest/build/include/tempest/CMakeFiles/rebuild_cache.dir +/home/emidan19/gr-tempest/build/include/tempest/CMakeFiles/edit_cache.dir +/home/emidan19/gr-tempest/build/include/tempest/CMakeFiles/test.dir +/home/emidan19/gr-tempest/build/lib/CMakeFiles/install/strip.dir +/home/emidan19/gr-tempest/build/lib/CMakeFiles/install/local.dir +/home/emidan19/gr-tempest/build/lib/CMakeFiles/install.dir +/home/emidan19/gr-tempest/build/lib/CMakeFiles/list_install_components.dir +/home/emidan19/gr-tempest/build/lib/CMakeFiles/rebuild_cache.dir +/home/emidan19/gr-tempest/build/lib/CMakeFiles/edit_cache.dir +/home/emidan19/gr-tempest/build/lib/CMakeFiles/test.dir +/home/emidan19/gr-tempest/build/lib/CMakeFiles/gnuradio-tempest.dir +/home/emidan19/gr-tempest/build/apps/CMakeFiles/install/local.dir +/home/emidan19/gr-tempest/build/apps/CMakeFiles/install.dir +/home/emidan19/gr-tempest/build/apps/CMakeFiles/list_install_components.dir +/home/emidan19/gr-tempest/build/apps/CMakeFiles/rebuild_cache.dir +/home/emidan19/gr-tempest/build/apps/CMakeFiles/edit_cache.dir +/home/emidan19/gr-tempest/build/apps/CMakeFiles/test.dir +/home/emidan19/gr-tempest/build/apps/CMakeFiles/install/strip.dir +/home/emidan19/gr-tempest/build/apps/CMakeFiles/pygen_apps_9a6dd.dir +/home/emidan19/gr-tempest/build/docs/CMakeFiles/install/strip.dir +/home/emidan19/gr-tempest/build/docs/CMakeFiles/install/local.dir +/home/emidan19/gr-tempest/build/docs/CMakeFiles/install.dir +/home/emidan19/gr-tempest/build/docs/CMakeFiles/list_install_components.dir +/home/emidan19/gr-tempest/build/docs/CMakeFiles/rebuild_cache.dir +/home/emidan19/gr-tempest/build/docs/CMakeFiles/edit_cache.dir +/home/emidan19/gr-tempest/build/docs/CMakeFiles/test.dir +/home/emidan19/gr-tempest/build/swig/CMakeFiles/install/strip.dir +/home/emidan19/gr-tempest/build/swig/CMakeFiles/install/local.dir +/home/emidan19/gr-tempest/build/swig/CMakeFiles/install.dir +/home/emidan19/gr-tempest/build/swig/CMakeFiles/list_install_components.dir +/home/emidan19/gr-tempest/build/swig/CMakeFiles/rebuild_cache.dir +/home/emidan19/gr-tempest/build/swig/CMakeFiles/edit_cache.dir +/home/emidan19/gr-tempest/build/swig/CMakeFiles/test.dir +/home/emidan19/gr-tempest/build/swig/CMakeFiles/pygen_swig_8088c.dir +/home/emidan19/gr-tempest/build/swig/CMakeFiles/tempest_swig_swig_compilation.dir +/home/emidan19/gr-tempest/build/swig/CMakeFiles/tempest_swig.dir +/home/emidan19/gr-tempest/build/swig/CMakeFiles/tempest_swig_swig_doc.dir +/home/emidan19/gr-tempest/build/python/CMakeFiles/install/strip.dir +/home/emidan19/gr-tempest/build/python/CMakeFiles/install/local.dir +/home/emidan19/gr-tempest/build/python/CMakeFiles/install.dir +/home/emidan19/gr-tempest/build/python/CMakeFiles/list_install_components.dir +/home/emidan19/gr-tempest/build/python/CMakeFiles/rebuild_cache.dir +/home/emidan19/gr-tempest/build/python/CMakeFiles/edit_cache.dir +/home/emidan19/gr-tempest/build/python/CMakeFiles/test.dir +/home/emidan19/gr-tempest/build/python/CMakeFiles/pygen_python_2ccf9.dir +/home/emidan19/gr-tempest/build/grc/CMakeFiles/install/strip.dir +/home/emidan19/gr-tempest/build/grc/CMakeFiles/install/local.dir +/home/emidan19/gr-tempest/build/grc/CMakeFiles/install.dir +/home/emidan19/gr-tempest/build/grc/CMakeFiles/list_install_components.dir +/home/emidan19/gr-tempest/build/grc/CMakeFiles/rebuild_cache.dir +/home/emidan19/gr-tempest/build/grc/CMakeFiles/edit_cache.dir +/home/emidan19/gr-tempest/build/grc/CMakeFiles/test.dir diff --git a/build/CMakeFiles/cmake.check_cache b/build/CMakeFiles/cmake.check_cache new file mode 100644 index 0000000..3dccd73 --- /dev/null +++ b/build/CMakeFiles/cmake.check_cache @@ -0,0 +1 @@ +# This file is generated by cmake for dependency checking of the CMakeCache.txt file diff --git a/build/CMakeFiles/progress.marks b/build/CMakeFiles/progress.marks new file mode 100644 index 0000000..3c03207 --- /dev/null +++ b/build/CMakeFiles/progress.marks @@ -0,0 +1 @@ +18 diff --git a/build/CMakeFiles/uninstall.dir/DependInfo.cmake b/build/CMakeFiles/uninstall.dir/DependInfo.cmake new file mode 100644 index 0000000..19fab21 --- /dev/null +++ b/build/CMakeFiles/uninstall.dir/DependInfo.cmake @@ -0,0 +1,11 @@ +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) +# The set of files for implicit dependencies of each language: + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/build/CMakeFiles/uninstall.dir/build.make b/build/CMakeFiles/uninstall.dir/build.make new file mode 100644 index 0000000..5456097 --- /dev/null +++ b/build/CMakeFiles/uninstall.dir/build.make @@ -0,0 +1,76 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.16 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E remove -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/emidan19/gr-tempest + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/emidan19/gr-tempest/build + +# Utility rule file for uninstall. + +# Include the progress variables for this target. +include CMakeFiles/uninstall.dir/progress.make + +CMakeFiles/uninstall: + /usr/bin/cmake -P /home/emidan19/gr-tempest/build/cmake_uninstall.cmake + +uninstall: CMakeFiles/uninstall +uninstall: CMakeFiles/uninstall.dir/build.make + +.PHONY : uninstall + +# Rule to build all files generated by this target. +CMakeFiles/uninstall.dir/build: uninstall + +.PHONY : CMakeFiles/uninstall.dir/build + +CMakeFiles/uninstall.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/uninstall.dir/cmake_clean.cmake +.PHONY : CMakeFiles/uninstall.dir/clean + +CMakeFiles/uninstall.dir/depend: + cd /home/emidan19/gr-tempest/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/emidan19/gr-tempest /home/emidan19/gr-tempest /home/emidan19/gr-tempest/build /home/emidan19/gr-tempest/build /home/emidan19/gr-tempest/build/CMakeFiles/uninstall.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : CMakeFiles/uninstall.dir/depend + diff --git a/build/CMakeFiles/uninstall.dir/cmake_clean.cmake b/build/CMakeFiles/uninstall.dir/cmake_clean.cmake new file mode 100644 index 0000000..027952d --- /dev/null +++ b/build/CMakeFiles/uninstall.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/uninstall" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/uninstall.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/build/CMakeFiles/uninstall.dir/progress.make b/build/CMakeFiles/uninstall.dir/progress.make new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/build/CMakeFiles/uninstall.dir/progress.make @@ -0,0 +1 @@ + diff --git a/build/CTestTestfile.cmake b/build/CTestTestfile.cmake new file mode 100644 index 0000000..cc65fe6 --- /dev/null +++ b/build/CTestTestfile.cmake @@ -0,0 +1,13 @@ +# CMake generated Testfile for +# Source directory: /home/emidan19/gr-tempest +# Build directory: /home/emidan19/gr-tempest/build +# +# This file includes the relevant testing commands required for +# testing this directory and lists subdirectories to be tested as well. +subdirs("include/tempest") +subdirs("lib") +subdirs("apps") +subdirs("docs") +subdirs("swig") +subdirs("python") +subdirs("grc") diff --git a/build/Makefile b/build/Makefile new file mode 100644 index 0000000..08a961f --- /dev/null +++ b/build/Makefile @@ -0,0 +1,308 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.16 + +# Default target executed when no arguments are given to make. +default_target: all + +.PHONY : default_target + +# Allow only one "make -f Makefile2" at a time, but pass parallelism. +.NOTPARALLEL: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E remove -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/emidan19/gr-tempest + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/emidan19/gr-tempest/build + +#============================================================================= +# Targets provided globally by CMake. + +# Special rule for the target install/strip +install/strip: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip + +# Special rule for the target install/strip +install/strip/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip/fast + +# Special rule for the target install/local +install/local: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local + +# Special rule for the target install/local +install/local/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local/fast + +# Special rule for the target install +install: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install + +# Special rule for the target install +install/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install/fast + +# Special rule for the target list_install_components +list_install_components: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Available install components are: \"Unspecified\"" +.PHONY : list_install_components + +# Special rule for the target list_install_components +list_install_components/fast: list_install_components + +.PHONY : list_install_components/fast + +# Special rule for the target rebuild_cache +rebuild_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..." + /usr/bin/cmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : rebuild_cache + +# Special rule for the target rebuild_cache +rebuild_cache/fast: rebuild_cache + +.PHONY : rebuild_cache/fast + +# Special rule for the target edit_cache +edit_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "No interactive CMake dialog available..." + /usr/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available. +.PHONY : edit_cache + +# Special rule for the target edit_cache +edit_cache/fast: edit_cache + +.PHONY : edit_cache/fast + +# Special rule for the target test +test: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running tests..." + /usr/bin/ctest --force-new-ctest-process $(ARGS) +.PHONY : test + +# Special rule for the target test +test/fast: test + +.PHONY : test/fast + +# The main all target +all: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/emidan19/gr-tempest/build/CMakeFiles /home/emidan19/gr-tempest/build/CMakeFiles/progress.marks + $(MAKE) -f CMakeFiles/Makefile2 all + $(CMAKE_COMMAND) -E cmake_progress_start /home/emidan19/gr-tempest/build/CMakeFiles 0 +.PHONY : all + +# The main clean target +clean: + $(MAKE) -f CMakeFiles/Makefile2 clean +.PHONY : clean + +# The main clean target +clean/fast: clean + +.PHONY : clean/fast + +# Prepare targets for installation. +preinstall: all + $(MAKE) -f CMakeFiles/Makefile2 preinstall +.PHONY : preinstall + +# Prepare targets for installation. +preinstall/fast: + $(MAKE) -f CMakeFiles/Makefile2 preinstall +.PHONY : preinstall/fast + +# clear depends +depend: + $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 +.PHONY : depend + +#============================================================================= +# Target rules for targets named uninstall + +# Build rule for target. +uninstall: cmake_check_build_system + $(MAKE) -f CMakeFiles/Makefile2 uninstall +.PHONY : uninstall + +# fast build rule for target. +uninstall/fast: + $(MAKE) -f CMakeFiles/uninstall.dir/build.make CMakeFiles/uninstall.dir/build +.PHONY : uninstall/fast + +#============================================================================= +# Target rules for targets named gnuradio-tempest + +# Build rule for target. +gnuradio-tempest: cmake_check_build_system + $(MAKE) -f CMakeFiles/Makefile2 gnuradio-tempest +.PHONY : gnuradio-tempest + +# fast build rule for target. +gnuradio-tempest/fast: + $(MAKE) -f lib/CMakeFiles/gnuradio-tempest.dir/build.make lib/CMakeFiles/gnuradio-tempest.dir/build +.PHONY : gnuradio-tempest/fast + +#============================================================================= +# Target rules for targets named pygen_apps_9a6dd + +# Build rule for target. +pygen_apps_9a6dd: cmake_check_build_system + $(MAKE) -f CMakeFiles/Makefile2 pygen_apps_9a6dd +.PHONY : pygen_apps_9a6dd + +# fast build rule for target. +pygen_apps_9a6dd/fast: + $(MAKE) -f apps/CMakeFiles/pygen_apps_9a6dd.dir/build.make apps/CMakeFiles/pygen_apps_9a6dd.dir/build +.PHONY : pygen_apps_9a6dd/fast + +#============================================================================= +# Target rules for targets named pygen_swig_8088c + +# Build rule for target. +pygen_swig_8088c: cmake_check_build_system + $(MAKE) -f CMakeFiles/Makefile2 pygen_swig_8088c +.PHONY : pygen_swig_8088c + +# fast build rule for target. +pygen_swig_8088c/fast: + $(MAKE) -f swig/CMakeFiles/pygen_swig_8088c.dir/build.make swig/CMakeFiles/pygen_swig_8088c.dir/build +.PHONY : pygen_swig_8088c/fast + +#============================================================================= +# Target rules for targets named tempest_swig_swig_compilation + +# Build rule for target. +tempest_swig_swig_compilation: cmake_check_build_system + $(MAKE) -f CMakeFiles/Makefile2 tempest_swig_swig_compilation +.PHONY : tempest_swig_swig_compilation + +# fast build rule for target. +tempest_swig_swig_compilation/fast: + $(MAKE) -f swig/CMakeFiles/tempest_swig_swig_compilation.dir/build.make swig/CMakeFiles/tempest_swig_swig_compilation.dir/build +.PHONY : tempest_swig_swig_compilation/fast + +#============================================================================= +# Target rules for targets named tempest_swig + +# Build rule for target. +tempest_swig: cmake_check_build_system + $(MAKE) -f CMakeFiles/Makefile2 tempest_swig +.PHONY : tempest_swig + +# fast build rule for target. +tempest_swig/fast: + $(MAKE) -f swig/CMakeFiles/tempest_swig.dir/build.make swig/CMakeFiles/tempest_swig.dir/build +.PHONY : tempest_swig/fast + +#============================================================================= +# Target rules for targets named tempest_swig_swig_doc + +# Build rule for target. +tempest_swig_swig_doc: cmake_check_build_system + $(MAKE) -f CMakeFiles/Makefile2 tempest_swig_swig_doc +.PHONY : tempest_swig_swig_doc + +# fast build rule for target. +tempest_swig_swig_doc/fast: + $(MAKE) -f swig/CMakeFiles/tempest_swig_swig_doc.dir/build.make swig/CMakeFiles/tempest_swig_swig_doc.dir/build +.PHONY : tempest_swig_swig_doc/fast + +#============================================================================= +# Target rules for targets named pygen_python_2ccf9 + +# Build rule for target. +pygen_python_2ccf9: cmake_check_build_system + $(MAKE) -f CMakeFiles/Makefile2 pygen_python_2ccf9 +.PHONY : pygen_python_2ccf9 + +# fast build rule for target. +pygen_python_2ccf9/fast: + $(MAKE) -f python/CMakeFiles/pygen_python_2ccf9.dir/build.make python/CMakeFiles/pygen_python_2ccf9.dir/build +.PHONY : pygen_python_2ccf9/fast + +# Help Target +help: + @echo "The following are some of the valid targets for this Makefile:" + @echo "... all (the default if no target is provided)" + @echo "... clean" + @echo "... depend" + @echo "... install/strip" + @echo "... install/local" + @echo "... install" + @echo "... list_install_components" + @echo "... rebuild_cache" + @echo "... edit_cache" + @echo "... test" + @echo "... uninstall" + @echo "... gnuradio-tempest" + @echo "... pygen_apps_9a6dd" + @echo "... pygen_swig_8088c" + @echo "... tempest_swig_swig_compilation" + @echo "... tempest_swig" + @echo "... tempest_swig_swig_doc" + @echo "... pygen_python_2ccf9" +.PHONY : help + + + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/build/apps/CMakeFiles/CMakeDirectoryInformation.cmake b/build/apps/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 0000000..f91885b --- /dev/null +++ b/build/apps/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,16 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.16 + +# Relative path conversion top directories. +set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/home/emidan19/gr-tempest") +set(CMAKE_RELATIVE_PATH_TOP_BINARY "/home/emidan19/gr-tempest/build") + +# Force unix paths in dependencies. +set(CMAKE_FORCE_UNIX_PATHS 1) + + +# The C and CXX include file regular expressions for this directory. +set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/build/apps/CMakeFiles/progress.marks b/build/apps/CMakeFiles/progress.marks new file mode 100644 index 0000000..573541a --- /dev/null +++ b/build/apps/CMakeFiles/progress.marks @@ -0,0 +1 @@ +0 diff --git a/build/apps/CMakeFiles/pygen_apps_9a6dd.dir/DependInfo.cmake b/build/apps/CMakeFiles/pygen_apps_9a6dd.dir/DependInfo.cmake new file mode 100644 index 0000000..19fab21 --- /dev/null +++ b/build/apps/CMakeFiles/pygen_apps_9a6dd.dir/DependInfo.cmake @@ -0,0 +1,11 @@ +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) +# The set of files for implicit dependencies of each language: + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/build/apps/CMakeFiles/pygen_apps_9a6dd.dir/build.make b/build/apps/CMakeFiles/pygen_apps_9a6dd.dir/build.make new file mode 100644 index 0000000..1db03f6 --- /dev/null +++ b/build/apps/CMakeFiles/pygen_apps_9a6dd.dir/build.make @@ -0,0 +1,72 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.16 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E remove -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/emidan19/gr-tempest + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/emidan19/gr-tempest/build + +# Utility rule file for pygen_apps_9a6dd. + +# Include the progress variables for this target. +include apps/CMakeFiles/pygen_apps_9a6dd.dir/progress.make + +pygen_apps_9a6dd: apps/CMakeFiles/pygen_apps_9a6dd.dir/build.make + +.PHONY : pygen_apps_9a6dd + +# Rule to build all files generated by this target. +apps/CMakeFiles/pygen_apps_9a6dd.dir/build: pygen_apps_9a6dd + +.PHONY : apps/CMakeFiles/pygen_apps_9a6dd.dir/build + +apps/CMakeFiles/pygen_apps_9a6dd.dir/clean: + cd /home/emidan19/gr-tempest/build/apps && $(CMAKE_COMMAND) -P CMakeFiles/pygen_apps_9a6dd.dir/cmake_clean.cmake +.PHONY : apps/CMakeFiles/pygen_apps_9a6dd.dir/clean + +apps/CMakeFiles/pygen_apps_9a6dd.dir/depend: + cd /home/emidan19/gr-tempest/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/emidan19/gr-tempest /home/emidan19/gr-tempest/apps /home/emidan19/gr-tempest/build /home/emidan19/gr-tempest/build/apps /home/emidan19/gr-tempest/build/apps/CMakeFiles/pygen_apps_9a6dd.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : apps/CMakeFiles/pygen_apps_9a6dd.dir/depend + diff --git a/build/apps/CMakeFiles/pygen_apps_9a6dd.dir/cmake_clean.cmake b/build/apps/CMakeFiles/pygen_apps_9a6dd.dir/cmake_clean.cmake new file mode 100644 index 0000000..d6910da --- /dev/null +++ b/build/apps/CMakeFiles/pygen_apps_9a6dd.dir/cmake_clean.cmake @@ -0,0 +1,5 @@ + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/pygen_apps_9a6dd.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/build/apps/CMakeFiles/pygen_apps_9a6dd.dir/depend.internal b/build/apps/CMakeFiles/pygen_apps_9a6dd.dir/depend.internal new file mode 100644 index 0000000..f647855 --- /dev/null +++ b/build/apps/CMakeFiles/pygen_apps_9a6dd.dir/depend.internal @@ -0,0 +1,3 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.16 + diff --git a/build/apps/CMakeFiles/pygen_apps_9a6dd.dir/depend.make b/build/apps/CMakeFiles/pygen_apps_9a6dd.dir/depend.make new file mode 100644 index 0000000..f647855 --- /dev/null +++ b/build/apps/CMakeFiles/pygen_apps_9a6dd.dir/depend.make @@ -0,0 +1,3 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.16 + diff --git a/build/apps/CMakeFiles/pygen_apps_9a6dd.dir/progress.make b/build/apps/CMakeFiles/pygen_apps_9a6dd.dir/progress.make new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/build/apps/CMakeFiles/pygen_apps_9a6dd.dir/progress.make @@ -0,0 +1 @@ + diff --git a/build/apps/CTestTestfile.cmake b/build/apps/CTestTestfile.cmake new file mode 100644 index 0000000..d2fefbc --- /dev/null +++ b/build/apps/CTestTestfile.cmake @@ -0,0 +1,6 @@ +# CMake generated Testfile for +# Source directory: /home/emidan19/gr-tempest/apps +# Build directory: /home/emidan19/gr-tempest/build/apps +# +# This file includes the relevant testing commands required for +# testing this directory and lists subdirectories to be tested as well. diff --git a/build/apps/Makefile b/build/apps/Makefile new file mode 100644 index 0000000..6b26030 --- /dev/null +++ b/build/apps/Makefile @@ -0,0 +1,212 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.16 + +# Default target executed when no arguments are given to make. +default_target: all + +.PHONY : default_target + +# Allow only one "make -f Makefile2" at a time, but pass parallelism. +.NOTPARALLEL: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E remove -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/emidan19/gr-tempest + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/emidan19/gr-tempest/build + +#============================================================================= +# Targets provided globally by CMake. + +# Special rule for the target install/local +install/local: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local + +# Special rule for the target install/local +install/local/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local/fast + +# Special rule for the target install +install: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install + +# Special rule for the target install +install/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install/fast + +# Special rule for the target list_install_components +list_install_components: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Available install components are: \"Unspecified\"" +.PHONY : list_install_components + +# Special rule for the target list_install_components +list_install_components/fast: list_install_components + +.PHONY : list_install_components/fast + +# Special rule for the target rebuild_cache +rebuild_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..." + /usr/bin/cmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : rebuild_cache + +# Special rule for the target rebuild_cache +rebuild_cache/fast: rebuild_cache + +.PHONY : rebuild_cache/fast + +# Special rule for the target edit_cache +edit_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "No interactive CMake dialog available..." + /usr/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available. +.PHONY : edit_cache + +# Special rule for the target edit_cache +edit_cache/fast: edit_cache + +.PHONY : edit_cache/fast + +# Special rule for the target test +test: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running tests..." + /usr/bin/ctest --force-new-ctest-process $(ARGS) +.PHONY : test + +# Special rule for the target test +test/fast: test + +.PHONY : test/fast + +# Special rule for the target install/strip +install/strip: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip + +# Special rule for the target install/strip +install/strip/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip/fast + +# The main all target +all: cmake_check_build_system + cd /home/emidan19/gr-tempest/build && $(CMAKE_COMMAND) -E cmake_progress_start /home/emidan19/gr-tempest/build/CMakeFiles /home/emidan19/gr-tempest/build/apps/CMakeFiles/progress.marks + cd /home/emidan19/gr-tempest/build && $(MAKE) -f CMakeFiles/Makefile2 apps/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/emidan19/gr-tempest/build/CMakeFiles 0 +.PHONY : all + +# The main clean target +clean: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f CMakeFiles/Makefile2 apps/clean +.PHONY : clean + +# The main clean target +clean/fast: clean + +.PHONY : clean/fast + +# Prepare targets for installation. +preinstall: all + cd /home/emidan19/gr-tempest/build && $(MAKE) -f CMakeFiles/Makefile2 apps/preinstall +.PHONY : preinstall + +# Prepare targets for installation. +preinstall/fast: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f CMakeFiles/Makefile2 apps/preinstall +.PHONY : preinstall/fast + +# clear depends +depend: + cd /home/emidan19/gr-tempest/build && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 +.PHONY : depend + +# Convenience name for target. +apps/CMakeFiles/pygen_apps_9a6dd.dir/rule: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f CMakeFiles/Makefile2 apps/CMakeFiles/pygen_apps_9a6dd.dir/rule +.PHONY : apps/CMakeFiles/pygen_apps_9a6dd.dir/rule + +# Convenience name for target. +pygen_apps_9a6dd: apps/CMakeFiles/pygen_apps_9a6dd.dir/rule + +.PHONY : pygen_apps_9a6dd + +# fast build rule for target. +pygen_apps_9a6dd/fast: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f apps/CMakeFiles/pygen_apps_9a6dd.dir/build.make apps/CMakeFiles/pygen_apps_9a6dd.dir/build +.PHONY : pygen_apps_9a6dd/fast + +# Help Target +help: + @echo "The following are some of the valid targets for this Makefile:" + @echo "... all (the default if no target is provided)" + @echo "... clean" + @echo "... depend" + @echo "... install/local" + @echo "... install" + @echo "... list_install_components" + @echo "... rebuild_cache" + @echo "... edit_cache" + @echo "... test" + @echo "... install/strip" + @echo "... pygen_apps_9a6dd" +.PHONY : help + + + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + cd /home/emidan19/gr-tempest/build && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/build/apps/cmake_install.cmake b/build/apps/cmake_install.cmake new file mode 100644 index 0000000..e57debe --- /dev/null +++ b/build/apps/cmake_install.cmake @@ -0,0 +1,39 @@ +# Install script for directory: /home/emidan19/gr-tempest/apps + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "Release") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "1") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "FALSE") +endif() + diff --git a/build/cmake_install.cmake b/build/cmake_install.cmake new file mode 100644 index 0000000..6624f39 --- /dev/null +++ b/build/cmake_install.cmake @@ -0,0 +1,65 @@ +# Install script for directory: /home/emidan19/gr-tempest + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "Release") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "1") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "FALSE") +endif() + +if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/cmake/tempest" TYPE FILE FILES "/home/emidan19/gr-tempest/cmake/Modules/tempestConfig.cmake") +endif() + +if(NOT CMAKE_INSTALL_LOCAL_ONLY) + # Include the install script for each subdirectory. + include("/home/emidan19/gr-tempest/build/include/tempest/cmake_install.cmake") + include("/home/emidan19/gr-tempest/build/lib/cmake_install.cmake") + include("/home/emidan19/gr-tempest/build/apps/cmake_install.cmake") + include("/home/emidan19/gr-tempest/build/docs/cmake_install.cmake") + include("/home/emidan19/gr-tempest/build/swig/cmake_install.cmake") + include("/home/emidan19/gr-tempest/build/python/cmake_install.cmake") + include("/home/emidan19/gr-tempest/build/grc/cmake_install.cmake") + +endif() + +if(CMAKE_INSTALL_COMPONENT) + set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt") +else() + set(CMAKE_INSTALL_MANIFEST "install_manifest.txt") +endif() + +string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT + "${CMAKE_INSTALL_MANIFEST_FILES}") +file(WRITE "/home/emidan19/gr-tempest/build/${CMAKE_INSTALL_MANIFEST}" + "${CMAKE_INSTALL_MANIFEST_CONTENT}") diff --git a/build/cmake_uninstall.cmake b/build/cmake_uninstall.cmake new file mode 100644 index 0000000..b74a0cd --- /dev/null +++ b/build/cmake_uninstall.cmake @@ -0,0 +1,32 @@ +# http://www.vtk.org/Wiki/CMake_FAQ#Can_I_do_.22make_uninstall.22_with_CMake.3F + +IF(NOT EXISTS "/home/emidan19/gr-tempest/build/install_manifest.txt") + MESSAGE(FATAL_ERROR "Cannot find install manifest: \"/home/emidan19/gr-tempest/build/install_manifest.txt\"") +ENDIF(NOT EXISTS "/home/emidan19/gr-tempest/build/install_manifest.txt") + +FILE(READ "/home/emidan19/gr-tempest/build/install_manifest.txt" files) +STRING(REGEX REPLACE "\n" ";" files "${files}") +FOREACH(file ${files}) + MESSAGE(STATUS "Uninstalling \"$ENV{DESTDIR}${file}\"") + IF(EXISTS "$ENV{DESTDIR}${file}") + EXEC_PROGRAM( + "/usr/bin/cmake" ARGS "-E remove \"$ENV{DESTDIR}${file}\"" + OUTPUT_VARIABLE rm_out + RETURN_VALUE rm_retval + ) + IF(NOT "${rm_retval}" STREQUAL 0) + MESSAGE(FATAL_ERROR "Problem when removing \"$ENV{DESTDIR}${file}\"") + ENDIF(NOT "${rm_retval}" STREQUAL 0) + ELSEIF(IS_SYMLINK "$ENV{DESTDIR}${file}") + EXEC_PROGRAM( + "/usr/bin/cmake" ARGS "-E remove \"$ENV{DESTDIR}${file}\"" + OUTPUT_VARIABLE rm_out + RETURN_VALUE rm_retval + ) + IF(NOT "${rm_retval}" STREQUAL 0) + MESSAGE(FATAL_ERROR "Problem when removing \"$ENV{DESTDIR}${file}\"") + ENDIF(NOT "${rm_retval}" STREQUAL 0) + ELSE(EXISTS "$ENV{DESTDIR}${file}") + MESSAGE(STATUS "File \"$ENV{DESTDIR}${file}\" does not exist.") + ENDIF(EXISTS "$ENV{DESTDIR}${file}") +ENDFOREACH(file) diff --git a/build/compile_commands.json b/build/compile_commands.json new file mode 100644 index 0000000..8b9222b --- /dev/null +++ b/build/compile_commands.json @@ -0,0 +1,57 @@ +[ +{ + "directory": "/home/emidan19/gr-tempest/build/lib", + "command": "/usr/bin/c++ -DBOOST_ALL_NO_LIB -DBOOST_ATOMIC_DYN_LINK -DBOOST_FILESYSTEM_DYN_LINK -DBOOST_PROGRAM_OPTIONS_DYN_LINK -DBOOST_REGEX_DYN_LINK -DBOOST_SYSTEM_DYN_LINK -DBOOST_THREAD_DYN_LINK -DFFTW3F_THREADS -DGR_CTRLPORT -Dgnuradio_tempest_EXPORTS -I/home/emidan19/gr-tempest/lib/../include -O3 -DNDEBUG -fPIC -fvisibility=hidden -std=gnu++11 -o CMakeFiles/gnuradio-tempest.dir/sampling_synchronization_impl.cc.o -c /home/emidan19/gr-tempest/lib/sampling_synchronization_impl.cc", + "file": "/home/emidan19/gr-tempest/lib/sampling_synchronization_impl.cc" +}, +{ + "directory": "/home/emidan19/gr-tempest/build/lib", + "command": "/usr/bin/c++ -DBOOST_ALL_NO_LIB -DBOOST_ATOMIC_DYN_LINK -DBOOST_FILESYSTEM_DYN_LINK -DBOOST_PROGRAM_OPTIONS_DYN_LINK -DBOOST_REGEX_DYN_LINK -DBOOST_SYSTEM_DYN_LINK -DBOOST_THREAD_DYN_LINK -DFFTW3F_THREADS -DGR_CTRLPORT -Dgnuradio_tempest_EXPORTS -I/home/emidan19/gr-tempest/lib/../include -O3 -DNDEBUG -fPIC -fvisibility=hidden -std=gnu++11 -o CMakeFiles/gnuradio-tempest.dir/framing_impl.cc.o -c /home/emidan19/gr-tempest/lib/framing_impl.cc", + "file": "/home/emidan19/gr-tempest/lib/framing_impl.cc" +}, +{ + "directory": "/home/emidan19/gr-tempest/build/lib", + "command": "/usr/bin/c++ -DBOOST_ALL_NO_LIB -DBOOST_ATOMIC_DYN_LINK -DBOOST_FILESYSTEM_DYN_LINK -DBOOST_PROGRAM_OPTIONS_DYN_LINK -DBOOST_REGEX_DYN_LINK -DBOOST_SYSTEM_DYN_LINK -DBOOST_THREAD_DYN_LINK -DFFTW3F_THREADS -DGR_CTRLPORT -Dgnuradio_tempest_EXPORTS -I/home/emidan19/gr-tempest/lib/../include -O3 -DNDEBUG -fPIC -fvisibility=hidden -std=gnu++11 -o CMakeFiles/gnuradio-tempest.dir/Hsync_impl.cc.o -c /home/emidan19/gr-tempest/lib/Hsync_impl.cc", + "file": "/home/emidan19/gr-tempest/lib/Hsync_impl.cc" +}, +{ + "directory": "/home/emidan19/gr-tempest/build/lib", + "command": "/usr/bin/c++ -DBOOST_ALL_NO_LIB -DBOOST_ATOMIC_DYN_LINK -DBOOST_FILESYSTEM_DYN_LINK -DBOOST_PROGRAM_OPTIONS_DYN_LINK -DBOOST_REGEX_DYN_LINK -DBOOST_SYSTEM_DYN_LINK -DBOOST_THREAD_DYN_LINK -DFFTW3F_THREADS -DGR_CTRLPORT -Dgnuradio_tempest_EXPORTS -I/home/emidan19/gr-tempest/lib/../include -O3 -DNDEBUG -fPIC -fvisibility=hidden -std=gnu++11 -o CMakeFiles/gnuradio-tempest.dir/normalize_flow_impl.cc.o -c /home/emidan19/gr-tempest/lib/normalize_flow_impl.cc", + "file": "/home/emidan19/gr-tempest/lib/normalize_flow_impl.cc" +}, +{ + "directory": "/home/emidan19/gr-tempest/build/lib", + "command": "/usr/bin/c++ -DBOOST_ALL_NO_LIB -DBOOST_ATOMIC_DYN_LINK -DBOOST_FILESYSTEM_DYN_LINK -DBOOST_PROGRAM_OPTIONS_DYN_LINK -DBOOST_REGEX_DYN_LINK -DBOOST_SYSTEM_DYN_LINK -DBOOST_THREAD_DYN_LINK -DFFTW3F_THREADS -DGR_CTRLPORT -Dgnuradio_tempest_EXPORTS -I/home/emidan19/gr-tempest/lib/../include -O3 -DNDEBUG -fPIC -fvisibility=hidden -std=gnu++11 -o CMakeFiles/gnuradio-tempest.dir/fine_sampling_synchronization_impl.cc.o -c /home/emidan19/gr-tempest/lib/fine_sampling_synchronization_impl.cc", + "file": "/home/emidan19/gr-tempest/lib/fine_sampling_synchronization_impl.cc" +}, +{ + "directory": "/home/emidan19/gr-tempest/build/lib", + "command": "/usr/bin/c++ -DBOOST_ALL_NO_LIB -DBOOST_ATOMIC_DYN_LINK -DBOOST_FILESYSTEM_DYN_LINK -DBOOST_PROGRAM_OPTIONS_DYN_LINK -DBOOST_REGEX_DYN_LINK -DBOOST_SYSTEM_DYN_LINK -DBOOST_THREAD_DYN_LINK -DFFTW3F_THREADS -DGR_CTRLPORT -Dgnuradio_tempest_EXPORTS -I/home/emidan19/gr-tempest/lib/../include -O3 -DNDEBUG -fPIC -fvisibility=hidden -std=gnu++11 -o CMakeFiles/gnuradio-tempest.dir/sync_detector_impl.cc.o -c /home/emidan19/gr-tempest/lib/sync_detector_impl.cc", + "file": "/home/emidan19/gr-tempest/lib/sync_detector_impl.cc" +}, +{ + "directory": "/home/emidan19/gr-tempest/build/lib", + "command": "/usr/bin/c++ -DBOOST_ALL_NO_LIB -DBOOST_ATOMIC_DYN_LINK -DBOOST_FILESYSTEM_DYN_LINK -DBOOST_PROGRAM_OPTIONS_DYN_LINK -DBOOST_REGEX_DYN_LINK -DBOOST_SYSTEM_DYN_LINK -DBOOST_THREAD_DYN_LINK -DFFTW3F_THREADS -DGR_CTRLPORT -Dgnuradio_tempest_EXPORTS -I/home/emidan19/gr-tempest/lib/../include -O3 -DNDEBUG -fPIC -fvisibility=hidden -std=gnu++11 -o CMakeFiles/gnuradio-tempest.dir/frame_drop_impl.cc.o -c /home/emidan19/gr-tempest/lib/frame_drop_impl.cc", + "file": "/home/emidan19/gr-tempest/lib/frame_drop_impl.cc" +}, +{ + "directory": "/home/emidan19/gr-tempest/build/lib", + "command": "/usr/bin/c++ -DBOOST_ALL_NO_LIB -DBOOST_ATOMIC_DYN_LINK -DBOOST_FILESYSTEM_DYN_LINK -DBOOST_PROGRAM_OPTIONS_DYN_LINK -DBOOST_REGEX_DYN_LINK -DBOOST_SYSTEM_DYN_LINK -DBOOST_THREAD_DYN_LINK -DFFTW3F_THREADS -DGR_CTRLPORT -Dgnuradio_tempest_EXPORTS -I/home/emidan19/gr-tempest/lib/../include -O3 -DNDEBUG -fPIC -fvisibility=hidden -std=gnu++11 -o CMakeFiles/gnuradio-tempest.dir/fft_peak_fine_sampling_sync_impl.cc.o -c /home/emidan19/gr-tempest/lib/fft_peak_fine_sampling_sync_impl.cc", + "file": "/home/emidan19/gr-tempest/lib/fft_peak_fine_sampling_sync_impl.cc" +}, +{ + "directory": "/home/emidan19/gr-tempest/build/lib", + "command": "/usr/bin/c++ -DBOOST_ALL_NO_LIB -DBOOST_ATOMIC_DYN_LINK -DBOOST_FILESYSTEM_DYN_LINK -DBOOST_PROGRAM_OPTIONS_DYN_LINK -DBOOST_REGEX_DYN_LINK -DBOOST_SYSTEM_DYN_LINK -DBOOST_THREAD_DYN_LINK -DFFTW3F_THREADS -DGR_CTRLPORT -Dgnuradio_tempest_EXPORTS -I/home/emidan19/gr-tempest/lib/../include -O3 -DNDEBUG -fPIC -fvisibility=hidden -std=gnu++11 -o CMakeFiles/gnuradio-tempest.dir/infer_screen_resolution_impl.cc.o -c /home/emidan19/gr-tempest/lib/infer_screen_resolution_impl.cc", + "file": "/home/emidan19/gr-tempest/lib/infer_screen_resolution_impl.cc" +}, +{ + "directory": "/home/emidan19/gr-tempest/build/lib", + "command": "/usr/bin/c++ -DBOOST_ALL_NO_LIB -DBOOST_ATOMIC_DYN_LINK -DBOOST_FILESYSTEM_DYN_LINK -DBOOST_PROGRAM_OPTIONS_DYN_LINK -DBOOST_REGEX_DYN_LINK -DBOOST_SYSTEM_DYN_LINK -DBOOST_THREAD_DYN_LINK -DFFTW3F_THREADS -DGR_CTRLPORT -Dgnuradio_tempest_EXPORTS -I/home/emidan19/gr-tempest/lib/../include -O3 -DNDEBUG -fPIC -fvisibility=hidden -std=gnu++11 -o CMakeFiles/gnuradio-tempest.dir/ssamp_correction_impl.cc.o -c /home/emidan19/gr-tempest/lib/ssamp_correction_impl.cc", + "file": "/home/emidan19/gr-tempest/lib/ssamp_correction_impl.cc" +}, +{ + "directory": "/home/emidan19/gr-tempest/build/swig", + "command": "/usr/bin/c++ -DBOOST_ALL_NO_LIB -DBOOST_ATOMIC_DYN_LINK -DBOOST_FILESYSTEM_DYN_LINK -DBOOST_PROGRAM_OPTIONS_DYN_LINK -DBOOST_REGEX_DYN_LINK -DBOOST_SYSTEM_DYN_LINK -DBOOST_THREAD_DYN_LINK -DFFTW3F_THREADS -DGR_CTRLPORT -Dtempest_swig_EXPORTS -I/home/emidan19/gr-tempest/build/swig -I/home/emidan19/gr-tempest/swig -I/usr/include/gnuradio/swig -I/home/emidan19/gr-tempest/lib/../include -isystem /usr/include/python3.8 -O3 -DNDEBUG -fPIC -fvisibility=hidden -std=gnu++11 -o CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o -c /home/emidan19/gr-tempest/build/swig/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx", + "file": "/home/emidan19/gr-tempest/build/swig/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx" +} +] \ No newline at end of file diff --git a/build/docs/CMakeFiles/CMakeDirectoryInformation.cmake b/build/docs/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 0000000..f91885b --- /dev/null +++ b/build/docs/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,16 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.16 + +# Relative path conversion top directories. +set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/home/emidan19/gr-tempest") +set(CMAKE_RELATIVE_PATH_TOP_BINARY "/home/emidan19/gr-tempest/build") + +# Force unix paths in dependencies. +set(CMAKE_FORCE_UNIX_PATHS 1) + + +# The C and CXX include file regular expressions for this directory. +set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/build/docs/CMakeFiles/progress.marks b/build/docs/CMakeFiles/progress.marks new file mode 100644 index 0000000..573541a --- /dev/null +++ b/build/docs/CMakeFiles/progress.marks @@ -0,0 +1 @@ +0 diff --git a/build/docs/CTestTestfile.cmake b/build/docs/CTestTestfile.cmake new file mode 100644 index 0000000..964fb88 --- /dev/null +++ b/build/docs/CTestTestfile.cmake @@ -0,0 +1,6 @@ +# CMake generated Testfile for +# Source directory: /home/emidan19/gr-tempest/docs +# Build directory: /home/emidan19/gr-tempest/build/docs +# +# This file includes the relevant testing commands required for +# testing this directory and lists subdirectories to be tested as well. diff --git a/build/docs/Makefile b/build/docs/Makefile new file mode 100644 index 0000000..2c8fbd7 --- /dev/null +++ b/build/docs/Makefile @@ -0,0 +1,196 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.16 + +# Default target executed when no arguments are given to make. +default_target: all + +.PHONY : default_target + +# Allow only one "make -f Makefile2" at a time, but pass parallelism. +.NOTPARALLEL: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E remove -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/emidan19/gr-tempest + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/emidan19/gr-tempest/build + +#============================================================================= +# Targets provided globally by CMake. + +# Special rule for the target install/strip +install/strip: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip + +# Special rule for the target install/strip +install/strip/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip/fast + +# Special rule for the target install/local +install/local: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local + +# Special rule for the target install/local +install/local/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local/fast + +# Special rule for the target install +install: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install + +# Special rule for the target install +install/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install/fast + +# Special rule for the target list_install_components +list_install_components: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Available install components are: \"Unspecified\"" +.PHONY : list_install_components + +# Special rule for the target list_install_components +list_install_components/fast: list_install_components + +.PHONY : list_install_components/fast + +# Special rule for the target rebuild_cache +rebuild_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..." + /usr/bin/cmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : rebuild_cache + +# Special rule for the target rebuild_cache +rebuild_cache/fast: rebuild_cache + +.PHONY : rebuild_cache/fast + +# Special rule for the target edit_cache +edit_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "No interactive CMake dialog available..." + /usr/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available. +.PHONY : edit_cache + +# Special rule for the target edit_cache +edit_cache/fast: edit_cache + +.PHONY : edit_cache/fast + +# Special rule for the target test +test: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running tests..." + /usr/bin/ctest --force-new-ctest-process $(ARGS) +.PHONY : test + +# Special rule for the target test +test/fast: test + +.PHONY : test/fast + +# The main all target +all: cmake_check_build_system + cd /home/emidan19/gr-tempest/build && $(CMAKE_COMMAND) -E cmake_progress_start /home/emidan19/gr-tempest/build/CMakeFiles /home/emidan19/gr-tempest/build/docs/CMakeFiles/progress.marks + cd /home/emidan19/gr-tempest/build && $(MAKE) -f CMakeFiles/Makefile2 docs/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/emidan19/gr-tempest/build/CMakeFiles 0 +.PHONY : all + +# The main clean target +clean: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f CMakeFiles/Makefile2 docs/clean +.PHONY : clean + +# The main clean target +clean/fast: clean + +.PHONY : clean/fast + +# Prepare targets for installation. +preinstall: all + cd /home/emidan19/gr-tempest/build && $(MAKE) -f CMakeFiles/Makefile2 docs/preinstall +.PHONY : preinstall + +# Prepare targets for installation. +preinstall/fast: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f CMakeFiles/Makefile2 docs/preinstall +.PHONY : preinstall/fast + +# clear depends +depend: + cd /home/emidan19/gr-tempest/build && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 +.PHONY : depend + +# Help Target +help: + @echo "The following are some of the valid targets for this Makefile:" + @echo "... all (the default if no target is provided)" + @echo "... clean" + @echo "... depend" + @echo "... install/strip" + @echo "... install/local" + @echo "... install" + @echo "... list_install_components" + @echo "... rebuild_cache" + @echo "... edit_cache" + @echo "... test" +.PHONY : help + + + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + cd /home/emidan19/gr-tempest/build && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/build/docs/cmake_install.cmake b/build/docs/cmake_install.cmake new file mode 100644 index 0000000..f5e5131 --- /dev/null +++ b/build/docs/cmake_install.cmake @@ -0,0 +1,39 @@ +# Install script for directory: /home/emidan19/gr-tempest/docs + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "Release") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "1") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "FALSE") +endif() + diff --git a/build/grc/CMakeFiles/CMakeDirectoryInformation.cmake b/build/grc/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 0000000..f91885b --- /dev/null +++ b/build/grc/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,16 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.16 + +# Relative path conversion top directories. +set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/home/emidan19/gr-tempest") +set(CMAKE_RELATIVE_PATH_TOP_BINARY "/home/emidan19/gr-tempest/build") + +# Force unix paths in dependencies. +set(CMAKE_FORCE_UNIX_PATHS 1) + + +# The C and CXX include file regular expressions for this directory. +set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/build/grc/CMakeFiles/progress.marks b/build/grc/CMakeFiles/progress.marks new file mode 100644 index 0000000..573541a --- /dev/null +++ b/build/grc/CMakeFiles/progress.marks @@ -0,0 +1 @@ +0 diff --git a/build/grc/CTestTestfile.cmake b/build/grc/CTestTestfile.cmake new file mode 100644 index 0000000..c62d21c --- /dev/null +++ b/build/grc/CTestTestfile.cmake @@ -0,0 +1,6 @@ +# CMake generated Testfile for +# Source directory: /home/emidan19/gr-tempest/grc +# Build directory: /home/emidan19/gr-tempest/build/grc +# +# This file includes the relevant testing commands required for +# testing this directory and lists subdirectories to be tested as well. diff --git a/build/grc/Makefile b/build/grc/Makefile new file mode 100644 index 0000000..cd132a7 --- /dev/null +++ b/build/grc/Makefile @@ -0,0 +1,196 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.16 + +# Default target executed when no arguments are given to make. +default_target: all + +.PHONY : default_target + +# Allow only one "make -f Makefile2" at a time, but pass parallelism. +.NOTPARALLEL: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E remove -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/emidan19/gr-tempest + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/emidan19/gr-tempest/build + +#============================================================================= +# Targets provided globally by CMake. + +# Special rule for the target install/strip +install/strip: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip + +# Special rule for the target install/strip +install/strip/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip/fast + +# Special rule for the target install/local +install/local: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local + +# Special rule for the target install/local +install/local/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local/fast + +# Special rule for the target install +install: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install + +# Special rule for the target install +install/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install/fast + +# Special rule for the target list_install_components +list_install_components: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Available install components are: \"Unspecified\"" +.PHONY : list_install_components + +# Special rule for the target list_install_components +list_install_components/fast: list_install_components + +.PHONY : list_install_components/fast + +# Special rule for the target rebuild_cache +rebuild_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..." + /usr/bin/cmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : rebuild_cache + +# Special rule for the target rebuild_cache +rebuild_cache/fast: rebuild_cache + +.PHONY : rebuild_cache/fast + +# Special rule for the target edit_cache +edit_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "No interactive CMake dialog available..." + /usr/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available. +.PHONY : edit_cache + +# Special rule for the target edit_cache +edit_cache/fast: edit_cache + +.PHONY : edit_cache/fast + +# Special rule for the target test +test: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running tests..." + /usr/bin/ctest --force-new-ctest-process $(ARGS) +.PHONY : test + +# Special rule for the target test +test/fast: test + +.PHONY : test/fast + +# The main all target +all: cmake_check_build_system + cd /home/emidan19/gr-tempest/build && $(CMAKE_COMMAND) -E cmake_progress_start /home/emidan19/gr-tempest/build/CMakeFiles /home/emidan19/gr-tempest/build/grc/CMakeFiles/progress.marks + cd /home/emidan19/gr-tempest/build && $(MAKE) -f CMakeFiles/Makefile2 grc/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/emidan19/gr-tempest/build/CMakeFiles 0 +.PHONY : all + +# The main clean target +clean: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f CMakeFiles/Makefile2 grc/clean +.PHONY : clean + +# The main clean target +clean/fast: clean + +.PHONY : clean/fast + +# Prepare targets for installation. +preinstall: all + cd /home/emidan19/gr-tempest/build && $(MAKE) -f CMakeFiles/Makefile2 grc/preinstall +.PHONY : preinstall + +# Prepare targets for installation. +preinstall/fast: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f CMakeFiles/Makefile2 grc/preinstall +.PHONY : preinstall/fast + +# clear depends +depend: + cd /home/emidan19/gr-tempest/build && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 +.PHONY : depend + +# Help Target +help: + @echo "The following are some of the valid targets for this Makefile:" + @echo "... all (the default if no target is provided)" + @echo "... clean" + @echo "... depend" + @echo "... install/strip" + @echo "... install/local" + @echo "... install" + @echo "... list_install_components" + @echo "... rebuild_cache" + @echo "... edit_cache" + @echo "... test" +.PHONY : help + + + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + cd /home/emidan19/gr-tempest/build && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/build/grc/cmake_install.cmake b/build/grc/cmake_install.cmake new file mode 100644 index 0000000..356d01b --- /dev/null +++ b/build/grc/cmake_install.cmake @@ -0,0 +1,60 @@ +# Install script for directory: /home/emidan19/gr-tempest/grc + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "Release") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "1") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "FALSE") +endif() + +if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/share/gnuradio/grc/blocks" TYPE FILE FILES + "/home/emidan19/gr-tempest/grc/tempest_sampling_synchronization.block.yml" + "/home/emidan19/gr-tempest/grc/tempest_framing.block.yml" + "/home/emidan19/gr-tempest/grc/tempest_Hsync.block.yml" + "/home/emidan19/gr-tempest/grc/tempest_image_source.block.yml" + "/home/emidan19/gr-tempest/grc/tempest_normalize_flow.block.yml" + "/home/emidan19/gr-tempest/grc/tempest_fine_sampling_synchronization.block.yml" + "/home/emidan19/gr-tempest/grc/tempest_sync_detector.block.yml" + "/home/emidan19/gr-tempest/grc/tempest_frame_drop.block.yml" + "/home/emidan19/gr-tempest/grc/tempest_message_to_var.block.yml" + "/home/emidan19/gr-tempest/grc/tempest_fft_peak_fine_sampling_sync.block.yml" + "/home/emidan19/gr-tempest/grc/tempest_infer_screen_resolution.block.yml" + "/home/emidan19/gr-tempest/grc/tempest_tempest_msgbtn.block.yml" + "/home/emidan19/gr-tempest/grc/tempest_ssamp_correction.block.yml" + "/home/emidan19/gr-tempest/grc/tempest_TMDS_image_source.block.yml" + "/home/emidan19/gr-tempest/grc/tempest_binary_serializer.block.yml" + "/home/emidan19/gr-tempest/grc/tempest_TMDS_decoder.block.yml" + ) +endif() + diff --git a/build/include/tempest/CMakeFiles/CMakeDirectoryInformation.cmake b/build/include/tempest/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 0000000..f91885b --- /dev/null +++ b/build/include/tempest/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,16 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.16 + +# Relative path conversion top directories. +set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/home/emidan19/gr-tempest") +set(CMAKE_RELATIVE_PATH_TOP_BINARY "/home/emidan19/gr-tempest/build") + +# Force unix paths in dependencies. +set(CMAKE_FORCE_UNIX_PATHS 1) + + +# The C and CXX include file regular expressions for this directory. +set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/build/include/tempest/CMakeFiles/progress.marks b/build/include/tempest/CMakeFiles/progress.marks new file mode 100644 index 0000000..573541a --- /dev/null +++ b/build/include/tempest/CMakeFiles/progress.marks @@ -0,0 +1 @@ +0 diff --git a/build/include/tempest/CTestTestfile.cmake b/build/include/tempest/CTestTestfile.cmake new file mode 100644 index 0000000..f4a7886 --- /dev/null +++ b/build/include/tempest/CTestTestfile.cmake @@ -0,0 +1,6 @@ +# CMake generated Testfile for +# Source directory: /home/emidan19/gr-tempest/include/tempest +# Build directory: /home/emidan19/gr-tempest/build/include/tempest +# +# This file includes the relevant testing commands required for +# testing this directory and lists subdirectories to be tested as well. diff --git a/build/include/tempest/Makefile b/build/include/tempest/Makefile new file mode 100644 index 0000000..879f560 --- /dev/null +++ b/build/include/tempest/Makefile @@ -0,0 +1,196 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.16 + +# Default target executed when no arguments are given to make. +default_target: all + +.PHONY : default_target + +# Allow only one "make -f Makefile2" at a time, but pass parallelism. +.NOTPARALLEL: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E remove -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/emidan19/gr-tempest + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/emidan19/gr-tempest/build + +#============================================================================= +# Targets provided globally by CMake. + +# Special rule for the target install/strip +install/strip: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip + +# Special rule for the target install/strip +install/strip/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip/fast + +# Special rule for the target install/local +install/local: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local + +# Special rule for the target install/local +install/local/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local/fast + +# Special rule for the target install +install: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install + +# Special rule for the target install +install/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install/fast + +# Special rule for the target list_install_components +list_install_components: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Available install components are: \"Unspecified\"" +.PHONY : list_install_components + +# Special rule for the target list_install_components +list_install_components/fast: list_install_components + +.PHONY : list_install_components/fast + +# Special rule for the target rebuild_cache +rebuild_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..." + /usr/bin/cmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : rebuild_cache + +# Special rule for the target rebuild_cache +rebuild_cache/fast: rebuild_cache + +.PHONY : rebuild_cache/fast + +# Special rule for the target edit_cache +edit_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "No interactive CMake dialog available..." + /usr/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available. +.PHONY : edit_cache + +# Special rule for the target edit_cache +edit_cache/fast: edit_cache + +.PHONY : edit_cache/fast + +# Special rule for the target test +test: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running tests..." + /usr/bin/ctest --force-new-ctest-process $(ARGS) +.PHONY : test + +# Special rule for the target test +test/fast: test + +.PHONY : test/fast + +# The main all target +all: cmake_check_build_system + cd /home/emidan19/gr-tempest/build && $(CMAKE_COMMAND) -E cmake_progress_start /home/emidan19/gr-tempest/build/CMakeFiles /home/emidan19/gr-tempest/build/include/tempest/CMakeFiles/progress.marks + cd /home/emidan19/gr-tempest/build && $(MAKE) -f CMakeFiles/Makefile2 include/tempest/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/emidan19/gr-tempest/build/CMakeFiles 0 +.PHONY : all + +# The main clean target +clean: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f CMakeFiles/Makefile2 include/tempest/clean +.PHONY : clean + +# The main clean target +clean/fast: clean + +.PHONY : clean/fast + +# Prepare targets for installation. +preinstall: all + cd /home/emidan19/gr-tempest/build && $(MAKE) -f CMakeFiles/Makefile2 include/tempest/preinstall +.PHONY : preinstall + +# Prepare targets for installation. +preinstall/fast: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f CMakeFiles/Makefile2 include/tempest/preinstall +.PHONY : preinstall/fast + +# clear depends +depend: + cd /home/emidan19/gr-tempest/build && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 +.PHONY : depend + +# Help Target +help: + @echo "The following are some of the valid targets for this Makefile:" + @echo "... all (the default if no target is provided)" + @echo "... clean" + @echo "... depend" + @echo "... install/strip" + @echo "... install/local" + @echo "... install" + @echo "... list_install_components" + @echo "... rebuild_cache" + @echo "... edit_cache" + @echo "... test" +.PHONY : help + + + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + cd /home/emidan19/gr-tempest/build && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/build/include/tempest/cmake_install.cmake b/build/include/tempest/cmake_install.cmake new file mode 100644 index 0000000..a534c8c --- /dev/null +++ b/build/include/tempest/cmake_install.cmake @@ -0,0 +1,55 @@ +# Install script for directory: /home/emidan19/gr-tempest/include/tempest + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "Release") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "1") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "FALSE") +endif() + +if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/include/tempest" TYPE FILE FILES + "/home/emidan19/gr-tempest/include/tempest/api.h" + "/home/emidan19/gr-tempest/include/tempest/sampling_synchronization.h" + "/home/emidan19/gr-tempest/include/tempest/framing.h" + "/home/emidan19/gr-tempest/include/tempest/Hsync.h" + "/home/emidan19/gr-tempest/include/tempest/normalize_flow.h" + "/home/emidan19/gr-tempest/include/tempest/fine_sampling_synchronization.h" + "/home/emidan19/gr-tempest/include/tempest/sync_detector.h" + "/home/emidan19/gr-tempest/include/tempest/frame_drop.h" + "/home/emidan19/gr-tempest/include/tempest/fft_peak_fine_sampling_sync.h" + "/home/emidan19/gr-tempest/include/tempest/infer_screen_resolution.h" + "/home/emidan19/gr-tempest/include/tempest/ssamp_correction.h" + ) +endif() + diff --git a/build/install_manifest.txt b/build/install_manifest.txt new file mode 100644 index 0000000..27e9192 --- /dev/null +++ b/build/install_manifest.txt @@ -0,0 +1,61 @@ +/usr/local/lib/cmake/tempest/tempestConfig.cmake +/usr/local/include/tempest/api.h +/usr/local/include/tempest/sampling_synchronization.h +/usr/local/include/tempest/framing.h +/usr/local/include/tempest/Hsync.h +/usr/local/include/tempest/normalize_flow.h +/usr/local/include/tempest/fine_sampling_synchronization.h +/usr/local/include/tempest/sync_detector.h +/usr/local/include/tempest/frame_drop.h +/usr/local/include/tempest/fft_peak_fine_sampling_sync.h +/usr/local/include/tempest/infer_screen_resolution.h +/usr/local/include/tempest/ssamp_correction.h +/usr/local/lib/x86_64-linux-gnu/libgnuradio-tempest.so.17a754aa +/usr/local/lib/x86_64-linux-gnu/libgnuradio-tempest.so.1.0.0git +/usr/local/lib/x86_64-linux-gnu/libgnuradio-tempest.so +/usr/local/lib/cmake/tempest/gnuradio-tempestTargets.cmake +/usr/local/lib/cmake/tempest/gnuradio-tempestTargets-release.cmake +/usr/local/lib/cmake/tempest/gnuradio-tempestConfig.cmake +/usr/local/lib/python3/dist-packages/tempest/_tempest_swig.so +/usr/local/lib/python3/dist-packages/tempest/tempest_swig.py +/usr/local/lib/python3/dist-packages/tempest/tempest_swig.pyc +/usr/local/lib/python3/dist-packages/tempest/tempest_swig.pyo +/usr/local/include/tempest/tempest/swig/tempest_swig.i +/usr/local/include/tempest/tempest/swig/tempest_swig_doc.i +/usr/local/lib/python3/dist-packages/tempest/__init__.py +/usr/local/lib/python3/dist-packages/tempest/image_source.py +/usr/local/lib/python3/dist-packages/tempest/message_to_var.py +/usr/local/lib/python3/dist-packages/tempest/tempest_msgbtn.py +/usr/local/lib/python3/dist-packages/tempest/TMDS_image_source.py +/usr/local/lib/python3/dist-packages/tempest/binary_serializer.py +/usr/local/lib/python3/dist-packages/tempest/TMDS_decoder.py +/usr/local/lib/python3/dist-packages/tempest/__init__.pyc +/usr/local/lib/python3/dist-packages/tempest/image_source.pyc +/usr/local/lib/python3/dist-packages/tempest/message_to_var.pyc +/usr/local/lib/python3/dist-packages/tempest/tempest_msgbtn.pyc +/usr/local/lib/python3/dist-packages/tempest/TMDS_image_source.pyc +/usr/local/lib/python3/dist-packages/tempest/binary_serializer.pyc +/usr/local/lib/python3/dist-packages/tempest/TMDS_decoder.pyc +/usr/local/lib/python3/dist-packages/tempest/__init__.pyo +/usr/local/lib/python3/dist-packages/tempest/image_source.pyo +/usr/local/lib/python3/dist-packages/tempest/message_to_var.pyo +/usr/local/lib/python3/dist-packages/tempest/tempest_msgbtn.pyo +/usr/local/lib/python3/dist-packages/tempest/TMDS_image_source.pyo +/usr/local/lib/python3/dist-packages/tempest/binary_serializer.pyo +/usr/local/lib/python3/dist-packages/tempest/TMDS_decoder.pyo +/usr/local/share/gnuradio/grc/blocks/tempest_sampling_synchronization.block.yml +/usr/local/share/gnuradio/grc/blocks/tempest_framing.block.yml +/usr/local/share/gnuradio/grc/blocks/tempest_Hsync.block.yml +/usr/local/share/gnuradio/grc/blocks/tempest_image_source.block.yml +/usr/local/share/gnuradio/grc/blocks/tempest_normalize_flow.block.yml +/usr/local/share/gnuradio/grc/blocks/tempest_fine_sampling_synchronization.block.yml +/usr/local/share/gnuradio/grc/blocks/tempest_sync_detector.block.yml +/usr/local/share/gnuradio/grc/blocks/tempest_frame_drop.block.yml +/usr/local/share/gnuradio/grc/blocks/tempest_message_to_var.block.yml +/usr/local/share/gnuradio/grc/blocks/tempest_fft_peak_fine_sampling_sync.block.yml +/usr/local/share/gnuradio/grc/blocks/tempest_infer_screen_resolution.block.yml +/usr/local/share/gnuradio/grc/blocks/tempest_tempest_msgbtn.block.yml +/usr/local/share/gnuradio/grc/blocks/tempest_ssamp_correction.block.yml +/usr/local/share/gnuradio/grc/blocks/tempest_TMDS_image_source.block.yml +/usr/local/share/gnuradio/grc/blocks/tempest_binary_serializer.block.yml +/usr/local/share/gnuradio/grc/blocks/tempest_TMDS_decoder.block.yml \ No newline at end of file diff --git a/build/lib/CMakeFiles/CMakeDirectoryInformation.cmake b/build/lib/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 0000000..f91885b --- /dev/null +++ b/build/lib/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,16 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.16 + +# Relative path conversion top directories. +set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/home/emidan19/gr-tempest") +set(CMAKE_RELATIVE_PATH_TOP_BINARY "/home/emidan19/gr-tempest/build") + +# Force unix paths in dependencies. +set(CMAKE_FORCE_UNIX_PATHS 1) + + +# The C and CXX include file regular expressions for this directory. +set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/build/lib/CMakeFiles/Export/lib/cmake/tempest/gnuradio-tempestTargets-release.cmake b/build/lib/CMakeFiles/Export/lib/cmake/tempest/gnuradio-tempestTargets-release.cmake new file mode 100644 index 0000000..7f46d65 --- /dev/null +++ b/build/lib/CMakeFiles/Export/lib/cmake/tempest/gnuradio-tempestTargets-release.cmake @@ -0,0 +1,19 @@ +#---------------------------------------------------------------- +# Generated CMake target import file for configuration "Release". +#---------------------------------------------------------------- + +# Commands may need to know the format version. +set(CMAKE_IMPORT_FILE_VERSION 1) + +# Import target "gnuradio::gnuradio-tempest" for configuration "Release" +set_property(TARGET gnuradio::gnuradio-tempest APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) +set_target_properties(gnuradio::gnuradio-tempest PROPERTIES + IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/x86_64-linux-gnu/libgnuradio-tempest.so.17a754aa" + IMPORTED_SONAME_RELEASE "libgnuradio-tempest.so.1.0.0git" + ) + +list(APPEND _IMPORT_CHECK_TARGETS gnuradio::gnuradio-tempest ) +list(APPEND _IMPORT_CHECK_FILES_FOR_gnuradio::gnuradio-tempest "${_IMPORT_PREFIX}/lib/x86_64-linux-gnu/libgnuradio-tempest.so.17a754aa" ) + +# Commands beyond this point should not need to know the version. +set(CMAKE_IMPORT_FILE_VERSION) diff --git a/build/lib/CMakeFiles/Export/lib/cmake/tempest/gnuradio-tempestTargets.cmake b/build/lib/CMakeFiles/Export/lib/cmake/tempest/gnuradio-tempestTargets.cmake new file mode 100644 index 0000000..75f9726 --- /dev/null +++ b/build/lib/CMakeFiles/Export/lib/cmake/tempest/gnuradio-tempestTargets.cmake @@ -0,0 +1,99 @@ +# Generated by CMake + +if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.5) + message(FATAL_ERROR "CMake >= 2.6.0 required") +endif() +cmake_policy(PUSH) +cmake_policy(VERSION 2.6) +#---------------------------------------------------------------- +# Generated CMake target import file. +#---------------------------------------------------------------- + +# Commands may need to know the format version. +set(CMAKE_IMPORT_FILE_VERSION 1) + +# Protect against multiple inclusion, which would fail when already imported targets are added once more. +set(_targetsDefined) +set(_targetsNotDefined) +set(_expectedTargets) +foreach(_expectedTarget gnuradio::gnuradio-tempest) + list(APPEND _expectedTargets ${_expectedTarget}) + if(NOT TARGET ${_expectedTarget}) + list(APPEND _targetsNotDefined ${_expectedTarget}) + endif() + if(TARGET ${_expectedTarget}) + list(APPEND _targetsDefined ${_expectedTarget}) + endif() +endforeach() +if("${_targetsDefined}" STREQUAL "${_expectedTargets}") + unset(_targetsDefined) + unset(_targetsNotDefined) + unset(_expectedTargets) + set(CMAKE_IMPORT_FILE_VERSION) + cmake_policy(POP) + return() +endif() +if(NOT "${_targetsDefined}" STREQUAL "") + message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_targetsDefined}\nTargets not yet defined: ${_targetsNotDefined}\n") +endif() +unset(_targetsDefined) +unset(_targetsNotDefined) +unset(_expectedTargets) + + +# Compute the installation prefix relative to this file. +get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH) +get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) +get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) +get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) +if(_IMPORT_PREFIX STREQUAL "/") + set(_IMPORT_PREFIX "") +endif() + +# Create imported target gnuradio::gnuradio-tempest +add_library(gnuradio::gnuradio-tempest SHARED IMPORTED) + +set_target_properties(gnuradio::gnuradio-tempest PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include" + INTERFACE_LINK_LIBRARIES "gnuradio::gnuradio-runtime;gnuradio::gnuradio-blocks;gnuradio::gnuradio-fft;gnuradio::gnuradio-filter;Volk::volk" +) + +if(CMAKE_VERSION VERSION_LESS 2.8.12) + message(FATAL_ERROR "This file relies on consumers using CMake 2.8.12 or greater.") +endif() + +# Load information for each installed configuration. +get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) +file(GLOB CONFIG_FILES "${_DIR}/gnuradio-tempestTargets-*.cmake") +foreach(f ${CONFIG_FILES}) + include(${f}) +endforeach() + +# Cleanup temporary variables. +set(_IMPORT_PREFIX) + +# Loop over all imported files and verify that they actually exist +foreach(target ${_IMPORT_CHECK_TARGETS} ) + foreach(file ${_IMPORT_CHECK_FILES_FOR_${target}} ) + if(NOT EXISTS "${file}" ) + message(FATAL_ERROR "The imported target \"${target}\" references the file + \"${file}\" +but this file does not exist. Possible reasons include: +* The file was deleted, renamed, or moved to another location. +* An install or uninstall procedure did not complete successfully. +* The installation package was faulty and contained + \"${CMAKE_CURRENT_LIST_FILE}\" +but not all the files it references. +") + endif() + endforeach() + unset(_IMPORT_CHECK_FILES_FOR_${target}) +endforeach() +unset(_IMPORT_CHECK_TARGETS) + +# This file does not depend on other imported targets which have +# been exported from the same project but in a separate export set. + +# Commands beyond this point should not need to know the version. +set(CMAKE_IMPORT_FILE_VERSION) +cmake_policy(POP) diff --git a/build/lib/CMakeFiles/gnuradio-tempest.dir/CXX.includecache b/build/lib/CMakeFiles/gnuradio-tempest.dir/CXX.includecache new file mode 100644 index 0000000..d1c267b --- /dev/null +++ b/build/lib/CMakeFiles/gnuradio-tempest.dir/CXX.includecache @@ -0,0 +1,260 @@ +#IncludeRegexLine: ^[ ]*[#%][ ]*(include|import)[ ]*[<"]([^">]+)([">]) + +#IncludeRegexScan: ^.*$ + +#IncludeRegexComplain: ^$ + +#IncludeRegexTransform: + +../include/tempest/Hsync.h +tempest/api.h +- +gnuradio/block.h +- + +../include/tempest/api.h +gnuradio/attributes.h +- + +../include/tempest/fft_peak_fine_sampling_sync.h +tempest/api.h +- +gnuradio/block.h +- + +../include/tempest/fine_sampling_synchronization.h +tempest/api.h +- +gnuradio/block.h +- + +../include/tempest/frame_drop.h +tempest/api.h +- +gnuradio/block.h +- + +../include/tempest/framing.h +tempest/api.h +- +gnuradio/block.h +- + +../include/tempest/infer_screen_resolution.h +tempest/api.h +- +gnuradio/block.h +- + +../include/tempest/normalize_flow.h +tempest/api.h +- +gnuradio/sync_block.h +- + +../include/tempest/sampling_synchronization.h +tempest/api.h +- +gnuradio/block.h +- + +../include/tempest/ssamp_correction.h +tempest/api.h +- +gnuradio/block.h +- + +../include/tempest/sync_detector.h +tempest/api.h +- +gnuradio/block.h +- + +/home/emidan19/gr-tempest/lib/Hsync_impl.cc +config.h +/home/emidan19/gr-tempest/lib/config.h +gnuradio/io_signature.h +- +Hsync_impl.h +/home/emidan19/gr-tempest/lib/Hsync_impl.h +volk/volk.h +- +math.h +- +gnuradio/math.h +- + +/home/emidan19/gr-tempest/lib/Hsync_impl.h +tempest/Hsync.h +- + +/home/emidan19/gr-tempest/lib/fft_peak_fine_sampling_sync_impl.cc +config.h +/home/emidan19/gr-tempest/lib/config.h +gnuradio/io_signature.h +- +fft_peak_fine_sampling_sync_impl.h +/home/emidan19/gr-tempest/lib/fft_peak_fine_sampling_sync_impl.h +thread +- +volk/volk.h +- +math.h +- + +/home/emidan19/gr-tempest/lib/fft_peak_fine_sampling_sync_impl.h +tempest/fft_peak_fine_sampling_sync.h +- + +/home/emidan19/gr-tempest/lib/fine_sampling_synchronization_impl.cc +config.h +/home/emidan19/gr-tempest/lib/config.h +gnuradio/io_signature.h +- +fine_sampling_synchronization_impl.h +/home/emidan19/gr-tempest/lib/fine_sampling_synchronization_impl.h +volk/volk.h +- +random +- + +/home/emidan19/gr-tempest/lib/fine_sampling_synchronization_impl.h +tempest/fine_sampling_synchronization.h +- +gnuradio/filter/mmse_fir_interpolator_cc.h +- +random +- + +/home/emidan19/gr-tempest/lib/frame_drop_impl.cc +config.h +/home/emidan19/gr-tempest/lib/config.h +stdio.h +- +math.h +- +gnuradio/io_signature.h +- +frame_drop_impl.h +/home/emidan19/gr-tempest/lib/frame_drop_impl.h +volk/volk.h +- +random +- +vector +- + +/home/emidan19/gr-tempest/lib/frame_drop_impl.h +gnuradio/filter/mmse_fir_interpolator_cc.h +- +random +- +tempest/frame_drop.h +- +stdio.h +- +math.h +- + +/home/emidan19/gr-tempest/lib/framing_impl.cc +config.h +/home/emidan19/gr-tempest/lib/config.h +gnuradio/io_signature.h +- +framing_impl.h +/home/emidan19/gr-tempest/lib/framing_impl.h + +/home/emidan19/gr-tempest/lib/framing_impl.h +tempest/framing.h +- + +/home/emidan19/gr-tempest/lib/infer_screen_resolution_impl.cc +config.h +/home/emidan19/gr-tempest/lib/config.h +gnuradio/io_signature.h +- +infer_screen_resolution_impl.h +/home/emidan19/gr-tempest/lib/infer_screen_resolution_impl.h + +/home/emidan19/gr-tempest/lib/infer_screen_resolution_impl.h +tempest/infer_screen_resolution.h +- +volk/volk.h +- +math.h +- + +/home/emidan19/gr-tempest/lib/normalize_flow_impl.cc +config.h +/home/emidan19/gr-tempest/lib/config.h +gnuradio/io_signature.h +- +normalize_flow_impl.h +/home/emidan19/gr-tempest/lib/normalize_flow_impl.h +volk/volk.h +- + +/home/emidan19/gr-tempest/lib/normalize_flow_impl.h +tempest/normalize_flow.h +- +random +- + +/home/emidan19/gr-tempest/lib/sampling_synchronization_impl.cc +config.h +/home/emidan19/gr-tempest/lib/config.h +gnuradio/io_signature.h +- +sampling_synchronization_impl.h +/home/emidan19/gr-tempest/lib/sampling_synchronization_impl.h +volk/volk.h +- +random +- + +/home/emidan19/gr-tempest/lib/sampling_synchronization_impl.h +tempest/sampling_synchronization.h +- +gnuradio/filter/mmse_fir_interpolator_cc.h +- +random +- + +/home/emidan19/gr-tempest/lib/ssamp_correction_impl.cc +config.h +/home/emidan19/gr-tempest/lib/config.h +gnuradio/io_signature.h +- +volk/volk.h +- +random +- +ssamp_correction_impl.h +/home/emidan19/gr-tempest/lib/ssamp_correction_impl.h + +/home/emidan19/gr-tempest/lib/ssamp_correction_impl.h +tempest/ssamp_correction.h +- +gnuradio/filter/mmse_fir_interpolator_cc.h +- +random +- + +/home/emidan19/gr-tempest/lib/sync_detector_impl.cc +config.h +/home/emidan19/gr-tempest/lib/config.h +gnuradio/io_signature.h +- +sync_detector_impl.h +/home/emidan19/gr-tempest/lib/sync_detector_impl.h +volk/volk.h +- +math.h +- +gnuradio/math.h +- + +/home/emidan19/gr-tempest/lib/sync_detector_impl.h +tempest/sync_detector.h +- + diff --git a/build/lib/CMakeFiles/gnuradio-tempest.dir/DependInfo.cmake b/build/lib/CMakeFiles/gnuradio-tempest.dir/DependInfo.cmake new file mode 100644 index 0000000..3afd4a6 --- /dev/null +++ b/build/lib/CMakeFiles/gnuradio-tempest.dir/DependInfo.cmake @@ -0,0 +1,51 @@ +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + "CXX" + ) +# The set of files for implicit dependencies of each language: +set(CMAKE_DEPENDS_CHECK_CXX + "/home/emidan19/gr-tempest/lib/Hsync_impl.cc" "/home/emidan19/gr-tempest/build/lib/CMakeFiles/gnuradio-tempest.dir/Hsync_impl.cc.o" + "/home/emidan19/gr-tempest/lib/fft_peak_fine_sampling_sync_impl.cc" "/home/emidan19/gr-tempest/build/lib/CMakeFiles/gnuradio-tempest.dir/fft_peak_fine_sampling_sync_impl.cc.o" + "/home/emidan19/gr-tempest/lib/fine_sampling_synchronization_impl.cc" "/home/emidan19/gr-tempest/build/lib/CMakeFiles/gnuradio-tempest.dir/fine_sampling_synchronization_impl.cc.o" + "/home/emidan19/gr-tempest/lib/frame_drop_impl.cc" "/home/emidan19/gr-tempest/build/lib/CMakeFiles/gnuradio-tempest.dir/frame_drop_impl.cc.o" + "/home/emidan19/gr-tempest/lib/framing_impl.cc" "/home/emidan19/gr-tempest/build/lib/CMakeFiles/gnuradio-tempest.dir/framing_impl.cc.o" + "/home/emidan19/gr-tempest/lib/infer_screen_resolution_impl.cc" "/home/emidan19/gr-tempest/build/lib/CMakeFiles/gnuradio-tempest.dir/infer_screen_resolution_impl.cc.o" + "/home/emidan19/gr-tempest/lib/normalize_flow_impl.cc" "/home/emidan19/gr-tempest/build/lib/CMakeFiles/gnuradio-tempest.dir/normalize_flow_impl.cc.o" + "/home/emidan19/gr-tempest/lib/sampling_synchronization_impl.cc" "/home/emidan19/gr-tempest/build/lib/CMakeFiles/gnuradio-tempest.dir/sampling_synchronization_impl.cc.o" + "/home/emidan19/gr-tempest/lib/ssamp_correction_impl.cc" "/home/emidan19/gr-tempest/build/lib/CMakeFiles/gnuradio-tempest.dir/ssamp_correction_impl.cc.o" + "/home/emidan19/gr-tempest/lib/sync_detector_impl.cc" "/home/emidan19/gr-tempest/build/lib/CMakeFiles/gnuradio-tempest.dir/sync_detector_impl.cc.o" + ) +set(CMAKE_CXX_COMPILER_ID "GNU") + +# Preprocessor definitions for this target. +set(CMAKE_TARGET_DEFINITIONS_CXX + "BOOST_ALL_NO_LIB" + "BOOST_ATOMIC_DYN_LINK" + "BOOST_FILESYSTEM_DYN_LINK" + "BOOST_PROGRAM_OPTIONS_DYN_LINK" + "BOOST_REGEX_DYN_LINK" + "BOOST_SYSTEM_DYN_LINK" + "BOOST_THREAD_DYN_LINK" + "FFTW3F_THREADS" + "GR_CTRLPORT" + "gnuradio_tempest_EXPORTS" + ) + +# The include file search paths: +set(CMAKE_CXX_TARGET_INCLUDE_PATH + "../lib/../include" + ) + +# Pairs of files generated by the same build rule. +set(CMAKE_MULTIPLE_OUTPUT_PAIRS + "/home/emidan19/gr-tempest/build/lib/libgnuradio-tempest.so" "/home/emidan19/gr-tempest/build/lib/libgnuradio-tempest.so.17a754aa" + "/home/emidan19/gr-tempest/build/lib/libgnuradio-tempest.so.1.0.0git" "/home/emidan19/gr-tempest/build/lib/libgnuradio-tempest.so.17a754aa" + ) + + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/build/lib/CMakeFiles/gnuradio-tempest.dir/Hsync_impl.cc.o b/build/lib/CMakeFiles/gnuradio-tempest.dir/Hsync_impl.cc.o new file mode 100644 index 0000000000000000000000000000000000000000..5b3b3961a2590b7221176c7e54519e5a62957593 GIT binary patch literal 197816 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 literal 0 HcmV?d00001 diff --git a/build/lib/CMakeFiles/gnuradio-tempest.dir/build.make b/build/lib/CMakeFiles/gnuradio-tempest.dir/build.make new file mode 100644 index 0000000..ea7ef7b --- /dev/null +++ b/build/lib/CMakeFiles/gnuradio-tempest.dir/build.make @@ -0,0 +1,259 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.16 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E remove -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/emidan19/gr-tempest + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/emidan19/gr-tempest/build + +# Include any dependencies generated for this target. +include lib/CMakeFiles/gnuradio-tempest.dir/depend.make + +# Include the progress variables for this target. +include lib/CMakeFiles/gnuradio-tempest.dir/progress.make + +# Include the compile flags for this target's objects. +include lib/CMakeFiles/gnuradio-tempest.dir/flags.make + +lib/CMakeFiles/gnuradio-tempest.dir/sampling_synchronization_impl.cc.o: lib/CMakeFiles/gnuradio-tempest.dir/flags.make +lib/CMakeFiles/gnuradio-tempest.dir/sampling_synchronization_impl.cc.o: ../lib/sampling_synchronization_impl.cc + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/emidan19/gr-tempest/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building CXX object lib/CMakeFiles/gnuradio-tempest.dir/sampling_synchronization_impl.cc.o" + cd /home/emidan19/gr-tempest/build/lib && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/gnuradio-tempest.dir/sampling_synchronization_impl.cc.o -c /home/emidan19/gr-tempest/lib/sampling_synchronization_impl.cc + +lib/CMakeFiles/gnuradio-tempest.dir/sampling_synchronization_impl.cc.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/gnuradio-tempest.dir/sampling_synchronization_impl.cc.i" + cd /home/emidan19/gr-tempest/build/lib && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/emidan19/gr-tempest/lib/sampling_synchronization_impl.cc > CMakeFiles/gnuradio-tempest.dir/sampling_synchronization_impl.cc.i + +lib/CMakeFiles/gnuradio-tempest.dir/sampling_synchronization_impl.cc.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/gnuradio-tempest.dir/sampling_synchronization_impl.cc.s" + cd /home/emidan19/gr-tempest/build/lib && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/emidan19/gr-tempest/lib/sampling_synchronization_impl.cc -o CMakeFiles/gnuradio-tempest.dir/sampling_synchronization_impl.cc.s + +lib/CMakeFiles/gnuradio-tempest.dir/framing_impl.cc.o: lib/CMakeFiles/gnuradio-tempest.dir/flags.make +lib/CMakeFiles/gnuradio-tempest.dir/framing_impl.cc.o: ../lib/framing_impl.cc + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/emidan19/gr-tempest/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Building CXX object lib/CMakeFiles/gnuradio-tempest.dir/framing_impl.cc.o" + cd /home/emidan19/gr-tempest/build/lib && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/gnuradio-tempest.dir/framing_impl.cc.o -c /home/emidan19/gr-tempest/lib/framing_impl.cc + +lib/CMakeFiles/gnuradio-tempest.dir/framing_impl.cc.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/gnuradio-tempest.dir/framing_impl.cc.i" + cd /home/emidan19/gr-tempest/build/lib && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/emidan19/gr-tempest/lib/framing_impl.cc > CMakeFiles/gnuradio-tempest.dir/framing_impl.cc.i + +lib/CMakeFiles/gnuradio-tempest.dir/framing_impl.cc.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/gnuradio-tempest.dir/framing_impl.cc.s" + cd /home/emidan19/gr-tempest/build/lib && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/emidan19/gr-tempest/lib/framing_impl.cc -o CMakeFiles/gnuradio-tempest.dir/framing_impl.cc.s + +lib/CMakeFiles/gnuradio-tempest.dir/Hsync_impl.cc.o: lib/CMakeFiles/gnuradio-tempest.dir/flags.make +lib/CMakeFiles/gnuradio-tempest.dir/Hsync_impl.cc.o: ../lib/Hsync_impl.cc + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/emidan19/gr-tempest/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Building CXX object lib/CMakeFiles/gnuradio-tempest.dir/Hsync_impl.cc.o" + cd /home/emidan19/gr-tempest/build/lib && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/gnuradio-tempest.dir/Hsync_impl.cc.o -c /home/emidan19/gr-tempest/lib/Hsync_impl.cc + +lib/CMakeFiles/gnuradio-tempest.dir/Hsync_impl.cc.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/gnuradio-tempest.dir/Hsync_impl.cc.i" + cd /home/emidan19/gr-tempest/build/lib && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/emidan19/gr-tempest/lib/Hsync_impl.cc > CMakeFiles/gnuradio-tempest.dir/Hsync_impl.cc.i + +lib/CMakeFiles/gnuradio-tempest.dir/Hsync_impl.cc.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/gnuradio-tempest.dir/Hsync_impl.cc.s" + cd /home/emidan19/gr-tempest/build/lib && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/emidan19/gr-tempest/lib/Hsync_impl.cc -o CMakeFiles/gnuradio-tempest.dir/Hsync_impl.cc.s + +lib/CMakeFiles/gnuradio-tempest.dir/normalize_flow_impl.cc.o: lib/CMakeFiles/gnuradio-tempest.dir/flags.make +lib/CMakeFiles/gnuradio-tempest.dir/normalize_flow_impl.cc.o: ../lib/normalize_flow_impl.cc + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/emidan19/gr-tempest/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_4) "Building CXX object lib/CMakeFiles/gnuradio-tempest.dir/normalize_flow_impl.cc.o" + cd /home/emidan19/gr-tempest/build/lib && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/gnuradio-tempest.dir/normalize_flow_impl.cc.o -c /home/emidan19/gr-tempest/lib/normalize_flow_impl.cc + +lib/CMakeFiles/gnuradio-tempest.dir/normalize_flow_impl.cc.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/gnuradio-tempest.dir/normalize_flow_impl.cc.i" + cd /home/emidan19/gr-tempest/build/lib && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/emidan19/gr-tempest/lib/normalize_flow_impl.cc > CMakeFiles/gnuradio-tempest.dir/normalize_flow_impl.cc.i + +lib/CMakeFiles/gnuradio-tempest.dir/normalize_flow_impl.cc.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/gnuradio-tempest.dir/normalize_flow_impl.cc.s" + cd /home/emidan19/gr-tempest/build/lib && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/emidan19/gr-tempest/lib/normalize_flow_impl.cc -o CMakeFiles/gnuradio-tempest.dir/normalize_flow_impl.cc.s + +lib/CMakeFiles/gnuradio-tempest.dir/fine_sampling_synchronization_impl.cc.o: lib/CMakeFiles/gnuradio-tempest.dir/flags.make +lib/CMakeFiles/gnuradio-tempest.dir/fine_sampling_synchronization_impl.cc.o: ../lib/fine_sampling_synchronization_impl.cc + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/emidan19/gr-tempest/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_5) "Building CXX object lib/CMakeFiles/gnuradio-tempest.dir/fine_sampling_synchronization_impl.cc.o" + cd /home/emidan19/gr-tempest/build/lib && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/gnuradio-tempest.dir/fine_sampling_synchronization_impl.cc.o -c /home/emidan19/gr-tempest/lib/fine_sampling_synchronization_impl.cc + +lib/CMakeFiles/gnuradio-tempest.dir/fine_sampling_synchronization_impl.cc.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/gnuradio-tempest.dir/fine_sampling_synchronization_impl.cc.i" + cd /home/emidan19/gr-tempest/build/lib && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/emidan19/gr-tempest/lib/fine_sampling_synchronization_impl.cc > CMakeFiles/gnuradio-tempest.dir/fine_sampling_synchronization_impl.cc.i + +lib/CMakeFiles/gnuradio-tempest.dir/fine_sampling_synchronization_impl.cc.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/gnuradio-tempest.dir/fine_sampling_synchronization_impl.cc.s" + cd /home/emidan19/gr-tempest/build/lib && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/emidan19/gr-tempest/lib/fine_sampling_synchronization_impl.cc -o CMakeFiles/gnuradio-tempest.dir/fine_sampling_synchronization_impl.cc.s + +lib/CMakeFiles/gnuradio-tempest.dir/sync_detector_impl.cc.o: lib/CMakeFiles/gnuradio-tempest.dir/flags.make +lib/CMakeFiles/gnuradio-tempest.dir/sync_detector_impl.cc.o: ../lib/sync_detector_impl.cc + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/emidan19/gr-tempest/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_6) "Building CXX object lib/CMakeFiles/gnuradio-tempest.dir/sync_detector_impl.cc.o" + cd /home/emidan19/gr-tempest/build/lib && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/gnuradio-tempest.dir/sync_detector_impl.cc.o -c /home/emidan19/gr-tempest/lib/sync_detector_impl.cc + +lib/CMakeFiles/gnuradio-tempest.dir/sync_detector_impl.cc.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/gnuradio-tempest.dir/sync_detector_impl.cc.i" + cd /home/emidan19/gr-tempest/build/lib && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/emidan19/gr-tempest/lib/sync_detector_impl.cc > CMakeFiles/gnuradio-tempest.dir/sync_detector_impl.cc.i + +lib/CMakeFiles/gnuradio-tempest.dir/sync_detector_impl.cc.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/gnuradio-tempest.dir/sync_detector_impl.cc.s" + cd /home/emidan19/gr-tempest/build/lib && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/emidan19/gr-tempest/lib/sync_detector_impl.cc -o CMakeFiles/gnuradio-tempest.dir/sync_detector_impl.cc.s + +lib/CMakeFiles/gnuradio-tempest.dir/frame_drop_impl.cc.o: lib/CMakeFiles/gnuradio-tempest.dir/flags.make +lib/CMakeFiles/gnuradio-tempest.dir/frame_drop_impl.cc.o: ../lib/frame_drop_impl.cc + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/emidan19/gr-tempest/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_7) "Building CXX object lib/CMakeFiles/gnuradio-tempest.dir/frame_drop_impl.cc.o" + cd /home/emidan19/gr-tempest/build/lib && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/gnuradio-tempest.dir/frame_drop_impl.cc.o -c /home/emidan19/gr-tempest/lib/frame_drop_impl.cc + +lib/CMakeFiles/gnuradio-tempest.dir/frame_drop_impl.cc.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/gnuradio-tempest.dir/frame_drop_impl.cc.i" + cd /home/emidan19/gr-tempest/build/lib && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/emidan19/gr-tempest/lib/frame_drop_impl.cc > CMakeFiles/gnuradio-tempest.dir/frame_drop_impl.cc.i + +lib/CMakeFiles/gnuradio-tempest.dir/frame_drop_impl.cc.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/gnuradio-tempest.dir/frame_drop_impl.cc.s" + cd /home/emidan19/gr-tempest/build/lib && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/emidan19/gr-tempest/lib/frame_drop_impl.cc -o CMakeFiles/gnuradio-tempest.dir/frame_drop_impl.cc.s + +lib/CMakeFiles/gnuradio-tempest.dir/fft_peak_fine_sampling_sync_impl.cc.o: lib/CMakeFiles/gnuradio-tempest.dir/flags.make +lib/CMakeFiles/gnuradio-tempest.dir/fft_peak_fine_sampling_sync_impl.cc.o: ../lib/fft_peak_fine_sampling_sync_impl.cc + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/emidan19/gr-tempest/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_8) "Building CXX object lib/CMakeFiles/gnuradio-tempest.dir/fft_peak_fine_sampling_sync_impl.cc.o" + cd /home/emidan19/gr-tempest/build/lib && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/gnuradio-tempest.dir/fft_peak_fine_sampling_sync_impl.cc.o -c /home/emidan19/gr-tempest/lib/fft_peak_fine_sampling_sync_impl.cc + +lib/CMakeFiles/gnuradio-tempest.dir/fft_peak_fine_sampling_sync_impl.cc.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/gnuradio-tempest.dir/fft_peak_fine_sampling_sync_impl.cc.i" + cd /home/emidan19/gr-tempest/build/lib && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/emidan19/gr-tempest/lib/fft_peak_fine_sampling_sync_impl.cc > CMakeFiles/gnuradio-tempest.dir/fft_peak_fine_sampling_sync_impl.cc.i + +lib/CMakeFiles/gnuradio-tempest.dir/fft_peak_fine_sampling_sync_impl.cc.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/gnuradio-tempest.dir/fft_peak_fine_sampling_sync_impl.cc.s" + cd /home/emidan19/gr-tempest/build/lib && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/emidan19/gr-tempest/lib/fft_peak_fine_sampling_sync_impl.cc -o CMakeFiles/gnuradio-tempest.dir/fft_peak_fine_sampling_sync_impl.cc.s + +lib/CMakeFiles/gnuradio-tempest.dir/infer_screen_resolution_impl.cc.o: lib/CMakeFiles/gnuradio-tempest.dir/flags.make +lib/CMakeFiles/gnuradio-tempest.dir/infer_screen_resolution_impl.cc.o: ../lib/infer_screen_resolution_impl.cc + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/emidan19/gr-tempest/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_9) "Building CXX object lib/CMakeFiles/gnuradio-tempest.dir/infer_screen_resolution_impl.cc.o" + cd /home/emidan19/gr-tempest/build/lib && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/gnuradio-tempest.dir/infer_screen_resolution_impl.cc.o -c /home/emidan19/gr-tempest/lib/infer_screen_resolution_impl.cc + +lib/CMakeFiles/gnuradio-tempest.dir/infer_screen_resolution_impl.cc.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/gnuradio-tempest.dir/infer_screen_resolution_impl.cc.i" + cd /home/emidan19/gr-tempest/build/lib && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/emidan19/gr-tempest/lib/infer_screen_resolution_impl.cc > CMakeFiles/gnuradio-tempest.dir/infer_screen_resolution_impl.cc.i + +lib/CMakeFiles/gnuradio-tempest.dir/infer_screen_resolution_impl.cc.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/gnuradio-tempest.dir/infer_screen_resolution_impl.cc.s" + cd /home/emidan19/gr-tempest/build/lib && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/emidan19/gr-tempest/lib/infer_screen_resolution_impl.cc -o CMakeFiles/gnuradio-tempest.dir/infer_screen_resolution_impl.cc.s + +lib/CMakeFiles/gnuradio-tempest.dir/ssamp_correction_impl.cc.o: lib/CMakeFiles/gnuradio-tempest.dir/flags.make +lib/CMakeFiles/gnuradio-tempest.dir/ssamp_correction_impl.cc.o: ../lib/ssamp_correction_impl.cc + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/emidan19/gr-tempest/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_10) "Building CXX object lib/CMakeFiles/gnuradio-tempest.dir/ssamp_correction_impl.cc.o" + cd /home/emidan19/gr-tempest/build/lib && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/gnuradio-tempest.dir/ssamp_correction_impl.cc.o -c /home/emidan19/gr-tempest/lib/ssamp_correction_impl.cc + +lib/CMakeFiles/gnuradio-tempest.dir/ssamp_correction_impl.cc.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/gnuradio-tempest.dir/ssamp_correction_impl.cc.i" + cd /home/emidan19/gr-tempest/build/lib && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/emidan19/gr-tempest/lib/ssamp_correction_impl.cc > CMakeFiles/gnuradio-tempest.dir/ssamp_correction_impl.cc.i + +lib/CMakeFiles/gnuradio-tempest.dir/ssamp_correction_impl.cc.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/gnuradio-tempest.dir/ssamp_correction_impl.cc.s" + cd /home/emidan19/gr-tempest/build/lib && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/emidan19/gr-tempest/lib/ssamp_correction_impl.cc -o CMakeFiles/gnuradio-tempest.dir/ssamp_correction_impl.cc.s + +# Object files for target gnuradio-tempest +gnuradio__tempest_OBJECTS = \ +"CMakeFiles/gnuradio-tempest.dir/sampling_synchronization_impl.cc.o" \ +"CMakeFiles/gnuradio-tempest.dir/framing_impl.cc.o" \ +"CMakeFiles/gnuradio-tempest.dir/Hsync_impl.cc.o" \ +"CMakeFiles/gnuradio-tempest.dir/normalize_flow_impl.cc.o" \ +"CMakeFiles/gnuradio-tempest.dir/fine_sampling_synchronization_impl.cc.o" \ +"CMakeFiles/gnuradio-tempest.dir/sync_detector_impl.cc.o" \ +"CMakeFiles/gnuradio-tempest.dir/frame_drop_impl.cc.o" \ +"CMakeFiles/gnuradio-tempest.dir/fft_peak_fine_sampling_sync_impl.cc.o" \ +"CMakeFiles/gnuradio-tempest.dir/infer_screen_resolution_impl.cc.o" \ +"CMakeFiles/gnuradio-tempest.dir/ssamp_correction_impl.cc.o" + +# External object files for target gnuradio-tempest +gnuradio__tempest_EXTERNAL_OBJECTS = + +lib/libgnuradio-tempest.so.17a754aa: lib/CMakeFiles/gnuradio-tempest.dir/sampling_synchronization_impl.cc.o +lib/libgnuradio-tempest.so.17a754aa: lib/CMakeFiles/gnuradio-tempest.dir/framing_impl.cc.o +lib/libgnuradio-tempest.so.17a754aa: lib/CMakeFiles/gnuradio-tempest.dir/Hsync_impl.cc.o +lib/libgnuradio-tempest.so.17a754aa: lib/CMakeFiles/gnuradio-tempest.dir/normalize_flow_impl.cc.o +lib/libgnuradio-tempest.so.17a754aa: lib/CMakeFiles/gnuradio-tempest.dir/fine_sampling_synchronization_impl.cc.o +lib/libgnuradio-tempest.so.17a754aa: lib/CMakeFiles/gnuradio-tempest.dir/sync_detector_impl.cc.o +lib/libgnuradio-tempest.so.17a754aa: lib/CMakeFiles/gnuradio-tempest.dir/frame_drop_impl.cc.o +lib/libgnuradio-tempest.so.17a754aa: lib/CMakeFiles/gnuradio-tempest.dir/fft_peak_fine_sampling_sync_impl.cc.o +lib/libgnuradio-tempest.so.17a754aa: lib/CMakeFiles/gnuradio-tempest.dir/infer_screen_resolution_impl.cc.o +lib/libgnuradio-tempest.so.17a754aa: lib/CMakeFiles/gnuradio-tempest.dir/ssamp_correction_impl.cc.o +lib/libgnuradio-tempest.so.17a754aa: lib/CMakeFiles/gnuradio-tempest.dir/build.make +lib/libgnuradio-tempest.so.17a754aa: /usr/lib/x86_64-linux-gnu/libgnuradio-filter.so.3.8.5.0 +lib/libgnuradio-tempest.so.17a754aa: /usr/lib/x86_64-linux-gnu/libgnuradio-blocks.so.3.8.5.0 +lib/libgnuradio-tempest.so.17a754aa: /usr/lib/x86_64-linux-gnu/libgnuradio-fft.so.3.8.5.0 +lib/libgnuradio-tempest.so.17a754aa: /usr/lib/x86_64-linux-gnu/libgnuradio-runtime.so.3.8.5.0 +lib/libgnuradio-tempest.so.17a754aa: /usr/lib/x86_64-linux-gnu/libthrift.so +lib/libgnuradio-tempest.so.17a754aa: /usr/lib/x86_64-linux-gnu/libgnuradio-pmt.so.3.8.5.0 +lib/libgnuradio-tempest.so.17a754aa: /usr/lib/x86_64-linux-gnu/libboost_program_options.so.1.71.0 +lib/libgnuradio-tempest.so.17a754aa: /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.71.0 +lib/libgnuradio-tempest.so.17a754aa: /usr/lib/x86_64-linux-gnu/libboost_system.so.1.71.0 +lib/libgnuradio-tempest.so.17a754aa: /usr/lib/x86_64-linux-gnu/libboost_regex.so.1.71.0 +lib/libgnuradio-tempest.so.17a754aa: /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.71.0 +lib/libgnuradio-tempest.so.17a754aa: /usr/lib/x86_64-linux-gnu/libboost_atomic.so.1.71.0 +lib/libgnuradio-tempest.so.17a754aa: /usr/lib/x86_64-linux-gnu/liblog4cpp.so +lib/libgnuradio-tempest.so.17a754aa: /usr/lib/x86_64-linux-gnu/libgmpxx.so +lib/libgnuradio-tempest.so.17a754aa: /usr/lib/x86_64-linux-gnu/libgmp.so +lib/libgnuradio-tempest.so.17a754aa: /usr/lib/x86_64-linux-gnu/libfftw3f.so +lib/libgnuradio-tempest.so.17a754aa: /usr/lib/x86_64-linux-gnu/libfftw3f_threads.so +lib/libgnuradio-tempest.so.17a754aa: /usr/lib/x86_64-linux-gnu/libvolk.so.2.2 +lib/libgnuradio-tempest.so.17a754aa: /usr/lib/x86_64-linux-gnu/liborc-0.4.so +lib/libgnuradio-tempest.so.17a754aa: lib/CMakeFiles/gnuradio-tempest.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --bold --progress-dir=/home/emidan19/gr-tempest/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_11) "Linking CXX shared library libgnuradio-tempest.so" + cd /home/emidan19/gr-tempest/build/lib && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/gnuradio-tempest.dir/link.txt --verbose=$(VERBOSE) + cd /home/emidan19/gr-tempest/build/lib && $(CMAKE_COMMAND) -E cmake_symlink_library libgnuradio-tempest.so.17a754aa libgnuradio-tempest.so.1.0.0git libgnuradio-tempest.so + +lib/libgnuradio-tempest.so.1.0.0git: lib/libgnuradio-tempest.so.17a754aa + @$(CMAKE_COMMAND) -E touch_nocreate lib/libgnuradio-tempest.so.1.0.0git + +lib/libgnuradio-tempest.so: lib/libgnuradio-tempest.so.17a754aa + @$(CMAKE_COMMAND) -E touch_nocreate lib/libgnuradio-tempest.so + +# Rule to build all files generated by this target. +lib/CMakeFiles/gnuradio-tempest.dir/build: lib/libgnuradio-tempest.so + +.PHONY : lib/CMakeFiles/gnuradio-tempest.dir/build + +lib/CMakeFiles/gnuradio-tempest.dir/clean: + cd /home/emidan19/gr-tempest/build/lib && $(CMAKE_COMMAND) -P CMakeFiles/gnuradio-tempest.dir/cmake_clean.cmake +.PHONY : lib/CMakeFiles/gnuradio-tempest.dir/clean + +lib/CMakeFiles/gnuradio-tempest.dir/depend: + cd /home/emidan19/gr-tempest/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/emidan19/gr-tempest /home/emidan19/gr-tempest/lib /home/emidan19/gr-tempest/build /home/emidan19/gr-tempest/build/lib /home/emidan19/gr-tempest/build/lib/CMakeFiles/gnuradio-tempest.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : lib/CMakeFiles/gnuradio-tempest.dir/depend + diff --git a/build/lib/CMakeFiles/gnuradio-tempest.dir/cmake_clean.cmake b/build/lib/CMakeFiles/gnuradio-tempest.dir/cmake_clean.cmake new file mode 100644 index 0000000..875a1d0 --- /dev/null +++ b/build/lib/CMakeFiles/gnuradio-tempest.dir/cmake_clean.cmake @@ -0,0 +1,21 @@ +file(REMOVE_RECURSE + "CMakeFiles/gnuradio-tempest.dir/Hsync_impl.cc.o" + "CMakeFiles/gnuradio-tempest.dir/fft_peak_fine_sampling_sync_impl.cc.o" + "CMakeFiles/gnuradio-tempest.dir/fine_sampling_synchronization_impl.cc.o" + "CMakeFiles/gnuradio-tempest.dir/frame_drop_impl.cc.o" + "CMakeFiles/gnuradio-tempest.dir/framing_impl.cc.o" + "CMakeFiles/gnuradio-tempest.dir/infer_screen_resolution_impl.cc.o" + "CMakeFiles/gnuradio-tempest.dir/normalize_flow_impl.cc.o" + "CMakeFiles/gnuradio-tempest.dir/sampling_synchronization_impl.cc.o" + "CMakeFiles/gnuradio-tempest.dir/ssamp_correction_impl.cc.o" + "CMakeFiles/gnuradio-tempest.dir/sync_detector_impl.cc.o" + "libgnuradio-tempest.pdb" + "libgnuradio-tempest.so" + "libgnuradio-tempest.so.1.0.0git" + "libgnuradio-tempest.so.17a754aa" +) + +# Per-language clean rules from dependency scanning. +foreach(lang CXX) + include(CMakeFiles/gnuradio-tempest.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/build/lib/CMakeFiles/gnuradio-tempest.dir/depend.internal b/build/lib/CMakeFiles/gnuradio-tempest.dir/depend.internal new file mode 100644 index 0000000..eb77d1f --- /dev/null +++ b/build/lib/CMakeFiles/gnuradio-tempest.dir/depend.internal @@ -0,0 +1,53 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.16 + +lib/CMakeFiles/gnuradio-tempest.dir/Hsync_impl.cc.o + ../include/tempest/Hsync.h + ../include/tempest/api.h + /home/emidan19/gr-tempest/lib/Hsync_impl.cc + /home/emidan19/gr-tempest/lib/Hsync_impl.h +lib/CMakeFiles/gnuradio-tempest.dir/fft_peak_fine_sampling_sync_impl.cc.o + ../include/tempest/api.h + ../include/tempest/fft_peak_fine_sampling_sync.h + /home/emidan19/gr-tempest/lib/fft_peak_fine_sampling_sync_impl.cc + /home/emidan19/gr-tempest/lib/fft_peak_fine_sampling_sync_impl.h +lib/CMakeFiles/gnuradio-tempest.dir/fine_sampling_synchronization_impl.cc.o + ../include/tempest/api.h + ../include/tempest/fine_sampling_synchronization.h + /home/emidan19/gr-tempest/lib/fine_sampling_synchronization_impl.cc + /home/emidan19/gr-tempest/lib/fine_sampling_synchronization_impl.h +lib/CMakeFiles/gnuradio-tempest.dir/frame_drop_impl.cc.o + ../include/tempest/api.h + ../include/tempest/frame_drop.h + /home/emidan19/gr-tempest/lib/frame_drop_impl.cc + /home/emidan19/gr-tempest/lib/frame_drop_impl.h +lib/CMakeFiles/gnuradio-tempest.dir/framing_impl.cc.o + ../include/tempest/api.h + ../include/tempest/framing.h + /home/emidan19/gr-tempest/lib/framing_impl.cc + /home/emidan19/gr-tempest/lib/framing_impl.h +lib/CMakeFiles/gnuradio-tempest.dir/infer_screen_resolution_impl.cc.o + ../include/tempest/api.h + ../include/tempest/infer_screen_resolution.h + /home/emidan19/gr-tempest/lib/infer_screen_resolution_impl.cc + /home/emidan19/gr-tempest/lib/infer_screen_resolution_impl.h +lib/CMakeFiles/gnuradio-tempest.dir/normalize_flow_impl.cc.o + ../include/tempest/api.h + ../include/tempest/normalize_flow.h + /home/emidan19/gr-tempest/lib/normalize_flow_impl.cc + /home/emidan19/gr-tempest/lib/normalize_flow_impl.h +lib/CMakeFiles/gnuradio-tempest.dir/sampling_synchronization_impl.cc.o + ../include/tempest/api.h + ../include/tempest/sampling_synchronization.h + /home/emidan19/gr-tempest/lib/sampling_synchronization_impl.cc + /home/emidan19/gr-tempest/lib/sampling_synchronization_impl.h +lib/CMakeFiles/gnuradio-tempest.dir/ssamp_correction_impl.cc.o + ../include/tempest/api.h + ../include/tempest/ssamp_correction.h + /home/emidan19/gr-tempest/lib/ssamp_correction_impl.cc + /home/emidan19/gr-tempest/lib/ssamp_correction_impl.h +lib/CMakeFiles/gnuradio-tempest.dir/sync_detector_impl.cc.o + ../include/tempest/api.h + ../include/tempest/sync_detector.h + /home/emidan19/gr-tempest/lib/sync_detector_impl.cc + /home/emidan19/gr-tempest/lib/sync_detector_impl.h diff --git a/build/lib/CMakeFiles/gnuradio-tempest.dir/depend.make b/build/lib/CMakeFiles/gnuradio-tempest.dir/depend.make new file mode 100644 index 0000000..05637df --- /dev/null +++ b/build/lib/CMakeFiles/gnuradio-tempest.dir/depend.make @@ -0,0 +1,53 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.16 + +lib/CMakeFiles/gnuradio-tempest.dir/Hsync_impl.cc.o: ../include/tempest/Hsync.h +lib/CMakeFiles/gnuradio-tempest.dir/Hsync_impl.cc.o: ../include/tempest/api.h +lib/CMakeFiles/gnuradio-tempest.dir/Hsync_impl.cc.o: ../lib/Hsync_impl.cc +lib/CMakeFiles/gnuradio-tempest.dir/Hsync_impl.cc.o: ../lib/Hsync_impl.h + +lib/CMakeFiles/gnuradio-tempest.dir/fft_peak_fine_sampling_sync_impl.cc.o: ../include/tempest/api.h +lib/CMakeFiles/gnuradio-tempest.dir/fft_peak_fine_sampling_sync_impl.cc.o: ../include/tempest/fft_peak_fine_sampling_sync.h +lib/CMakeFiles/gnuradio-tempest.dir/fft_peak_fine_sampling_sync_impl.cc.o: ../lib/fft_peak_fine_sampling_sync_impl.cc +lib/CMakeFiles/gnuradio-tempest.dir/fft_peak_fine_sampling_sync_impl.cc.o: ../lib/fft_peak_fine_sampling_sync_impl.h + +lib/CMakeFiles/gnuradio-tempest.dir/fine_sampling_synchronization_impl.cc.o: ../include/tempest/api.h +lib/CMakeFiles/gnuradio-tempest.dir/fine_sampling_synchronization_impl.cc.o: ../include/tempest/fine_sampling_synchronization.h +lib/CMakeFiles/gnuradio-tempest.dir/fine_sampling_synchronization_impl.cc.o: ../lib/fine_sampling_synchronization_impl.cc +lib/CMakeFiles/gnuradio-tempest.dir/fine_sampling_synchronization_impl.cc.o: ../lib/fine_sampling_synchronization_impl.h + +lib/CMakeFiles/gnuradio-tempest.dir/frame_drop_impl.cc.o: ../include/tempest/api.h +lib/CMakeFiles/gnuradio-tempest.dir/frame_drop_impl.cc.o: ../include/tempest/frame_drop.h +lib/CMakeFiles/gnuradio-tempest.dir/frame_drop_impl.cc.o: ../lib/frame_drop_impl.cc +lib/CMakeFiles/gnuradio-tempest.dir/frame_drop_impl.cc.o: ../lib/frame_drop_impl.h + +lib/CMakeFiles/gnuradio-tempest.dir/framing_impl.cc.o: ../include/tempest/api.h +lib/CMakeFiles/gnuradio-tempest.dir/framing_impl.cc.o: ../include/tempest/framing.h +lib/CMakeFiles/gnuradio-tempest.dir/framing_impl.cc.o: ../lib/framing_impl.cc +lib/CMakeFiles/gnuradio-tempest.dir/framing_impl.cc.o: ../lib/framing_impl.h + +lib/CMakeFiles/gnuradio-tempest.dir/infer_screen_resolution_impl.cc.o: ../include/tempest/api.h +lib/CMakeFiles/gnuradio-tempest.dir/infer_screen_resolution_impl.cc.o: ../include/tempest/infer_screen_resolution.h +lib/CMakeFiles/gnuradio-tempest.dir/infer_screen_resolution_impl.cc.o: ../lib/infer_screen_resolution_impl.cc +lib/CMakeFiles/gnuradio-tempest.dir/infer_screen_resolution_impl.cc.o: ../lib/infer_screen_resolution_impl.h + +lib/CMakeFiles/gnuradio-tempest.dir/normalize_flow_impl.cc.o: ../include/tempest/api.h +lib/CMakeFiles/gnuradio-tempest.dir/normalize_flow_impl.cc.o: ../include/tempest/normalize_flow.h +lib/CMakeFiles/gnuradio-tempest.dir/normalize_flow_impl.cc.o: ../lib/normalize_flow_impl.cc +lib/CMakeFiles/gnuradio-tempest.dir/normalize_flow_impl.cc.o: ../lib/normalize_flow_impl.h + +lib/CMakeFiles/gnuradio-tempest.dir/sampling_synchronization_impl.cc.o: ../include/tempest/api.h +lib/CMakeFiles/gnuradio-tempest.dir/sampling_synchronization_impl.cc.o: ../include/tempest/sampling_synchronization.h +lib/CMakeFiles/gnuradio-tempest.dir/sampling_synchronization_impl.cc.o: ../lib/sampling_synchronization_impl.cc +lib/CMakeFiles/gnuradio-tempest.dir/sampling_synchronization_impl.cc.o: ../lib/sampling_synchronization_impl.h + +lib/CMakeFiles/gnuradio-tempest.dir/ssamp_correction_impl.cc.o: ../include/tempest/api.h +lib/CMakeFiles/gnuradio-tempest.dir/ssamp_correction_impl.cc.o: ../include/tempest/ssamp_correction.h +lib/CMakeFiles/gnuradio-tempest.dir/ssamp_correction_impl.cc.o: ../lib/ssamp_correction_impl.cc +lib/CMakeFiles/gnuradio-tempest.dir/ssamp_correction_impl.cc.o: ../lib/ssamp_correction_impl.h + +lib/CMakeFiles/gnuradio-tempest.dir/sync_detector_impl.cc.o: ../include/tempest/api.h +lib/CMakeFiles/gnuradio-tempest.dir/sync_detector_impl.cc.o: ../include/tempest/sync_detector.h +lib/CMakeFiles/gnuradio-tempest.dir/sync_detector_impl.cc.o: ../lib/sync_detector_impl.cc +lib/CMakeFiles/gnuradio-tempest.dir/sync_detector_impl.cc.o: ../lib/sync_detector_impl.h + diff --git a/build/lib/CMakeFiles/gnuradio-tempest.dir/fft_peak_fine_sampling_sync_impl.cc.o b/build/lib/CMakeFiles/gnuradio-tempest.dir/fft_peak_fine_sampling_sync_impl.cc.o new file mode 100644 index 0000000000000000000000000000000000000000..5f565d4fb4c1cca5522b82b16ee0bd9e706660d0 GIT binary patch literal 292640 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 literal 0 HcmV?d00001 diff --git a/build/lib/CMakeFiles/gnuradio-tempest.dir/fine_sampling_synchronization_impl.cc.o b/build/lib/CMakeFiles/gnuradio-tempest.dir/fine_sampling_synchronization_impl.cc.o new file mode 100644 index 0000000000000000000000000000000000000000..d066b6627357bdd0884bfcecb4ca89227c74934a GIT binary patch literal 206800 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

y&m7yH}y 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π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 literal 0 HcmV?d00001 diff --git a/build/lib/CMakeFiles/gnuradio-tempest.dir/flags.make b/build/lib/CMakeFiles/gnuradio-tempest.dir/flags.make new file mode 100644 index 0000000..6217d92 --- /dev/null +++ b/build/lib/CMakeFiles/gnuradio-tempest.dir/flags.make @@ -0,0 +1,10 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.16 + +# compile CXX with /usr/bin/c++ +CXX_FLAGS = -O3 -DNDEBUG -fPIC -fvisibility=hidden -std=gnu++11 + +CXX_DEFINES = -DBOOST_ALL_NO_LIB -DBOOST_ATOMIC_DYN_LINK -DBOOST_FILESYSTEM_DYN_LINK -DBOOST_PROGRAM_OPTIONS_DYN_LINK -DBOOST_REGEX_DYN_LINK -DBOOST_SYSTEM_DYN_LINK -DBOOST_THREAD_DYN_LINK -DFFTW3F_THREADS -DGR_CTRLPORT -Dgnuradio_tempest_EXPORTS + +CXX_INCLUDES = -I/home/emidan19/gr-tempest/lib/../include + diff --git a/build/lib/CMakeFiles/gnuradio-tempest.dir/frame_drop_impl.cc.o b/build/lib/CMakeFiles/gnuradio-tempest.dir/frame_drop_impl.cc.o new file mode 100644 index 0000000000000000000000000000000000000000..1102cfee0a41d3e2c5b4a2b4946ee1673897fbda GIT binary patch literal 253136 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 literal 0 HcmV?d00001 diff --git a/build/lib/CMakeFiles/gnuradio-tempest.dir/framing_impl.cc.o b/build/lib/CMakeFiles/gnuradio-tempest.dir/framing_impl.cc.o new file mode 100644 index 0000000000000000000000000000000000000000..28f96610d03220491cf56beda70a1bfd34a27d10 GIT binary patch literal 193936 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

!{QTb-YHS)ai%#EB>4+4ydy5 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 literal 0 HcmV?d00001 diff --git a/build/lib/CMakeFiles/gnuradio-tempest.dir/link.txt b/build/lib/CMakeFiles/gnuradio-tempest.dir/link.txt new file mode 100644 index 0000000..e2be7ac --- /dev/null +++ b/build/lib/CMakeFiles/gnuradio-tempest.dir/link.txt @@ -0,0 +1 @@ +/usr/bin/c++ -fPIC -O3 -DNDEBUG -shared -Wl,-soname,libgnuradio-tempest.so.1.0.0git -o libgnuradio-tempest.so.17a754aa CMakeFiles/gnuradio-tempest.dir/sampling_synchronization_impl.cc.o CMakeFiles/gnuradio-tempest.dir/framing_impl.cc.o CMakeFiles/gnuradio-tempest.dir/Hsync_impl.cc.o CMakeFiles/gnuradio-tempest.dir/normalize_flow_impl.cc.o CMakeFiles/gnuradio-tempest.dir/fine_sampling_synchronization_impl.cc.o CMakeFiles/gnuradio-tempest.dir/sync_detector_impl.cc.o CMakeFiles/gnuradio-tempest.dir/frame_drop_impl.cc.o CMakeFiles/gnuradio-tempest.dir/fft_peak_fine_sampling_sync_impl.cc.o CMakeFiles/gnuradio-tempest.dir/infer_screen_resolution_impl.cc.o CMakeFiles/gnuradio-tempest.dir/ssamp_correction_impl.cc.o /usr/lib/x86_64-linux-gnu/libgnuradio-filter.so.3.8.5.0 /usr/lib/x86_64-linux-gnu/libgnuradio-blocks.so.3.8.5.0 /usr/lib/x86_64-linux-gnu/libgnuradio-fft.so.3.8.5.0 /usr/lib/x86_64-linux-gnu/libgnuradio-runtime.so.3.8.5.0 /usr/lib/x86_64-linux-gnu/libthrift.so /usr/lib/x86_64-linux-gnu/libgnuradio-pmt.so.3.8.5.0 /usr/lib/x86_64-linux-gnu/libboost_program_options.so.1.71.0 /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.71.0 /usr/lib/x86_64-linux-gnu/libboost_system.so.1.71.0 /usr/lib/x86_64-linux-gnu/libboost_regex.so.1.71.0 /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.71.0 /usr/lib/x86_64-linux-gnu/libboost_atomic.so.1.71.0 -lpthread /usr/lib/x86_64-linux-gnu/liblog4cpp.so /usr/lib/x86_64-linux-gnu/libgmpxx.so /usr/lib/x86_64-linux-gnu/libgmp.so -lrt /usr/lib/x86_64-linux-gnu/libfftw3f.so /usr/lib/x86_64-linux-gnu/libfftw3f_threads.so /usr/lib/x86_64-linux-gnu/libvolk.so.2.2 -ldl /usr/lib/x86_64-linux-gnu/liborc-0.4.so -lm diff --git a/build/lib/CMakeFiles/gnuradio-tempest.dir/normalize_flow_impl.cc.o b/build/lib/CMakeFiles/gnuradio-tempest.dir/normalize_flow_impl.cc.o new file mode 100644 index 0000000000000000000000000000000000000000..6f8e35f25c5950fd2871ddc4580320611e7b11c0 GIT binary patch literal 196752 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 literal 0 HcmV?d00001 diff --git a/build/lib/CMakeFiles/progress.marks b/build/lib/CMakeFiles/progress.marks new file mode 100644 index 0000000..b4de394 --- /dev/null +++ b/build/lib/CMakeFiles/progress.marks @@ -0,0 +1 @@ +11 diff --git a/build/lib/CTestTestfile.cmake b/build/lib/CTestTestfile.cmake new file mode 100644 index 0000000..6533e21 --- /dev/null +++ b/build/lib/CTestTestfile.cmake @@ -0,0 +1,6 @@ +# CMake generated Testfile for +# Source directory: /home/emidan19/gr-tempest/lib +# Build directory: /home/emidan19/gr-tempest/build/lib +# +# This file includes the relevant testing commands required for +# testing this directory and lists subdirectories to be tested as well. diff --git a/build/lib/Makefile b/build/lib/Makefile new file mode 100644 index 0000000..0a184dc --- /dev/null +++ b/build/lib/Makefile @@ -0,0 +1,512 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.16 + +# Default target executed when no arguments are given to make. +default_target: all + +.PHONY : default_target + +# Allow only one "make -f Makefile2" at a time, but pass parallelism. +.NOTPARALLEL: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E remove -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/emidan19/gr-tempest + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/emidan19/gr-tempest/build + +#============================================================================= +# Targets provided globally by CMake. + +# Special rule for the target install/strip +install/strip: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip + +# Special rule for the target install/strip +install/strip/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip/fast + +# Special rule for the target install/local +install/local: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local + +# Special rule for the target install/local +install/local/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local/fast + +# Special rule for the target install +install: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install + +# Special rule for the target install +install/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install/fast + +# Special rule for the target list_install_components +list_install_components: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Available install components are: \"Unspecified\"" +.PHONY : list_install_components + +# Special rule for the target list_install_components +list_install_components/fast: list_install_components + +.PHONY : list_install_components/fast + +# Special rule for the target rebuild_cache +rebuild_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..." + /usr/bin/cmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : rebuild_cache + +# Special rule for the target rebuild_cache +rebuild_cache/fast: rebuild_cache + +.PHONY : rebuild_cache/fast + +# Special rule for the target edit_cache +edit_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "No interactive CMake dialog available..." + /usr/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available. +.PHONY : edit_cache + +# Special rule for the target edit_cache +edit_cache/fast: edit_cache + +.PHONY : edit_cache/fast + +# Special rule for the target test +test: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running tests..." + /usr/bin/ctest --force-new-ctest-process $(ARGS) +.PHONY : test + +# Special rule for the target test +test/fast: test + +.PHONY : test/fast + +# The main all target +all: cmake_check_build_system + cd /home/emidan19/gr-tempest/build && $(CMAKE_COMMAND) -E cmake_progress_start /home/emidan19/gr-tempest/build/CMakeFiles /home/emidan19/gr-tempest/build/lib/CMakeFiles/progress.marks + cd /home/emidan19/gr-tempest/build && $(MAKE) -f CMakeFiles/Makefile2 lib/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/emidan19/gr-tempest/build/CMakeFiles 0 +.PHONY : all + +# The main clean target +clean: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f CMakeFiles/Makefile2 lib/clean +.PHONY : clean + +# The main clean target +clean/fast: clean + +.PHONY : clean/fast + +# Prepare targets for installation. +preinstall: all + cd /home/emidan19/gr-tempest/build && $(MAKE) -f CMakeFiles/Makefile2 lib/preinstall +.PHONY : preinstall + +# Prepare targets for installation. +preinstall/fast: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f CMakeFiles/Makefile2 lib/preinstall +.PHONY : preinstall/fast + +# clear depends +depend: + cd /home/emidan19/gr-tempest/build && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 +.PHONY : depend + +# Convenience name for target. +lib/CMakeFiles/gnuradio-tempest.dir/rule: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f CMakeFiles/Makefile2 lib/CMakeFiles/gnuradio-tempest.dir/rule +.PHONY : lib/CMakeFiles/gnuradio-tempest.dir/rule + +# Convenience name for target. +gnuradio-tempest: lib/CMakeFiles/gnuradio-tempest.dir/rule + +.PHONY : gnuradio-tempest + +# fast build rule for target. +gnuradio-tempest/fast: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f lib/CMakeFiles/gnuradio-tempest.dir/build.make lib/CMakeFiles/gnuradio-tempest.dir/build +.PHONY : gnuradio-tempest/fast + +Hsync_impl.o: Hsync_impl.cc.o + +.PHONY : Hsync_impl.o + +# target to build an object file +Hsync_impl.cc.o: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f lib/CMakeFiles/gnuradio-tempest.dir/build.make lib/CMakeFiles/gnuradio-tempest.dir/Hsync_impl.cc.o +.PHONY : Hsync_impl.cc.o + +Hsync_impl.i: Hsync_impl.cc.i + +.PHONY : Hsync_impl.i + +# target to preprocess a source file +Hsync_impl.cc.i: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f lib/CMakeFiles/gnuradio-tempest.dir/build.make lib/CMakeFiles/gnuradio-tempest.dir/Hsync_impl.cc.i +.PHONY : Hsync_impl.cc.i + +Hsync_impl.s: Hsync_impl.cc.s + +.PHONY : Hsync_impl.s + +# target to generate assembly for a file +Hsync_impl.cc.s: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f lib/CMakeFiles/gnuradio-tempest.dir/build.make lib/CMakeFiles/gnuradio-tempest.dir/Hsync_impl.cc.s +.PHONY : Hsync_impl.cc.s + +fft_peak_fine_sampling_sync_impl.o: fft_peak_fine_sampling_sync_impl.cc.o + +.PHONY : fft_peak_fine_sampling_sync_impl.o + +# target to build an object file +fft_peak_fine_sampling_sync_impl.cc.o: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f lib/CMakeFiles/gnuradio-tempest.dir/build.make lib/CMakeFiles/gnuradio-tempest.dir/fft_peak_fine_sampling_sync_impl.cc.o +.PHONY : fft_peak_fine_sampling_sync_impl.cc.o + +fft_peak_fine_sampling_sync_impl.i: fft_peak_fine_sampling_sync_impl.cc.i + +.PHONY : fft_peak_fine_sampling_sync_impl.i + +# target to preprocess a source file +fft_peak_fine_sampling_sync_impl.cc.i: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f lib/CMakeFiles/gnuradio-tempest.dir/build.make lib/CMakeFiles/gnuradio-tempest.dir/fft_peak_fine_sampling_sync_impl.cc.i +.PHONY : fft_peak_fine_sampling_sync_impl.cc.i + +fft_peak_fine_sampling_sync_impl.s: fft_peak_fine_sampling_sync_impl.cc.s + +.PHONY : fft_peak_fine_sampling_sync_impl.s + +# target to generate assembly for a file +fft_peak_fine_sampling_sync_impl.cc.s: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f lib/CMakeFiles/gnuradio-tempest.dir/build.make lib/CMakeFiles/gnuradio-tempest.dir/fft_peak_fine_sampling_sync_impl.cc.s +.PHONY : fft_peak_fine_sampling_sync_impl.cc.s + +fine_sampling_synchronization_impl.o: fine_sampling_synchronization_impl.cc.o + +.PHONY : fine_sampling_synchronization_impl.o + +# target to build an object file +fine_sampling_synchronization_impl.cc.o: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f lib/CMakeFiles/gnuradio-tempest.dir/build.make lib/CMakeFiles/gnuradio-tempest.dir/fine_sampling_synchronization_impl.cc.o +.PHONY : fine_sampling_synchronization_impl.cc.o + +fine_sampling_synchronization_impl.i: fine_sampling_synchronization_impl.cc.i + +.PHONY : fine_sampling_synchronization_impl.i + +# target to preprocess a source file +fine_sampling_synchronization_impl.cc.i: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f lib/CMakeFiles/gnuradio-tempest.dir/build.make lib/CMakeFiles/gnuradio-tempest.dir/fine_sampling_synchronization_impl.cc.i +.PHONY : fine_sampling_synchronization_impl.cc.i + +fine_sampling_synchronization_impl.s: fine_sampling_synchronization_impl.cc.s + +.PHONY : fine_sampling_synchronization_impl.s + +# target to generate assembly for a file +fine_sampling_synchronization_impl.cc.s: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f lib/CMakeFiles/gnuradio-tempest.dir/build.make lib/CMakeFiles/gnuradio-tempest.dir/fine_sampling_synchronization_impl.cc.s +.PHONY : fine_sampling_synchronization_impl.cc.s + +frame_drop_impl.o: frame_drop_impl.cc.o + +.PHONY : frame_drop_impl.o + +# target to build an object file +frame_drop_impl.cc.o: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f lib/CMakeFiles/gnuradio-tempest.dir/build.make lib/CMakeFiles/gnuradio-tempest.dir/frame_drop_impl.cc.o +.PHONY : frame_drop_impl.cc.o + +frame_drop_impl.i: frame_drop_impl.cc.i + +.PHONY : frame_drop_impl.i + +# target to preprocess a source file +frame_drop_impl.cc.i: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f lib/CMakeFiles/gnuradio-tempest.dir/build.make lib/CMakeFiles/gnuradio-tempest.dir/frame_drop_impl.cc.i +.PHONY : frame_drop_impl.cc.i + +frame_drop_impl.s: frame_drop_impl.cc.s + +.PHONY : frame_drop_impl.s + +# target to generate assembly for a file +frame_drop_impl.cc.s: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f lib/CMakeFiles/gnuradio-tempest.dir/build.make lib/CMakeFiles/gnuradio-tempest.dir/frame_drop_impl.cc.s +.PHONY : frame_drop_impl.cc.s + +framing_impl.o: framing_impl.cc.o + +.PHONY : framing_impl.o + +# target to build an object file +framing_impl.cc.o: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f lib/CMakeFiles/gnuradio-tempest.dir/build.make lib/CMakeFiles/gnuradio-tempest.dir/framing_impl.cc.o +.PHONY : framing_impl.cc.o + +framing_impl.i: framing_impl.cc.i + +.PHONY : framing_impl.i + +# target to preprocess a source file +framing_impl.cc.i: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f lib/CMakeFiles/gnuradio-tempest.dir/build.make lib/CMakeFiles/gnuradio-tempest.dir/framing_impl.cc.i +.PHONY : framing_impl.cc.i + +framing_impl.s: framing_impl.cc.s + +.PHONY : framing_impl.s + +# target to generate assembly for a file +framing_impl.cc.s: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f lib/CMakeFiles/gnuradio-tempest.dir/build.make lib/CMakeFiles/gnuradio-tempest.dir/framing_impl.cc.s +.PHONY : framing_impl.cc.s + +infer_screen_resolution_impl.o: infer_screen_resolution_impl.cc.o + +.PHONY : infer_screen_resolution_impl.o + +# target to build an object file +infer_screen_resolution_impl.cc.o: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f lib/CMakeFiles/gnuradio-tempest.dir/build.make lib/CMakeFiles/gnuradio-tempest.dir/infer_screen_resolution_impl.cc.o +.PHONY : infer_screen_resolution_impl.cc.o + +infer_screen_resolution_impl.i: infer_screen_resolution_impl.cc.i + +.PHONY : infer_screen_resolution_impl.i + +# target to preprocess a source file +infer_screen_resolution_impl.cc.i: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f lib/CMakeFiles/gnuradio-tempest.dir/build.make lib/CMakeFiles/gnuradio-tempest.dir/infer_screen_resolution_impl.cc.i +.PHONY : infer_screen_resolution_impl.cc.i + +infer_screen_resolution_impl.s: infer_screen_resolution_impl.cc.s + +.PHONY : infer_screen_resolution_impl.s + +# target to generate assembly for a file +infer_screen_resolution_impl.cc.s: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f lib/CMakeFiles/gnuradio-tempest.dir/build.make lib/CMakeFiles/gnuradio-tempest.dir/infer_screen_resolution_impl.cc.s +.PHONY : infer_screen_resolution_impl.cc.s + +normalize_flow_impl.o: normalize_flow_impl.cc.o + +.PHONY : normalize_flow_impl.o + +# target to build an object file +normalize_flow_impl.cc.o: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f lib/CMakeFiles/gnuradio-tempest.dir/build.make lib/CMakeFiles/gnuradio-tempest.dir/normalize_flow_impl.cc.o +.PHONY : normalize_flow_impl.cc.o + +normalize_flow_impl.i: normalize_flow_impl.cc.i + +.PHONY : normalize_flow_impl.i + +# target to preprocess a source file +normalize_flow_impl.cc.i: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f lib/CMakeFiles/gnuradio-tempest.dir/build.make lib/CMakeFiles/gnuradio-tempest.dir/normalize_flow_impl.cc.i +.PHONY : normalize_flow_impl.cc.i + +normalize_flow_impl.s: normalize_flow_impl.cc.s + +.PHONY : normalize_flow_impl.s + +# target to generate assembly for a file +normalize_flow_impl.cc.s: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f lib/CMakeFiles/gnuradio-tempest.dir/build.make lib/CMakeFiles/gnuradio-tempest.dir/normalize_flow_impl.cc.s +.PHONY : normalize_flow_impl.cc.s + +sampling_synchronization_impl.o: sampling_synchronization_impl.cc.o + +.PHONY : sampling_synchronization_impl.o + +# target to build an object file +sampling_synchronization_impl.cc.o: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f lib/CMakeFiles/gnuradio-tempest.dir/build.make lib/CMakeFiles/gnuradio-tempest.dir/sampling_synchronization_impl.cc.o +.PHONY : sampling_synchronization_impl.cc.o + +sampling_synchronization_impl.i: sampling_synchronization_impl.cc.i + +.PHONY : sampling_synchronization_impl.i + +# target to preprocess a source file +sampling_synchronization_impl.cc.i: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f lib/CMakeFiles/gnuradio-tempest.dir/build.make lib/CMakeFiles/gnuradio-tempest.dir/sampling_synchronization_impl.cc.i +.PHONY : sampling_synchronization_impl.cc.i + +sampling_synchronization_impl.s: sampling_synchronization_impl.cc.s + +.PHONY : sampling_synchronization_impl.s + +# target to generate assembly for a file +sampling_synchronization_impl.cc.s: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f lib/CMakeFiles/gnuradio-tempest.dir/build.make lib/CMakeFiles/gnuradio-tempest.dir/sampling_synchronization_impl.cc.s +.PHONY : sampling_synchronization_impl.cc.s + +ssamp_correction_impl.o: ssamp_correction_impl.cc.o + +.PHONY : ssamp_correction_impl.o + +# target to build an object file +ssamp_correction_impl.cc.o: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f lib/CMakeFiles/gnuradio-tempest.dir/build.make lib/CMakeFiles/gnuradio-tempest.dir/ssamp_correction_impl.cc.o +.PHONY : ssamp_correction_impl.cc.o + +ssamp_correction_impl.i: ssamp_correction_impl.cc.i + +.PHONY : ssamp_correction_impl.i + +# target to preprocess a source file +ssamp_correction_impl.cc.i: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f lib/CMakeFiles/gnuradio-tempest.dir/build.make lib/CMakeFiles/gnuradio-tempest.dir/ssamp_correction_impl.cc.i +.PHONY : ssamp_correction_impl.cc.i + +ssamp_correction_impl.s: ssamp_correction_impl.cc.s + +.PHONY : ssamp_correction_impl.s + +# target to generate assembly for a file +ssamp_correction_impl.cc.s: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f lib/CMakeFiles/gnuradio-tempest.dir/build.make lib/CMakeFiles/gnuradio-tempest.dir/ssamp_correction_impl.cc.s +.PHONY : ssamp_correction_impl.cc.s + +sync_detector_impl.o: sync_detector_impl.cc.o + +.PHONY : sync_detector_impl.o + +# target to build an object file +sync_detector_impl.cc.o: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f lib/CMakeFiles/gnuradio-tempest.dir/build.make lib/CMakeFiles/gnuradio-tempest.dir/sync_detector_impl.cc.o +.PHONY : sync_detector_impl.cc.o + +sync_detector_impl.i: sync_detector_impl.cc.i + +.PHONY : sync_detector_impl.i + +# target to preprocess a source file +sync_detector_impl.cc.i: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f lib/CMakeFiles/gnuradio-tempest.dir/build.make lib/CMakeFiles/gnuradio-tempest.dir/sync_detector_impl.cc.i +.PHONY : sync_detector_impl.cc.i + +sync_detector_impl.s: sync_detector_impl.cc.s + +.PHONY : sync_detector_impl.s + +# target to generate assembly for a file +sync_detector_impl.cc.s: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f lib/CMakeFiles/gnuradio-tempest.dir/build.make lib/CMakeFiles/gnuradio-tempest.dir/sync_detector_impl.cc.s +.PHONY : sync_detector_impl.cc.s + +# Help Target +help: + @echo "The following are some of the valid targets for this Makefile:" + @echo "... all (the default if no target is provided)" + @echo "... clean" + @echo "... depend" + @echo "... install/strip" + @echo "... install/local" + @echo "... install" + @echo "... list_install_components" + @echo "... rebuild_cache" + @echo "... edit_cache" + @echo "... test" + @echo "... gnuradio-tempest" + @echo "... Hsync_impl.o" + @echo "... Hsync_impl.i" + @echo "... Hsync_impl.s" + @echo "... fft_peak_fine_sampling_sync_impl.o" + @echo "... fft_peak_fine_sampling_sync_impl.i" + @echo "... fft_peak_fine_sampling_sync_impl.s" + @echo "... fine_sampling_synchronization_impl.o" + @echo "... fine_sampling_synchronization_impl.i" + @echo "... fine_sampling_synchronization_impl.s" + @echo "... frame_drop_impl.o" + @echo "... frame_drop_impl.i" + @echo "... frame_drop_impl.s" + @echo "... framing_impl.o" + @echo "... framing_impl.i" + @echo "... framing_impl.s" + @echo "... infer_screen_resolution_impl.o" + @echo "... infer_screen_resolution_impl.i" + @echo "... infer_screen_resolution_impl.s" + @echo "... normalize_flow_impl.o" + @echo "... normalize_flow_impl.i" + @echo "... normalize_flow_impl.s" + @echo "... sampling_synchronization_impl.o" + @echo "... sampling_synchronization_impl.i" + @echo "... sampling_synchronization_impl.s" + @echo "... ssamp_correction_impl.o" + @echo "... ssamp_correction_impl.i" + @echo "... ssamp_correction_impl.s" + @echo "... sync_detector_impl.o" + @echo "... sync_detector_impl.i" + @echo "... sync_detector_impl.s" +.PHONY : help + + + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + cd /home/emidan19/gr-tempest/build && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/build/lib/cmake/Modules/gnuradio-tempestConfig.cmake b/build/lib/cmake/Modules/gnuradio-tempestConfig.cmake new file mode 100644 index 0000000..f1fa7e6 --- /dev/null +++ b/build/lib/cmake/Modules/gnuradio-tempestConfig.cmake @@ -0,0 +1,26 @@ +# Copyright 2018 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(CMakeFindDependencyMacro) + +set(target_deps "") +foreach(dep IN LISTS target_deps) + find_dependency(${dep}) +endforeach() +include("${CMAKE_CURRENT_LIST_DIR}/gnuradio-tempestTargets.cmake") diff --git a/build/lib/cmake_install.cmake b/build/lib/cmake_install.cmake new file mode 100644 index 0000000..bbf0e3b --- /dev/null +++ b/build/lib/cmake_install.cmake @@ -0,0 +1,107 @@ +# Install script for directory: /home/emidan19/gr-tempest/lib + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "Release") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "1") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "FALSE") +endif() + +if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) + foreach(file + "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/x86_64-linux-gnu/libgnuradio-tempest.so.17a754aa" + "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/x86_64-linux-gnu/libgnuradio-tempest.so.1.0.0git" + ) + if(EXISTS "${file}" AND + NOT IS_SYMLINK "${file}") + file(RPATH_CHECK + FILE "${file}" + RPATH "") + endif() + endforeach() + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/x86_64-linux-gnu" TYPE SHARED_LIBRARY FILES + "/home/emidan19/gr-tempest/build/lib/libgnuradio-tempest.so.17a754aa" + "/home/emidan19/gr-tempest/build/lib/libgnuradio-tempest.so.1.0.0git" + ) + foreach(file + "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/x86_64-linux-gnu/libgnuradio-tempest.so.17a754aa" + "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/x86_64-linux-gnu/libgnuradio-tempest.so.1.0.0git" + ) + if(EXISTS "${file}" AND + NOT IS_SYMLINK "${file}") + if(CMAKE_INSTALL_DO_STRIP) + execute_process(COMMAND "/usr/bin/strip" "${file}") + endif() + endif() + endforeach() +endif() + +if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) + if(EXISTS "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/x86_64-linux-gnu/libgnuradio-tempest.so" AND + NOT IS_SYMLINK "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/x86_64-linux-gnu/libgnuradio-tempest.so") + file(RPATH_CHECK + FILE "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/x86_64-linux-gnu/libgnuradio-tempest.so" + RPATH "") + endif() + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/x86_64-linux-gnu" TYPE SHARED_LIBRARY FILES "/home/emidan19/gr-tempest/build/lib/libgnuradio-tempest.so") + if(EXISTS "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/x86_64-linux-gnu/libgnuradio-tempest.so" AND + NOT IS_SYMLINK "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/x86_64-linux-gnu/libgnuradio-tempest.so") + if(CMAKE_INSTALL_DO_STRIP) + execute_process(COMMAND "/usr/bin/strip" "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/x86_64-linux-gnu/libgnuradio-tempest.so") + endif() + endif() +endif() + +if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) + if(EXISTS "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/cmake/tempest/gnuradio-tempestTargets.cmake") + file(DIFFERENT EXPORT_FILE_CHANGED FILES + "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/cmake/tempest/gnuradio-tempestTargets.cmake" + "/home/emidan19/gr-tempest/build/lib/CMakeFiles/Export/lib/cmake/tempest/gnuradio-tempestTargets.cmake") + if(EXPORT_FILE_CHANGED) + file(GLOB OLD_CONFIG_FILES "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/cmake/tempest/gnuradio-tempestTargets-*.cmake") + if(OLD_CONFIG_FILES) + message(STATUS "Old export file \"$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/cmake/tempest/gnuradio-tempestTargets.cmake\" will be replaced. Removing files [${OLD_CONFIG_FILES}].") + file(REMOVE ${OLD_CONFIG_FILES}) + endif() + endif() + endif() + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/cmake/tempest" TYPE FILE FILES "/home/emidan19/gr-tempest/build/lib/CMakeFiles/Export/lib/cmake/tempest/gnuradio-tempestTargets.cmake") + if("${CMAKE_INSTALL_CONFIG_NAME}" MATCHES "^([Rr][Ee][Ll][Ee][Aa][Ss][Ee])$") + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/cmake/tempest" TYPE FILE FILES "/home/emidan19/gr-tempest/build/lib/CMakeFiles/Export/lib/cmake/tempest/gnuradio-tempestTargets-release.cmake") + endif() +endif() + +if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/cmake/tempest" TYPE FILE FILES "/home/emidan19/gr-tempest/build/lib/cmake/Modules/gnuradio-tempestConfig.cmake") +endif() + diff --git a/build/lib/libgnuradio-tempest.so b/build/lib/libgnuradio-tempest.so new file mode 120000 index 0000000..3283551 --- /dev/null +++ b/build/lib/libgnuradio-tempest.so @@ -0,0 +1 @@ +libgnuradio-tempest.so.1.0.0git \ No newline at end of file diff --git a/build/lib/libgnuradio-tempest.so.1.0.0git b/build/lib/libgnuradio-tempest.so.1.0.0git new file mode 120000 index 0000000..15488bb --- /dev/null +++ b/build/lib/libgnuradio-tempest.so.1.0.0git @@ -0,0 +1 @@ +libgnuradio-tempest.so.17a754aa \ No newline at end of file diff --git a/build/lib/libgnuradio-tempest.so.17a754aa b/build/lib/libgnuradio-tempest.so.17a754aa new file mode 100755 index 0000000000000000000000000000000000000000..3144878f9af3b340ae730288d03d8c156d9c201f GIT binary patch literal 344656 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

#km!IJvqm?7SQwy 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 X^aJ?ds{bbrB*Z_;1638Qubux7lk_9v literal 0 HcmV?d00001 diff --git a/build/python/CMakeFiles/CMakeDirectoryInformation.cmake b/build/python/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 0000000..f91885b --- /dev/null +++ b/build/python/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,16 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.16 + +# Relative path conversion top directories. +set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/home/emidan19/gr-tempest") +set(CMAKE_RELATIVE_PATH_TOP_BINARY "/home/emidan19/gr-tempest/build") + +# Force unix paths in dependencies. +set(CMAKE_FORCE_UNIX_PATHS 1) + + +# The C and CXX include file regular expressions for this directory. +set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/build/python/CMakeFiles/progress.marks b/build/python/CMakeFiles/progress.marks new file mode 100644 index 0000000..0cfbf08 --- /dev/null +++ b/build/python/CMakeFiles/progress.marks @@ -0,0 +1 @@ +2 diff --git a/build/python/CMakeFiles/pygen_python_2ccf9.dir/DependInfo.cmake b/build/python/CMakeFiles/pygen_python_2ccf9.dir/DependInfo.cmake new file mode 100644 index 0000000..a1a5d8b --- /dev/null +++ b/build/python/CMakeFiles/pygen_python_2ccf9.dir/DependInfo.cmake @@ -0,0 +1,28 @@ +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) +# The set of files for implicit dependencies of each language: + +# Pairs of files generated by the same build rule. +set(CMAKE_MULTIPLE_OUTPUT_PAIRS + "/home/emidan19/gr-tempest/build/python/TMDS_decoder.pyc" "/home/emidan19/gr-tempest/build/python/__init__.pyc" + "/home/emidan19/gr-tempest/build/python/TMDS_decoder.pyo" "/home/emidan19/gr-tempest/build/python/__init__.pyo" + "/home/emidan19/gr-tempest/build/python/TMDS_image_source.pyc" "/home/emidan19/gr-tempest/build/python/__init__.pyc" + "/home/emidan19/gr-tempest/build/python/TMDS_image_source.pyo" "/home/emidan19/gr-tempest/build/python/__init__.pyo" + "/home/emidan19/gr-tempest/build/python/binary_serializer.pyc" "/home/emidan19/gr-tempest/build/python/__init__.pyc" + "/home/emidan19/gr-tempest/build/python/binary_serializer.pyo" "/home/emidan19/gr-tempest/build/python/__init__.pyo" + "/home/emidan19/gr-tempest/build/python/image_source.pyc" "/home/emidan19/gr-tempest/build/python/__init__.pyc" + "/home/emidan19/gr-tempest/build/python/image_source.pyo" "/home/emidan19/gr-tempest/build/python/__init__.pyo" + "/home/emidan19/gr-tempest/build/python/message_to_var.pyc" "/home/emidan19/gr-tempest/build/python/__init__.pyc" + "/home/emidan19/gr-tempest/build/python/message_to_var.pyo" "/home/emidan19/gr-tempest/build/python/__init__.pyo" + "/home/emidan19/gr-tempest/build/python/tempest_msgbtn.pyc" "/home/emidan19/gr-tempest/build/python/__init__.pyc" + "/home/emidan19/gr-tempest/build/python/tempest_msgbtn.pyo" "/home/emidan19/gr-tempest/build/python/__init__.pyo" + ) + + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/build/python/CMakeFiles/pygen_python_2ccf9.dir/build.make b/build/python/CMakeFiles/pygen_python_2ccf9.dir/build.make new file mode 100644 index 0000000..9c2003d --- /dev/null +++ b/build/python/CMakeFiles/pygen_python_2ccf9.dir/build.make @@ -0,0 +1,159 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.16 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E remove -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/emidan19/gr-tempest + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/emidan19/gr-tempest/build + +# Utility rule file for pygen_python_2ccf9. + +# Include the progress variables for this target. +include python/CMakeFiles/pygen_python_2ccf9.dir/progress.make + +python/CMakeFiles/pygen_python_2ccf9: python/__init__.pyc +python/CMakeFiles/pygen_python_2ccf9: python/image_source.pyc +python/CMakeFiles/pygen_python_2ccf9: python/message_to_var.pyc +python/CMakeFiles/pygen_python_2ccf9: python/tempest_msgbtn.pyc +python/CMakeFiles/pygen_python_2ccf9: python/TMDS_image_source.pyc +python/CMakeFiles/pygen_python_2ccf9: python/binary_serializer.pyc +python/CMakeFiles/pygen_python_2ccf9: python/TMDS_decoder.pyc +python/CMakeFiles/pygen_python_2ccf9: python/__init__.pyo +python/CMakeFiles/pygen_python_2ccf9: python/image_source.pyo +python/CMakeFiles/pygen_python_2ccf9: python/message_to_var.pyo +python/CMakeFiles/pygen_python_2ccf9: python/tempest_msgbtn.pyo +python/CMakeFiles/pygen_python_2ccf9: python/TMDS_image_source.pyo +python/CMakeFiles/pygen_python_2ccf9: python/binary_serializer.pyo +python/CMakeFiles/pygen_python_2ccf9: python/TMDS_decoder.pyo + + +python/__init__.pyc: ../python/__init__.py +python/__init__.pyc: ../python/image_source.py +python/__init__.pyc: ../python/message_to_var.py +python/__init__.pyc: ../python/tempest_msgbtn.py +python/__init__.pyc: ../python/TMDS_image_source.py +python/__init__.pyc: ../python/binary_serializer.py +python/__init__.pyc: ../python/TMDS_decoder.py + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --blue --bold --progress-dir=/home/emidan19/gr-tempest/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Generating __init__.pyc, image_source.pyc, message_to_var.pyc, tempest_msgbtn.pyc, TMDS_image_source.pyc, binary_serializer.pyc, TMDS_decoder.pyc" + cd /home/emidan19/gr-tempest/build/python && /usr/bin/python3 /home/emidan19/gr-tempest/build/python_compile_helper.py /home/emidan19/gr-tempest/python/__init__.py /home/emidan19/gr-tempest/python/image_source.py /home/emidan19/gr-tempest/python/message_to_var.py /home/emidan19/gr-tempest/python/tempest_msgbtn.py /home/emidan19/gr-tempest/python/TMDS_image_source.py /home/emidan19/gr-tempest/python/binary_serializer.py /home/emidan19/gr-tempest/python/TMDS_decoder.py /home/emidan19/gr-tempest/build/python/__init__.pyc /home/emidan19/gr-tempest/build/python/image_source.pyc /home/emidan19/gr-tempest/build/python/message_to_var.pyc /home/emidan19/gr-tempest/build/python/tempest_msgbtn.pyc /home/emidan19/gr-tempest/build/python/TMDS_image_source.pyc /home/emidan19/gr-tempest/build/python/binary_serializer.pyc /home/emidan19/gr-tempest/build/python/TMDS_decoder.pyc + +python/image_source.pyc: python/__init__.pyc + @$(CMAKE_COMMAND) -E touch_nocreate python/image_source.pyc + +python/message_to_var.pyc: python/__init__.pyc + @$(CMAKE_COMMAND) -E touch_nocreate python/message_to_var.pyc + +python/tempest_msgbtn.pyc: python/__init__.pyc + @$(CMAKE_COMMAND) -E touch_nocreate python/tempest_msgbtn.pyc + +python/TMDS_image_source.pyc: python/__init__.pyc + @$(CMAKE_COMMAND) -E touch_nocreate python/TMDS_image_source.pyc + +python/binary_serializer.pyc: python/__init__.pyc + @$(CMAKE_COMMAND) -E touch_nocreate python/binary_serializer.pyc + +python/TMDS_decoder.pyc: python/__init__.pyc + @$(CMAKE_COMMAND) -E touch_nocreate python/TMDS_decoder.pyc + +python/__init__.pyo: ../python/__init__.py +python/__init__.pyo: ../python/image_source.py +python/__init__.pyo: ../python/message_to_var.py +python/__init__.pyo: ../python/tempest_msgbtn.py +python/__init__.pyo: ../python/TMDS_image_source.py +python/__init__.pyo: ../python/binary_serializer.py +python/__init__.pyo: ../python/TMDS_decoder.py + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --blue --bold --progress-dir=/home/emidan19/gr-tempest/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Generating __init__.pyo, image_source.pyo, message_to_var.pyo, tempest_msgbtn.pyo, TMDS_image_source.pyo, binary_serializer.pyo, TMDS_decoder.pyo" + cd /home/emidan19/gr-tempest/build/python && /usr/bin/python3 -O /home/emidan19/gr-tempest/build/python_compile_helper.py /home/emidan19/gr-tempest/python/__init__.py /home/emidan19/gr-tempest/python/image_source.py /home/emidan19/gr-tempest/python/message_to_var.py /home/emidan19/gr-tempest/python/tempest_msgbtn.py /home/emidan19/gr-tempest/python/TMDS_image_source.py /home/emidan19/gr-tempest/python/binary_serializer.py /home/emidan19/gr-tempest/python/TMDS_decoder.py /home/emidan19/gr-tempest/build/python/__init__.pyo /home/emidan19/gr-tempest/build/python/image_source.pyo /home/emidan19/gr-tempest/build/python/message_to_var.pyo /home/emidan19/gr-tempest/build/python/tempest_msgbtn.pyo /home/emidan19/gr-tempest/build/python/TMDS_image_source.pyo /home/emidan19/gr-tempest/build/python/binary_serializer.pyo /home/emidan19/gr-tempest/build/python/TMDS_decoder.pyo + +python/image_source.pyo: python/__init__.pyo + @$(CMAKE_COMMAND) -E touch_nocreate python/image_source.pyo + +python/message_to_var.pyo: python/__init__.pyo + @$(CMAKE_COMMAND) -E touch_nocreate python/message_to_var.pyo + +python/tempest_msgbtn.pyo: python/__init__.pyo + @$(CMAKE_COMMAND) -E touch_nocreate python/tempest_msgbtn.pyo + +python/TMDS_image_source.pyo: python/__init__.pyo + @$(CMAKE_COMMAND) -E touch_nocreate python/TMDS_image_source.pyo + +python/binary_serializer.pyo: python/__init__.pyo + @$(CMAKE_COMMAND) -E touch_nocreate python/binary_serializer.pyo + +python/TMDS_decoder.pyo: python/__init__.pyo + @$(CMAKE_COMMAND) -E touch_nocreate python/TMDS_decoder.pyo + +pygen_python_2ccf9: python/CMakeFiles/pygen_python_2ccf9 +pygen_python_2ccf9: python/__init__.pyc +pygen_python_2ccf9: python/image_source.pyc +pygen_python_2ccf9: python/message_to_var.pyc +pygen_python_2ccf9: python/tempest_msgbtn.pyc +pygen_python_2ccf9: python/TMDS_image_source.pyc +pygen_python_2ccf9: python/binary_serializer.pyc +pygen_python_2ccf9: python/TMDS_decoder.pyc +pygen_python_2ccf9: python/__init__.pyo +pygen_python_2ccf9: python/image_source.pyo +pygen_python_2ccf9: python/message_to_var.pyo +pygen_python_2ccf9: python/tempest_msgbtn.pyo +pygen_python_2ccf9: python/TMDS_image_source.pyo +pygen_python_2ccf9: python/binary_serializer.pyo +pygen_python_2ccf9: python/TMDS_decoder.pyo +pygen_python_2ccf9: python/CMakeFiles/pygen_python_2ccf9.dir/build.make + +.PHONY : pygen_python_2ccf9 + +# Rule to build all files generated by this target. +python/CMakeFiles/pygen_python_2ccf9.dir/build: pygen_python_2ccf9 + +.PHONY : python/CMakeFiles/pygen_python_2ccf9.dir/build + +python/CMakeFiles/pygen_python_2ccf9.dir/clean: + cd /home/emidan19/gr-tempest/build/python && $(CMAKE_COMMAND) -P CMakeFiles/pygen_python_2ccf9.dir/cmake_clean.cmake +.PHONY : python/CMakeFiles/pygen_python_2ccf9.dir/clean + +python/CMakeFiles/pygen_python_2ccf9.dir/depend: + cd /home/emidan19/gr-tempest/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/emidan19/gr-tempest /home/emidan19/gr-tempest/python /home/emidan19/gr-tempest/build /home/emidan19/gr-tempest/build/python /home/emidan19/gr-tempest/build/python/CMakeFiles/pygen_python_2ccf9.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : python/CMakeFiles/pygen_python_2ccf9.dir/depend + diff --git a/build/python/CMakeFiles/pygen_python_2ccf9.dir/cmake_clean.cmake b/build/python/CMakeFiles/pygen_python_2ccf9.dir/cmake_clean.cmake new file mode 100644 index 0000000..d8e618a --- /dev/null +++ b/build/python/CMakeFiles/pygen_python_2ccf9.dir/cmake_clean.cmake @@ -0,0 +1,22 @@ +file(REMOVE_RECURSE + "CMakeFiles/pygen_python_2ccf9" + "TMDS_decoder.pyc" + "TMDS_decoder.pyo" + "TMDS_image_source.pyc" + "TMDS_image_source.pyo" + "__init__.pyc" + "__init__.pyo" + "binary_serializer.pyc" + "binary_serializer.pyo" + "image_source.pyc" + "image_source.pyo" + "message_to_var.pyc" + "message_to_var.pyo" + "tempest_msgbtn.pyc" + "tempest_msgbtn.pyo" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/pygen_python_2ccf9.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/build/python/CMakeFiles/pygen_python_2ccf9.dir/depend.internal b/build/python/CMakeFiles/pygen_python_2ccf9.dir/depend.internal new file mode 100644 index 0000000..f647855 --- /dev/null +++ b/build/python/CMakeFiles/pygen_python_2ccf9.dir/depend.internal @@ -0,0 +1,3 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.16 + diff --git a/build/python/CMakeFiles/pygen_python_2ccf9.dir/depend.make b/build/python/CMakeFiles/pygen_python_2ccf9.dir/depend.make new file mode 100644 index 0000000..f647855 --- /dev/null +++ b/build/python/CMakeFiles/pygen_python_2ccf9.dir/depend.make @@ -0,0 +1,3 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.16 + diff --git a/build/python/CMakeFiles/pygen_python_2ccf9.dir/progress.make b/build/python/CMakeFiles/pygen_python_2ccf9.dir/progress.make new file mode 100644 index 0000000..7df1340 --- /dev/null +++ b/build/python/CMakeFiles/pygen_python_2ccf9.dir/progress.make @@ -0,0 +1,3 @@ +CMAKE_PROGRESS_1 = 12 +CMAKE_PROGRESS_2 = 13 + diff --git a/build/python/CMakeFiles/pygen_python_f8102.dir/DependInfo.cmake b/build/python/CMakeFiles/pygen_python_f8102.dir/DependInfo.cmake new file mode 100644 index 0000000..7806bf3 --- /dev/null +++ b/build/python/CMakeFiles/pygen_python_f8102.dir/DependInfo.cmake @@ -0,0 +1,26 @@ +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) +# The set of files for implicit dependencies of each language: + +# Pairs of files generated by the same build rule. +set(CMAKE_MULTIPLE_OUTPUT_PAIRS + "/home/emidan19/gr-tempest/build/python/TMDS_image_source.pyc" "/home/emidan19/gr-tempest/build/python/__init__.pyc" + "/home/emidan19/gr-tempest/build/python/TMDS_image_source.pyo" "/home/emidan19/gr-tempest/build/python/__init__.pyo" + "/home/emidan19/gr-tempest/build/python/binary_serializer.pyc" "/home/emidan19/gr-tempest/build/python/__init__.pyc" + "/home/emidan19/gr-tempest/build/python/binary_serializer.pyo" "/home/emidan19/gr-tempest/build/python/__init__.pyo" + "/home/emidan19/gr-tempest/build/python/image_source.pyc" "/home/emidan19/gr-tempest/build/python/__init__.pyc" + "/home/emidan19/gr-tempest/build/python/image_source.pyo" "/home/emidan19/gr-tempest/build/python/__init__.pyo" + "/home/emidan19/gr-tempest/build/python/message_to_var.pyc" "/home/emidan19/gr-tempest/build/python/__init__.pyc" + "/home/emidan19/gr-tempest/build/python/message_to_var.pyo" "/home/emidan19/gr-tempest/build/python/__init__.pyo" + "/home/emidan19/gr-tempest/build/python/tempest_msgbtn.pyc" "/home/emidan19/gr-tempest/build/python/__init__.pyc" + "/home/emidan19/gr-tempest/build/python/tempest_msgbtn.pyo" "/home/emidan19/gr-tempest/build/python/__init__.pyo" + ) + + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/build/python/CMakeFiles/pygen_python_f8102.dir/build.make b/build/python/CMakeFiles/pygen_python_f8102.dir/build.make new file mode 100644 index 0000000..6ae4ce3 --- /dev/null +++ b/build/python/CMakeFiles/pygen_python_f8102.dir/build.make @@ -0,0 +1,147 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.16 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E remove -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/emidan19/gr-tempest + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/emidan19/gr-tempest/build + +# Utility rule file for pygen_python_f8102. + +# Include the progress variables for this target. +include python/CMakeFiles/pygen_python_f8102.dir/progress.make + +python/CMakeFiles/pygen_python_f8102: python/__init__.pyc +python/CMakeFiles/pygen_python_f8102: python/image_source.pyc +python/CMakeFiles/pygen_python_f8102: python/message_to_var.pyc +python/CMakeFiles/pygen_python_f8102: python/tempest_msgbtn.pyc +python/CMakeFiles/pygen_python_f8102: python/TMDS_image_source.pyc +python/CMakeFiles/pygen_python_f8102: python/binary_serializer.pyc +python/CMakeFiles/pygen_python_f8102: python/__init__.pyo +python/CMakeFiles/pygen_python_f8102: python/image_source.pyo +python/CMakeFiles/pygen_python_f8102: python/message_to_var.pyo +python/CMakeFiles/pygen_python_f8102: python/tempest_msgbtn.pyo +python/CMakeFiles/pygen_python_f8102: python/TMDS_image_source.pyo +python/CMakeFiles/pygen_python_f8102: python/binary_serializer.pyo + + +python/__init__.pyc: ../python/__init__.py +python/__init__.pyc: ../python/image_source.py +python/__init__.pyc: ../python/message_to_var.py +python/__init__.pyc: ../python/tempest_msgbtn.py +python/__init__.pyc: ../python/TMDS_image_source.py +python/__init__.pyc: ../python/binary_serializer.py + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --blue --bold --progress-dir=/home/emidan19/gr-tempest/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Generating __init__.pyc, image_source.pyc, message_to_var.pyc, tempest_msgbtn.pyc, TMDS_image_source.pyc, binary_serializer.pyc" + cd /home/emidan19/gr-tempest/build/python && /usr/bin/python3 /home/emidan19/gr-tempest/build/python_compile_helper.py /home/emidan19/gr-tempest/python/__init__.py /home/emidan19/gr-tempest/python/image_source.py /home/emidan19/gr-tempest/python/message_to_var.py /home/emidan19/gr-tempest/python/tempest_msgbtn.py /home/emidan19/gr-tempest/python/TMDS_image_source.py /home/emidan19/gr-tempest/python/binary_serializer.py /home/emidan19/gr-tempest/build/python/__init__.pyc /home/emidan19/gr-tempest/build/python/image_source.pyc /home/emidan19/gr-tempest/build/python/message_to_var.pyc /home/emidan19/gr-tempest/build/python/tempest_msgbtn.pyc /home/emidan19/gr-tempest/build/python/TMDS_image_source.pyc /home/emidan19/gr-tempest/build/python/binary_serializer.pyc + +python/image_source.pyc: python/__init__.pyc + @$(CMAKE_COMMAND) -E touch_nocreate python/image_source.pyc + +python/message_to_var.pyc: python/__init__.pyc + @$(CMAKE_COMMAND) -E touch_nocreate python/message_to_var.pyc + +python/tempest_msgbtn.pyc: python/__init__.pyc + @$(CMAKE_COMMAND) -E touch_nocreate python/tempest_msgbtn.pyc + +python/TMDS_image_source.pyc: python/__init__.pyc + @$(CMAKE_COMMAND) -E touch_nocreate python/TMDS_image_source.pyc + +python/binary_serializer.pyc: python/__init__.pyc + @$(CMAKE_COMMAND) -E touch_nocreate python/binary_serializer.pyc + +python/__init__.pyo: ../python/__init__.py +python/__init__.pyo: ../python/image_source.py +python/__init__.pyo: ../python/message_to_var.py +python/__init__.pyo: ../python/tempest_msgbtn.py +python/__init__.pyo: ../python/TMDS_image_source.py +python/__init__.pyo: ../python/binary_serializer.py + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --blue --bold --progress-dir=/home/emidan19/gr-tempest/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Generating __init__.pyo, image_source.pyo, message_to_var.pyo, tempest_msgbtn.pyo, TMDS_image_source.pyo, binary_serializer.pyo" + cd /home/emidan19/gr-tempest/build/python && /usr/bin/python3 -O /home/emidan19/gr-tempest/build/python_compile_helper.py /home/emidan19/gr-tempest/python/__init__.py /home/emidan19/gr-tempest/python/image_source.py /home/emidan19/gr-tempest/python/message_to_var.py /home/emidan19/gr-tempest/python/tempest_msgbtn.py /home/emidan19/gr-tempest/python/TMDS_image_source.py /home/emidan19/gr-tempest/python/binary_serializer.py /home/emidan19/gr-tempest/build/python/__init__.pyo /home/emidan19/gr-tempest/build/python/image_source.pyo /home/emidan19/gr-tempest/build/python/message_to_var.pyo /home/emidan19/gr-tempest/build/python/tempest_msgbtn.pyo /home/emidan19/gr-tempest/build/python/TMDS_image_source.pyo /home/emidan19/gr-tempest/build/python/binary_serializer.pyo + +python/image_source.pyo: python/__init__.pyo + @$(CMAKE_COMMAND) -E touch_nocreate python/image_source.pyo + +python/message_to_var.pyo: python/__init__.pyo + @$(CMAKE_COMMAND) -E touch_nocreate python/message_to_var.pyo + +python/tempest_msgbtn.pyo: python/__init__.pyo + @$(CMAKE_COMMAND) -E touch_nocreate python/tempest_msgbtn.pyo + +python/TMDS_image_source.pyo: python/__init__.pyo + @$(CMAKE_COMMAND) -E touch_nocreate python/TMDS_image_source.pyo + +python/binary_serializer.pyo: python/__init__.pyo + @$(CMAKE_COMMAND) -E touch_nocreate python/binary_serializer.pyo + +pygen_python_f8102: python/CMakeFiles/pygen_python_f8102 +pygen_python_f8102: python/__init__.pyc +pygen_python_f8102: python/image_source.pyc +pygen_python_f8102: python/message_to_var.pyc +pygen_python_f8102: python/tempest_msgbtn.pyc +pygen_python_f8102: python/TMDS_image_source.pyc +pygen_python_f8102: python/binary_serializer.pyc +pygen_python_f8102: python/__init__.pyo +pygen_python_f8102: python/image_source.pyo +pygen_python_f8102: python/message_to_var.pyo +pygen_python_f8102: python/tempest_msgbtn.pyo +pygen_python_f8102: python/TMDS_image_source.pyo +pygen_python_f8102: python/binary_serializer.pyo +pygen_python_f8102: python/CMakeFiles/pygen_python_f8102.dir/build.make + +.PHONY : pygen_python_f8102 + +# Rule to build all files generated by this target. +python/CMakeFiles/pygen_python_f8102.dir/build: pygen_python_f8102 + +.PHONY : python/CMakeFiles/pygen_python_f8102.dir/build + +python/CMakeFiles/pygen_python_f8102.dir/clean: + cd /home/emidan19/gr-tempest/build/python && $(CMAKE_COMMAND) -P CMakeFiles/pygen_python_f8102.dir/cmake_clean.cmake +.PHONY : python/CMakeFiles/pygen_python_f8102.dir/clean + +python/CMakeFiles/pygen_python_f8102.dir/depend: + cd /home/emidan19/gr-tempest/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/emidan19/gr-tempest /home/emidan19/gr-tempest/python /home/emidan19/gr-tempest/build /home/emidan19/gr-tempest/build/python /home/emidan19/gr-tempest/build/python/CMakeFiles/pygen_python_f8102.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : python/CMakeFiles/pygen_python_f8102.dir/depend + diff --git a/build/python/CMakeFiles/pygen_python_f8102.dir/cmake_clean.cmake b/build/python/CMakeFiles/pygen_python_f8102.dir/cmake_clean.cmake new file mode 100644 index 0000000..bc8d4af --- /dev/null +++ b/build/python/CMakeFiles/pygen_python_f8102.dir/cmake_clean.cmake @@ -0,0 +1,20 @@ +file(REMOVE_RECURSE + "CMakeFiles/pygen_python_f8102" + "TMDS_image_source.pyc" + "TMDS_image_source.pyo" + "__init__.pyc" + "__init__.pyo" + "binary_serializer.pyc" + "binary_serializer.pyo" + "image_source.pyc" + "image_source.pyo" + "message_to_var.pyc" + "message_to_var.pyo" + "tempest_msgbtn.pyc" + "tempest_msgbtn.pyo" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/pygen_python_f8102.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/build/python/CMakeFiles/pygen_python_f8102.dir/depend.internal b/build/python/CMakeFiles/pygen_python_f8102.dir/depend.internal new file mode 100644 index 0000000..f647855 --- /dev/null +++ b/build/python/CMakeFiles/pygen_python_f8102.dir/depend.internal @@ -0,0 +1,3 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.16 + diff --git a/build/python/CMakeFiles/pygen_python_f8102.dir/depend.make b/build/python/CMakeFiles/pygen_python_f8102.dir/depend.make new file mode 100644 index 0000000..f647855 --- /dev/null +++ b/build/python/CMakeFiles/pygen_python_f8102.dir/depend.make @@ -0,0 +1,3 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.16 + diff --git a/build/python/CMakeFiles/pygen_python_f8102.dir/progress.make b/build/python/CMakeFiles/pygen_python_f8102.dir/progress.make new file mode 100644 index 0000000..7df1340 --- /dev/null +++ b/build/python/CMakeFiles/pygen_python_f8102.dir/progress.make @@ -0,0 +1,3 @@ +CMAKE_PROGRESS_1 = 12 +CMAKE_PROGRESS_2 = 13 + diff --git a/build/python/CTestTestfile.cmake b/build/python/CTestTestfile.cmake new file mode 100644 index 0000000..2e1c440 --- /dev/null +++ b/build/python/CTestTestfile.cmake @@ -0,0 +1,36 @@ +# CMake generated Testfile for +# Source directory: /home/emidan19/gr-tempest/python +# Build directory: /home/emidan19/gr-tempest/build/python +# +# This file includes the relevant testing commands required for +# testing this directory and lists subdirectories to be tested as well. +add_test(qa_sampling_synchronization "/usr/bin/sh" "/home/emidan19/gr-tempest/build/python/qa_sampling_synchronization_test.sh") +set_tests_properties(qa_sampling_synchronization PROPERTIES _BACKTRACE_TRIPLES "/usr/lib/x86_64-linux-gnu/cmake/gnuradio/GrTest.cmake;122;add_test;/home/emidan19/gr-tempest/python/CMakeLists.txt;50;GR_ADD_TEST;/home/emidan19/gr-tempest/python/CMakeLists.txt;0;") +add_test(qa_framing "/usr/bin/sh" "/home/emidan19/gr-tempest/build/python/qa_framing_test.sh") +set_tests_properties(qa_framing PROPERTIES _BACKTRACE_TRIPLES "/usr/lib/x86_64-linux-gnu/cmake/gnuradio/GrTest.cmake;122;add_test;/home/emidan19/gr-tempest/python/CMakeLists.txt;51;GR_ADD_TEST;/home/emidan19/gr-tempest/python/CMakeLists.txt;0;") +add_test(qa_Hsync "/usr/bin/sh" "/home/emidan19/gr-tempest/build/python/qa_Hsync_test.sh") +set_tests_properties(qa_Hsync PROPERTIES _BACKTRACE_TRIPLES "/usr/lib/x86_64-linux-gnu/cmake/gnuradio/GrTest.cmake;122;add_test;/home/emidan19/gr-tempest/python/CMakeLists.txt;52;GR_ADD_TEST;/home/emidan19/gr-tempest/python/CMakeLists.txt;0;") +add_test(qa_image_source "/usr/bin/sh" "/home/emidan19/gr-tempest/build/python/qa_image_source_test.sh") +set_tests_properties(qa_image_source PROPERTIES _BACKTRACE_TRIPLES "/usr/lib/x86_64-linux-gnu/cmake/gnuradio/GrTest.cmake;122;add_test;/home/emidan19/gr-tempest/python/CMakeLists.txt;53;GR_ADD_TEST;/home/emidan19/gr-tempest/python/CMakeLists.txt;0;") +add_test(qa_normalize_flow "/usr/bin/sh" "/home/emidan19/gr-tempest/build/python/qa_normalize_flow_test.sh") +set_tests_properties(qa_normalize_flow PROPERTIES _BACKTRACE_TRIPLES "/usr/lib/x86_64-linux-gnu/cmake/gnuradio/GrTest.cmake;122;add_test;/home/emidan19/gr-tempest/python/CMakeLists.txt;54;GR_ADD_TEST;/home/emidan19/gr-tempest/python/CMakeLists.txt;0;") +add_test(qa_fine_sampling_synchronization "/usr/bin/sh" "/home/emidan19/gr-tempest/build/python/qa_fine_sampling_synchronization_test.sh") +set_tests_properties(qa_fine_sampling_synchronization PROPERTIES _BACKTRACE_TRIPLES "/usr/lib/x86_64-linux-gnu/cmake/gnuradio/GrTest.cmake;122;add_test;/home/emidan19/gr-tempest/python/CMakeLists.txt;55;GR_ADD_TEST;/home/emidan19/gr-tempest/python/CMakeLists.txt;0;") +add_test(qa_sync_detector "/usr/bin/sh" "/home/emidan19/gr-tempest/build/python/qa_sync_detector_test.sh") +set_tests_properties(qa_sync_detector PROPERTIES _BACKTRACE_TRIPLES "/usr/lib/x86_64-linux-gnu/cmake/gnuradio/GrTest.cmake;122;add_test;/home/emidan19/gr-tempest/python/CMakeLists.txt;56;GR_ADD_TEST;/home/emidan19/gr-tempest/python/CMakeLists.txt;0;") +add_test(qa_frame_drop "/usr/bin/sh" "/home/emidan19/gr-tempest/build/python/qa_frame_drop_test.sh") +set_tests_properties(qa_frame_drop PROPERTIES _BACKTRACE_TRIPLES "/usr/lib/x86_64-linux-gnu/cmake/gnuradio/GrTest.cmake;122;add_test;/home/emidan19/gr-tempest/python/CMakeLists.txt;57;GR_ADD_TEST;/home/emidan19/gr-tempest/python/CMakeLists.txt;0;") +add_test(qa_infer_resolution "/usr/bin/sh" "/home/emidan19/gr-tempest/build/python/qa_infer_resolution_test.sh") +set_tests_properties(qa_infer_resolution PROPERTIES _BACKTRACE_TRIPLES "/usr/lib/x86_64-linux-gnu/cmake/gnuradio/GrTest.cmake;122;add_test;/home/emidan19/gr-tempest/python/CMakeLists.txt;58;GR_ADD_TEST;/home/emidan19/gr-tempest/python/CMakeLists.txt;0;") +add_test(qa_fft_peak_fine_sampling_sync "/usr/bin/sh" "/home/emidan19/gr-tempest/build/python/qa_fft_peak_fine_sampling_sync_test.sh") +set_tests_properties(qa_fft_peak_fine_sampling_sync PROPERTIES _BACKTRACE_TRIPLES "/usr/lib/x86_64-linux-gnu/cmake/gnuradio/GrTest.cmake;122;add_test;/home/emidan19/gr-tempest/python/CMakeLists.txt;59;GR_ADD_TEST;/home/emidan19/gr-tempest/python/CMakeLists.txt;0;") +add_test(qa_infer_screen_resolution "/usr/bin/sh" "/home/emidan19/gr-tempest/build/python/qa_infer_screen_resolution_test.sh") +set_tests_properties(qa_infer_screen_resolution PROPERTIES _BACKTRACE_TRIPLES "/usr/lib/x86_64-linux-gnu/cmake/gnuradio/GrTest.cmake;122;add_test;/home/emidan19/gr-tempest/python/CMakeLists.txt;60;GR_ADD_TEST;/home/emidan19/gr-tempest/python/CMakeLists.txt;0;") +add_test(qa_tempest_msgbtn "/usr/bin/sh" "/home/emidan19/gr-tempest/build/python/qa_tempest_msgbtn_test.sh") +set_tests_properties(qa_tempest_msgbtn PROPERTIES _BACKTRACE_TRIPLES "/usr/lib/x86_64-linux-gnu/cmake/gnuradio/GrTest.cmake;122;add_test;/home/emidan19/gr-tempest/python/CMakeLists.txt;61;GR_ADD_TEST;/home/emidan19/gr-tempest/python/CMakeLists.txt;0;") +add_test(qa_ssamp_correction "/usr/bin/sh" "/home/emidan19/gr-tempest/build/python/qa_ssamp_correction_test.sh") +set_tests_properties(qa_ssamp_correction PROPERTIES _BACKTRACE_TRIPLES "/usr/lib/x86_64-linux-gnu/cmake/gnuradio/GrTest.cmake;122;add_test;/home/emidan19/gr-tempest/python/CMakeLists.txt;62;GR_ADD_TEST;/home/emidan19/gr-tempest/python/CMakeLists.txt;0;") +add_test(qa_TMDS_image_source "/usr/bin/sh" "/home/emidan19/gr-tempest/build/python/qa_TMDS_image_source_test.sh") +set_tests_properties(qa_TMDS_image_source PROPERTIES _BACKTRACE_TRIPLES "/usr/lib/x86_64-linux-gnu/cmake/gnuradio/GrTest.cmake;122;add_test;/home/emidan19/gr-tempest/python/CMakeLists.txt;63;GR_ADD_TEST;/home/emidan19/gr-tempest/python/CMakeLists.txt;0;") +add_test(qa_binary_serializer "/usr/bin/sh" "/home/emidan19/gr-tempest/build/python/qa_binary_serializer_test.sh") +set_tests_properties(qa_binary_serializer PROPERTIES _BACKTRACE_TRIPLES "/usr/lib/x86_64-linux-gnu/cmake/gnuradio/GrTest.cmake;122;add_test;/home/emidan19/gr-tempest/python/CMakeLists.txt;64;GR_ADD_TEST;/home/emidan19/gr-tempest/python/CMakeLists.txt;0;") diff --git a/build/python/Makefile b/build/python/Makefile new file mode 100644 index 0000000..c81d303 --- /dev/null +++ b/build/python/Makefile @@ -0,0 +1,212 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.16 + +# Default target executed when no arguments are given to make. +default_target: all + +.PHONY : default_target + +# Allow only one "make -f Makefile2" at a time, but pass parallelism. +.NOTPARALLEL: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E remove -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/emidan19/gr-tempest + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/emidan19/gr-tempest/build + +#============================================================================= +# Targets provided globally by CMake. + +# Special rule for the target install/strip +install/strip: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip + +# Special rule for the target install/strip +install/strip/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip/fast + +# Special rule for the target install/local +install/local: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local + +# Special rule for the target install/local +install/local/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local/fast + +# Special rule for the target install +install: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install + +# Special rule for the target install +install/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install/fast + +# Special rule for the target list_install_components +list_install_components: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Available install components are: \"Unspecified\"" +.PHONY : list_install_components + +# Special rule for the target list_install_components +list_install_components/fast: list_install_components + +.PHONY : list_install_components/fast + +# Special rule for the target rebuild_cache +rebuild_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..." + /usr/bin/cmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : rebuild_cache + +# Special rule for the target rebuild_cache +rebuild_cache/fast: rebuild_cache + +.PHONY : rebuild_cache/fast + +# Special rule for the target edit_cache +edit_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "No interactive CMake dialog available..." + /usr/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available. +.PHONY : edit_cache + +# Special rule for the target edit_cache +edit_cache/fast: edit_cache + +.PHONY : edit_cache/fast + +# Special rule for the target test +test: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running tests..." + /usr/bin/ctest --force-new-ctest-process $(ARGS) +.PHONY : test + +# Special rule for the target test +test/fast: test + +.PHONY : test/fast + +# The main all target +all: cmake_check_build_system + cd /home/emidan19/gr-tempest/build && $(CMAKE_COMMAND) -E cmake_progress_start /home/emidan19/gr-tempest/build/CMakeFiles /home/emidan19/gr-tempest/build/python/CMakeFiles/progress.marks + cd /home/emidan19/gr-tempest/build && $(MAKE) -f CMakeFiles/Makefile2 python/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/emidan19/gr-tempest/build/CMakeFiles 0 +.PHONY : all + +# The main clean target +clean: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f CMakeFiles/Makefile2 python/clean +.PHONY : clean + +# The main clean target +clean/fast: clean + +.PHONY : clean/fast + +# Prepare targets for installation. +preinstall: all + cd /home/emidan19/gr-tempest/build && $(MAKE) -f CMakeFiles/Makefile2 python/preinstall +.PHONY : preinstall + +# Prepare targets for installation. +preinstall/fast: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f CMakeFiles/Makefile2 python/preinstall +.PHONY : preinstall/fast + +# clear depends +depend: + cd /home/emidan19/gr-tempest/build && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 +.PHONY : depend + +# Convenience name for target. +python/CMakeFiles/pygen_python_2ccf9.dir/rule: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f CMakeFiles/Makefile2 python/CMakeFiles/pygen_python_2ccf9.dir/rule +.PHONY : python/CMakeFiles/pygen_python_2ccf9.dir/rule + +# Convenience name for target. +pygen_python_2ccf9: python/CMakeFiles/pygen_python_2ccf9.dir/rule + +.PHONY : pygen_python_2ccf9 + +# fast build rule for target. +pygen_python_2ccf9/fast: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f python/CMakeFiles/pygen_python_2ccf9.dir/build.make python/CMakeFiles/pygen_python_2ccf9.dir/build +.PHONY : pygen_python_2ccf9/fast + +# Help Target +help: + @echo "The following are some of the valid targets for this Makefile:" + @echo "... all (the default if no target is provided)" + @echo "... clean" + @echo "... depend" + @echo "... install/strip" + @echo "... install/local" + @echo "... install" + @echo "... list_install_components" + @echo "... rebuild_cache" + @echo "... edit_cache" + @echo "... test" + @echo "... pygen_python_2ccf9" +.PHONY : help + + + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + cd /home/emidan19/gr-tempest/build && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/build/python/TMDS_decoder.pyc b/build/python/TMDS_decoder.pyc new file mode 100644 index 0000000000000000000000000000000000000000..98100cd73e45ec5d3478935a5fd62668d1277a17 GIT binary patch literal 2043 zcmZuy&u`;I6rLG7jyFwFwc0M5r4%Ei6+!B+Sh8LD5pUSXvp^Gfmw(b~3hE zTBTgtJ#yg6se9ai$yZLjaYjP$y>Zhfg^A|b&-3QZyzhJO<%jwC7Q^^6{w12j+aIJ% z4;#u3X1)m_ndAxcIi4aB1IxEKla{nEm~YF5bnt9^!DLgq7fia!I&#h}zbW}1>)yM< zezx1?mFVk;lX5*QJn58YnE5)y7^igD882{3!N=^JpNk%Q@!(91xfI)2ABzrq8y2I7 zWAbh7YI1l*;*F>pI!ybjvJ#bct;*ex(@^X1#JAFNQ1SE))AwNb*ZSIFHc)G75X&&# z_;jtWR|+*4s=Qbmo)m{!y7v7yy}dxHD3eOB4o|9uiL0QeOPem$cDjV33wPJ zNJ{4s>#)z*n2*I48-1C6G-bK`f0pfutuBD;IpNqmJ=s`a*^div82_vikK*@C{BhcE zwLFZk(qUQTo1Rftyxyi~Fgfv(I4``~=G(G>(dM-YTm>0a?-S$s)~Ay7G4-Y^;$#Ln zfe(}$dzkrsh(1tx(E=8{&3+Rjd#@(au-O%rSY5BIpTflGwV>3lT3d9tC>sp7pOP!e zHHQgy`hHJEhGG-#>Q<6PVUlm-Wn#a3MdWI_1v1Hwvf+s)G7Zi6!h02eUh(6*N6yc9 zeu5n)05<3HWwC%L12O9RC;AjUv3G4wt7ptXLjb^pajwT z%2RQ1sI<54W!l@Q?PlnsVstQ{Q6L0C!H)P5QdaW9IH1ao=wuiRh*4Xu_wO+Yj?N3iiR;apeXn1UeN*r)r;B zREJ{=mDn~x@m)>kU0c6{hd-Yp7}Q7*qvPcMVj5Ff)mos{sEoCe6_4-SxpEIOt)eh5 zzJ?c*$V@EoI~ShV%v_k5xVi9;P$Z{IQlphM#ROv7Y zUS|6EInK);Krn9eHeWzFQu}tGwfJdghW_b&yWJ*b8l@#NtrY}=OqL0~w}W6*hRO9x zGYDiB1%b&i{VqlK0SRhxQ^J5kxxRyG{zhDG+iufs)D__R4g6!F8)YBo%{HYb_x=Wf-P++Mmpq%CmB<9`8OWyg&G literal 0 HcmV?d00001 diff --git a/build/python/TMDS_decoder.pyo b/build/python/TMDS_decoder.pyo new file mode 100644 index 0000000000000000000000000000000000000000..98100cd73e45ec5d3478935a5fd62668d1277a17 GIT binary patch literal 2043 zcmZuy&u`;I6rLG7jyFwFwc0M5r4%Ei6+!B+Sh8LD5pUSXvp^Gfmw(b~3hE zTBTgtJ#yg6se9ai$yZLjaYjP$y>Zhfg^A|b&-3QZyzhJO<%jwC7Q^^6{w12j+aIJ% z4;#u3X1)m_ndAxcIi4aB1IxEKla{nEm~YF5bnt9^!DLgq7fia!I&#h}zbW}1>)yM< zezx1?mFVk;lX5*QJn58YnE5)y7^igD882{3!N=^JpNk%Q@!(91xfI)2ABzrq8y2I7 zWAbh7YI1l*;*F>pI!ybjvJ#bct;*ex(@^X1#JAFNQ1SE))AwNb*ZSIFHc)G75X&&# z_;jtWR|+*4s=Qbmo)m{!y7v7yy}dxHD3eOB4o|9uiL0QeOPem$cDjV33wPJ zNJ{4s>#)z*n2*I48-1C6G-bK`f0pfutuBD;IpNqmJ=s`a*^div82_vikK*@C{BhcE zwLFZk(qUQTo1Rftyxyi~Fgfv(I4``~=G(G>(dM-YTm>0a?-S$s)~Ay7G4-Y^;$#Ln zfe(}$dzkrsh(1tx(E=8{&3+Rjd#@(au-O%rSY5BIpTflGwV>3lT3d9tC>sp7pOP!e zHHQgy`hHJEhGG-#>Q<6PVUlm-Wn#a3MdWI_1v1Hwvf+s)G7Zi6!h02eUh(6*N6yc9 zeu5n)05<3HWwC%L12O9RC;AjUv3G4wt7ptXLjb^pajwT z%2RQ1sI<54W!l@Q?PlnsVstQ{Q6L0C!H)P5QdaW9IH1ao=wuiRh*4Xu_wO+Yj?N3iiR;apeXn1UeN*r)r;B zREJ{=mDn~x@m)>kU0c6{hd-Yp7}Q7*qvPcMVj5Ff)mos{sEoCe6_4-SxpEIOt)eh5 zzJ?c*$V@EoI~ShV%v_k5xVi9;P$Z{IQlphM#ROv7Y zUS|6EInK);Krn9eHeWzFQu}tGwfJdghW_b&yWJ*b8l@#NtrY}=OqL0~w}W6*hRO9x zGYDiB1%b&i{VqlK0SRhxQ^J5kxxRyG{zhDG+iufs)D__R4g6!F8)YBo%{HYb_x=Wf-P++Mmpq%CmB<9`8OWyg&G literal 0 HcmV?d00001 diff --git a/build/python/TMDS_image_source.pyc b/build/python/TMDS_image_source.pyc new file mode 100644 index 0000000000000000000000000000000000000000..98444f23d67de3aca6822c8b767860c862ffb51c GIT binary patch literal 7672 zcmds6&vV?!bw)RU84Nfak<>^eWmyZY*K3WkBB@<@m!=hEcg5J2v&%RoIdIuQ9_R zMai2=4l)YGS$EDoAIu7E zQ41Q7(>naN7R()&o2q>NxO_pCXGIh8=T69v%VYU*S;;@#6)%a4VjgpE3P&u8OW-bi zT@#-Zmp{?O<-pv!_*i%61-q}ct{%}IZnRiY33p`R3vj$E+t|b74+m%Bxr--V1rbc} zPqa+SSgt*0LKnspz6fp|&yeLzm|Z3+8PC~cwxBh&w=}B7Xx06{zMI6mfy|sR&Vp_r z>76*8@Z&(-h=RDA^_lI=LZ|8W+?A`p%r z3uh-0VJAePoru8c$YjUqWm!L6TVC#lS#Pkp)J}Gm`!d<;EQ>JhNB*AIPU1`^Q54AK z%_!Mi-tp56Jh}>^rVcC6ru{DtFwm-(C7#+W+Nj%6()OeD4w!M9BRakf zNe6mlfjrd;~L@{@^!y6DQPuNf=d;#TCCrn+?qrl+~n4EwX5b;D`RAwMUy*d`q}^ z%mI|mp`LT0-+}4mkei3Z!&h<+h%h#eeuYn|ucWjsUYOF4ffchJTCL|FFael1!5YVW*`n5E zH1h)h;2|3txgqpzBfX{GTt=l#8f9E?VW^clLo?S8^jyzP!50AhInT{S?H#SI9Wtgp zyhFbVMtpqhM7t|5YNuN5s#cf-)4&;r+OU%A!YqM!G`p%W^6G*%v;fF#o2UPnS20`u zBPLh#3e89ui=$bTy!?+zAMs3P9-Qd&kmZ%K|JxXmTK{Bg;c_B}0GAv`7Q(VBWMaA#;;b04+oxuO_xbIFyNjHRN@!}*?Hq)vVI;LCb*pPy) z7yRK)VQk#=)(f^>7!R?)!bB0Z=Ee$M&l;z#T%B4lfkt`@M4PsBTetaw-e6Z)-Dt4O z%+@V^j#+$;&#)zKvj%S%*O<*Nu}dgj(&cruJ7vIxlg9@9_rIM6eCvNCN(_k&~O{qeE!{#coxGG0W`h@@XMny5W%z8J-s7_YF; zn(nZcnPj*_JGb+iGTy2EfBy|NUc{)KwJ}&YR0?DO+;F<#ZV)@0drsC19KW3n{76Nz zqBLZJkBJ4#&q2ARvfxurm>ignN5!V(*;Q<6Q`BA8%E)wLfKR!kIIz%n{b*7<2{Qf) zKb{COCWh+4)@kO?i!%T3(~-Y}@t!x2zdbn*1z7Sjs#+BVSn~7KjNnRMA@ULt^5(56 zd6oE=iF|>`D@49X{j8`o~uR5+j+FDuzVGB`~*X$ zWQ-lzb&e2n@f1Ff2DHAQcxfj^GmL4!zV58D@C# zkTuEkye#I2RXmnhP%?UMJS&56j#IAT!+2M zZQ7AxBeU{GUe9f0EBFUIui-ZY#g}Nc)44U`Ad4UuQnwMHKD>^niO0%o2p<>s|CMyZ zQJ3@=S;xIK=ZzcdBN=r^ajxxpX}BM}=JZDIcF&LFAWF;dZWBS|HiFPK=iMZU0zZa3 z@G~dv2W?7jq)ymzdWj78k+^_^pu7iVQ79yH#%-MtQE9&)Q7$Br4kEQl?760b$a`M< zd0}U{mNQ`|d7fn`UKuO`lMMgkFm+ABsMVuYAkR@iZNriuFj z?y^UJ0UbZ09MTb)+K~gWJ94P)4r1H}DD{!rvy6qKa+VlI!5}~T7$eR-W7k8b!{`xZy9MhN<}QJLVfGaE z>)4xuwIyBul^e8}IXo+Dg(s`T9Z$Y+A4NiWr3)^L`O1p0po_I) zR!!z)!f5{vj?F3WHRDM-9jF6^7a?75O0`^az9kbeXhXHe8>JeyaTdoP;wcqz7mrH( zWq^+@fC!*P%k(W{{B$wVPYv8fkr4Du+;BCol4}RmLwGoWsHCND$Uj0SExj;eea~vVsHzg!3sOwi`yP@a_#NH@^DyT=6NMDS36PSXK%b-*yVaVA%NMSlwD!t z7g6TTXoNI~I`Z4-PW~~G(+4OYpl%WBnNlu9Lmq(R+xV}FSz#5nf9cGQE{&&gD#Rhs zKE7rA-3e62(g|g8DaDoBQ5@gqa*h1%7ETk0OxwdVpz>o}dgFhi`Yn}-9-%VfG#leE zxCsg~ag4&KA7L;MnUX0Z90oT*VJ--TFDOLj;v)E_LS!SW9#}|87((GMA$pGFgs5Ip ziG&Q)|Ue)bQ9) zmMM&7t299U%&7A;;=%MG-C#7Yk)4%brzFljN1}R4VkVoVQB;3(VjjJo7ZoV#!u}Nz zs7$gl7)r&KDQe%@98l0+#$kku4_Zuq9q;{%$|D?G8)eb=u3o)b;-;jVt)$eGr0`6> zMTC;*@+(BvhEdTBVlAnf+CVyY}X3Psj)&!>Tke1Q+%4zd_wpNxxg$S&;8&k(T` zjj{m^=1Js^XHJy6GJwRn6E&OBpv>60wXzmT=E91?IPj3JgS~&3ruPjZ_lSIx$RB{X zqlqb4lJ8UXdqkcwA^wW*>F$&#VIxQ%(Djb>m5qVg90K=5dE zj0>Rp7sXYvl3#+OdRpl(1^QG{CQQTHP~m{OgYGYXCz0EZfahIuHj+oqUNUgfUNVS; zlV(X@xf=lXqptM(J?E>f@(x1^Jh{j~34E&f9uWoAe?r{%iF`oBBk~al?tG*!Pz~~6 zUWmUO=!jFEbdY(wy@L=S0B&n?2Br=(f;wZ3C z{;^3@BG-cH7?y20rPpMo^eWmyZY*K3WkBB@<@m!=hEcg5J2v&%RoIdIuQ9_R zMai2=4l)YGS$EDoAIu7E zQ41Q7(>naN7R()&o2q>NxO_pCXGIh8=T69v%VYU*S;;@#6)%a4VjgpE3P&u8OW-bi zT@#-Zmp{?O<-pv!_*i%61-q}ct{%}IZnRiY33p`R3vj$E+t|b74+m%Bxr--V1rbc} zPqa+SSgt*0LKnspz6fp|&yeLzm|Z3+8PC~cwxBh&w=}B7Xx06{zMI6mfy|sR&Vp_r z>76*8@Z&(-h=RDA^_lI=LZ|8W+?A`p%r z3uh-0VJAePoru8c$YjUqWm!L6TVC#lS#Pkp)J}Gm`!d<;EQ>JhNB*AIPU1`^Q54AK z%_!Mi-tp56Jh}>^rVcC6ru{DtFwm-(C7#+W+Nj%6()OeD4w!M9BRakf zNe6mlfjrd;~L@{@^!y6DQPuNf=d;#TCCrn+?qrl+~n4EwX5b;D`RAwMUy*d`q}^ z%mI|mp`LT0-+}4mkei3Z!&h<+h%h#eeuYn|ucWjsUYOF4ffchJTCL|FFael1!5YVW*`n5E zH1h)h;2|3txgqpzBfX{GTt=l#8f9E?VW^clLo?S8^jyzP!50AhInT{S?H#SI9Wtgp zyhFbVMtpqhM7t|5YNuN5s#cf-)4&;r+OU%A!YqM!G`p%W^6G*%v;fF#o2UPnS20`u zBPLh#3e89ui=$bTy!?+zAMs3P9-Qd&kmZ%K|JxXmTK{Bg;c_B}0GAv`7Q(VBWMaA#;;b04+oxuO_xbIFyNjHRN@!}*?Hq)vVI;LCb*pPy) z7yRK)VQk#=)(f^>7!R?)!bB0Z=Ee$M&l;z#T%B4lfkt`@M4PsBTetaw-e6Z)-Dt4O z%+@V^j#+$;&#)zKvj%S%*O<*Nu}dgj(&cruJ7vIxlg9@9_rIM6eCvNCN(_k&~O{qeE!{#coxGG0W`h@@XMny5W%z8J-s7_YF; zn(nZcnPj*_JGb+iGTy2EfBy|NUc{)KwJ}&YR0?DO+;F<#ZV)@0drsC19KW3n{76Nz zqBLZJkBJ4#&q2ARvfxurm>ignN5!V(*;Q<6Q`BA8%E)wLfKR!kIIz%n{b*7<2{Qf) zKb{COCWh+4)@kO?i!%T3(~-Y}@t!x2zdbn*1z7Sjs#+BVSn~7KjNnRMA@ULt^5(56 zd6oE=iF|>`D@49X{j8`o~uR5+j+FDuzVGB`~*X$ zWQ-lzb&e2n@f1Ff2DHAQcxfj^GmL4!zV58D@C# zkTuEkye#I2RXmnhP%?UMJS&56j#IAT!+2M zZQ7AxBeU{GUe9f0EBFUIui-ZY#g}Nc)44U`Ad4UuQnwMHKD>^niO0%o2p<>s|CMyZ zQJ3@=S;xIK=ZzcdBN=r^ajxxpX}BM}=JZDIcF&LFAWF;dZWBS|HiFPK=iMZU0zZa3 z@G~dv2W?7jq)ymzdWj78k+^_^pu7iVQ79yH#%-MtQE9&)Q7$Br4kEQl?760b$a`M< zd0}U{mNQ`|d7fn`UKuO`lMMgkFm+ABsMVuYAkR@iZNriuFj z?y^UJ0UbZ09MTb)+K~gWJ94P)4r1H}DD{!rvy6qKa+VlI!5}~T7$eR-W7k8b!{`xZy9MhN<}QJLVfGaE z>)4xuwIyBul^e8}IXo+Dg(s`T9Z$Y+A4NiWr3)^L`O1p0po_I) zR!!z)!f5{vj?F3WHRDM-9jF6^7a?75O0`^az9kbeXhXHe8>JeyaTdoP;wcqz7mrH( zWq^+@fC!*P%k(W{{B$wVPYv8fkr4Du+;BCol4}RmLwGoWsHCND$Uj0SExj;eea~vVsHzg!3sOwi`yP@a_#NH@^DyT=6NMDS36PSXK%b-*yVaVA%NMSlwD!t z7g6TTXoNI~I`Z4-PW~~G(+4OYpl%WBnNlu9Lmq(R+xV}FSz#5nf9cGQE{&&gD#Rhs zKE7rA-3e62(g|g8DaDoBQ5@gqa*h1%7ETk0OxwdVpz>o}dgFhi`Yn}-9-%VfG#leE zxCsg~ag4&KA7L;MnUX0Z90oT*VJ--TFDOLj;v)E_LS!SW9#}|87((GMA$pGFgs5Ip ziG&Q)|Ue)bQ9) zmMM&7t299U%&7A;;=%MG-C#7Yk)4%brzFljN1}R4VkVoVQB;3(VjjJo7ZoV#!u}Nz zs7$gl7)r&KDQe%@98l0+#$kku4_Zuq9q;{%$|D?G8)eb=u3o)b;-;jVt)$eGr0`6> zMTC;*@+(BvhEdTBVlAnf+CVyY}X3Psj)&!>Tke1Q+%4zd_wpNxxg$S&;8&k(T` zjj{m^=1Js^XHJy6GJwRn6E&OBpv>60wXzmT=E91?IPj3JgS~&3ruPjZ_lSIx$RB{X zqlqb4lJ8UXdqkcwA^wW*>F$&#VIxQ%(Djb>m5qVg90K=5dE zj0>Rp7sXYvl3#+OdRpl(1^QG{CQQTHP~m{OgYGYXCz0EZfahIuHj+oqUNUgfUNVS; zlV(X@xf=lXqptM(J?E>f@(x1^Jh{j~34E&f9uWoAe?r{%iF`oBBk~al?tG*!Pz~~6 zUWmUO=!jFEbdY(wy@L=S0B&n?2Br=(f;wZ3C z{;^3@BG-cH7?y20rPpMo$5&(V%Il!21)KsDvai@KmNMCF#U7nW>Cq6VGL?a*|KH zkcBEpF>xf3LIim}--2a%=uq7Wi~V*T$8XOs@cV`djqCNa^k&SAsSD^B2|5JpGfl`oBlV{N-)4Up?@# U_MwM3E@x3x!V{RzN_e+^17onFjsO4v literal 0 HcmV?d00001 diff --git a/build/python/__init__.pyo b/build/python/__init__.pyo new file mode 100644 index 0000000000000000000000000000000000000000..d5f63e269a5df0e6fbcc3d66ca4bb32e593cc54d GIT binary patch literal 610 zcmZWm&5qMB5Vq6&y6K9QfU}PjK?6r5gg8(k4!f#oR)8gBWn$5&(V%Il!21)KsDvai@KmNMCF#U7nW>Cq6VGL?a*|KH zkcBEpF>xf3LIim}--2a%=uq7Wi~V*T$8XOs@cV`djqCNa^k&SAsSD^B2|5JpGfl`oBlV{N-)4Up?@# U_MwM3E@x3x!V{RzN_e+^17onFjsO4v literal 0 HcmV?d00001 diff --git a/build/python/binary_serializer.pyc b/build/python/binary_serializer.pyc new file mode 100644 index 0000000000000000000000000000000000000000..224e0a65fb8e0eb2069a0ae7dab4a4f72ba4bbd7 GIT binary patch literal 1897 zcma)6TW{P%6rPK{>s%XX2p2_VkdWF%h$<))get*;l=5N;EN5qS_~=RdBh(^A<5SA2^zHm}s4u}PdJr$%LYwvm}Z z?2=~?#>0JMmCMzBlEwB!rAgs7=W*b1HX6HPS7Eq8+jeL67MIF4)sq9Gp2g|dsNuM9 zYTw{@$Hru8Tg91HJ3n=C{(h~cyQ|`1KF*xV`?${)bgwldYYKx&2USxm8neiZ@5T;x z?AGV8NapQc?jk`QA0)klYc0?THB+~ethwgiH+x^GeqsyPA)Ob5k40SA=?C2=0RO{< zZpF7R{zmDvDw$-iTK>F1AY77XUs;>mO2WQMrY5UAvaFKBc+~Mj31ceW4FmKMc^%GS zW8rL)4Z`-+r{9@ff<1qJymgQd&6XJ^I?nEYvNf<9&J0JUa9g7jcaUdWH~^fYD+ui7 z=%iZ4?97ycs$vBVTMop!^u&r-70dYSEzI?3VYW~>9-7NPwE{v(g4M{jasLHdl)!&$Pe+vH6Hb$H<-31*Wy>7 zvyzuA@-;)eW!Dmv9k22-I2yJH>IBq580!Hh;Qgr6vUEwc*oe`7n)i;XAc~SKaZyx> zY!tR@JU-g7i=R$4RU&=4pk80Awj3|-BUQnuQmF&ct0 zQ~IT+kvI>L=qM4cvUBm^hKzWLZvC_oj#XS4`mwd~Nx0ChFZUZ#%nUK)3$HW z&V`z?QGy3ogo_PHr&55J*P#moiaI^-u?~;ND!Y(2%Je`k?LTq=`{5$i_C-NnSIk3D4`KgwFq$;wpI1820Jon!SU3Cqoc z@EASc$Dod)y*DiMzGK?gtv5`!j2!wi8MZWk&N}T2*s*ShS7Km$ zf`obVF%$X|^!ynH$4WNiQ#N2z;W(`|*Wz4!$fi=uk~>k#8UKK7u~NQ|y;5p{pLZ@v z!%61>LCyp)ywZbjKfc8oTUF}0u}M5i&WuX4bUQVJ*d?za6yrlo=LxaCNF(y@eDo(Z9|G5kMhc!y~ zK*i&%NS(_1@aJ;!Yt6)(++foIYJQ65SaggZ3x{(Y)b{vD$2(YPk)TeFlHSo33NQgP z4=YIz-~J;o|xS2PEOrXmhQp; zX^t*4Xm=*3)h2eAwiKZ9O$=-^@I7%`Y>7?$EN%5@d%008kI{35!PLwQh2|kKLlP^s zr+v&|CULR4bK?Z@?S>*sJ&BP}%3ngoSN%~IL(U*NGXPDfpjlmzCe01hRr0~9ET!Tu z)!;Hxt(MBLqo@!{J&SETHV)Wbm0YXc5=B6&A~#y~GcfgvB$v#o-7XM+h>wlR3u~4F znbYAu=KHnV942``F*z{>;i+HtK3haRX$C2nryYleKwuDu2Qj#qgp0u5VK=mf+;8tVl%5dEanvgD*%Z^YbP~4fdVIcb*9cKmUT#MHTBym_3>)}n-@)({y&(|~xZo}P#NVy<*+)0(zq9bt zldxGdigyLQj#*=Y=s3MHCD?@-FU{|Kz~1tyU&?RUOEqm_N0dJ8J6X0$HuPrVE$^dG z{a5!&zw|WTx1r}?G2>h8Ts*oaBVVFxK}Lpjyo)LHV{7BnaIKf6z1W!)y}kua)B$O> z?G|aS)s&4AT(>-2Z%8_q0_40-T^LZ->2il{H=aZQ58L=iM*m4+<(*{q_yv%g9EyMk zVilRZC+^C#yEk)4>fKI@N=Ai7$yTFioatgj>-8vlRm7wDmv$8CtQSRfo$PyXvgDoK z5nET0i1Rg_poJme-b%36kf|N|pzY+e$x$#!3mfYss~Oa!=MI68{r>@1!K3D2UwwRq JzAl4L{skX`(=Px3 literal 0 HcmV?d00001 diff --git a/build/python/cmake_install.cmake b/build/python/cmake_install.cmake new file mode 100644 index 0000000..bdc965e --- /dev/null +++ b/build/python/cmake_install.cmake @@ -0,0 +1,70 @@ +# Install script for directory: /home/emidan19/gr-tempest/python + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "Release") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "1") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "FALSE") +endif() + +if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/python3/dist-packages/tempest" TYPE FILE FILES + "/home/emidan19/gr-tempest/python/__init__.py" + "/home/emidan19/gr-tempest/python/image_source.py" + "/home/emidan19/gr-tempest/python/message_to_var.py" + "/home/emidan19/gr-tempest/python/tempest_msgbtn.py" + "/home/emidan19/gr-tempest/python/TMDS_image_source.py" + "/home/emidan19/gr-tempest/python/binary_serializer.py" + "/home/emidan19/gr-tempest/python/TMDS_decoder.py" + ) +endif() + +if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/python3/dist-packages/tempest" TYPE FILE FILES + "/home/emidan19/gr-tempest/build/python/__init__.pyc" + "/home/emidan19/gr-tempest/build/python/image_source.pyc" + "/home/emidan19/gr-tempest/build/python/message_to_var.pyc" + "/home/emidan19/gr-tempest/build/python/tempest_msgbtn.pyc" + "/home/emidan19/gr-tempest/build/python/TMDS_image_source.pyc" + "/home/emidan19/gr-tempest/build/python/binary_serializer.pyc" + "/home/emidan19/gr-tempest/build/python/TMDS_decoder.pyc" + "/home/emidan19/gr-tempest/build/python/__init__.pyo" + "/home/emidan19/gr-tempest/build/python/image_source.pyo" + "/home/emidan19/gr-tempest/build/python/message_to_var.pyo" + "/home/emidan19/gr-tempest/build/python/tempest_msgbtn.pyo" + "/home/emidan19/gr-tempest/build/python/TMDS_image_source.pyo" + "/home/emidan19/gr-tempest/build/python/binary_serializer.pyo" + "/home/emidan19/gr-tempest/build/python/TMDS_decoder.pyo" + ) +endif() + diff --git a/build/python/image_source.pyc b/build/python/image_source.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c6be3a0353d375f1fd66299ca198de607ff153f2 GIT binary patch literal 1990 zcmZ8iO>f*b5T&S()vni$lQ?k_w1Ham&;^pXUqDebErJ$k5}{8(4kQxrDc{8J*HaABMZR@u$v%kiS z{Y{gz&BNp#y8Z?rm~cuK)5uF_!DH@_?3V7ri#;oQkp0+q*nK8^5xig`kh}<CI%9Gt zvb*+QIq*p~0IVCy0s6P-S^x|yoPu|tPB7yZ-pmpFSCG{?9ZUQ!00x~49CXl1!p;K@ zJ0CcL%&&pq8w|4zthsMyJ5yIN z{PWS?yk5vXxyVIYef-7VOx-qe(MWCf8XF{gtGlkk>rQj5D5-9v>vsUm2_23n_&4wa z=k2rQY&j=a&TUM!(8|PQbVM zm~T5{=VbR>oV<B0wxEDnBX&Oaet;rQRiYkKiT& zrI!8fwZAsOOsF%XBtac%OOnS)@=KeRuip%kMATW5tcrrYrM*5Sv%RnSfFvpjXTY*Z>G?jo zrYaITUf?-+c(@&2UlqnsZQxBD&Z<_WBCl;FjNL~Mzqb)@Lt71@V%5)>x2Mq=eRy|u Q@2|<7n*1B$qw(f*b5T&S()vni$lQ?k_w1Ham&;^pXUqDebErJ$k5}{8(4kQxrDc{8J*HaABMZR@u$v%kiS z{Y{gz&BNp#y8Z?rm~cuK)5uF_!DH@_?3V7ri#;oQkp0+q*nK8^5xig`kh}<CI%9Gt zvb*+QIq*p~0IVCy0s6P-S^x|yoPu|tPB7yZ-pmpFSCG{?9ZUQ!00x~49CXl1!p;K@ zJ0CcL%&&pq8w|4zthsMyJ5yIN z{PWS?yk5vXxyVIYef-7VOx-qe(MWCf8XF{gtGlkk>rQj5D5-9v>vsUm2_23n_&4wa z=k2rQY&j=a&TUM!(8|PQbVM zm~T5{=VbR>oV<B0wxEDnBX&Oaet;rQRiYkKiT& zrI!8fwZAsOOsF%XBtac%OOnS)@=KeRuip%kMATW5tcrrYrM*5Sv%RnSfFvpjXTY*Z>G?jo zrYaITUf?-+c(@&2UlqnsZQxBD&Z<_WBCl;FjNL~Mzqb)@Lt71@V%5)>x2Mq=eRy|u Q@2|<7n*1B$qw(B(7zu{|#GvDyp@$rB_`{LPy;#v~&295nDz<3Da z?}IYL(2A&SPZb55RjlTUQ}TouZp15MgyrYrC0B`|Kawo@1NM<=Mmsih1>*h2z<3Da z?}4%ePgKlM#SJt36;Z+nlR%%C)byZFjWm7edu9Mvf z@WGYMY<$|f@k!Md^YQx&V^jY4R z%DV3Mo}o{dO%ckr$yg`6txjDJe*HUfL+JjzKRIh_JF#_X^5)y`CNp;@*m_}om@F>C zS=&r@E^Om{cX8=3XkUZ)5hy|>Wt0*2HWeuy(W_4nHteodU|@C)G0I~QkB$V0w4tAq zm&hPCbri;cLAZoiM5XBPw^J)kIeP_k1Y}GNW?8MKlo8JNCW4`ItCkH;^ z{CiwL&L<$zpVt5aS<@Bd+Fb);h<;^&ctjkK00F*l=!$Ka|K;5X`(Ok(bFfByFp_LX z+%>Q%MZHep#NO(LZ;@N+R1KXyb=IG0mj|ol(~HuVCl%1_=}DD0bCo{d_VW47OeP(a zI8;yR^&&5w;zf?ixQ^Kut`BpO4yq67-6lK}G29&o4t0EPFFSsbR|g?>_=I2u`!7Ke zI>3*8Oh^APHhRnW=x-)Qf3YN`S6>~({=cYMV7hk=F-pt@CMLcrZ2D95A*0c~1AlI6uuKmKjzil-WS*x;4uR@lfj*%e=ao>1hoQiq?_o?iQRH@9SRe@5uOvNM!k7>){U= MWsh|yq1=Y-UySZx_y7O^ literal 0 HcmV?d00001 diff --git a/build/python/message_to_var.pyo b/build/python/message_to_var.pyo new file mode 100644 index 0000000000000000000000000000000000000000..2d90cd81ea468a52a9150aaa96de092d8a2ee08d GIT binary patch literal 1476 zcmZ`(JC7ST5aw%Fluj25iGe(jLO{|i5L=GB08U`ogB(7zu{|#GvDyp@$rB_`{LPy;#v~&295nDz<3Da z?}IYL(2A&SPZb55RjlTUQ}TouZp15MgyrYrC0B`|Kawo@1NM<=Mmsih1>*h2z<3Da z?}4%ePgKlM#SJt36;Z+nlR%%C)byZFjWm7edu9Mvf z@WGYMY<$|f@k!Md^YQx&V^jY4R z%DV3Mo}o{dO%ckr$yg`6txjDJe*HUfL+JjzKRIh_JF#_X^5)y`CNp;@*m_}om@F>C zS=&r@E^Om{cX8=3XkUZ)5hy|>Wt0*2HWeuy(W_4nHteodU|@C)G0I~QkB$V0w4tAq zm&hPCbri;cLAZoiM5XBPw^J)kIeP_k1Y}GNW?8MKlo8JNCW4`ItCkH;^ z{CiwL&L<$zpVt5aS<@Bd+Fb);h<;^&ctjkK00F*l=!$Ka|K;5X`(Ok(bFfByFp_LX z+%>Q%MZHep#NO(LZ;@N+R1KXyb=IG0mj|ol(~HuVCl%1_=}DD0bCo{d_VW47OeP(a zI8;yR^&&5w;zf?ixQ^Kut`BpO4yq67-6lK}G29&o4t0EPFFSsbR|g?>_=I2u`!7Ke zI>3*8Oh^APHhRnW=x-)Qf3YN`S6>~({=cYMV7hk=F-pt@CMLcrZ2D95A*0c~1AlI6uuKmKjzil-WS*x;4uR@lfj*%e=ao>1hoQiq?_o?iQRH@9SRe@5uOvNM!k7>){U= MWsh|yq1=Y-UySZx_y7O^ literal 0 HcmV?d00001 diff --git a/build/python/qa_Hsync_test.sh b/build/python/qa_Hsync_test.sh new file mode 100755 index 0000000..4784ba3 --- /dev/null +++ b/build/python/qa_Hsync_test.sh @@ -0,0 +1,9 @@ +#!/usr/bin/sh +export VOLK_GENERIC=1 +export GR_DONT_LOAD_PREFS=1 +export srcdir="/home/emidan19/gr-tempest/python" +export GR_CONF_CONTROLPORT_ON=False +export PATH="/home/emidan19/gr-tempest/build/python":$PATH +export LD_LIBRARY_PATH="":$LD_LIBRARY_PATH +export PYTHONPATH=/home/emidan19/gr-tempest/build/swig:$PYTHONPATH +/usr/bin/python3 /home/emidan19/gr-tempest/python/qa_Hsync.py diff --git a/build/python/qa_TMDS_image_source_test.sh b/build/python/qa_TMDS_image_source_test.sh new file mode 100755 index 0000000..7d0a4ff --- /dev/null +++ b/build/python/qa_TMDS_image_source_test.sh @@ -0,0 +1,9 @@ +#!/usr/bin/sh +export VOLK_GENERIC=1 +export GR_DONT_LOAD_PREFS=1 +export srcdir="/home/emidan19/gr-tempest/python" +export GR_CONF_CONTROLPORT_ON=False +export PATH="/home/emidan19/gr-tempest/build/python":$PATH +export LD_LIBRARY_PATH="":$LD_LIBRARY_PATH +export PYTHONPATH=/home/emidan19/gr-tempest/build/swig:$PYTHONPATH +/usr/bin/python3 /home/emidan19/gr-tempest/python/qa_TMDS_image_source.py diff --git a/build/python/qa_binary_serializer_test.sh b/build/python/qa_binary_serializer_test.sh new file mode 100755 index 0000000..511593e --- /dev/null +++ b/build/python/qa_binary_serializer_test.sh @@ -0,0 +1,9 @@ +#!/usr/bin/sh +export VOLK_GENERIC=1 +export GR_DONT_LOAD_PREFS=1 +export srcdir="/home/emidan19/gr-tempest/python" +export GR_CONF_CONTROLPORT_ON=False +export PATH="/home/emidan19/gr-tempest/build/python":$PATH +export LD_LIBRARY_PATH="":$LD_LIBRARY_PATH +export PYTHONPATH=/home/emidan19/gr-tempest/build/swig:$PYTHONPATH +/usr/bin/python3 /home/emidan19/gr-tempest/python/qa_binary_serializer.py diff --git a/build/python/qa_fft_peak_fine_sampling_sync_test.sh b/build/python/qa_fft_peak_fine_sampling_sync_test.sh new file mode 100755 index 0000000..b374bb0 --- /dev/null +++ b/build/python/qa_fft_peak_fine_sampling_sync_test.sh @@ -0,0 +1,9 @@ +#!/usr/bin/sh +export VOLK_GENERIC=1 +export GR_DONT_LOAD_PREFS=1 +export srcdir="/home/emidan19/gr-tempest/python" +export GR_CONF_CONTROLPORT_ON=False +export PATH="/home/emidan19/gr-tempest/build/python":$PATH +export LD_LIBRARY_PATH="":$LD_LIBRARY_PATH +export PYTHONPATH=/home/emidan19/gr-tempest/build/swig:$PYTHONPATH +/usr/bin/python3 /home/emidan19/gr-tempest/python/qa_fft_peak_fine_sampling_sync.py diff --git a/build/python/qa_fine_sampling_synchronization_test.sh b/build/python/qa_fine_sampling_synchronization_test.sh new file mode 100755 index 0000000..42b05cc --- /dev/null +++ b/build/python/qa_fine_sampling_synchronization_test.sh @@ -0,0 +1,9 @@ +#!/usr/bin/sh +export VOLK_GENERIC=1 +export GR_DONT_LOAD_PREFS=1 +export srcdir="/home/emidan19/gr-tempest/python" +export GR_CONF_CONTROLPORT_ON=False +export PATH="/home/emidan19/gr-tempest/build/python":$PATH +export LD_LIBRARY_PATH="":$LD_LIBRARY_PATH +export PYTHONPATH=/home/emidan19/gr-tempest/build/swig:$PYTHONPATH +/usr/bin/python3 /home/emidan19/gr-tempest/python/qa_fine_sampling_synchronization.py diff --git a/build/python/qa_frame_drop_test.sh b/build/python/qa_frame_drop_test.sh new file mode 100755 index 0000000..1f5914b --- /dev/null +++ b/build/python/qa_frame_drop_test.sh @@ -0,0 +1,9 @@ +#!/usr/bin/sh +export VOLK_GENERIC=1 +export GR_DONT_LOAD_PREFS=1 +export srcdir="/home/emidan19/gr-tempest/python" +export GR_CONF_CONTROLPORT_ON=False +export PATH="/home/emidan19/gr-tempest/build/python":$PATH +export LD_LIBRARY_PATH="":$LD_LIBRARY_PATH +export PYTHONPATH=/home/emidan19/gr-tempest/build/swig:$PYTHONPATH +/usr/bin/python3 /home/emidan19/gr-tempest/python/qa_frame_drop.py diff --git a/build/python/qa_framing_test.sh b/build/python/qa_framing_test.sh new file mode 100755 index 0000000..12b227e --- /dev/null +++ b/build/python/qa_framing_test.sh @@ -0,0 +1,9 @@ +#!/usr/bin/sh +export VOLK_GENERIC=1 +export GR_DONT_LOAD_PREFS=1 +export srcdir="/home/emidan19/gr-tempest/python" +export GR_CONF_CONTROLPORT_ON=False +export PATH="/home/emidan19/gr-tempest/build/python":$PATH +export LD_LIBRARY_PATH="":$LD_LIBRARY_PATH +export PYTHONPATH=/home/emidan19/gr-tempest/build/swig:$PYTHONPATH +/usr/bin/python3 /home/emidan19/gr-tempest/python/qa_framing.py diff --git a/build/python/qa_image_source_test.sh b/build/python/qa_image_source_test.sh new file mode 100755 index 0000000..7139845 --- /dev/null +++ b/build/python/qa_image_source_test.sh @@ -0,0 +1,9 @@ +#!/usr/bin/sh +export VOLK_GENERIC=1 +export GR_DONT_LOAD_PREFS=1 +export srcdir="/home/emidan19/gr-tempest/python" +export GR_CONF_CONTROLPORT_ON=False +export PATH="/home/emidan19/gr-tempest/build/python":$PATH +export LD_LIBRARY_PATH="":$LD_LIBRARY_PATH +export PYTHONPATH=/home/emidan19/gr-tempest/build/swig:$PYTHONPATH +/usr/bin/python3 /home/emidan19/gr-tempest/python/qa_image_source.py diff --git a/build/python/qa_infer_resolution_test.sh b/build/python/qa_infer_resolution_test.sh new file mode 100755 index 0000000..d55d6e5 --- /dev/null +++ b/build/python/qa_infer_resolution_test.sh @@ -0,0 +1,9 @@ +#!/usr/bin/sh +export VOLK_GENERIC=1 +export GR_DONT_LOAD_PREFS=1 +export srcdir="/home/emidan19/gr-tempest/python" +export GR_CONF_CONTROLPORT_ON=False +export PATH="/home/emidan19/gr-tempest/build/python":$PATH +export LD_LIBRARY_PATH="":$LD_LIBRARY_PATH +export PYTHONPATH=/home/emidan19/gr-tempest/build/swig:$PYTHONPATH +/usr/bin/python3 /home/emidan19/gr-tempest/python/qa_infer_resolution.py diff --git a/build/python/qa_infer_screen_resolution_test.sh b/build/python/qa_infer_screen_resolution_test.sh new file mode 100755 index 0000000..544e152 --- /dev/null +++ b/build/python/qa_infer_screen_resolution_test.sh @@ -0,0 +1,9 @@ +#!/usr/bin/sh +export VOLK_GENERIC=1 +export GR_DONT_LOAD_PREFS=1 +export srcdir="/home/emidan19/gr-tempest/python" +export GR_CONF_CONTROLPORT_ON=False +export PATH="/home/emidan19/gr-tempest/build/python":$PATH +export LD_LIBRARY_PATH="":$LD_LIBRARY_PATH +export PYTHONPATH=/home/emidan19/gr-tempest/build/swig:$PYTHONPATH +/usr/bin/python3 /home/emidan19/gr-tempest/python/qa_infer_screen_resolution.py diff --git a/build/python/qa_normalize_flow_test.sh b/build/python/qa_normalize_flow_test.sh new file mode 100755 index 0000000..4497d1a --- /dev/null +++ b/build/python/qa_normalize_flow_test.sh @@ -0,0 +1,9 @@ +#!/usr/bin/sh +export VOLK_GENERIC=1 +export GR_DONT_LOAD_PREFS=1 +export srcdir="/home/emidan19/gr-tempest/python" +export GR_CONF_CONTROLPORT_ON=False +export PATH="/home/emidan19/gr-tempest/build/python":$PATH +export LD_LIBRARY_PATH="":$LD_LIBRARY_PATH +export PYTHONPATH=/home/emidan19/gr-tempest/build/swig:$PYTHONPATH +/usr/bin/python3 /home/emidan19/gr-tempest/python/qa_normalize_flow.py diff --git a/build/python/qa_sampling_synchronization_test.sh b/build/python/qa_sampling_synchronization_test.sh new file mode 100755 index 0000000..2a2c24a --- /dev/null +++ b/build/python/qa_sampling_synchronization_test.sh @@ -0,0 +1,9 @@ +#!/usr/bin/sh +export VOLK_GENERIC=1 +export GR_DONT_LOAD_PREFS=1 +export srcdir="/home/emidan19/gr-tempest/python" +export GR_CONF_CONTROLPORT_ON=False +export PATH="/home/emidan19/gr-tempest/build/python":$PATH +export LD_LIBRARY_PATH="":$LD_LIBRARY_PATH +export PYTHONPATH=/home/emidan19/gr-tempest/build/swig:$PYTHONPATH +/usr/bin/python3 /home/emidan19/gr-tempest/python/qa_sampling_synchronization.py diff --git a/build/python/qa_ssamp_correction_test.sh b/build/python/qa_ssamp_correction_test.sh new file mode 100755 index 0000000..8a0c588 --- /dev/null +++ b/build/python/qa_ssamp_correction_test.sh @@ -0,0 +1,9 @@ +#!/usr/bin/sh +export VOLK_GENERIC=1 +export GR_DONT_LOAD_PREFS=1 +export srcdir="/home/emidan19/gr-tempest/python" +export GR_CONF_CONTROLPORT_ON=False +export PATH="/home/emidan19/gr-tempest/build/python":$PATH +export LD_LIBRARY_PATH="":$LD_LIBRARY_PATH +export PYTHONPATH=/home/emidan19/gr-tempest/build/swig:$PYTHONPATH +/usr/bin/python3 /home/emidan19/gr-tempest/python/qa_ssamp_correction.py diff --git a/build/python/qa_sync_detector_test.sh b/build/python/qa_sync_detector_test.sh new file mode 100755 index 0000000..9dcd684 --- /dev/null +++ b/build/python/qa_sync_detector_test.sh @@ -0,0 +1,9 @@ +#!/usr/bin/sh +export VOLK_GENERIC=1 +export GR_DONT_LOAD_PREFS=1 +export srcdir="/home/emidan19/gr-tempest/python" +export GR_CONF_CONTROLPORT_ON=False +export PATH="/home/emidan19/gr-tempest/build/python":$PATH +export LD_LIBRARY_PATH="":$LD_LIBRARY_PATH +export PYTHONPATH=/home/emidan19/gr-tempest/build/swig:$PYTHONPATH +/usr/bin/python3 /home/emidan19/gr-tempest/python/qa_sync_detector.py diff --git a/build/python/qa_tempest_msgbtn_test.sh b/build/python/qa_tempest_msgbtn_test.sh new file mode 100755 index 0000000..96f1007 --- /dev/null +++ b/build/python/qa_tempest_msgbtn_test.sh @@ -0,0 +1,9 @@ +#!/usr/bin/sh +export VOLK_GENERIC=1 +export GR_DONT_LOAD_PREFS=1 +export srcdir="/home/emidan19/gr-tempest/python" +export GR_CONF_CONTROLPORT_ON=False +export PATH="/home/emidan19/gr-tempest/build/python":$PATH +export LD_LIBRARY_PATH="":$LD_LIBRARY_PATH +export PYTHONPATH=/home/emidan19/gr-tempest/build/swig:$PYTHONPATH +/usr/bin/python3 /home/emidan19/gr-tempest/python/qa_tempest_msgbtn.py diff --git a/build/python/tempest_msgbtn.pyc b/build/python/tempest_msgbtn.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bf944ba406fd77fb09096e290080157eedf0a0ad GIT binary patch literal 1642 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

mpOUtf@IUF$JSF;j$-<_HF29;Sy+(Ijz7= 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∈9_y1jP@AD7x-1A>J=f?WrQ&P@mB^X7sxUjWX0X*l<5BF{a~z&ZC< zIQ#E<`X9>eeV(F+b7S?5`1;1V3E_O+x8TfYfHVINocouN+xt{Oo_p4Wb8Ztj`&)bZ zJIU>RdZCANhr&5`6r9gH1&MgRMe+f^2dAYq$b@Xs<6FBF#f%85+;LP`fGd~>8{in+9 zedZv~Jr}?^cNLud>pcD6%k6#kpoeo$!a4UGoX>j$&is8i^H1R1Ki+`g{buj;hTQ%< zEjgTXGs4-Q!_%KnZtqj{f6;Xx@L$h+|M-)vWTiqOCs_@SR0v7-rpP8rnIXw2Gm;$= zLWC$=5|R}<2^pEm%E-u;$olDgp6BT_jr!?tFO*=uD^>M@3Sjz z->$g(9)?@r8@IkM?)(>o=lfhny>niL+jk^x{^&yfJ>mI2!>xY_xBhM1`M(O!_xX`}=bVq* zckwf;@6G(W;W>Y$@O+=u$g%HwxP3Rm-FFMz`fYLR_rRV1@bEnU(bPL}@0_3E_Wc1j|JOqP-{JW_OPy7H zhxToV+jkAzeK)|Z-x#-kOWgVQ4A1x3k9y}k7`N|HxcMg(^81J9`ujp-xRmL z1@8P?h3EThPrY;Qg4?$nZvG*K{GQ?YKF5(`-!pLgo`<{d<+%03aqCCn&Obgp-)9o_ z&iM>(-_0G8&?ws4< z=I199um$F08tcm7+$^Za*F@0|DJ_I(^Te{v!Jh46fz z*T}K&hq!&`;O_eqZvF4L^-G>x>%V_3{P&yAzgl>{&%da5&UJD7w!zKcypZ21Jl|(0 za_rj;x9_32`yPW^-xs(3Ox*d0hUfcSN4<02gxhy4ZvF#>{71s`eV!u6zAxkUeG_-z zk8$h2#I64scmAc$tGugxpB2LM|9qnXZr`FKnZcW1TcWD-$@797G@3s-{9X7}9yIXkfyASo|AAp;Ge8JBu z_~p3sToaz>xiLK7;dXMIb1d$hkK^{89G?5W5T5(KMvi^o!tFa7x9`00-1krF&0qF{ z>bo+3W!!hz6t{jo-1=6yb8a1;=iHHc=iC>!?;*H-kH)P(3Ag^V@P*%{&OiS(Yl+HT z&ZNHeiq+rO7vSbxTFAMQdULMF&AFwJGn#sH?#0a+U&wikdUKw^&6!%rd6{~1-o(wB zRml06dUL+S&H28NGmm<6{>06xGr01d^LJk+eBoO#XC>U6RSP+5P;bsUxH+u~IU7@N z&gQr|oeDYIQ*X}hxH*wRnU-!bwJJ0v2AHMLNJLf96eb>g# zZ&AqKI6U8Hb8_svBW~Y4arZq4x4s8%eIMNU&kfJ_xrln_yd1ah2;BTph5Rw$`92Sj zW8Wun`%b~#_jTO*nYi_z;m-eSc)m}qA(eNP-_H`beOJQGUo|}EHx1ACS&tm=(+;=q zR=E4_j9b4qZvDZy^Pdo&=RcKt=NyRJcL;9&6@~oa;rTuz$+7P}xP8at?)x-u{Z!og z8MyO*9-i;>E%na%6K>zXar2kFsOFz<%Z2CrGz`!0c5U3gEphkV6t{kB-1=Q`=RYJo z-{(l`z0WbYef#6)pIOL1KRn;(QgZA&0=Mt2xclCRTR#D}{u$i)-w4n5nMJ*GevI4q z8{GV#3;Dl?=ld*vam_#XR>JMO8t%U9;MTXst=|lH{$0ac{4;aOZy@Jm2S0>Yeim+`cd1=D%9Ve>*(i=RYej$+`fkzJS~JHQasQ$F2VixBh$F`4_*u@~-lImJQE;&R-F? z@9MbuYZvlcgy;LTA;Yej1+`e_MsQKsHO5r(w)$n|uwaBsW zhPZv(Vv#kZ#obKc_tuH|NMg&N0-R(-$}A^g_;A)SELH zH|MfK&Q;W#GXghfR3YaM>dmwBREOeh=-xYtVId9PK&^F7xh z$9>nq-FGA0zMaE!-(9FTe^1=}qYHj&!7swS=kS7$#J%TO+`S$M&wD)*p6~e-Iqv%$ z?!MD;`+gjr`+iBi`QPH^FFmaKPV`0vUmy3L?FzmX?mc(H-D}VAyjQpIe9uG4ao--e zdmWG4_nh$DcL??7Uxu51XTcvX_dkM3d(RyTzE8n>;okG)f)BvG=V08uE(_0l4GYirypbID9fiB^-MD?9 z49|V1P;dT=xcQ$I{HKC1KD_$fou^TFo@Y(!oo8*_c{ak$Z(qpYDm>qLdvfgC6}Rs} zxZk}uZv6?k^=IJDe_43G&o$IL=Lp=sci`sVTgV?Dp6@e>9Q#hg?fW|Jz8~P$e~w%K z1Md8FuC2VQe4l#Z|L4!ExP8~a&2L`FZyBENvk5ugXB*tUJLB%VFK+!Ixb;Wj&OabL z-)9i@&N&3P?=al_8w&ZihUfd-MUH(R#qIkv?!GVK*1v&U{~_-DpNHrBd=sAMpGS`K zFTkB=sq3mg_x$@vgMzP)JO96M=WiRH=iicg=iCN&&O>nXdlvGK4bS&EnH>9`hTHc7 z+`iX^=e=&B-u(M;^C#fmb24uIG~D{PaO>w3d_L}8e}(70mbkw1PVzmM3(r5t>f_GS z9Jg=F@Z7gec<$SQ9Phj}Zr@#T`yLve`}U&V{C>Fk198905ZwBqxb@fI&N(JL&-noL z&iN#6-zm6#U&pPViCg~}?woVO^PE40=kNGCInG~eMD^#A^VG-fyIOeeyH!;$@ z&%m8?W_X_Sofn?_{t=%0*156z4(+=PZr_Hueb*1qeg93p`5kfdcfh@K7u@;-aqADm zowILvp7RXqopT6o-=VmDZ^W&?9k>2|+&L$N=Q*DU&)@NRa-4q}?mV+_`+gFh`+gOk z`~FCdedpu$UHqo%d$Vt&@Z5Jz>dkM3o8K1q&Yf`UcfzgT9e2*|;d#!ZsCUl(xP8yU z?Rzn9{Z+X2H{s5Cdw8Dn?(qB_A0o&3AH|(#8gAd$!gJqu!gJq`$g%HdxP5=X?OSJL zrcm>^PKQJ=Y`?t5&HoGc&UJ68`MuT0tzQLq&KBW$ z&NkFLXD8e_cf#$v4{rUzxb?kp=j;=n=R74mf5$V)asKmg=NX3E_lEG?_tx;-_bzhm zdp~a9$8q~k56^wyqTc*Zar5Wm-uYMD`dXuE{r9hhe}A-o3EVkX4bO9~MZI%wh}*Y4 zZr{$h^}FEK?~6O$v z_kE6f^Iyl!pNV_t&vEO&#jXDdcg`hmt-QB9=knqC&uOdU_HB;a_ushno8i`Pi#z8o z;d#!z!)yPuhX0(j1IY2thvLq2B5vPP!*k!W!fU6#gUPY)CAfXB#qE1ncU=QnWcXW`a=j63Jg;d#zKsCUk~w^iQT!gpog`nY}9#I0W!w|-;XIX4T>b8a18 zJAKC;$#MSOaOXJ`x9^eRx$kk|xoY!II3Y!aTo zxPAMD=e`4}H~(VX{Ht)k%Shb%J8Yeiq+`hAL`+k92|2=N~@3?c; zzN7Nq@|??r=kK^uc%6U#pE-Xc+MtJVqJUsVpMUH(p#_hWmZr{DabKm``H@_EdejnUBpMhI{9&Y`G zxO0vO&vV{Ny>mW*+xJo2zR%&-zl2-=Htw7sgy%Uw3(w#28*-fgN8EYpjH$jW`z{-v z`_>Q7eH)Ww-=?^ITjKWZ7@qs?K)w0<;N~BUd*`EY>rce3KLvNrA>nz>q0~F)NZh`6 z;PxGdTR#!E{(0OvUkcB2&Ir%n@jY^!|0CRae#GtjTX^nUYi#Ac<-SXY=f7_*hue2G z+`g^CbKkbqyH{u2{9SPG+zq$>P~7?+xO4Uo&vTwdy>niQ+jkgl-&=6&$KcjKggfWN z@I2=;;rTnhK#ucI$DQXR+`eo&)@M8 za-4q>?mW|R`@R|8BK4gWp8I}Ej(xwx?K=;*@6vZy-c^g#cg67h^KDJs{B?2f+y=M4 z18)7+xN~+1&vPC~y>~bYx9^F#eFx&!pO0IA1@4@~!}FXsh3D@$njGi93wNGLxP6}u z&wZzb=f1C#W8b%N`+kDk_m}Y8_b=+ruXj)7y)ArK<~P8-^IEv|>*Ln9#+|cMc%E}7 z>YcM2Zr?+3`yPW^-xs(3Ox!uo56^R65}v=~)#Nz;b-44~h1>VR@Z9&&@Z9%la_sv& zZr|5%`+gdp`_84_`~|rAwePLIEAPBKZha%%`X;z@ZWx~DY)`#&Zim})58?KG3b*g;;koZj>dpTG zH~)LwJO6=OU+2D>-`g^{bFLnq=WI^BbGE_l+W~jZ9dPUSz^y+3ch2tNdCuP9`8%FK zj`R1!oo6s^-^;>t-(lgo?~UZxcNA{ldvW_d9iID6rQZCvaPvRFz4KSN^*`d)&&Qp! z?){bbmglS=p8uS-7H;45ar?H#t=|&2en;Fn_Xy8(?i-%J<00gD=Ob|E>4)2QKzQzZ zUU=?%F*)|V0=MrCxP9*n&wVFQZ~k+*`7hz#`5oN)k8tZh!=3Zj@H}U&2dY2EoO5~H zzKwAEHp8uNfm`1Wcg`)t^PJm;=kK^HInKWq?mS1}_B}d0_dPK@_dSgq`<{v0_afZB zH-_iFw^MKaINbb+xObj{TR$DQeg^KGpNHo;zop(e|G@2A=fUcGv+s(y^{e96uZ=rr zi|{<>#^L!pZcdK#cf_4%FWkQSh3CG9hUdP$$g%ISxP4E>?R#-}?t2yW=HG&wKL+>C z<8kXJ;nqKcJLenWdCpnXJLgxpeSgI5`xkEglH+QAZ!6)>xoUWxvuSw#j_Z-*{H<{3 z>4@8R`|#X%xA5F|A9Cz_0B+wSar>SYp8K9dz4@2p<`2jHF1O;=--TO$Kkl59!}FZe zsCUkHaQl9Q+jlN*{m;1df8)-%S{{2d#H=RdzS#+|1XZr@G9^L;vm=f0iE z@oqcf_U($>w^w-X+lPAd2jb?Rk9+5#xb@fJ*58CX=L6w+&PS(d;f{J_5Z=$YkGLz>&@_d&-cl3-`TkP&c*HfcX;l*)Wg+xVtzf`{Iv?c zalv=Tz0bb5_w0#Ve-iFqr-kRe&JNG_ypSCCy%cxf;kbRrhUdNyQg8kQ-27<;f3M*4 zaqsgt?md^EQ2oBvH^JSjS$N)SgYbOMjmdG}_PG0Y!tL8NJoi0_dh@&E=JzZ31qC04 zd!Mnm_k0w${(0QJUJB29%?Qu;e2*OW{Rns8uW_XFI0zrgMLdwA}<_+!=gVE)p$`KuSab-{PWz0cmb z_w0^ae?0D9{lfEJ1H$t?2a)5xLvZ)K3b*g*@Z9%a>dhaAn?I%CZx{S0-242Fd(XNP ztKZl9RdDxOGd%CLPI$g&YjWJT4eq{M;`ZG$Jonv?dh-v)%|Ef==N9}L-22>K@OyCY z{0Qz|Plo5co)6FWe3=~geI0k-&v5(x8lL;sdc67`%wGaGf3by^aXa zdmSB~?|BkA?%N-C--~ej-WZn?*D82h+~&xvsNZH?QvQ+V#X6ZPJ6cijBL3*NWjgK_V9O~G%%z2_L*z3vasdrb(>_k5BZ z_k9+3-?wo4ei@$o{y@F?zu@NAeWuob|H}V+(M<}z5$-)Z7JLWXd+v?9*Z$#oufxLg zJ$sYmzQ^J2dp2(0tHN{N5!9Q1Gj9Gv1%IyK@8I5ZPQky!z2^ely%w8X`M!CtrNi?* zR}9a;-y7oYyFPB;Ey8o(ZK?O3JK^RZT=3%yelG4khZg)g+kEk;_mwzZr@MCbKkktoBsoD{u0mD{QJF8!CT=SbYWMu+FU?g`KL z98Zq>K8CyROSpYM49|V%P;dTR-27V4*Zli^rGl@6d(XB7-xBwpJL2xOM|j?A-|&3T zL&$O8BXIXU1-I{z@Z5JO_2yrLn?JVT6AL~a_nz+;{4?BpeviA?{P4WjU*Y+lOHQf2 z2lrhTci%N}`)(Yb`)*FX`5kfdyA-@f!B54#=iq{0j(gARare3(|1)=SBtJ6!)H;arfFeJnywvc)sWUFfE@cCire>C+`eap=e-6~Z~idc{2Oua zIR>}>0o?jYxb-g={C(WLJ`K-%eI1_f`4c(r`z!7|OT18hKfbs61#gVIZ&Td)+l1%& zJ5cYOTjS1o5N`evh5Vz#^L`wqhGJ3Kt^HIjPs@4?L-w-yC&gS+phxbyE4-r}Em{O5#p zq24+7!=3YF-25}bTcrGR!}EPEBFDa$#CT_1OzcDV1YbHR7P-FHvi`Hu+C z^B+UKbDn@Z=OwuLR~7QF56|}*MUH*%!0r1GZr>^4d9Ufzn?DOT|5Mz1eve!KD{g(A zmlnRB%KNdtVZqnI-K$l2-fNTae9tY&ao)YbiZ(s0zarZhnJnz*b zJm2$Ja@_Ys+o8#uU!oBBaxb>ZI>vzMgKcwKtk z4bOXRNWJ-6;^uFMd(XXa>-Wd4?}=M~O2IF{-Rsiuyw}y?`JOkB{zTmRfw=XT75paLy>1WBd)*zL@A(ip?)xb2JkR64x7Q0k6L;Saap(Ur zJkP&?dguHbcg`lS*Zkg^h3EVY!t;GLCda<*arB&%v!9 zf?Gcfw|;cNAI9BlQh46$+3Z(F zD!6lQf}7u=kiSiMzR%9&c%MCR`yPbbw@-NfF8!%D|9ss1OL6ac9d7+Cxb^qo)<043 zmvQ%cBRuc*UUCjP(d**wy8`a~&BF8iEvR?Sjd17O6*s?2 zA^(8ze4oR~v2QQjz9-}M9UPwbx}19RZ^X^N9rvCO;MPBiTmKwx{hI~<40o@&;d!s0 z!t*_UC&ztjy;*%f&a)iuyJ}qUX1M#VhdY0V@H~HK>YZ~(+&O#T<{wkYKPf!l=X7%H zdlqirOK|&+49|PrLB09oaq}nP-g7E${j0e3vvBLbDfpkbd)0ZX=D!~;8=mjEa(Mpx z)T+4itb_aB+7!G4?!H^&&fg_Gf0qNP_q!a1JLdr0{PPO=7lr5hTuF|7hvW9W4Y%)v z@VwWP)SLejZvGp%_xuRA{tMjtpK^=lNoHSS(*!}DHSgy(y1OOE^Qggei^xbN+Vf**ss?+Li` zpBJ9zznFUGyaIR5yK(c!74jbo&-ZzT9Q#he?K=av@8{upuWzY0{}0^!I`7u}epbY- zUlsTM&2j776?}W#y><)Fdvy)Z_dJLk_w9~5&+)kL?Tmt-hr92Exbu$)&-33(y>s4) zJLj{w`O^yduZ8FPyi1OKKfvw#HE!R(!t-8B&aA#4^Bdsiua0}q^>OR}ja$DZZvE~B zKLmHLp5b|~W5e@3PbSBGPs5$(0^Ij@Rl!H#?t3%t{Nuv&{1d5n&Zltad=EE&b|L@E z@O+;i$g%G)xP2FYulj!M+bBHmwI=oEx5CYDi+j&bxb-{X*6)K`e`LW=!QE?Mc;0JJ zc)sT)rn+kKoQfEj-WvI`z)^Htw81;pQ(W@=o%7mI=@Q zerkE#zD;oZZWx~TYEQj;ZHJq`8}2>#$F1*e9y9w@I zJA~)Hdr)uw!MOQ7aqoE|ZvAPv_2=W(UsLeWxO?3bp7(kvJm2$ia@_Z6+<9KceQz@h zJ{x!6Ik@vL2+#A^{-FAPoO3DMIoHO`ZxNpJHxAGD*_<5vcEs(wD{kLI!*kzW)SKTA zH-8}RJ%`}d55=v&5x4%{fPzVG19^BL}Y`?25)aQFQicmDbx zR^C;fzj1i}`&v`nIk&*g?_9{=IXvHIZ*sg(H{8BGaQpTT&wHIkz4@2o<`2WY=PkJP zV{q%oF`(7TN_Zm*U`M2Zd--CP4M{(<)#;tz|xBmTt ze}lW%&*6Em-^24g7yr1{fB(uqHN|0- zdf|DmmBaHrn~>waYvIn*8uz_*D0pYweRss2|G@A({}I$XXK&m&2jS*lT*$vNy!Jn5 z^`Gl&UrTOoHyX+-&)8Y8=mj;AUXD( zfZO+3+`eyx=e<6l-u$_^`9I^{v(~3IzmuhL>l@(auT$`LxO;6Gp7+`|Jl}Iya@=<> z+<6YceQ(DUyf5y)r{d0kad@8pD(ao{THHAw!p)yp$bTk0-{%E#>^mK|?|Zm?zYWiO z{X)I@bv~>4{nW#~=c>5#tc6?O3b%f%g71#I*FNESuYxnKd-!>yw~#Kb^iHp zo4-14eskP={u{S`Gu-;^aO?Li_>s7K9T%SWIypSwa{xK+dk*eAm*Kv*5e2^$ci%g4 z=bsp!=bucybN&Z+&QEajzbfSa5T5Vz8#(s<3%BpGbE-d=?7L=o-fLaz&2NjFza{QH zcfzgT3%CAY-1_4SekSf-=ZELLE(y=~yqX;My$*Mt(YWtzT)`*e?)wz({I7@S`Daq^ zoFC%O`8#fY?JsKnIkQZ7zRybG`R7j~+`en$_H7@Y_v%Q!d+mmszYp#`yW`d$gCZY?)x_G{9lFV`G2I|Ip^cfx$>7a z|D0(Yp7Z||p6{~(IriNUx9=9Xd+iaP`*x$={GPb^$Kl@dG~D`gaO*F{t-q<@_u}p~ zK0NRBczC|&v*ft%RNQ&q#C>nG3;q@EzTe@_U;C??fBw`B&p&5Yz@4)tZho6W{^sHN zKHHGveRja@+ZDHOukaTCtmi-1r4RMy55&zsANQU^aqF+ct-l?&{^5c@kGt1P;Vsf$ zGs5#d-y_F;Kf;~o8{GG{py0K?uKt{H-=%QpZyeqt&EJfA=UfkW&TVn?cPZrW9iH!V z06F$O6u0lOxP8wG&wCA~-uz*>`8VR;a|~|%1Gx2*aO+<#`1`nfeHxzk`Z_${^CxoL z_gCC`mY7?8Kfbs61#gVIZ&Td)+l1%&J5cYOTjS1o5N`evh5Vz#^L`wqhG zJ3Kt^HIjPs@4?L+5`1eLvPWEciOOd$kJBdup51ZZ+kpi?0(aluxbvS8p65T0 zdgr_lch1{z^Y1F;KNz0x^B6hyeG<3ti@1G12+wl7_ zav}eP@O+=w$g%HRxP3pt?fXl3-s>;w&9C=E&F`lH?mgGSoo9XA`nI_B+ZTLa+`SGC z&wKR<&-Xl*9QQpDcb+qG-`m9nzY2HXYjNklD?HCXj(X>O1b5CExcM^+`5%Yp`+P}` zeZR%+`#Wym<$tWapS)M2@cifJ=D7K-aPPSpZha@*`rUBr4=MQZxO?>r&wC9B&-WZe zj`tjbJI^(^@9oxt--WyH{kZc_4$t#Xqux1R!JYGK-25L4`M-td`z-cT_2-Ozm&EP6 zGH%~>!}DGnQg8m2xcS@R-g7V9`u%b1d*argQt%6K_qsGZ?{#%}zUK|(xbH2v^W2O3 z-X<1&GVZ?r!JU6*c%FYY_0Bm5ch1FsuD%oV>xSq2mBRCVRwKv0YvT58iQBhhc<#Fc z_2%z`n}0CwJ&(ezKM}WnAa4C-1-}V*uiL}(UU!G*dp<;t`#y?0&-1wN?e&7s#NGEp z-1&bD&+{*!-Z}rqowLcjn%`Tq@SMLvc)riZG3 z;^ucLz~7|f3x79;qEmz zJn!{Wc)sWFsq}J7*8v{9_9FCxz$x zoKB8?&%*6{32xt!;d!q+s5gH+ZvG_Pdrrlze-*cW7H<7F1^*LwuR6cg{P&|}!}C2? z4$ps|S`~Mmb#UKXn}T=1-FIu;`MZSY?{XmZewV{==Ny2We_kQ~qVRm5E6K6%aNNGP z;r5*np7(l^dh=hx&3^;;o*&`Xe}P;7Gj9D73u^v3(-3#B)x+~%Ylr81wj{@W|BXA( zR=DqNmx6b}-FH9S`HuY_cD{$w$8#jMkA^)-Pe4l5?vF{YzzB6$9ejc9p`j&e0|G>?!^GD6^ zXGPrlRdMg%9Jjt*!MDfVYq#*cSJ&`-&x6Qu-|o2c9FP0n&M5eKxcgp+JO7CAJpZlK zJLjFab3TikKdq4eT6n(CyX4sS1Khq}3-ihv4qjGd%BgYg~2X}I%TfcxIAD)xbr-W``#uOd>Zb)ui(xf9qydV)>`bp4`|^#F~5Fz&R;D&-{)WC z*mqsrzMJ6o-61^p-Gh4b55~>!iF?lzaqCaRtv?^P{+fc1#@*|l@VwVU;rX7AljFWm zPjwekgAJjkxvq7W@g^y`Brtd%YN*?>U1U_k9OI_??`utQ=iCA}zjGmf=kR==y~*)D-EjN%!0p>VJnwZD_2yrS zn?DTqp10uEkHM`Uk6ZtI!QaH)YgTyP>yz+&&#%dG-|unf`4jiO)m^;$^GC0byYDKv z^S21k^S7biIXA_fvny`?frb3T!}EQPCda;gaQhCx?R$B6-fKAZ=HHH+e-G|GAH}VI z8n^x>-1_$m{tfP4KZobNeh<(0T)a;8ow)DPxbrl`eOJv2-U4^ujd17h9G>Ujg?i`Q z6L-#Iar65Y@=p)X_c@mw`wqtKdo^y~JHqo`_fc>DB;5SxaPRplZv8vB^`GL_&nx&6 zOH|*9d({iid#xOv@7aVL_gxEjp4PbUtwX^(9TcAL*@GPSJqmZ8fw=GOl7e52 zyYDF6`NxOn`6p5DoX_CS`DVdCDfsue^UM#=^ZXT_@44hM)pz2Y%i_-26!)GR7Q8*~ zJ-5T1f4}fN|6$ZSXHVQYPb>J~f?th0&xr6mTx&#~k<=Y6=dWG2=I_1~?wm~uzCpp;1C_$#Cxt%@TR!;Y>hjA zr|>-gPSiW+?znRvUhoqNJ`i`FLE(9xi^KChuOi1euf?77ZrpoLEcj&Hd%lW0|0m&j z{;#Qb&hK&OtW&T0-SzqfZ;Ct5y5V`A*5Ub{?Z|P?4!HB|fqTzG3VtN+Jx|7+e{gu7 z|8nY`^J?5V?=1Mk1)q#N&kNyso>#;3J>Mb6Ip4>f^9S5})>^Lm9`vPg@7V}<{td$O z{2Np6ob7Sv+@;|A7yL-vd5#Ou^PC)>?>T@R=R5~@&SAKByRG1Nq^cJLfkA|GnT#FJFBR&a*;zo~KcGzUP|cIOp29b8d=z&m9WB2kt!&#-0C!@I3#i z)H~-u+&PC9d}P5N!QJaA-1(>D)_;h**XQARuW!QhcbP|y`!2xUx6TSRzlT-AbKj=a zo8KHaf3t$`T<{}t?{hrvJqO~}Uxs_nVc~hN8^ZHFZzIQj$KdWe4!7^~;kob2)SLf0 zZvN*5pI`8mSFCby~%OkZn*n)$L)J^c8!?tMNw|Gq3D14srr!KnxcT1~ ze6jj9f8RB5@3Ri>J=@~eZ;!jzZsB>auHpHf2a)5x-EsFl2Dk5-;koYx)SG`XZvM!E z-(T<-aqlw&_nxzH>wm)CYe9J4Yq6Cp-#6cLnehC-KeIgUzN_N)Z5f{XZbH5H+zdB= zw}Ky1@Y8Ycb1v>ZhvL?c!rg03c;4&&@O;ll$Z_9Excg4Q?fY(c?)x$I=6{Zxzo6jD zHmLdc`+B(d*$DTZ9dYaT#NDe~c;4%f@O;lB$#LIfaQE$p+xNoo-1iFV%^!xFKc?W1 z75q)y`@D~P&$+nuf8y>{r(xwg=Dn5;&-Yw8JpX=Q6?flexP9A&=e}D}?>#%?=65T2 z?}87)z0W1M_Z)#+e>d)4%ZK0}WCPQl&xRouRxgy+6rQ*ZwFxcPM&)%^Rq zVZk@Xz0c;j_uL7${s7#)x`*ezdWYwGoUVUn<-_w{4a4(2*C5Azo8j);3b*gp;koaQ)SJH>ZhrTIpH%S6 zaPM;s?mchEt$!GIuSwx~uV=&aJzpfpeP6}hcP4J%Z^ComdDNS~05^a6RjcnrZ(8sz zaPPA%?mfHU*7v~O>zMGo*Gb{|o~M)JzGva?H3YZs4dJ=(ZPc4T1~-3F!Cx-;m$>)& z0r#G@R;zw5>sP|vYt`_)SJUu(&-KW0-&VN$w#V(eb9nB%H}&Rs!_7aY-~$SNE$)48 z#=Yl#xb;ur?lmPm@AYzczUQ0dxbIBdeLuzRJ3l=4{hNC8>ol&u6Z2Os_yz^v9``=G zUGZ_Z@<}?^U>cM~COW_fl{EINbax1%JEXKjGfzciel{ zZBqS?);Gc3t66y7YlHB7&yC4(-}boscEau3H9Yq{hY|NCLB;ncTYu~w}={;vEr68Fxd3psaDZ_YT}oW}||Pf~Br6x^Jb3puY-Z_Z5I zoR14RpHpwnx41d;3ONg?H>dXM)pu*oGU54qEl<5Ujc{|;DC9Jw-kcV=IU5&p+EZ^% zN8Ft43pu+`Z%!B7oC69uhf;4&FWj8t3pstMH|Gr8oO25~gQ+*?a@?G23OOUFH|JK| zoUw(R`=~c(0&dO|g`COMn==hJ=e0u4ThyEL0dCG`g`BUbH|Iy(oZkvLe^GDFl55ob z`*gYR{QI;%_2x9joo7A#dVUUXgj>HQZvA$+^?T#iAAnom3%9-xZv6n<`a!t$Lvib` z!>u2UTYoQZ{Y2dQ$+-2e;MTv5TmLC;{aoDo-*D>}TeIeOwLETpBi#J8aqC;+)^CPe z-wC&Vcij4YaqEx3tv?30{#4xhvvKP$#jPKPTR#f7ek^YN1l;;3aqC~i{d3woxH;bz z{1@E(I!&wZ#GLvCUkmropX-I^KYwl*p8wq2o*e&Nx&`jOJK^>{C_MM=LB07$;pPu1 z_=tkviF>yv3jRFq{b%6jd|dGFaPRO-c)r7*;raectX2K)-ls0^eOAHk+af&oZ9~2J zo8sp0SMZ|?-XHgFmlk{&?)`7Y&3T~UPvYL;`S5&)m%{V?-yp~Pyo-CE&vElS>of^Uy|w}T4a1NZ(X;pUuO@XK)TFf2UZ;fC;h|J%s%{$p_O^Du7T zso}ZrtJItSCT{+`f-lvq`W>xrfP1$V1#g3U|4z6$dldX&+&lCL&v!T`Jm0@BIo{_~ z++P#j^2L-+?+KE-V*l?ZNl>%HV@DD z--aCTvjgsZy5jcj6`uR{q2BzHar3V(_~?Rz+qYeK?z zJG>g6@9=hbzW;~hc%M&k@ACt0-#Y8m{N3w?=kL1`ZvMsv-?rd;;ohxR!TaFee;{to z#Rb0(_YOCQ=lkCgp6`DjIo|&v-1|I@+jmBI?)x6~=6{5nUu)g!&u6`U!JFdVtzE&l z!oB~lxH$(Dyf^M0`h@2@oD!bze+UMC;BqDcW8)PzXoo7 z3*0-m!L8p4_YQl7=R5CDz55=5JLl23`6m|gPYus^KARl-o{!u2nu6bidxx>OIS=C2 zPr<$Oblm#)aO>w5d;#v=7TciaKMyP&p6|9|c>Z%jL)?9v;r4A8p5Mb()cajJ=lMrb@BDY*&OZ(}|FJ^;)8YBMOeM#@FXQ(8px~e5-r+~w zoCUb`OSP!}T=LE<;MOW{*BwWe#@GFUNsKS zKbM-~=C>|*$Aa&Ld$;{@@7x1-{{G?lZf8;NeFovqe+6#-@IwAg;rY9aCda;a;r4yJ z;LqaT;T7DRw{hz~#l7=f-1_;rcc|N{=66y*Jin7waOYebH@`(8f8+3c=grCS&K+_4 z?pg5taPQCqH|JQ~`g3saJOsD?8r=Fj3O*k9ZjXoO_dhv2-)$N>-t86KeP`kJ{VqKB zolm{_f8gfVZC(BQn%<<~t#R+x4)@NTaOdwDp65S^dgt$sJLhq@`6n0h&j`=ok57g?j7#I%^8nd{|xS(U%;(@1NRPd!t!!4Zuj8s z`xtKDm%?-3H>fxNUEKUR1^>0+bvLTMAMaKl_s(nJ&j0W5JpX3YJO5U=^Y4tCzgHoD zzwrEB4kO3DJ#qVfQG>+&SOJ&HuEJ z|8;o2^H1d1_gCD$%ly0g-t?7l@301L{W`ey9dPg58Ml5<-1_bX?}K}{Q^NCi85o}L zc0M`Y?IPTLhvW7g8=m_HFZj2(cUXX%Q@c&|=a2QP;NH0@Zhb4<`mGASEAHL8 zgy-*aKzP2};pBL?Uby?7jN5l`cB*(jLi@Wb$xP5zs=f1~MZ~lq6`DYdUih_^Az1vvaJCDbm z|3Be*{#U4X{x@*v{|GmKP9gu>@cdnVA;-SII7cisxO zeka^J92B1K+=F`eJqmZuez^Gq3i;=S=R03aj(xAd?R!hX$Kc*!JZ{b;-1^sW@BA)q z{pYy#^9#O2`|3OKZuP?RcUd_+->nHb-fb=1eOu%9?G&E-?nJ%$yW{2`RPf^peirWC z2IJoOO5FKx56|=8L%s7qh&%rixcSc&@?Q+k-(?0l_I(Gp@0SJt0rw7n;^r)|Y4u%M zUmy3*jdAPO!M(#~;rY&;sCVD(ap&9{H-G;^{$b(y&b`U8?{T<&&n)-_xOcb`H|KiX z`ulM2JOQ`a{Hz@e(xbv@vJO75^dH#0c`OaIB<6fO{=iCSP&IjSn(${6U5Mi^KDsuOi33*W&gaQ}73H?=T5B=Q-T^ z*KqIrE^hs&xObQzp6~oO_3m3|%bMTSin#f!gy;MS!{mHTK0NlQp7JL}) z9d5zR8G~E@Fz%h7z^$K(dx!VJ^PNAT-hIEoo%3hh{ND@twYRRkw|wWi;rV~xUZYxcOHU@`s1#JC7vCzPI7_ z9bfQCxObR}oAWAe{rk9g{tUPNd)zxL-l_7g@|~9r&+lqQ+&Ndr&0o8a-y%HUxeYnq zc~jiJI~9B{+&dhMo6{4w{v_P`fw=V-;@;u%@OM`=foEhUdQPhUYtMNRIPtf;-Q41>Y0*d+mceXYcSl=Lyt1 zPe0swE-UyQxZi6c?mW+g=Xs`v=exa1j&r_=JLeqSdA`HF+t0XjF4ei_pC>DX=btAH zaOYXC;2jITJMR4Z;?Cb4cmCet`Oba9^PT&X86XGX;O8 z;2#%!F7DlGZCm|)?VTIo?$snb@6{|k-?Ifd?z<80zMJFr-7P%#-G_Sf55UborQjDA z{2JW5jm5p&6S(s~7oO*TF+AUG208Ba4(?vFar@2-&wc---u&9zRo{d8YZiQyf_KEd zTNm8B^}?P1`0zY`zwmswf#kT?xwv~>g4=gwcXVKLL0CS8(t4KJGl?h&Oy{W&k)>sMiqP_?)Q4T;Gg5p{{!y)zlP`e{|?W0UTVkc zcXY3MxO+9i?YlvE?z=Jd=C{Yq-?QM|3w}z$&%wRhFx>l(!QJcr@VwWA@O;lF$#LIj zarb>0x9>;cx$hU$oBs`N{xUmNzpuUy?j73V-fe5#Id=%pbM79V@3SvC&VL~8oIP>- zo*JI}o=v^^=i}zzRPg%>{%pagdukzO}O(h1d}Zr}L@Z@5d%zkk=ly<1D%IopKiIX4f_ciV;>=idQ${=;zZc0BGp=Y;2ZhEQ+c z%W(VNQt&4W{sQjZ-oTynz3@Ee?C^ZIugG!!?{Mc|de`dr^=^%D=h+}U&$BW0_HB>b zcjtolE_h$uyA8&je+2IQqr&t2W5V-2A0WrQ9>(44DcruVhv&XCsW<;a-2C4QUVpdh zceL+n;koZx;d$Tn$#I_6xbtj|+jn>TZvO9m9E_WD4DNUAi~E1~Y7lPU;o*7Tk<`1_ zXxyAf3pr0yZ_aDDd%cVMZa>4V{|2}IN8CAo3(x!3+P&t#UoRb=|9-t1?mYj(ou@T! zeLLLx?QrMcH9XJXB|N{+1Ih9JhvCk1EN&)?U^3$5bDjj9(S)%xZmqu-1>)c>nGyQ`Am4;cWQY4zORzw{2$}a^Cj*) z^Kk3`#I3K_rRI0Ca(JGW4=`#cW!eV&QicW8Lt z_d4p`>t@`XafO_T)SL4n?p`x+zt@Mj^>c9R=i<)!Q+VEYL3sYYwYyf|iSw_FJ5Lkb zdDg?N-w3z9Bkug$hv)fs3(xcKLyq$wfIH8TxP4E@eV;>cbB5!-&yl$A^M2gElf(1A z)2Mf^*Kl(_E#%Cl-kd*i_gZ3~>U;2et%O^@8gBiXxO1)(p7(7Pp1*Hfa-4sA+bv9!Q?pqCAjlki`(~Z-1j*VH)ksD`+ODmeSVDF_vi4u z?;q5=*W&wD-;X(s!gJ1=)SI&r?p~YXey?qD>vzSi-wSun{lfE{hlc0x+lw6MKNWYL zvvKFS1h@Wb-1=K_=N}uM=YJqP&;KYn&i@4NJTKt(eINII&c)4HfcrjccdNc1-{;D> zeb)`o`))|Rd$q&O*{P7T7xm^Gj=R^(9fT^P=#)@6ho4eXk?O`N!hU z^C0d#PvF)+k6Zr+?)>kC=lN%c=lQ=P$N9g*o#%JlzANlkeOJEEHF0xV;l9tdxbJg& z+`jvV=Y6|V?_RxebIvH_oJYMmSL5z=1Mc^_6Sw|;-1_mjb3PuP_njP`zwb11oc}%C zc|O6N=R4f``MC9eg)f|E;eR%;`ojOuKYuO0fAyXCf9HK!+?@L1IcF8>&1s68vu+`$ zCH3ZPf}7JJ4p1FP7lxTP z?~S;>AMY&qgShiN8lLBQDm=g2|B&OHGjZpfjeDPOaqEAicy52H|=B)v0&R zf8qAs6!)H;3%(ofJYB={JO_s7dmcfKbDn}b=b5&bx8vdtGE z+jr@Ms_(&ju3YdnaOY_rp66*9p6|H{InKEQ?wotz-seEv`Xg}bkH?+=obWvV5bB-t zGTgqm;okGUfHocEr8s&IRv^JI{gPd7i_=^F5Cy$2kY$&UrrWeTL%JUx!6x{mhxb^Si&ObLi&;K*^&iNZ| z-xUt6z7y}+xZurk=V=+9=V=q3@7aMI=iD84&V6z3b2x7O(YW>faOb};JkNgx_0BmA zx9>>Y{LzK{d&2X5#*<^;$+&%|;qLnuZv6+i^~Y5HZD*~8^DO+YJJzYd$H{B2SAqDq zP5;0CjP)!2O66Jof1kZU#dla3`p;kg%YSa+!TJbov-qDY{I7oVHWj}<`MmHIluiviXe)UTr`Sn%FKM!A~-lFxxJ6C>vPV$|%t@!-pOKey1KFckd z^KkfQ$^Y8EQg`t3i`I|Ysq*U?$!G3T@m*F}wEnBzD!+avd7V8fzS%$jyT=Rv`rmio zeb36T?@#{PUKL+=rOLnlul})pD!;xd`RV&syg~g%>)Um!{Q8pQ=k6DED=%7q)c%!U zpPqc311kP~^2-mdc<%;_<}80`<<}o1|0R6ihKttUaaiToFD38Rz2e(8TC{%2!z;g@ zn0!L`#;Yt^-|L9Vug4^B)T81}S6#GzO8D^P{d-pGmRoJn`gM=2{QCUlZ-xJ!{Gwi! z`o4`9&Dp+p<=0;(pBLV}$)fcgkFNas?c^UHTk$zdkeh zm;n|4Ir)(TD}L<1D*yVw-$&EWuKap-@;%P2_yNrpt#5x`<=3w!|2%xhwHK`)KB)5R zCzJ1Re#P50U$p+0@OzTqaY3bS?R6Hd?>4yd>k-M9ys+Xct-EObgzzEBdkv}7{hhqg zMHTPA-l91#gnyI#f{QD4J=b5fzTG92U%!|9tV=82WrIcQ|8+&>*DoaRIke)PS}aq($wg36$!vC5& zqT=T!zu<<7|C;>Ukrh8-!^*$@FQ?Bfm0y3JyxXY%$KKt5*EMF1{||~7MTa6raf~8H zQKJYg4vNq+@gCFS7)6XC-fI-cC}LWKDS{3`5Yr+3Tz3#Q|z0cnJyd?O+o2BEIxgq>K$M`h$VFT0gN8T8I z{+sdDnu2e$c{=`4^%mo&-W1|C)bpcQ{{}Y)zt;G3>Z@*%&VT+b;pYj)w`vZ))Sz_y zJLJ15^UyedK2?wBr_pbIG{kSWeLDXE zkAG;(i4?ou%e^hG;!M z2tVIue47`8_un-gKmMig^EJjVpBsGT-O}-|y&QhN(0JP`!AmOB@#no7em>3k2d@YJ z!1!_Vf*-MaI?n-bhM(seU*@gg`|gpBpQiq}@gv_3aXSu6$FJ5Eex7dpQT5G+r{hn3 zC;WV~@eSS$zSf@U_~+Co8bANN5V!nZ>G-YYho66M{2lerjo!AdhMT%UvbGL3UG$;i}f$M3pa@IM>>RDIoFr{iz_ zNr-PSe!%jhos|AST*=##t&K}`1XgUjnSR_^$nfAA5K@&!_71jNiO|h#xU39e=w$N>m$?gt8EngcH@t#uYXiJ{?uQD_({e$+Bo_)&F4p@&O@! ziKEl;uWS;0jPY{@2LI6b%*}%z`P+1!6}AZevhhm?1>f(Obo}WR!DkuYW}DzUjZVjZ zqW)LoI}Q%<1CLF|mk$Yki}5$r*FG*Czn6Z_>E*_s)X%}}eSA88ntp!bxyFyw&(ZtB z_-aE#Jtx$r^E|5FW&G4#Lj0j8q~kZx&xd->_;c!eo|uk5f47ilrtz)x^J@m5l#YK( z{Z8Xo>>l!LbaFa=_dS9)8edvJe_{1g((&>0ATBokwZ1=p=~L73*X#Qv#~Oc8-@o*+ z@ptw83BNrpou`++Zum9hd+O^xtH-3{pVHU){loZQ_4({wPfy36J~H&-e&bu}^Hqa> zmySP2pSPH7yyno5=jUgn5y3Ao{;B%c#&13{#Gi6zI?n+| z1)pzxnVR5-pOucErv9SwBaaU8d!L<-U+uTS+l)V|zC%78f9f$Iewy(OMhD;IoOJwi z>P^NkJT}Cy`TKPIF2@DG%=jnj%blB!-@Z1)=Z(L1V(>xZ((&v4F8E=_H&Aae-gric zf7$U{&QIqbe|3mo`+~G@JSq6)#%KL0c<;J&{4v)BKiBy3*9ZT?_~aXcpKxJ1&#rtxE@1Rp#h9l!kT!S6Ia`HtWlU6hU= z_Lty|#^1X$`05v@U-WT^-_`MDuTIB*^;w7?RU@$at_;xBW2-y75M2lo&0dB=Bb zO2X_ z(cd=y)%GF2@2% zg!mI3-{Q`6eEqQ@KIizlcctU2P7LvTIlkT0bo?8qhxp$bZygi-ZR01M8NBb^={!|q zgI{WVsdIuqV7&9};De{7^ZapK@EYT_=LUb%_;DjZ zo9XF1J6{s~NaLA{gTG{o&x z^+-DZta-uzWPHdQ!TUU#jvxF^@Li2hc{})DjZc0*_=m>(%@6*Y$I|)N{3v*X@d@3* z-!#7QXTdjXOXpek)8I!s{+03jz6|lZ{XL!M$}fVS<@l(bDHscmI{8miEG=r1N~aLWsY``18GkzvB2Q zPp0#XUpd4-X#A+32LIIYi~f<$v*zj{{(0k{tr~pA_H=yon~YChGsJ&r{DPka-{7fq zp6K@*ADjvC%RZfsUwxh6+dKZO@mc*t{5sF1^W3st@BI%AJFM?fB&{ zrSlBiJ;c9ie8bA%tIbWvN59SZOM8a+&y3$QJou(Br}IRA#P~7$g!q+SNyqQDcko>u zf7$q#2ZZ|9+`0I?{GCKHkjvxDG zI?sp`L;O9)w>}~G2accjRyxmnr-t}{7=P@P;LE(7j*tE)<7b=^;@>uY;O~O3-IdN0 z{chvS=R^EA#@{|G_*U0e!Jtl ze3;I2%rznY663pF9sE(p5AIIq`SQ9De~aAe|@r{l*918RD1yBptu{UxIJ% z__M}mO$+hse45U4%iX~baQuDaBkl|FTYr|$v-Q2fk8^zKo^Ru8`a z^6C61t{Qxj@sHOG-eY{Hp9SBccRJ6*nc&wLUwNJ2uN(j4`oXu?*Kfvo`}%sp&oh4b zFM_{j{Lb>=c{s@*Yn=65I@QI2kL9->uqB_YyK+4?_qpx^;yRE-6zEN z7(YP$^wrY!oV$OBzuEZt>Km?}j=!rq#P4T(n)G;DQ4e_;(ubfH8zcxF>@8I}r#t(ZY#ILw+I#2W#~B}*3` zAMbHIyJ0%MZkZ6@ZhY;Z1pmbN2=!6r={y%NAL1`GK1+SAjneTwD}?ylj9>iI;7=Q$ zrM}}Y(s{mKIm91neDEs4zc602YVbd7Z1R)^zr*<8HG;1_ART|)&w}r4e6srU#yk3j z_@g#4c{0H#7@w^ErSVtR4e^;x(|OkXdGM*mEBgl@x>-8@l?{U*ZG6r0;2p;I+9>!} z#>cB)IxwAo`oG8p?;e2iw_9# zlZ?+&UtZsb5&QP_fgygN@xj%>uQPt!LBVGlpRB&ccIi4_`E`h|HooSF;Ex&KYh>{G z#>cCV*gl>AfrCSQ-uRd59~$5E&=B8uhjgA})Xz13Z7#$&8-GcC^=vxNioXf*LyQko zzs302BSL()@w3z`c1-6Vd31fKJQ##MZ>UraXj}P%vjBlqtXySKcL^r(ZtAk1)Qr`hCWSj|=g= zc1`EmOMSTU0d*n%662ey|8%!>p1Bi3{C37)QExLo`_d4Yf$`zZA%44I={$R>-)p@0 zlo0=x@fFnv4NvD8c1MUma?iBicW3a1z0$t%wBV2bD(%<&HTc4+v@d^u@J;tg`x&jl zbNibo73j{kISh(Fr+ z$Lg;ef9{nK-|N@uJkO|~X?$8|h`-MGUFu~c(s{0UJ;ZNo{EzB)89#Mih=11jN$Puz zOy@t~tq@;pd|&lR|^!;b?@%PjBLi~=#KUTlW z`04M5_?E&|Rk$Zz-A8{&zUj+73iqn%`ZUhByetgsTdt=|-*Roww|uOVr_u3N$LBfT zOB$9e@{Qvvcf8W^(T-1Wyv6Z$#}_!>H{4eKR{a%@S35q|@kx%iI^OAcuW)()tvdTV zuD9*J6|c8@zU32~JX0KRcf8y2zG3(H)_MmyuBW-*iXY>|>%-)?;%7MVdYJoGe91C} z>HID4@Ay#1YaFk0e2U|<9q)F$&$7kqALRIcj*oG?!SNZ6&vm?{w0NBv$A>yT%JDkK zr#Rm3_yWhvmMdQW5XW!ST@xCh+ufM|aYRAVqKFRS`$2%SGrRT14+Qjp^{*G5V zKHBkm$EP~p;rK$wGe0ff=d9zS93SU+v*T@!&v(4{%Ejv(=y;XmCp$jT@#&6tIKI&F zeybF(KkInT@o|nfIo{@Ym*c(r7O!)F<5iB=IzG|ysg8Fz-s5<`Rg2d@#POWtdB>X^ zpXqp)r0$EP|z$MGJ= z%hoJj{}9JVI-YmD(eas%&vU%AU-3H29Ut!aXvgavZ*hE%;|m-wTdR2e6^@T|e5~V* zj<-5K&+%Ss7q7G2@k+->J3hhj7RTEiU*LG(b&A(t;rK|$^Nu$;-sbpx$NOZ8*E!Jf z{Tx5p@dn4IJ3iO(g^p*|Eh#Ma{6FjXD96V+-t2gr7@!^iwI$rPiRLAEy-s5<`4U5;Gbv)m1;CmE*OJPjq~`<8vKf=y+zM;`L`8ALaNs$D18*b9}zzy?;@>&Vi0sIexO^6CI!K zc!%Q)9q+es@%pol=NupBc$4F8j(0iUdqD9z2RL5kc&+0T9iQrWhvPkt_uHg+{X-nj zIi7dC$?=(vcR60VY4JJ-I6mC*TE{0kKHc#S#}_)@Z?od{XC2QuKF;wb$J-q5a=iDz z;&l#iyvp%f$0s^I)$tC;dmQh#dGY#(IG%Gn?|75rGac`8y!4mF>m1G(XyO9vINv)u9Fj*oV{-tiX4=QzH=@v<$8*I(iI zNXN%I-st#D$GaRa-Kuz<0~{ajc&+30j!$)bj^jO!mu+3V{vnQ!bUg2PqvJCjpXYdK zMe#bz9Ut!aXvgavZ*hE%;|m-w+opK^6^@T|e5~V*j<-5K&+%T{7O%71@k+->J3hhj z7RTEiU*LG(!Nu#ZaJ<^_v5rr2yw&ke$9oMaUT1ⅅ=+Ke1hXs9B+4gf#YS{6|cX- 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 CtEis< literal 0 HcmV?d00001 diff --git a/build/swig/CMakeFiles/tempest_swig.dir/CXX.includecache b/build/swig/CMakeFiles/tempest_swig.dir/CXX.includecache new file mode 100644 index 0000000..afc5f91 --- /dev/null +++ b/build/swig/CMakeFiles/tempest_swig.dir/CXX.includecache @@ -0,0 +1,646 @@ +#IncludeRegexLine: ^[ ]*[#%][ ]*(include|import)[ ]*[<"]([^">]+)([">]) + +#IncludeRegexScan: ^.*$ + +#IncludeRegexComplain: ^$ + +#IncludeRegexTransform: + +../include/tempest/Hsync.h +tempest/api.h +- +gnuradio/block.h +- + +../include/tempest/api.h +gnuradio/attributes.h +- + +../include/tempest/fft_peak_fine_sampling_sync.h +tempest/api.h +- +gnuradio/block.h +- + +../include/tempest/fine_sampling_synchronization.h +tempest/api.h +- +gnuradio/block.h +- + +../include/tempest/frame_drop.h +tempest/api.h +- +gnuradio/block.h +- + +../include/tempest/framing.h +tempest/api.h +- +gnuradio/block.h +- + +../include/tempest/infer_screen_resolution.h +tempest/api.h +- +gnuradio/block.h +- + +../include/tempest/normalize_flow.h +tempest/api.h +- +gnuradio/sync_block.h +- + +../include/tempest/sampling_synchronization.h +tempest/api.h +- +gnuradio/block.h +- + +../include/tempest/ssamp_correction.h +tempest/api.h +- +gnuradio/block.h +- + +../include/tempest/sync_detector.h +tempest/api.h +- +gnuradio/block.h +- + +/home/emidan19/gr-tempest/build/swig/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx +math.h +- +Python.h +- +Python.h +- +string.h +- +stdexcept +- +string +- +cstddef +- +typeinfo +- +stdexcept +- +gnuradio/block.h +- +gnuradio/sync_block.h +- +gnuradio/sync_decimator.h +- +gnuradio/sync_interpolator.h +- +gnuradio/tagged_stream_block.h +- +gnuradio/block_gateway.h +- +gnuradio/feval.h +- +gnuradio/py_feval.h +- +gnuradio/high_res_timer.h +- +limits.h +- +tempest/sampling_synchronization.h +/home/emidan19/gr-tempest/build/swig/CMakeFiles/tempest_swig.dir/tempest/sampling_synchronization.h +tempest/framing.h +/home/emidan19/gr-tempest/build/swig/CMakeFiles/tempest_swig.dir/tempest/framing.h +tempest/Hsync.h +/home/emidan19/gr-tempest/build/swig/CMakeFiles/tempest_swig.dir/tempest/Hsync.h +tempest/normalize_flow.h +/home/emidan19/gr-tempest/build/swig/CMakeFiles/tempest_swig.dir/tempest/normalize_flow.h +tempest/fine_sampling_synchronization.h +/home/emidan19/gr-tempest/build/swig/CMakeFiles/tempest_swig.dir/tempest/fine_sampling_synchronization.h +tempest/sync_detector.h +/home/emidan19/gr-tempest/build/swig/CMakeFiles/tempest_swig.dir/tempest/sync_detector.h +tempest/frame_drop.h +/home/emidan19/gr-tempest/build/swig/CMakeFiles/tempest_swig.dir/tempest/frame_drop.h +tempest/fft_peak_fine_sampling_sync.h +/home/emidan19/gr-tempest/build/swig/CMakeFiles/tempest_swig.dir/tempest/fft_peak_fine_sampling_sync.h +tempest/infer_screen_resolution.h +/home/emidan19/gr-tempest/build/swig/CMakeFiles/tempest_swig.dir/tempest/infer_screen_resolution.h +tempest/ssamp_correction.h +/home/emidan19/gr-tempest/build/swig/CMakeFiles/tempest_swig.dir/tempest/ssamp_correction.h +float.h +- +math.h +- +ieeefp.h +- +stddef.h +- +functional +- +iterator +- + +/usr/include/python3.8/Python.h +patchlevel.h +/usr/include/python3.8/patchlevel.h +pyconfig.h +/usr/include/python3.8/pyconfig.h +pymacconfig.h +/usr/include/python3.8/pymacconfig.h +limits.h +- +stdio.h +- +string.h +- +errno.h +- +stdlib.h +- +unistd.h +- +crypt.h +- +stddef.h +- +assert.h +- +pyport.h +/usr/include/python3.8/pyport.h +pymacro.h +/usr/include/python3.8/pymacro.h +pymath.h +/usr/include/python3.8/pymath.h +pytime.h +/usr/include/python3.8/pytime.h +pymem.h +/usr/include/python3.8/pymem.h +object.h +/usr/include/python3.8/object.h +objimpl.h +/usr/include/python3.8/objimpl.h +typeslots.h +/usr/include/python3.8/typeslots.h +pyhash.h +/usr/include/python3.8/pyhash.h +pydebug.h +/usr/include/python3.8/pydebug.h +bytearrayobject.h +/usr/include/python3.8/bytearrayobject.h +bytesobject.h +/usr/include/python3.8/bytesobject.h +unicodeobject.h +/usr/include/python3.8/unicodeobject.h +longobject.h +/usr/include/python3.8/longobject.h +longintrepr.h +/usr/include/python3.8/longintrepr.h +boolobject.h +/usr/include/python3.8/boolobject.h +floatobject.h +/usr/include/python3.8/floatobject.h +complexobject.h +/usr/include/python3.8/complexobject.h +rangeobject.h +/usr/include/python3.8/rangeobject.h +memoryobject.h +/usr/include/python3.8/memoryobject.h +tupleobject.h +/usr/include/python3.8/tupleobject.h +listobject.h +/usr/include/python3.8/listobject.h +dictobject.h +/usr/include/python3.8/dictobject.h +odictobject.h +/usr/include/python3.8/odictobject.h +enumobject.h +/usr/include/python3.8/enumobject.h +setobject.h +/usr/include/python3.8/setobject.h +methodobject.h +/usr/include/python3.8/methodobject.h +moduleobject.h +/usr/include/python3.8/moduleobject.h +funcobject.h +/usr/include/python3.8/funcobject.h +classobject.h +/usr/include/python3.8/classobject.h +fileobject.h +/usr/include/python3.8/fileobject.h +pycapsule.h +/usr/include/python3.8/pycapsule.h +traceback.h +/usr/include/python3.8/traceback.h +sliceobject.h +/usr/include/python3.8/sliceobject.h +cellobject.h +/usr/include/python3.8/cellobject.h +iterobject.h +/usr/include/python3.8/iterobject.h +genobject.h +/usr/include/python3.8/genobject.h +descrobject.h +/usr/include/python3.8/descrobject.h +warnings.h +/usr/include/python3.8/warnings.h +weakrefobject.h +/usr/include/python3.8/weakrefobject.h +structseq.h +/usr/include/python3.8/structseq.h +namespaceobject.h +/usr/include/python3.8/namespaceobject.h +picklebufobject.h +/usr/include/python3.8/picklebufobject.h +codecs.h +/usr/include/python3.8/codecs.h +pyerrors.h +/usr/include/python3.8/pyerrors.h +cpython/initconfig.h +/usr/include/python3.8/cpython/initconfig.h +pystate.h +/usr/include/python3.8/pystate.h +context.h +/usr/include/python3.8/context.h +pyarena.h +/usr/include/python3.8/pyarena.h +modsupport.h +/usr/include/python3.8/modsupport.h +compile.h +/usr/include/python3.8/compile.h +pythonrun.h +/usr/include/python3.8/pythonrun.h +pylifecycle.h +/usr/include/python3.8/pylifecycle.h +ceval.h +/usr/include/python3.8/ceval.h +sysmodule.h +/usr/include/python3.8/sysmodule.h +osmodule.h +/usr/include/python3.8/osmodule.h +intrcheck.h +/usr/include/python3.8/intrcheck.h +import.h +/usr/include/python3.8/import.h +abstract.h +/usr/include/python3.8/abstract.h +bltinmodule.h +/usr/include/python3.8/bltinmodule.h +eval.h +/usr/include/python3.8/eval.h +pyctype.h +/usr/include/python3.8/pyctype.h +pystrtod.h +/usr/include/python3.8/pystrtod.h +pystrcmp.h +/usr/include/python3.8/pystrcmp.h +dtoa.h +/usr/include/python3.8/dtoa.h +fileutils.h +/usr/include/python3.8/fileutils.h +pyfpe.h +/usr/include/python3.8/pyfpe.h +tracemalloc.h +/usr/include/python3.8/tracemalloc.h + +/usr/include/python3.8/abstract.h +cpython/abstract.h +/usr/include/python3.8/cpython/abstract.h + +/usr/include/python3.8/bltinmodule.h + +/usr/include/python3.8/boolobject.h + +/usr/include/python3.8/bytearrayobject.h +stdarg.h +- + +/usr/include/python3.8/bytesobject.h +stdarg.h +- + +/usr/include/python3.8/cellobject.h + +/usr/include/python3.8/ceval.h + +/usr/include/python3.8/classobject.h + +/usr/include/python3.8/code.h + +/usr/include/python3.8/codecs.h + +/usr/include/python3.8/compile.h +code.h +/usr/include/python3.8/code.h + +/usr/include/python3.8/complexobject.h + +/usr/include/python3.8/context.h + +/usr/include/python3.8/cpython/abstract.h + +/usr/include/python3.8/cpython/dictobject.h + +/usr/include/python3.8/cpython/fileobject.h + +/usr/include/python3.8/cpython/initconfig.h + +/usr/include/python3.8/cpython/object.h + +/usr/include/python3.8/cpython/objimpl.h + +/usr/include/python3.8/cpython/pyerrors.h + +/usr/include/python3.8/cpython/pylifecycle.h + +/usr/include/python3.8/cpython/pymem.h + +/usr/include/python3.8/cpython/pystate.h +cpython/initconfig.h +/usr/include/python3.8/cpython/cpython/initconfig.h + +/usr/include/python3.8/cpython/sysmodule.h + +/usr/include/python3.8/cpython/traceback.h + +/usr/include/python3.8/cpython/tupleobject.h + +/usr/include/python3.8/cpython/unicodeobject.h + +/usr/include/python3.8/descrobject.h + +/usr/include/python3.8/dictobject.h +cpython/dictobject.h +/usr/include/python3.8/cpython/dictobject.h + +/usr/include/python3.8/dtoa.h + +/usr/include/python3.8/enumobject.h + +/usr/include/python3.8/eval.h + +/usr/include/python3.8/fileobject.h +cpython/fileobject.h +/usr/include/python3.8/cpython/fileobject.h + +/usr/include/python3.8/fileutils.h + +/usr/include/python3.8/floatobject.h + +/usr/include/python3.8/funcobject.h + +/usr/include/python3.8/genobject.h +pystate.h +/usr/include/python3.8/pystate.h + +/usr/include/python3.8/import.h + +/usr/include/python3.8/intrcheck.h + +/usr/include/python3.8/iterobject.h + +/usr/include/python3.8/listobject.h + +/usr/include/python3.8/longintrepr.h + +/usr/include/python3.8/longobject.h + +/usr/include/python3.8/memoryobject.h + +/usr/include/python3.8/methodobject.h + +/usr/include/python3.8/modsupport.h +stdarg.h +- + +/usr/include/python3.8/moduleobject.h + +/usr/include/python3.8/namespaceobject.h + +/usr/include/python3.8/object.h +pymem.h +/usr/include/python3.8/pymem.h +cpython/object.h +/usr/include/python3.8/cpython/object.h + +/usr/include/python3.8/objimpl.h +pymem.h +/usr/include/python3.8/pymem.h +cpython/objimpl.h +/usr/include/python3.8/cpython/objimpl.h + +/usr/include/python3.8/odictobject.h + +/usr/include/python3.8/osmodule.h + +/usr/include/python3.8/patchlevel.h + +/usr/include/python3.8/picklebufobject.h + +/usr/include/python3.8/pyarena.h + +/usr/include/python3.8/pycapsule.h + +/usr/include/python3.8/pyconfig.h +x86_64-linux-gnu/python3.8/pyconfig.h +- +x86_64-linux-gnux32/python3.8/pyconfig.h +- +i386-linux-gnu/python3.8/pyconfig.h +- +aarch64-linux-gnu/python3.8/pyconfig.h +- +alpha-linux-gnu/python3.8/pyconfig.h +- +arm-linux-gnueabihf/python3.8/pyconfig.h +- +arm-linux-gnueabi/python3.8/pyconfig.h +- +hppa-linux-gnu/python3.8/pyconfig.h +- +ia64-linux-gnu/python3.8/pyconfig.h +- +m68k-linux-gnu/python3.8/pyconfig.h +- +mipsisa32r6el-linux-gnu/python3.8/pyconfig.h +- +mipsisa64r6el-linux-gnuabin32/python3.8/pyconfig.h +- +mipsisa64r6el-linux-gnuabi64/python3.8/pyconfig.h +- +mipsisa32r6-linux-gnu/python3.8/pyconfig.h +- +mipsisa64r6-linux-gnuabin32/python3.8/pyconfig.h +- +mipsisa64r6-linux-gnuabi64/python3.8/pyconfig.h +- +mipsel-linux-gnu/python3.8/pyconfig.h +- +mips64el-linux-gnuabin32/python3.8/pyconfig.h +- +mips64el-linux-gnuabi64/python3.8/pyconfig.h +- +mips-linux-gnu/python3.8/pyconfig.h +- +mips64-linux-gnuabin32/python3.8/pyconfig.h +- +mips64-linux-gnuabi64/python3.8/pyconfig.h +- +or1k-linux-gnu/python3.8/pyconfig.h +- +powerpc-linux-gnuspe/python3.8/pyconfig.h +- +powerpc64le-linux-gnu/python3.8/pyconfig.h +- +powerpc64-linux-gnu/python3.8/pyconfig.h +- +powerpc-linux-gnu/python3.8/pyconfig.h +- +s390x-linux-gnu/python3.8/pyconfig.h +- +s390-linux-gnu/python3.8/pyconfig.h +- +sh4-linux-gnu/python3.8/pyconfig.h +- +sparc64-linux-gnu/python3.8/pyconfig.h +- +sparc-linux-gnu/python3.8/pyconfig.h +- +riscv64-linux-gnu/python3.8/pyconfig.h +- +riscv32-linux-gnu/python3.8/pyconfig.h +- +x86_64-kfreebsd-gnu/python3.8/pyconfig.h +- +i386-kfreebsd-gnu/python3.8/pyconfig.h +- +i386-gnu/python3.8/pyconfig.h +- + +/usr/include/python3.8/pyctype.h + +/usr/include/python3.8/pydebug.h + +/usr/include/python3.8/pyerrors.h +stdarg.h +- +cpython/pyerrors.h +/usr/include/python3.8/cpython/pyerrors.h + +/usr/include/python3.8/pyfpe.h + +/usr/include/python3.8/pyhash.h + +/usr/include/python3.8/pylifecycle.h +cpython/pylifecycle.h +/usr/include/python3.8/cpython/pylifecycle.h + +/usr/include/python3.8/pymacconfig.h + +/usr/include/python3.8/pymacro.h + +/usr/include/python3.8/pymath.h +pyconfig.h +/usr/include/python3.8/pyconfig.h + +/usr/include/python3.8/pymem.h +pyport.h +/usr/include/python3.8/pyport.h +cpython/pymem.h +/usr/include/python3.8/cpython/pymem.h + +/usr/include/python3.8/pyport.h +pyconfig.h +/usr/include/python3.8/pyconfig.h +inttypes.h +- +stdlib.h +- +ieeefp.h +- +math.h +- +sys/time.h +- +time.h +- +sys/time.h +- +time.h +- +sys/select.h +- +sys/stat.h +- +stat.h +- +sys/types.h +- +sys/termio.h +- +ctype.h +- +wctype.h +- + +/usr/include/python3.8/pystate.h +pythread.h +/usr/include/python3.8/pythread.h +cpython/pystate.h +/usr/include/python3.8/cpython/pystate.h + +/usr/include/python3.8/pystrcmp.h + +/usr/include/python3.8/pystrtod.h + +/usr/include/python3.8/pythonrun.h + +/usr/include/python3.8/pythread.h +pthread.h +- + +/usr/include/python3.8/pytime.h +pyconfig.h +/usr/include/python3.8/pyconfig.h +object.h +/usr/include/python3.8/object.h + +/usr/include/python3.8/rangeobject.h + +/usr/include/python3.8/setobject.h + +/usr/include/python3.8/sliceobject.h + +/usr/include/python3.8/structseq.h + +/usr/include/python3.8/sysmodule.h +cpython/sysmodule.h +/usr/include/python3.8/cpython/sysmodule.h + +/usr/include/python3.8/traceback.h +cpython/traceback.h +/usr/include/python3.8/cpython/traceback.h + +/usr/include/python3.8/tracemalloc.h + +/usr/include/python3.8/tupleobject.h +cpython/tupleobject.h +/usr/include/python3.8/cpython/tupleobject.h + +/usr/include/python3.8/typeslots.h + +/usr/include/python3.8/unicodeobject.h +stdarg.h +- +ctype.h +- +wchar.h +- +cpython/unicodeobject.h +/usr/include/python3.8/cpython/unicodeobject.h + +/usr/include/python3.8/warnings.h + +/usr/include/python3.8/weakrefobject.h + diff --git a/build/swig/CMakeFiles/tempest_swig.dir/DependInfo.cmake b/build/swig/CMakeFiles/tempest_swig.dir/DependInfo.cmake new file mode 100644 index 0000000..59d7a6b --- /dev/null +++ b/build/swig/CMakeFiles/tempest_swig.dir/DependInfo.cmake @@ -0,0 +1,40 @@ +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + "CXX" + ) +# The set of files for implicit dependencies of each language: +set(CMAKE_DEPENDS_CHECK_CXX + "/home/emidan19/gr-tempest/build/swig/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx" "/home/emidan19/gr-tempest/build/swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o" + ) +set(CMAKE_CXX_COMPILER_ID "GNU") + +# Preprocessor definitions for this target. +set(CMAKE_TARGET_DEFINITIONS_CXX + "BOOST_ALL_NO_LIB" + "BOOST_ATOMIC_DYN_LINK" + "BOOST_FILESYSTEM_DYN_LINK" + "BOOST_PROGRAM_OPTIONS_DYN_LINK" + "BOOST_REGEX_DYN_LINK" + "BOOST_SYSTEM_DYN_LINK" + "BOOST_THREAD_DYN_LINK" + "FFTW3F_THREADS" + "GR_CTRLPORT" + "tempest_swig_EXPORTS" + ) + +# The include file search paths: +set(CMAKE_CXX_TARGET_INCLUDE_PATH + "swig" + "../swig" + "/usr/include/gnuradio/swig" + "../lib/../include" + "/usr/include/python3.8" + ) + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + "/home/emidan19/gr-tempest/build/lib/CMakeFiles/gnuradio-tempest.dir/DependInfo.cmake" + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/build/swig/CMakeFiles/tempest_swig.dir/build.make b/build/swig/CMakeFiles/tempest_swig.dir/build.make new file mode 100644 index 0000000..154eed8 --- /dev/null +++ b/build/swig/CMakeFiles/tempest_swig.dir/build.make @@ -0,0 +1,119 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.16 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E remove -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/emidan19/gr-tempest + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/emidan19/gr-tempest/build + +# Include any dependencies generated for this target. +include swig/CMakeFiles/tempest_swig.dir/depend.make + +# Include the progress variables for this target. +include swig/CMakeFiles/tempest_swig.dir/progress.make + +# Include the compile flags for this target's objects. +include swig/CMakeFiles/tempest_swig.dir/flags.make + +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: swig/CMakeFiles/tempest_swig.dir/flags.make +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: swig/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/emidan19/gr-tempest/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building CXX object swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o" + cd /home/emidan19/gr-tempest/build/swig && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o -c /home/emidan19/gr-tempest/build/swig/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx + +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.i" + cd /home/emidan19/gr-tempest/build/swig && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/emidan19/gr-tempest/build/swig/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx > CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.i + +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.s" + cd /home/emidan19/gr-tempest/build/swig && /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/emidan19/gr-tempest/build/swig/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx -o CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.s + +# Object files for target tempest_swig +tempest_swig_OBJECTS = \ +"CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o" + +# External object files for target tempest_swig +tempest_swig_EXTERNAL_OBJECTS = + +swig/_tempest_swig.so: swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o +swig/_tempest_swig.so: swig/CMakeFiles/tempest_swig.dir/build.make +swig/_tempest_swig.so: lib/libgnuradio-tempest.so.17a754aa +swig/_tempest_swig.so: /usr/lib/x86_64-linux-gnu/libpython3.8.so +swig/_tempest_swig.so: /usr/lib/x86_64-linux-gnu/libgnuradio-filter.so.3.8.5.0 +swig/_tempest_swig.so: /usr/lib/x86_64-linux-gnu/libgnuradio-blocks.so.3.8.5.0 +swig/_tempest_swig.so: /usr/lib/x86_64-linux-gnu/libgnuradio-fft.so.3.8.5.0 +swig/_tempest_swig.so: /usr/lib/x86_64-linux-gnu/libgnuradio-runtime.so.3.8.5.0 +swig/_tempest_swig.so: /usr/lib/x86_64-linux-gnu/libthrift.so +swig/_tempest_swig.so: /usr/lib/x86_64-linux-gnu/libgnuradio-pmt.so.3.8.5.0 +swig/_tempest_swig.so: /usr/lib/x86_64-linux-gnu/libboost_program_options.so.1.71.0 +swig/_tempest_swig.so: /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.71.0 +swig/_tempest_swig.so: /usr/lib/x86_64-linux-gnu/libboost_system.so.1.71.0 +swig/_tempest_swig.so: /usr/lib/x86_64-linux-gnu/libboost_regex.so.1.71.0 +swig/_tempest_swig.so: /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.71.0 +swig/_tempest_swig.so: /usr/lib/x86_64-linux-gnu/libboost_atomic.so.1.71.0 +swig/_tempest_swig.so: /usr/lib/x86_64-linux-gnu/liblog4cpp.so +swig/_tempest_swig.so: /usr/lib/x86_64-linux-gnu/libgmpxx.so +swig/_tempest_swig.so: /usr/lib/x86_64-linux-gnu/libgmp.so +swig/_tempest_swig.so: /usr/lib/x86_64-linux-gnu/libfftw3f.so +swig/_tempest_swig.so: /usr/lib/x86_64-linux-gnu/libfftw3f_threads.so +swig/_tempest_swig.so: /usr/lib/x86_64-linux-gnu/libvolk.so.2.2 +swig/_tempest_swig.so: /usr/lib/x86_64-linux-gnu/liborc-0.4.so +swig/_tempest_swig.so: swig/CMakeFiles/tempest_swig.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --bold --progress-dir=/home/emidan19/gr-tempest/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Linking CXX shared module _tempest_swig.so" + cd /home/emidan19/gr-tempest/build/swig && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/tempest_swig.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +swig/CMakeFiles/tempest_swig.dir/build: swig/_tempest_swig.so + +.PHONY : swig/CMakeFiles/tempest_swig.dir/build + +swig/CMakeFiles/tempest_swig.dir/clean: + cd /home/emidan19/gr-tempest/build/swig && $(CMAKE_COMMAND) -P CMakeFiles/tempest_swig.dir/cmake_clean.cmake +.PHONY : swig/CMakeFiles/tempest_swig.dir/clean + +swig/CMakeFiles/tempest_swig.dir/depend: + cd /home/emidan19/gr-tempest/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/emidan19/gr-tempest /home/emidan19/gr-tempest/swig /home/emidan19/gr-tempest/build /home/emidan19/gr-tempest/build/swig /home/emidan19/gr-tempest/build/swig/CMakeFiles/tempest_swig.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : swig/CMakeFiles/tempest_swig.dir/depend + diff --git a/build/swig/CMakeFiles/tempest_swig.dir/cmake_clean.cmake b/build/swig/CMakeFiles/tempest_swig.dir/cmake_clean.cmake new file mode 100644 index 0000000..20e6a1a --- /dev/null +++ b/build/swig/CMakeFiles/tempest_swig.dir/cmake_clean.cmake @@ -0,0 +1,13 @@ +file(REMOVE_RECURSE + "CMakeFiles/tempest_swig.dir/tempest_swigPYTHON.stamp" + "CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx" + "tempest_swig.py" + "CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o" + "_tempest_swig.pdb" + "_tempest_swig.so" +) + +# Per-language clean rules from dependency scanning. +foreach(lang CXX) + include(CMakeFiles/tempest_swig.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/build/swig/CMakeFiles/tempest_swig.dir/depend.internal b/build/swig/CMakeFiles/tempest_swig.dir/depend.internal new file mode 100644 index 0000000..005b38c --- /dev/null +++ b/build/swig/CMakeFiles/tempest_swig.dir/depend.internal @@ -0,0 +1,103 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.16 + +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o + ../include/tempest/Hsync.h + ../include/tempest/api.h + ../include/tempest/fft_peak_fine_sampling_sync.h + ../include/tempest/fine_sampling_synchronization.h + ../include/tempest/frame_drop.h + ../include/tempest/framing.h + ../include/tempest/infer_screen_resolution.h + ../include/tempest/normalize_flow.h + ../include/tempest/sampling_synchronization.h + ../include/tempest/ssamp_correction.h + ../include/tempest/sync_detector.h + /home/emidan19/gr-tempest/build/swig/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx + /usr/include/python3.8/Python.h + /usr/include/python3.8/abstract.h + /usr/include/python3.8/bltinmodule.h + /usr/include/python3.8/boolobject.h + /usr/include/python3.8/bytearrayobject.h + /usr/include/python3.8/bytesobject.h + /usr/include/python3.8/cellobject.h + /usr/include/python3.8/ceval.h + /usr/include/python3.8/classobject.h + /usr/include/python3.8/code.h + /usr/include/python3.8/codecs.h + /usr/include/python3.8/compile.h + /usr/include/python3.8/complexobject.h + /usr/include/python3.8/context.h + /usr/include/python3.8/cpython/abstract.h + /usr/include/python3.8/cpython/dictobject.h + /usr/include/python3.8/cpython/fileobject.h + /usr/include/python3.8/cpython/initconfig.h + /usr/include/python3.8/cpython/object.h + /usr/include/python3.8/cpython/objimpl.h + /usr/include/python3.8/cpython/pyerrors.h + /usr/include/python3.8/cpython/pylifecycle.h + /usr/include/python3.8/cpython/pymem.h + /usr/include/python3.8/cpython/pystate.h + /usr/include/python3.8/cpython/sysmodule.h + /usr/include/python3.8/cpython/traceback.h + /usr/include/python3.8/cpython/tupleobject.h + /usr/include/python3.8/cpython/unicodeobject.h + /usr/include/python3.8/descrobject.h + /usr/include/python3.8/dictobject.h + /usr/include/python3.8/dtoa.h + /usr/include/python3.8/enumobject.h + /usr/include/python3.8/eval.h + /usr/include/python3.8/fileobject.h + /usr/include/python3.8/fileutils.h + /usr/include/python3.8/floatobject.h + /usr/include/python3.8/funcobject.h + /usr/include/python3.8/genobject.h + /usr/include/python3.8/import.h + /usr/include/python3.8/intrcheck.h + /usr/include/python3.8/iterobject.h + /usr/include/python3.8/listobject.h + /usr/include/python3.8/longintrepr.h + /usr/include/python3.8/longobject.h + /usr/include/python3.8/memoryobject.h + /usr/include/python3.8/methodobject.h + /usr/include/python3.8/modsupport.h + /usr/include/python3.8/moduleobject.h + /usr/include/python3.8/namespaceobject.h + /usr/include/python3.8/object.h + /usr/include/python3.8/objimpl.h + /usr/include/python3.8/odictobject.h + /usr/include/python3.8/osmodule.h + /usr/include/python3.8/patchlevel.h + /usr/include/python3.8/picklebufobject.h + /usr/include/python3.8/pyarena.h + /usr/include/python3.8/pycapsule.h + /usr/include/python3.8/pyconfig.h + /usr/include/python3.8/pyctype.h + /usr/include/python3.8/pydebug.h + /usr/include/python3.8/pyerrors.h + /usr/include/python3.8/pyfpe.h + /usr/include/python3.8/pyhash.h + /usr/include/python3.8/pylifecycle.h + /usr/include/python3.8/pymacconfig.h + /usr/include/python3.8/pymacro.h + /usr/include/python3.8/pymath.h + /usr/include/python3.8/pymem.h + /usr/include/python3.8/pyport.h + /usr/include/python3.8/pystate.h + /usr/include/python3.8/pystrcmp.h + /usr/include/python3.8/pystrtod.h + /usr/include/python3.8/pythonrun.h + /usr/include/python3.8/pythread.h + /usr/include/python3.8/pytime.h + /usr/include/python3.8/rangeobject.h + /usr/include/python3.8/setobject.h + /usr/include/python3.8/sliceobject.h + /usr/include/python3.8/structseq.h + /usr/include/python3.8/sysmodule.h + /usr/include/python3.8/traceback.h + /usr/include/python3.8/tracemalloc.h + /usr/include/python3.8/tupleobject.h + /usr/include/python3.8/typeslots.h + /usr/include/python3.8/unicodeobject.h + /usr/include/python3.8/warnings.h + /usr/include/python3.8/weakrefobject.h diff --git a/build/swig/CMakeFiles/tempest_swig.dir/depend.make b/build/swig/CMakeFiles/tempest_swig.dir/depend.make new file mode 100644 index 0000000..249e5e8 --- /dev/null +++ b/build/swig/CMakeFiles/tempest_swig.dir/depend.make @@ -0,0 +1,103 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.16 + +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: ../include/tempest/Hsync.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: ../include/tempest/api.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: ../include/tempest/fft_peak_fine_sampling_sync.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: ../include/tempest/fine_sampling_synchronization.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: ../include/tempest/frame_drop.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: ../include/tempest/framing.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: ../include/tempest/infer_screen_resolution.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: ../include/tempest/normalize_flow.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: ../include/tempest/sampling_synchronization.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: ../include/tempest/ssamp_correction.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: ../include/tempest/sync_detector.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: swig/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/Python.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/abstract.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/bltinmodule.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/boolobject.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/bytearrayobject.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/bytesobject.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/cellobject.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/ceval.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/classobject.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/code.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/codecs.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/compile.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/complexobject.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/context.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/cpython/abstract.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/cpython/dictobject.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/cpython/fileobject.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/cpython/initconfig.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/cpython/object.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/cpython/objimpl.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/cpython/pyerrors.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/cpython/pylifecycle.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/cpython/pymem.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/cpython/pystate.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/cpython/sysmodule.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/cpython/traceback.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/cpython/tupleobject.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/cpython/unicodeobject.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/descrobject.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/dictobject.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/dtoa.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/enumobject.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/eval.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/fileobject.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/fileutils.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/floatobject.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/funcobject.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/genobject.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/import.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/intrcheck.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/iterobject.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/listobject.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/longintrepr.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/longobject.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/memoryobject.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/methodobject.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/modsupport.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/moduleobject.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/namespaceobject.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/object.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/objimpl.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/odictobject.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/osmodule.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/patchlevel.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/picklebufobject.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/pyarena.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/pycapsule.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/pyconfig.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/pyctype.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/pydebug.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/pyerrors.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/pyfpe.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/pyhash.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/pylifecycle.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/pymacconfig.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/pymacro.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/pymath.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/pymem.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/pyport.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/pystate.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/pystrcmp.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/pystrtod.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/pythonrun.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/pythread.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/pytime.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/rangeobject.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/setobject.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/sliceobject.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/structseq.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/sysmodule.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/traceback.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/tracemalloc.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/tupleobject.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/typeslots.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/unicodeobject.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/warnings.h +swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: /usr/include/python3.8/weakrefobject.h + diff --git a/build/swig/CMakeFiles/tempest_swig.dir/flags.make b/build/swig/CMakeFiles/tempest_swig.dir/flags.make new file mode 100644 index 0000000..0789bbb --- /dev/null +++ b/build/swig/CMakeFiles/tempest_swig.dir/flags.make @@ -0,0 +1,12 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.16 + +# compile CXX with /usr/bin/c++ +CXX_FLAGS = -O3 -DNDEBUG -fPIC -fvisibility=hidden -std=gnu++11 + +CXX_DEFINES = -DBOOST_ALL_NO_LIB -DBOOST_ATOMIC_DYN_LINK -DBOOST_FILESYSTEM_DYN_LINK -DBOOST_PROGRAM_OPTIONS_DYN_LINK -DBOOST_REGEX_DYN_LINK -DBOOST_SYSTEM_DYN_LINK -DBOOST_THREAD_DYN_LINK -DFFTW3F_THREADS -DGR_CTRLPORT -Dtempest_swig_EXPORTS + +CXX_INCLUDES = -I/home/emidan19/gr-tempest/build/swig -I/home/emidan19/gr-tempest/swig -I/usr/include/gnuradio/swig -I/home/emidan19/gr-tempest/lib/../include -isystem /usr/include/python3.8 + +# Custom include directories: swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o_INCLUDE_DIRECTORIES = + diff --git a/build/swig/CMakeFiles/tempest_swig.dir/link.txt b/build/swig/CMakeFiles/tempest_swig.dir/link.txt new file mode 100644 index 0000000..c6bf431 --- /dev/null +++ b/build/swig/CMakeFiles/tempest_swig.dir/link.txt @@ -0,0 +1 @@ +/usr/bin/c++ -fPIC -O3 -DNDEBUG -shared -o _tempest_swig.so CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o -Wl,-rpath,/home/emidan19/gr-tempest/build/lib: ../lib/libgnuradio-tempest.so.17a754aa /usr/lib/x86_64-linux-gnu/libpython3.8.so /usr/lib/x86_64-linux-gnu/libgnuradio-filter.so.3.8.5.0 /usr/lib/x86_64-linux-gnu/libgnuradio-blocks.so.3.8.5.0 /usr/lib/x86_64-linux-gnu/libgnuradio-fft.so.3.8.5.0 /usr/lib/x86_64-linux-gnu/libgnuradio-runtime.so.3.8.5.0 /usr/lib/x86_64-linux-gnu/libthrift.so /usr/lib/x86_64-linux-gnu/libgnuradio-pmt.so.3.8.5.0 /usr/lib/x86_64-linux-gnu/libboost_program_options.so.1.71.0 /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.71.0 /usr/lib/x86_64-linux-gnu/libboost_system.so.1.71.0 /usr/lib/x86_64-linux-gnu/libboost_regex.so.1.71.0 /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.71.0 /usr/lib/x86_64-linux-gnu/libboost_atomic.so.1.71.0 -lpthread /usr/lib/x86_64-linux-gnu/liblog4cpp.so /usr/lib/x86_64-linux-gnu/libgmpxx.so /usr/lib/x86_64-linux-gnu/libgmp.so -lrt /usr/lib/x86_64-linux-gnu/libfftw3f.so /usr/lib/x86_64-linux-gnu/libfftw3f_threads.so /usr/lib/x86_64-linux-gnu/libvolk.so.2.2 -ldl /usr/lib/x86_64-linux-gnu/liborc-0.4.so -lm diff --git a/build/swig/CMakeFiles/tempest_swig.dir/progress.make b/build/swig/CMakeFiles/tempest_swig.dir/progress.make new file mode 100644 index 0000000..d7d1be2 --- /dev/null +++ b/build/swig/CMakeFiles/tempest_swig.dir/progress.make @@ -0,0 +1,3 @@ +CMAKE_PROGRESS_1 = 16 +CMAKE_PROGRESS_2 = 17 + diff --git a/build/swig/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON.stamp b/build/swig/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON.stamp new file mode 100644 index 0000000..e69de29 diff --git a/build/swig/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx b/build/swig/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx new file mode 100644 index 0000000..c635695 --- /dev/null +++ b/build/swig/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx @@ -0,0 +1,41666 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 4.0.1 + * + * This file is not intended to be easily readable and contains a number of + * coding conventions designed to improve portability and efficiency. Do not make + * changes to this file unless you know what you are doing--modify the SWIG + * interface file instead. + * ----------------------------------------------------------------------------- */ + +#define SWIG_PYTHON_2_UNICODE +#define SWIG_PYTHON_CAST_MODE + + + +#ifndef SWIGPYTHON +#define SWIGPYTHON +#endif + +#define SWIG_PYTHON_DIRECTOR_NO_VTABLE + + +#ifdef __cplusplus +/* SwigValueWrapper is described in swig.swg */ +template class SwigValueWrapper { + struct SwigMovePointer { + T *ptr; + SwigMovePointer(T *p) : ptr(p) { } + ~SwigMovePointer() { delete ptr; } + SwigMovePointer& operator=(SwigMovePointer& rhs) { T* oldptr = ptr; ptr = 0; delete oldptr; ptr = rhs.ptr; rhs.ptr = 0; return *this; } + } pointer; + SwigValueWrapper& operator=(const SwigValueWrapper& rhs); + SwigValueWrapper(const SwigValueWrapper& rhs); +public: + SwigValueWrapper() : pointer(0) { } + SwigValueWrapper& operator=(const T& t) { SwigMovePointer tmp(new T(t)); pointer = tmp; return *this; } + operator T&() const { return *pointer.ptr; } + T *operator&() { return pointer.ptr; } +}; + +template T SwigValueInit() { + return T(); +} +#endif + +/* ----------------------------------------------------------------------------- + * This section contains generic SWIG labels for method/variable + * declarations/attributes, and other compiler dependent labels. + * ----------------------------------------------------------------------------- */ + +/* template workaround for compilers that cannot correctly implement the C++ standard */ +#ifndef SWIGTEMPLATEDISAMBIGUATOR +# if defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x560) +# define SWIGTEMPLATEDISAMBIGUATOR template +# elif defined(__HP_aCC) +/* Needed even with `aCC -AA' when `aCC -V' reports HP ANSI C++ B3910B A.03.55 */ +/* If we find a maximum version that requires this, the test would be __HP_aCC <= 35500 for A.03.55 */ +# define SWIGTEMPLATEDISAMBIGUATOR template +# else +# define SWIGTEMPLATEDISAMBIGUATOR +# endif +#endif + +/* inline attribute */ +#ifndef SWIGINLINE +# if defined(__cplusplus) || (defined(__GNUC__) && !defined(__STRICT_ANSI__)) +# define SWIGINLINE inline +# else +# define SWIGINLINE +# endif +#endif + +/* attribute recognised by some compilers to avoid 'unused' warnings */ +#ifndef SWIGUNUSED +# if defined(__GNUC__) +# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) +# define SWIGUNUSED __attribute__ ((__unused__)) +# else +# define SWIGUNUSED +# endif +# elif defined(__ICC) +# define SWIGUNUSED __attribute__ ((__unused__)) +# else +# define SWIGUNUSED +# endif +#endif + +#ifndef SWIG_MSC_UNSUPPRESS_4505 +# if defined(_MSC_VER) +# pragma warning(disable : 4505) /* unreferenced local function has been removed */ +# endif +#endif + +#ifndef SWIGUNUSEDPARM +# ifdef __cplusplus +# define SWIGUNUSEDPARM(p) +# else +# define SWIGUNUSEDPARM(p) p SWIGUNUSED +# endif +#endif + +/* internal SWIG method */ +#ifndef SWIGINTERN +# define SWIGINTERN static SWIGUNUSED +#endif + +/* internal inline SWIG method */ +#ifndef SWIGINTERNINLINE +# define SWIGINTERNINLINE SWIGINTERN SWIGINLINE +#endif + +/* exporting methods */ +#if defined(__GNUC__) +# if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) +# ifndef GCC_HASCLASSVISIBILITY +# define GCC_HASCLASSVISIBILITY +# endif +# endif +#endif + +#ifndef SWIGEXPORT +# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) +# if defined(STATIC_LINKED) +# define SWIGEXPORT +# else +# define SWIGEXPORT __declspec(dllexport) +# endif +# else +# if defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY) +# define SWIGEXPORT __attribute__ ((visibility("default"))) +# else +# define SWIGEXPORT +# endif +# endif +#endif + +/* calling conventions for Windows */ +#ifndef SWIGSTDCALL +# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) +# define SWIGSTDCALL __stdcall +# else +# define SWIGSTDCALL +# endif +#endif + +/* Deal with Microsoft's attempt at deprecating C standard runtime functions */ +#if !defined(SWIG_NO_CRT_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE) +# define _CRT_SECURE_NO_DEPRECATE +#endif + +/* Deal with Microsoft's attempt at deprecating methods in the standard C++ library */ +#if !defined(SWIG_NO_SCL_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_SCL_SECURE_NO_DEPRECATE) +# define _SCL_SECURE_NO_DEPRECATE +#endif + +/* Deal with Apple's deprecated 'AssertMacros.h' from Carbon-framework */ +#if defined(__APPLE__) && !defined(__ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES) +# define __ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES 0 +#endif + +/* Intel's compiler complains if a variable which was never initialised is + * cast to void, which is a common idiom which we use to indicate that we + * are aware a variable isn't used. So we just silence that warning. + * See: https://github.com/swig/swig/issues/192 for more discussion. + */ +#ifdef __INTEL_COMPILER +# pragma warning disable 592 +#endif + + +#if defined(__GNUC__) && defined(_WIN32) && !defined(SWIG_PYTHON_NO_HYPOT_WORKAROUND) +/* Workaround for '::hypot' has not been declared', see https://bugs.python.org/issue11566 */ +# include +#endif + +#if defined(_DEBUG) && defined(SWIG_PYTHON_INTERPRETER_NO_DEBUG) +/* Use debug wrappers with the Python release dll */ +# undef _DEBUG +# include +# define _DEBUG 1 +#else +# include +#endif + +/* ----------------------------------------------------------------------------- + * swigrun.swg + * + * This file contains generic C API SWIG runtime support for pointer + * type checking. + * ----------------------------------------------------------------------------- */ + +/* This should only be incremented when either the layout of swig_type_info changes, + or for whatever reason, the runtime changes incompatibly */ +#define SWIG_RUNTIME_VERSION "4" + +/* define SWIG_TYPE_TABLE_NAME as "SWIG_TYPE_TABLE" */ +#ifdef SWIG_TYPE_TABLE +# define SWIG_QUOTE_STRING(x) #x +# define SWIG_EXPAND_AND_QUOTE_STRING(x) SWIG_QUOTE_STRING(x) +# define SWIG_TYPE_TABLE_NAME SWIG_EXPAND_AND_QUOTE_STRING(SWIG_TYPE_TABLE) +#else +# define SWIG_TYPE_TABLE_NAME +#endif + +/* + You can use the SWIGRUNTIME and SWIGRUNTIMEINLINE macros for + creating a static or dynamic library from the SWIG runtime code. + In 99.9% of the cases, SWIG just needs to declare them as 'static'. + + But only do this if strictly necessary, ie, if you have problems + with your compiler or suchlike. +*/ + +#ifndef SWIGRUNTIME +# define SWIGRUNTIME SWIGINTERN +#endif + +#ifndef SWIGRUNTIMEINLINE +# define SWIGRUNTIMEINLINE SWIGRUNTIME SWIGINLINE +#endif + +/* Generic buffer size */ +#ifndef SWIG_BUFFER_SIZE +# define SWIG_BUFFER_SIZE 1024 +#endif + +/* Flags for pointer conversions */ +#define SWIG_POINTER_DISOWN 0x1 +#define SWIG_CAST_NEW_MEMORY 0x2 +#define SWIG_POINTER_NO_NULL 0x4 + +/* Flags for new pointer objects */ +#define SWIG_POINTER_OWN 0x1 + + +/* + Flags/methods for returning states. + + The SWIG conversion methods, as ConvertPtr, return an integer + that tells if the conversion was successful or not. And if not, + an error code can be returned (see swigerrors.swg for the codes). + + Use the following macros/flags to set or process the returning + states. + + In old versions of SWIG, code such as the following was usually written: + + if (SWIG_ConvertPtr(obj,vptr,ty.flags) != -1) { + // success code + } else { + //fail code + } + + Now you can be more explicit: + + int res = SWIG_ConvertPtr(obj,vptr,ty.flags); + if (SWIG_IsOK(res)) { + // success code + } else { + // fail code + } + + which is the same really, but now you can also do + + Type *ptr; + int res = SWIG_ConvertPtr(obj,(void **)(&ptr),ty.flags); + if (SWIG_IsOK(res)) { + // success code + if (SWIG_IsNewObj(res) { + ... + delete *ptr; + } else { + ... + } + } else { + // fail code + } + + I.e., now SWIG_ConvertPtr can return new objects and you can + identify the case and take care of the deallocation. Of course that + also requires SWIG_ConvertPtr to return new result values, such as + + int SWIG_ConvertPtr(obj, ptr,...) { + if () { + if () { + *ptr = ; + return SWIG_NEWOBJ; + } else { + *ptr = ; + return SWIG_OLDOBJ; + } + } else { + return SWIG_BADOBJ; + } + } + + Of course, returning the plain '0(success)/-1(fail)' still works, but you can be + more explicit by returning SWIG_BADOBJ, SWIG_ERROR or any of the + SWIG errors code. + + Finally, if the SWIG_CASTRANK_MODE is enabled, the result code + allows to return the 'cast rank', for example, if you have this + + int food(double) + int fooi(int); + + and you call + + food(1) // cast rank '1' (1 -> 1.0) + fooi(1) // cast rank '0' + + just use the SWIG_AddCast()/SWIG_CheckState() +*/ + +#define SWIG_OK (0) +#define SWIG_ERROR (-1) +#define SWIG_IsOK(r) (r >= 0) +#define SWIG_ArgError(r) ((r != SWIG_ERROR) ? r : SWIG_TypeError) + +/* The CastRankLimit says how many bits are used for the cast rank */ +#define SWIG_CASTRANKLIMIT (1 << 8) +/* The NewMask denotes the object was created (using new/malloc) */ +#define SWIG_NEWOBJMASK (SWIG_CASTRANKLIMIT << 1) +/* The TmpMask is for in/out typemaps that use temporal objects */ +#define SWIG_TMPOBJMASK (SWIG_NEWOBJMASK << 1) +/* Simple returning values */ +#define SWIG_BADOBJ (SWIG_ERROR) +#define SWIG_OLDOBJ (SWIG_OK) +#define SWIG_NEWOBJ (SWIG_OK | SWIG_NEWOBJMASK) +#define SWIG_TMPOBJ (SWIG_OK | SWIG_TMPOBJMASK) +/* Check, add and del mask methods */ +#define SWIG_AddNewMask(r) (SWIG_IsOK(r) ? (r | SWIG_NEWOBJMASK) : r) +#define SWIG_DelNewMask(r) (SWIG_IsOK(r) ? (r & ~SWIG_NEWOBJMASK) : r) +#define SWIG_IsNewObj(r) (SWIG_IsOK(r) && (r & SWIG_NEWOBJMASK)) +#define SWIG_AddTmpMask(r) (SWIG_IsOK(r) ? (r | SWIG_TMPOBJMASK) : r) +#define SWIG_DelTmpMask(r) (SWIG_IsOK(r) ? (r & ~SWIG_TMPOBJMASK) : r) +#define SWIG_IsTmpObj(r) (SWIG_IsOK(r) && (r & SWIG_TMPOBJMASK)) + +/* Cast-Rank Mode */ +#if defined(SWIG_CASTRANK_MODE) +# ifndef SWIG_TypeRank +# define SWIG_TypeRank unsigned long +# endif +# ifndef SWIG_MAXCASTRANK /* Default cast allowed */ +# define SWIG_MAXCASTRANK (2) +# endif +# define SWIG_CASTRANKMASK ((SWIG_CASTRANKLIMIT) -1) +# define SWIG_CastRank(r) (r & SWIG_CASTRANKMASK) +SWIGINTERNINLINE int SWIG_AddCast(int r) { + return SWIG_IsOK(r) ? ((SWIG_CastRank(r) < SWIG_MAXCASTRANK) ? (r + 1) : SWIG_ERROR) : r; +} +SWIGINTERNINLINE int SWIG_CheckState(int r) { + return SWIG_IsOK(r) ? SWIG_CastRank(r) + 1 : 0; +} +#else /* no cast-rank mode */ +# define SWIG_AddCast(r) (r) +# define SWIG_CheckState(r) (SWIG_IsOK(r) ? 1 : 0) +#endif + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef void *(*swig_converter_func)(void *, int *); +typedef struct swig_type_info *(*swig_dycast_func)(void **); + +/* Structure to store information on one type */ +typedef struct swig_type_info { + const char *name; /* mangled name of this type */ + const char *str; /* human readable name of this type */ + swig_dycast_func dcast; /* dynamic cast function down a hierarchy */ + struct swig_cast_info *cast; /* linked list of types that can cast into this type */ + void *clientdata; /* language specific type data */ + int owndata; /* flag if the structure owns the clientdata */ +} swig_type_info; + +/* Structure to store a type and conversion function used for casting */ +typedef struct swig_cast_info { + swig_type_info *type; /* pointer to type that is equivalent to this type */ + swig_converter_func converter; /* function to cast the void pointers */ + struct swig_cast_info *next; /* pointer to next cast in linked list */ + struct swig_cast_info *prev; /* pointer to the previous cast */ +} swig_cast_info; + +/* Structure used to store module information + * Each module generates one structure like this, and the runtime collects + * all of these structures and stores them in a circularly linked list.*/ +typedef struct swig_module_info { + swig_type_info **types; /* Array of pointers to swig_type_info structures that are in this module */ + size_t size; /* Number of types in this module */ + struct swig_module_info *next; /* Pointer to next element in circularly linked list */ + swig_type_info **type_initial; /* Array of initially generated type structures */ + swig_cast_info **cast_initial; /* Array of initially generated casting structures */ + void *clientdata; /* Language specific module data */ +} swig_module_info; + +/* + Compare two type names skipping the space characters, therefore + "char*" == "char *" and "Class" == "Class", etc. + + Return 0 when the two name types are equivalent, as in + strncmp, but skipping ' '. +*/ +SWIGRUNTIME int +SWIG_TypeNameComp(const char *f1, const char *l1, + const char *f2, const char *l2) { + for (;(f1 != l1) && (f2 != l2); ++f1, ++f2) { + while ((*f1 == ' ') && (f1 != l1)) ++f1; + while ((*f2 == ' ') && (f2 != l2)) ++f2; + if (*f1 != *f2) return (*f1 > *f2) ? 1 : -1; + } + return (int)((l1 - f1) - (l2 - f2)); +} + +/* + Check type equivalence in a name list like ||... + Return 0 if equal, -1 if nb < tb, 1 if nb > tb +*/ +SWIGRUNTIME int +SWIG_TypeCmp(const char *nb, const char *tb) { + int equiv = 1; + const char* te = tb + strlen(tb); + const char* ne = nb; + while (equiv != 0 && *ne) { + for (nb = ne; *ne; ++ne) { + if (*ne == '|') break; + } + equiv = SWIG_TypeNameComp(nb, ne, tb, te); + if (*ne) ++ne; + } + return equiv; +} + +/* + Check type equivalence in a name list like ||... + Return 0 if not equal, 1 if equal +*/ +SWIGRUNTIME int +SWIG_TypeEquiv(const char *nb, const char *tb) { + return SWIG_TypeCmp(nb, tb) == 0 ? 1 : 0; +} + +/* + Check the typename +*/ +SWIGRUNTIME swig_cast_info * +SWIG_TypeCheck(const char *c, swig_type_info *ty) { + if (ty) { + swig_cast_info *iter = ty->cast; + while (iter) { + if (strcmp(iter->type->name, c) == 0) { + if (iter == ty->cast) + return iter; + /* Move iter to the top of the linked list */ + iter->prev->next = iter->next; + if (iter->next) + iter->next->prev = iter->prev; + iter->next = ty->cast; + iter->prev = 0; + if (ty->cast) ty->cast->prev = iter; + ty->cast = iter; + return iter; + } + iter = iter->next; + } + } + return 0; +} + +/* + Identical to SWIG_TypeCheck, except strcmp is replaced with a pointer comparison +*/ +SWIGRUNTIME swig_cast_info * +SWIG_TypeCheckStruct(swig_type_info *from, swig_type_info *ty) { + if (ty) { + swig_cast_info *iter = ty->cast; + while (iter) { + if (iter->type == from) { + if (iter == ty->cast) + return iter; + /* Move iter to the top of the linked list */ + iter->prev->next = iter->next; + if (iter->next) + iter->next->prev = iter->prev; + iter->next = ty->cast; + iter->prev = 0; + if (ty->cast) ty->cast->prev = iter; + ty->cast = iter; + return iter; + } + iter = iter->next; + } + } + return 0; +} + +/* + Cast a pointer up an inheritance hierarchy +*/ +SWIGRUNTIMEINLINE void * +SWIG_TypeCast(swig_cast_info *ty, void *ptr, int *newmemory) { + return ((!ty) || (!ty->converter)) ? ptr : (*ty->converter)(ptr, newmemory); +} + +/* + Dynamic pointer casting. Down an inheritance hierarchy +*/ +SWIGRUNTIME swig_type_info * +SWIG_TypeDynamicCast(swig_type_info *ty, void **ptr) { + swig_type_info *lastty = ty; + if (!ty || !ty->dcast) return ty; + while (ty && (ty->dcast)) { + ty = (*ty->dcast)(ptr); + if (ty) lastty = ty; + } + return lastty; +} + +/* + Return the name associated with this type +*/ +SWIGRUNTIMEINLINE const char * +SWIG_TypeName(const swig_type_info *ty) { + return ty->name; +} + +/* + Return the pretty name associated with this type, + that is an unmangled type name in a form presentable to the user. +*/ +SWIGRUNTIME const char * +SWIG_TypePrettyName(const swig_type_info *type) { + /* The "str" field contains the equivalent pretty names of the + type, separated by vertical-bar characters. We choose + to print the last name, as it is often (?) the most + specific. */ + if (!type) return NULL; + if (type->str != NULL) { + const char *last_name = type->str; + const char *s; + for (s = type->str; *s; s++) + if (*s == '|') last_name = s+1; + return last_name; + } + else + return type->name; +} + +/* + Set the clientdata field for a type +*/ +SWIGRUNTIME void +SWIG_TypeClientData(swig_type_info *ti, void *clientdata) { + swig_cast_info *cast = ti->cast; + /* if (ti->clientdata == clientdata) return; */ + ti->clientdata = clientdata; + + while (cast) { + if (!cast->converter) { + swig_type_info *tc = cast->type; + if (!tc->clientdata) { + SWIG_TypeClientData(tc, clientdata); + } + } + cast = cast->next; + } +} +SWIGRUNTIME void +SWIG_TypeNewClientData(swig_type_info *ti, void *clientdata) { + SWIG_TypeClientData(ti, clientdata); + ti->owndata = 1; +} + +/* + Search for a swig_type_info structure only by mangled name + Search is a O(log #types) + + We start searching at module start, and finish searching when start == end. + Note: if start == end at the beginning of the function, we go all the way around + the circular list. +*/ +SWIGRUNTIME swig_type_info * +SWIG_MangledTypeQueryModule(swig_module_info *start, + swig_module_info *end, + const char *name) { + swig_module_info *iter = start; + do { + if (iter->size) { + size_t l = 0; + size_t r = iter->size - 1; + do { + /* since l+r >= 0, we can (>> 1) instead (/ 2) */ + size_t i = (l + r) >> 1; + const char *iname = iter->types[i]->name; + if (iname) { + int compare = strcmp(name, iname); + if (compare == 0) { + return iter->types[i]; + } else if (compare < 0) { + if (i) { + r = i - 1; + } else { + break; + } + } else if (compare > 0) { + l = i + 1; + } + } else { + break; /* should never happen */ + } + } while (l <= r); + } + iter = iter->next; + } while (iter != end); + return 0; +} + +/* + Search for a swig_type_info structure for either a mangled name or a human readable name. + It first searches the mangled names of the types, which is a O(log #types) + If a type is not found it then searches the human readable names, which is O(#types). + + We start searching at module start, and finish searching when start == end. + Note: if start == end at the beginning of the function, we go all the way around + the circular list. +*/ +SWIGRUNTIME swig_type_info * +SWIG_TypeQueryModule(swig_module_info *start, + swig_module_info *end, + const char *name) { + /* STEP 1: Search the name field using binary search */ + swig_type_info *ret = SWIG_MangledTypeQueryModule(start, end, name); + if (ret) { + return ret; + } else { + /* STEP 2: If the type hasn't been found, do a complete search + of the str field (the human readable name) */ + swig_module_info *iter = start; + do { + size_t i = 0; + for (; i < iter->size; ++i) { + if (iter->types[i]->str && (SWIG_TypeEquiv(iter->types[i]->str, name))) + return iter->types[i]; + } + iter = iter->next; + } while (iter != end); + } + + /* neither found a match */ + return 0; +} + +/* + Pack binary data into a string +*/ +SWIGRUNTIME char * +SWIG_PackData(char *c, void *ptr, size_t sz) { + static const char hex[17] = "0123456789abcdef"; + const unsigned char *u = (unsigned char *) ptr; + const unsigned char *eu = u + sz; + for (; u != eu; ++u) { + unsigned char uu = *u; + *(c++) = hex[(uu & 0xf0) >> 4]; + *(c++) = hex[uu & 0xf]; + } + return c; +} + +/* + Unpack binary data from a string +*/ +SWIGRUNTIME const char * +SWIG_UnpackData(const char *c, void *ptr, size_t sz) { + unsigned char *u = (unsigned char *) ptr; + const unsigned char *eu = u + sz; + for (; u != eu; ++u) { + char d = *(c++); + unsigned char uu; + if ((d >= '0') && (d <= '9')) + uu = (unsigned char)((d - '0') << 4); + else if ((d >= 'a') && (d <= 'f')) + uu = (unsigned char)((d - ('a'-10)) << 4); + else + return (char *) 0; + d = *(c++); + if ((d >= '0') && (d <= '9')) + uu |= (unsigned char)(d - '0'); + else if ((d >= 'a') && (d <= 'f')) + uu |= (unsigned char)(d - ('a'-10)); + else + return (char *) 0; + *u = uu; + } + return c; +} + +/* + Pack 'void *' into a string buffer. +*/ +SWIGRUNTIME char * +SWIG_PackVoidPtr(char *buff, void *ptr, const char *name, size_t bsz) { + char *r = buff; + if ((2*sizeof(void *) + 2) > bsz) return 0; + *(r++) = '_'; + r = SWIG_PackData(r,&ptr,sizeof(void *)); + if (strlen(name) + 1 > (bsz - (r - buff))) return 0; + strcpy(r,name); + return buff; +} + +SWIGRUNTIME const char * +SWIG_UnpackVoidPtr(const char *c, void **ptr, const char *name) { + if (*c != '_') { + if (strcmp(c,"NULL") == 0) { + *ptr = (void *) 0; + return name; + } else { + return 0; + } + } + return SWIG_UnpackData(++c,ptr,sizeof(void *)); +} + +SWIGRUNTIME char * +SWIG_PackDataName(char *buff, void *ptr, size_t sz, const char *name, size_t bsz) { + char *r = buff; + size_t lname = (name ? strlen(name) : 0); + if ((2*sz + 2 + lname) > bsz) return 0; + *(r++) = '_'; + r = SWIG_PackData(r,ptr,sz); + if (lname) { + strncpy(r,name,lname+1); + } else { + *r = 0; + } + return buff; +} + +SWIGRUNTIME const char * +SWIG_UnpackDataName(const char *c, void *ptr, size_t sz, const char *name) { + if (*c != '_') { + if (strcmp(c,"NULL") == 0) { + memset(ptr,0,sz); + return name; + } else { + return 0; + } + } + return SWIG_UnpackData(++c,ptr,sz); +} + +#ifdef __cplusplus +} +#endif + +/* Errors in SWIG */ +#define SWIG_UnknownError -1 +#define SWIG_IOError -2 +#define SWIG_RuntimeError -3 +#define SWIG_IndexError -4 +#define SWIG_TypeError -5 +#define SWIG_DivisionByZero -6 +#define SWIG_OverflowError -7 +#define SWIG_SyntaxError -8 +#define SWIG_ValueError -9 +#define SWIG_SystemError -10 +#define SWIG_AttributeError -11 +#define SWIG_MemoryError -12 +#define SWIG_NullReferenceError -13 + + + +/* Compatibility macros for Python 3 */ +#if PY_VERSION_HEX >= 0x03000000 + +#define PyClass_Check(obj) PyObject_IsInstance(obj, (PyObject *)&PyType_Type) +#define PyInt_Check(x) PyLong_Check(x) +#define PyInt_AsLong(x) PyLong_AsLong(x) +#define PyInt_FromLong(x) PyLong_FromLong(x) +#define PyInt_FromSize_t(x) PyLong_FromSize_t(x) +#define PyString_Check(name) PyBytes_Check(name) +#define PyString_FromString(x) PyUnicode_FromString(x) +#define PyString_Format(fmt, args) PyUnicode_Format(fmt, args) +#define PyString_AsString(str) PyBytes_AsString(str) +#define PyString_Size(str) PyBytes_Size(str) +#define PyString_InternFromString(key) PyUnicode_InternFromString(key) +#define Py_TPFLAGS_HAVE_CLASS Py_TPFLAGS_BASETYPE +#define PyString_AS_STRING(x) PyUnicode_AS_STRING(x) +#define _PyLong_FromSsize_t(x) PyLong_FromSsize_t(x) + +#endif + +#ifndef Py_TYPE +# define Py_TYPE(op) ((op)->ob_type) +#endif + +/* SWIG APIs for compatibility of both Python 2 & 3 */ + +#if PY_VERSION_HEX >= 0x03000000 +# define SWIG_Python_str_FromFormat PyUnicode_FromFormat +#else +# define SWIG_Python_str_FromFormat PyString_FromFormat +#endif + + +/* Warning: This function will allocate a new string in Python 3, + * so please call SWIG_Python_str_DelForPy3(x) to free the space. + */ +SWIGINTERN char* +SWIG_Python_str_AsChar(PyObject *str) +{ +#if PY_VERSION_HEX >= 0x03000000 + char *newstr = 0; + str = PyUnicode_AsUTF8String(str); + if (str) { + char *cstr; + Py_ssize_t len; + PyBytes_AsStringAndSize(str, &cstr, &len); + newstr = (char *) malloc(len+1); + memcpy(newstr, cstr, len+1); + Py_XDECREF(str); + } + return newstr; +#else + return PyString_AsString(str); +#endif +} + +#if PY_VERSION_HEX >= 0x03000000 +# define SWIG_Python_str_DelForPy3(x) free( (void*) (x) ) +#else +# define SWIG_Python_str_DelForPy3(x) +#endif + + +SWIGINTERN PyObject* +SWIG_Python_str_FromChar(const char *c) +{ +#if PY_VERSION_HEX >= 0x03000000 + return PyUnicode_FromString(c); +#else + return PyString_FromString(c); +#endif +} + +#ifndef PyObject_DEL +# define PyObject_DEL PyObject_Del +#endif + +// SWIGPY_USE_CAPSULE is no longer used within SWIG itself, but some user +// interface files check for it. +# define SWIGPY_USE_CAPSULE +# define SWIGPY_CAPSULE_NAME ("swig_runtime_data" SWIG_RUNTIME_VERSION ".type_pointer_capsule" SWIG_TYPE_TABLE_NAME) + +#if PY_VERSION_HEX < 0x03020000 +#define PyDescr_TYPE(x) (((PyDescrObject *)(x))->d_type) +#define PyDescr_NAME(x) (((PyDescrObject *)(x))->d_name) +#define Py_hash_t long +#endif + +/* ----------------------------------------------------------------------------- + * error manipulation + * ----------------------------------------------------------------------------- */ + +SWIGRUNTIME PyObject* +SWIG_Python_ErrorType(int code) { + PyObject* type = 0; + switch(code) { + case SWIG_MemoryError: + type = PyExc_MemoryError; + break; + case SWIG_IOError: + type = PyExc_IOError; + break; + case SWIG_RuntimeError: + type = PyExc_RuntimeError; + break; + case SWIG_IndexError: + type = PyExc_IndexError; + break; + case SWIG_TypeError: + type = PyExc_TypeError; + break; + case SWIG_DivisionByZero: + type = PyExc_ZeroDivisionError; + break; + case SWIG_OverflowError: + type = PyExc_OverflowError; + break; + case SWIG_SyntaxError: + type = PyExc_SyntaxError; + break; + case SWIG_ValueError: + type = PyExc_ValueError; + break; + case SWIG_SystemError: + type = PyExc_SystemError; + break; + case SWIG_AttributeError: + type = PyExc_AttributeError; + break; + default: + type = PyExc_RuntimeError; + } + return type; +} + + +SWIGRUNTIME void +SWIG_Python_AddErrorMsg(const char* mesg) +{ + PyObject *type = 0; + PyObject *value = 0; + PyObject *traceback = 0; + + if (PyErr_Occurred()) + PyErr_Fetch(&type, &value, &traceback); + if (value) { + PyObject *old_str = PyObject_Str(value); + const char *tmp = SWIG_Python_str_AsChar(old_str); + PyErr_Clear(); + Py_XINCREF(type); + if (tmp) + PyErr_Format(type, "%s %s", tmp, mesg); + else + PyErr_Format(type, "%s", mesg); + SWIG_Python_str_DelForPy3(tmp); + Py_DECREF(old_str); + Py_DECREF(value); + } else { + PyErr_SetString(PyExc_RuntimeError, mesg); + } +} + +SWIGRUNTIME int +SWIG_Python_TypeErrorOccurred(PyObject *obj) +{ + PyObject *error; + if (obj) + return 0; + error = PyErr_Occurred(); + return error && PyErr_GivenExceptionMatches(error, PyExc_TypeError); +} + +SWIGRUNTIME void +SWIG_Python_RaiseOrModifyTypeError(const char *message) +{ + if (SWIG_Python_TypeErrorOccurred(NULL)) { + /* Use existing TypeError to preserve stacktrace and enhance with given message */ + PyObject *newvalue; + PyObject *type = NULL, *value = NULL, *traceback = NULL; + PyErr_Fetch(&type, &value, &traceback); +#if PY_VERSION_HEX >= 0x03000000 + newvalue = PyUnicode_FromFormat("%S\nAdditional information:\n%s", value, message); +#else + newvalue = PyString_FromFormat("%s\nAdditional information:\n%s", PyString_AsString(value), message); +#endif + Py_XDECREF(value); + PyErr_Restore(type, newvalue, traceback); + } else { + /* Raise TypeError using given message */ + PyErr_SetString(PyExc_TypeError, message); + } +} + +#if defined(SWIG_PYTHON_NO_THREADS) +# if defined(SWIG_PYTHON_THREADS) +# undef SWIG_PYTHON_THREADS +# endif +#endif +#if defined(SWIG_PYTHON_THREADS) /* Threading support is enabled */ +# if !defined(SWIG_PYTHON_USE_GIL) && !defined(SWIG_PYTHON_NO_USE_GIL) +# define SWIG_PYTHON_USE_GIL +# endif +# if defined(SWIG_PYTHON_USE_GIL) /* Use PyGILState threads calls */ +# ifndef SWIG_PYTHON_INITIALIZE_THREADS +# define SWIG_PYTHON_INITIALIZE_THREADS PyEval_InitThreads() +# endif +# ifdef __cplusplus /* C++ code */ + class SWIG_Python_Thread_Block { + bool status; + PyGILState_STATE state; + public: + void end() { if (status) { PyGILState_Release(state); status = false;} } + SWIG_Python_Thread_Block() : status(true), state(PyGILState_Ensure()) {} + ~SWIG_Python_Thread_Block() { end(); } + }; + class SWIG_Python_Thread_Allow { + bool status; + PyThreadState *save; + public: + void end() { if (status) { PyEval_RestoreThread(save); status = false; }} + SWIG_Python_Thread_Allow() : status(true), save(PyEval_SaveThread()) {} + ~SWIG_Python_Thread_Allow() { end(); } + }; +# define SWIG_PYTHON_THREAD_BEGIN_BLOCK SWIG_Python_Thread_Block _swig_thread_block +# define SWIG_PYTHON_THREAD_END_BLOCK _swig_thread_block.end() +# define SWIG_PYTHON_THREAD_BEGIN_ALLOW SWIG_Python_Thread_Allow _swig_thread_allow +# define SWIG_PYTHON_THREAD_END_ALLOW _swig_thread_allow.end() +# else /* C code */ +# define SWIG_PYTHON_THREAD_BEGIN_BLOCK PyGILState_STATE _swig_thread_block = PyGILState_Ensure() +# define SWIG_PYTHON_THREAD_END_BLOCK PyGILState_Release(_swig_thread_block) +# define SWIG_PYTHON_THREAD_BEGIN_ALLOW PyThreadState *_swig_thread_allow = PyEval_SaveThread() +# define SWIG_PYTHON_THREAD_END_ALLOW PyEval_RestoreThread(_swig_thread_allow) +# endif +# else /* Old thread way, not implemented, user must provide it */ +# if !defined(SWIG_PYTHON_INITIALIZE_THREADS) +# define SWIG_PYTHON_INITIALIZE_THREADS +# endif +# if !defined(SWIG_PYTHON_THREAD_BEGIN_BLOCK) +# define SWIG_PYTHON_THREAD_BEGIN_BLOCK +# endif +# if !defined(SWIG_PYTHON_THREAD_END_BLOCK) +# define SWIG_PYTHON_THREAD_END_BLOCK +# endif +# if !defined(SWIG_PYTHON_THREAD_BEGIN_ALLOW) +# define SWIG_PYTHON_THREAD_BEGIN_ALLOW +# endif +# if !defined(SWIG_PYTHON_THREAD_END_ALLOW) +# define SWIG_PYTHON_THREAD_END_ALLOW +# endif +# endif +#else /* No thread support */ +# define SWIG_PYTHON_INITIALIZE_THREADS +# define SWIG_PYTHON_THREAD_BEGIN_BLOCK +# define SWIG_PYTHON_THREAD_END_BLOCK +# define SWIG_PYTHON_THREAD_BEGIN_ALLOW +# define SWIG_PYTHON_THREAD_END_ALLOW +#endif + +/* ----------------------------------------------------------------------------- + * Python API portion that goes into the runtime + * ----------------------------------------------------------------------------- */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* ----------------------------------------------------------------------------- + * Constant declarations + * ----------------------------------------------------------------------------- */ + +/* Constant Types */ +#define SWIG_PY_POINTER 4 +#define SWIG_PY_BINARY 5 + +/* Constant information structure */ +typedef struct swig_const_info { + int type; + const char *name; + long lvalue; + double dvalue; + void *pvalue; + swig_type_info **ptype; +} swig_const_info; + +#ifdef __cplusplus +} +#endif + + +/* ----------------------------------------------------------------------------- + * pyrun.swg + * + * This file contains the runtime support for Python modules + * and includes code for managing global variables and pointer + * type checking. + * + * ----------------------------------------------------------------------------- */ + +#if PY_VERSION_HEX < 0x02070000 /* 2.7.0 */ +# error "This version of SWIG only supports Python >= 2.7" +#endif + +#if PY_VERSION_HEX >= 0x03000000 && PY_VERSION_HEX < 0x03020000 +# error "This version of SWIG only supports Python 3 >= 3.2" +#endif + +/* Common SWIG API */ + +/* for raw pointers */ +#define SWIG_Python_ConvertPtr(obj, pptr, type, flags) SWIG_Python_ConvertPtrAndOwn(obj, pptr, type, flags, 0) +#define SWIG_ConvertPtr(obj, pptr, type, flags) SWIG_Python_ConvertPtr(obj, pptr, type, flags) +#define SWIG_ConvertPtrAndOwn(obj,pptr,type,flags,own) SWIG_Python_ConvertPtrAndOwn(obj, pptr, type, flags, own) + +#ifdef SWIGPYTHON_BUILTIN +#define SWIG_NewPointerObj(ptr, type, flags) SWIG_Python_NewPointerObj(self, ptr, type, flags) +#else +#define SWIG_NewPointerObj(ptr, type, flags) SWIG_Python_NewPointerObj(NULL, ptr, type, flags) +#endif + +#define SWIG_InternalNewPointerObj(ptr, type, flags) SWIG_Python_NewPointerObj(NULL, ptr, type, flags) + +#define SWIG_CheckImplicit(ty) SWIG_Python_CheckImplicit(ty) +#define SWIG_AcquirePtr(ptr, src) SWIG_Python_AcquirePtr(ptr, src) +#define swig_owntype int + +/* for raw packed data */ +#define SWIG_ConvertPacked(obj, ptr, sz, ty) SWIG_Python_ConvertPacked(obj, ptr, sz, ty) +#define SWIG_NewPackedObj(ptr, sz, type) SWIG_Python_NewPackedObj(ptr, sz, type) + +/* for class or struct pointers */ +#define SWIG_ConvertInstance(obj, pptr, type, flags) SWIG_ConvertPtr(obj, pptr, type, flags) +#define SWIG_NewInstanceObj(ptr, type, flags) SWIG_NewPointerObj(ptr, type, flags) + +/* for C or C++ function pointers */ +#define SWIG_ConvertFunctionPtr(obj, pptr, type) SWIG_Python_ConvertFunctionPtr(obj, pptr, type) +#define SWIG_NewFunctionPtrObj(ptr, type) SWIG_Python_NewPointerObj(NULL, ptr, type, 0) + +/* for C++ member pointers, ie, member methods */ +#define SWIG_ConvertMember(obj, ptr, sz, ty) SWIG_Python_ConvertPacked(obj, ptr, sz, ty) +#define SWIG_NewMemberObj(ptr, sz, type) SWIG_Python_NewPackedObj(ptr, sz, type) + + +/* Runtime API */ + +#define SWIG_GetModule(clientdata) SWIG_Python_GetModule(clientdata) +#define SWIG_SetModule(clientdata, pointer) SWIG_Python_SetModule(pointer) +#define SWIG_NewClientData(obj) SwigPyClientData_New(obj) + +#define SWIG_SetErrorObj SWIG_Python_SetErrorObj +#define SWIG_SetErrorMsg SWIG_Python_SetErrorMsg +#define SWIG_ErrorType(code) SWIG_Python_ErrorType(code) +#define SWIG_Error(code, msg) SWIG_Python_SetErrorMsg(SWIG_ErrorType(code), msg) +#define SWIG_fail goto fail + + +/* Runtime API implementation */ + +/* Error manipulation */ + +SWIGINTERN void +SWIG_Python_SetErrorObj(PyObject *errtype, PyObject *obj) { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + PyErr_SetObject(errtype, obj); + Py_DECREF(obj); + SWIG_PYTHON_THREAD_END_BLOCK; +} + +SWIGINTERN void +SWIG_Python_SetErrorMsg(PyObject *errtype, const char *msg) { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + PyErr_SetString(errtype, msg); + SWIG_PYTHON_THREAD_END_BLOCK; +} + +#define SWIG_Python_Raise(obj, type, desc) SWIG_Python_SetErrorObj(SWIG_Python_ExceptionType(desc), obj) + +/* Set a constant value */ + +#if defined(SWIGPYTHON_BUILTIN) + +SWIGINTERN void +SwigPyBuiltin_AddPublicSymbol(PyObject *seq, const char *key) { + PyObject *s = PyString_InternFromString(key); + PyList_Append(seq, s); + Py_DECREF(s); +} + +SWIGINTERN void +SWIG_Python_SetConstant(PyObject *d, PyObject *public_interface, const char *name, PyObject *obj) { + PyDict_SetItemString(d, name, obj); + Py_DECREF(obj); + if (public_interface) + SwigPyBuiltin_AddPublicSymbol(public_interface, name); +} + +#else + +SWIGINTERN void +SWIG_Python_SetConstant(PyObject *d, const char *name, PyObject *obj) { + PyDict_SetItemString(d, name, obj); + Py_DECREF(obj); +} + +#endif + +/* Append a value to the result obj */ + +SWIGINTERN PyObject* +SWIG_Python_AppendOutput(PyObject* result, PyObject* obj) { + if (!result) { + result = obj; + } else if (result == Py_None) { + Py_DECREF(result); + result = obj; + } else { + if (!PyList_Check(result)) { + PyObject *o2 = result; + result = PyList_New(1); + PyList_SetItem(result, 0, o2); + } + PyList_Append(result,obj); + Py_DECREF(obj); + } + return result; +} + +/* Unpack the argument tuple */ + +SWIGINTERN Py_ssize_t +SWIG_Python_UnpackTuple(PyObject *args, const char *name, Py_ssize_t min, Py_ssize_t max, PyObject **objs) +{ + if (!args) { + if (!min && !max) { + return 1; + } else { + PyErr_Format(PyExc_TypeError, "%s expected %s%d arguments, got none", + name, (min == max ? "" : "at least "), (int)min); + return 0; + } + } + if (!PyTuple_Check(args)) { + if (min <= 1 && max >= 1) { + Py_ssize_t i; + objs[0] = args; + for (i = 1; i < max; ++i) { + objs[i] = 0; + } + return 2; + } + PyErr_SetString(PyExc_SystemError, "UnpackTuple() argument list is not a tuple"); + return 0; + } else { + Py_ssize_t l = PyTuple_GET_SIZE(args); + if (l < min) { + PyErr_Format(PyExc_TypeError, "%s expected %s%d arguments, got %d", + name, (min == max ? "" : "at least "), (int)min, (int)l); + return 0; + } else if (l > max) { + PyErr_Format(PyExc_TypeError, "%s expected %s%d arguments, got %d", + name, (min == max ? "" : "at most "), (int)max, (int)l); + return 0; + } else { + Py_ssize_t i; + for (i = 0; i < l; ++i) { + objs[i] = PyTuple_GET_ITEM(args, i); + } + for (; l < max; ++l) { + objs[l] = 0; + } + return i + 1; + } + } +} + +/* A functor is a function object with one single object argument */ +#define SWIG_Python_CallFunctor(functor, obj) PyObject_CallFunctionObjArgs(functor, obj, NULL); + +/* + Helper for static pointer initialization for both C and C++ code, for example + static PyObject *SWIG_STATIC_POINTER(MyVar) = NewSomething(...); +*/ +#ifdef __cplusplus +#define SWIG_STATIC_POINTER(var) var +#else +#define SWIG_STATIC_POINTER(var) var = 0; if (!var) var +#endif + +/* ----------------------------------------------------------------------------- + * Pointer declarations + * ----------------------------------------------------------------------------- */ + +/* Flags for new pointer objects */ +#define SWIG_POINTER_NOSHADOW (SWIG_POINTER_OWN << 1) +#define SWIG_POINTER_NEW (SWIG_POINTER_NOSHADOW | SWIG_POINTER_OWN) + +#define SWIG_POINTER_IMPLICIT_CONV (SWIG_POINTER_DISOWN << 1) + +#define SWIG_BUILTIN_TP_INIT (SWIG_POINTER_OWN << 2) +#define SWIG_BUILTIN_INIT (SWIG_BUILTIN_TP_INIT | SWIG_POINTER_OWN) + +#ifdef __cplusplus +extern "C" { +#endif + +/* The python void return value */ + +SWIGRUNTIMEINLINE PyObject * +SWIG_Py_Void(void) +{ + PyObject *none = Py_None; + Py_INCREF(none); + return none; +} + +/* SwigPyClientData */ + +typedef struct { + PyObject *klass; + PyObject *newraw; + PyObject *newargs; + PyObject *destroy; + int delargs; + int implicitconv; + PyTypeObject *pytype; +} SwigPyClientData; + +SWIGRUNTIMEINLINE int +SWIG_Python_CheckImplicit(swig_type_info *ty) +{ + SwigPyClientData *data = (SwigPyClientData *)ty->clientdata; + int fail = data ? data->implicitconv : 0; + if (fail) + PyErr_SetString(PyExc_TypeError, "Implicit conversion is prohibited for explicit constructors."); + return fail; +} + +SWIGRUNTIMEINLINE PyObject * +SWIG_Python_ExceptionType(swig_type_info *desc) { + SwigPyClientData *data = desc ? (SwigPyClientData *) desc->clientdata : 0; + PyObject *klass = data ? data->klass : 0; + return (klass ? klass : PyExc_RuntimeError); +} + + +SWIGRUNTIME SwigPyClientData * +SwigPyClientData_New(PyObject* obj) +{ + if (!obj) { + return 0; + } else { + SwigPyClientData *data = (SwigPyClientData *)malloc(sizeof(SwigPyClientData)); + /* the klass element */ + data->klass = obj; + Py_INCREF(data->klass); + /* the newraw method and newargs arguments used to create a new raw instance */ + if (PyClass_Check(obj)) { + data->newraw = 0; + data->newargs = obj; + Py_INCREF(obj); + } else { + data->newraw = PyObject_GetAttrString(data->klass, "__new__"); + if (data->newraw) { + Py_INCREF(data->newraw); + data->newargs = PyTuple_New(1); + PyTuple_SetItem(data->newargs, 0, obj); + } else { + data->newargs = obj; + } + Py_INCREF(data->newargs); + } + /* the destroy method, aka as the C++ delete method */ + data->destroy = PyObject_GetAttrString(data->klass, "__swig_destroy__"); + if (PyErr_Occurred()) { + PyErr_Clear(); + data->destroy = 0; + } + if (data->destroy) { + int flags; + Py_INCREF(data->destroy); + flags = PyCFunction_GET_FLAGS(data->destroy); + data->delargs = !(flags & (METH_O)); + } else { + data->delargs = 0; + } + data->implicitconv = 0; + data->pytype = 0; + return data; + } +} + +SWIGRUNTIME void +SwigPyClientData_Del(SwigPyClientData *data) { + Py_XDECREF(data->newraw); + Py_XDECREF(data->newargs); + Py_XDECREF(data->destroy); +} + +/* =============== SwigPyObject =====================*/ + +typedef struct { + PyObject_HEAD + void *ptr; + swig_type_info *ty; + int own; + PyObject *next; +#ifdef SWIGPYTHON_BUILTIN + PyObject *dict; +#endif +} SwigPyObject; + + +#ifdef SWIGPYTHON_BUILTIN + +SWIGRUNTIME PyObject * +SwigPyObject_get___dict__(PyObject *v, PyObject *SWIGUNUSEDPARM(args)) +{ + SwigPyObject *sobj = (SwigPyObject *)v; + + if (!sobj->dict) + sobj->dict = PyDict_New(); + + Py_INCREF(sobj->dict); + return sobj->dict; +} + +#endif + +SWIGRUNTIME PyObject * +SwigPyObject_long(SwigPyObject *v) +{ + return PyLong_FromVoidPtr(v->ptr); +} + +SWIGRUNTIME PyObject * +SwigPyObject_format(const char* fmt, SwigPyObject *v) +{ + PyObject *res = NULL; + PyObject *args = PyTuple_New(1); + if (args) { + if (PyTuple_SetItem(args, 0, SwigPyObject_long(v)) == 0) { + PyObject *ofmt = SWIG_Python_str_FromChar(fmt); + if (ofmt) { +#if PY_VERSION_HEX >= 0x03000000 + res = PyUnicode_Format(ofmt,args); +#else + res = PyString_Format(ofmt,args); +#endif + Py_DECREF(ofmt); + } + Py_DECREF(args); + } + } + return res; +} + +SWIGRUNTIME PyObject * +SwigPyObject_oct(SwigPyObject *v) +{ + return SwigPyObject_format("%o",v); +} + +SWIGRUNTIME PyObject * +SwigPyObject_hex(SwigPyObject *v) +{ + return SwigPyObject_format("%x",v); +} + +SWIGRUNTIME PyObject * +SwigPyObject_repr(SwigPyObject *v) +{ + const char *name = SWIG_TypePrettyName(v->ty); + PyObject *repr = SWIG_Python_str_FromFormat("", (name ? name : "unknown"), (void *)v); + if (v->next) { + PyObject *nrep = SwigPyObject_repr((SwigPyObject *)v->next); +# if PY_VERSION_HEX >= 0x03000000 + PyObject *joined = PyUnicode_Concat(repr, nrep); + Py_DecRef(repr); + Py_DecRef(nrep); + repr = joined; +# else + PyString_ConcatAndDel(&repr,nrep); +# endif + } + return repr; +} + +/* We need a version taking two PyObject* parameters so it's a valid + * PyCFunction to use in swigobject_methods[]. */ +SWIGRUNTIME PyObject * +SwigPyObject_repr2(PyObject *v, PyObject *SWIGUNUSEDPARM(args)) +{ + return SwigPyObject_repr((SwigPyObject*)v); +} + +SWIGRUNTIME int +SwigPyObject_compare(SwigPyObject *v, SwigPyObject *w) +{ + void *i = v->ptr; + void *j = w->ptr; + return (i < j) ? -1 : ((i > j) ? 1 : 0); +} + +/* Added for Python 3.x, would it also be useful for Python 2.x? */ +SWIGRUNTIME PyObject* +SwigPyObject_richcompare(SwigPyObject *v, SwigPyObject *w, int op) +{ + PyObject* res; + if( op != Py_EQ && op != Py_NE ) { + Py_INCREF(Py_NotImplemented); + return Py_NotImplemented; + } + res = PyBool_FromLong( (SwigPyObject_compare(v, w)==0) == (op == Py_EQ) ? 1 : 0); + return res; +} + + +SWIGRUNTIME PyTypeObject* SwigPyObject_TypeOnce(void); + +#ifdef SWIGPYTHON_BUILTIN +static swig_type_info *SwigPyObject_stype = 0; +SWIGRUNTIME PyTypeObject* +SwigPyObject_type(void) { + SwigPyClientData *cd; + assert(SwigPyObject_stype); + cd = (SwigPyClientData*) SwigPyObject_stype->clientdata; + assert(cd); + assert(cd->pytype); + return cd->pytype; +} +#else +SWIGRUNTIME PyTypeObject* +SwigPyObject_type(void) { + static PyTypeObject *SWIG_STATIC_POINTER(type) = SwigPyObject_TypeOnce(); + return type; +} +#endif + +SWIGRUNTIMEINLINE int +SwigPyObject_Check(PyObject *op) { +#ifdef SWIGPYTHON_BUILTIN + PyTypeObject *target_tp = SwigPyObject_type(); + if (PyType_IsSubtype(op->ob_type, target_tp)) + return 1; + return (strcmp(op->ob_type->tp_name, "SwigPyObject") == 0); +#else + return (Py_TYPE(op) == SwigPyObject_type()) + || (strcmp(Py_TYPE(op)->tp_name,"SwigPyObject") == 0); +#endif +} + +SWIGRUNTIME PyObject * +SwigPyObject_New(void *ptr, swig_type_info *ty, int own); + +SWIGRUNTIME void +SwigPyObject_dealloc(PyObject *v) +{ + SwigPyObject *sobj = (SwigPyObject *) v; + PyObject *next = sobj->next; + if (sobj->own == SWIG_POINTER_OWN) { + swig_type_info *ty = sobj->ty; + SwigPyClientData *data = ty ? (SwigPyClientData *) ty->clientdata : 0; + PyObject *destroy = data ? data->destroy : 0; + if (destroy) { + /* destroy is always a VARARGS method */ + PyObject *res; + + /* PyObject_CallFunction() has the potential to silently drop + the active exception. In cases of unnamed temporary + variable or where we just finished iterating over a generator + StopIteration will be active right now, and this needs to + remain true upon return from SwigPyObject_dealloc. So save + and restore. */ + + PyObject *type = NULL, *value = NULL, *traceback = NULL; + PyErr_Fetch(&type, &value, &traceback); + + if (data->delargs) { + /* we need to create a temporary object to carry the destroy operation */ + PyObject *tmp = SwigPyObject_New(sobj->ptr, ty, 0); + res = SWIG_Python_CallFunctor(destroy, tmp); + Py_DECREF(tmp); + } else { + PyCFunction meth = PyCFunction_GET_FUNCTION(destroy); + PyObject *mself = PyCFunction_GET_SELF(destroy); + res = ((*meth)(mself, v)); + } + if (!res) + PyErr_WriteUnraisable(destroy); + + PyErr_Restore(type, value, traceback); + + Py_XDECREF(res); + } +#if !defined(SWIG_PYTHON_SILENT_MEMLEAK) + else { + const char *name = SWIG_TypePrettyName(ty); + printf("swig/python detected a memory leak of type '%s', no destructor found.\n", (name ? name : "unknown")); + } +#endif + } + Py_XDECREF(next); + PyObject_DEL(v); +} + +SWIGRUNTIME PyObject* +SwigPyObject_append(PyObject* v, PyObject* next) +{ + SwigPyObject *sobj = (SwigPyObject *) v; + if (!SwigPyObject_Check(next)) { + PyErr_SetString(PyExc_TypeError, "Attempt to append a non SwigPyObject"); + return NULL; + } + sobj->next = next; + Py_INCREF(next); + return SWIG_Py_Void(); +} + +SWIGRUNTIME PyObject* +SwigPyObject_next(PyObject* v, PyObject *SWIGUNUSEDPARM(args)) +{ + SwigPyObject *sobj = (SwigPyObject *) v; + if (sobj->next) { + Py_INCREF(sobj->next); + return sobj->next; + } else { + return SWIG_Py_Void(); + } +} + +SWIGINTERN PyObject* +SwigPyObject_disown(PyObject* v, PyObject *SWIGUNUSEDPARM(args)) +{ + SwigPyObject *sobj = (SwigPyObject *)v; + sobj->own = 0; + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject* +SwigPyObject_acquire(PyObject* v, PyObject *SWIGUNUSEDPARM(args)) +{ + SwigPyObject *sobj = (SwigPyObject *)v; + sobj->own = SWIG_POINTER_OWN; + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject* +SwigPyObject_own(PyObject *v, PyObject *args) +{ + PyObject *val = 0; + if (!PyArg_UnpackTuple(args, "own", 0, 1, &val)) { + return NULL; + } else { + SwigPyObject *sobj = (SwigPyObject *)v; + PyObject *obj = PyBool_FromLong(sobj->own); + if (val) { + if (PyObject_IsTrue(val)) { + SwigPyObject_acquire(v,args); + } else { + SwigPyObject_disown(v,args); + } + } + return obj; + } +} + +static PyMethodDef +swigobject_methods[] = { + {"disown", SwigPyObject_disown, METH_NOARGS, "releases ownership of the pointer"}, + {"acquire", SwigPyObject_acquire, METH_NOARGS, "acquires ownership of the pointer"}, + {"own", SwigPyObject_own, METH_VARARGS, "returns/sets ownership of the pointer"}, + {"append", SwigPyObject_append, METH_O, "appends another 'this' object"}, + {"next", SwigPyObject_next, METH_NOARGS, "returns the next 'this' object"}, + {"__repr__",SwigPyObject_repr2, METH_NOARGS, "returns object representation"}, + {0, 0, 0, 0} +}; + +SWIGRUNTIME PyTypeObject* +SwigPyObject_TypeOnce(void) { + static char swigobject_doc[] = "Swig object carries a C/C++ instance pointer"; + + static PyNumberMethods SwigPyObject_as_number = { + (binaryfunc)0, /*nb_add*/ + (binaryfunc)0, /*nb_subtract*/ + (binaryfunc)0, /*nb_multiply*/ + /* nb_divide removed in Python 3 */ +#if PY_VERSION_HEX < 0x03000000 + (binaryfunc)0, /*nb_divide*/ +#endif + (binaryfunc)0, /*nb_remainder*/ + (binaryfunc)0, /*nb_divmod*/ + (ternaryfunc)0,/*nb_power*/ + (unaryfunc)0, /*nb_negative*/ + (unaryfunc)0, /*nb_positive*/ + (unaryfunc)0, /*nb_absolute*/ + (inquiry)0, /*nb_nonzero*/ + 0, /*nb_invert*/ + 0, /*nb_lshift*/ + 0, /*nb_rshift*/ + 0, /*nb_and*/ + 0, /*nb_xor*/ + 0, /*nb_or*/ +#if PY_VERSION_HEX < 0x03000000 + 0, /*nb_coerce*/ +#endif + (unaryfunc)SwigPyObject_long, /*nb_int*/ +#if PY_VERSION_HEX < 0x03000000 + (unaryfunc)SwigPyObject_long, /*nb_long*/ +#else + 0, /*nb_reserved*/ +#endif + (unaryfunc)0, /*nb_float*/ +#if PY_VERSION_HEX < 0x03000000 + (unaryfunc)SwigPyObject_oct, /*nb_oct*/ + (unaryfunc)SwigPyObject_hex, /*nb_hex*/ +#endif +#if PY_VERSION_HEX >= 0x03050000 /* 3.5 */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_inplace_matrix_multiply */ +#elif PY_VERSION_HEX >= 0x03000000 /* 3.0 */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_index, nb_inplace_divide removed */ +#else + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_index */ +#endif + }; + + static PyTypeObject swigpyobject_type; + static int type_init = 0; + if (!type_init) { + const PyTypeObject tmp = { +#if PY_VERSION_HEX >= 0x03000000 + PyVarObject_HEAD_INIT(NULL, 0) +#else + PyObject_HEAD_INIT(NULL) + 0, /* ob_size */ +#endif + "SwigPyObject", /* tp_name */ + sizeof(SwigPyObject), /* tp_basicsize */ + 0, /* tp_itemsize */ + (destructor)SwigPyObject_dealloc, /* tp_dealloc */ + 0, /* tp_print */ + (getattrfunc)0, /* tp_getattr */ + (setattrfunc)0, /* tp_setattr */ +#if PY_VERSION_HEX >= 0x03000000 + 0, /* tp_reserved in 3.0.1, tp_compare in 3.0.0 but not used */ +#else + (cmpfunc)SwigPyObject_compare, /* tp_compare */ +#endif + (reprfunc)SwigPyObject_repr, /* tp_repr */ + &SwigPyObject_as_number, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + (hashfunc)0, /* tp_hash */ + (ternaryfunc)0, /* tp_call */ + 0, /* tp_str */ + PyObject_GenericGetAttr, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT, /* tp_flags */ + swigobject_doc, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + (richcmpfunc)SwigPyObject_richcompare,/* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + swigobject_methods, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + 0, /* tp_bases */ + 0, /* tp_mro */ + 0, /* tp_cache */ + 0, /* tp_subclasses */ + 0, /* tp_weaklist */ + 0, /* tp_del */ + 0, /* tp_version_tag */ +#if PY_VERSION_HEX >= 0x03040000 + 0, /* tp_finalize */ +#endif +#ifdef COUNT_ALLOCS + 0, /* tp_allocs */ + 0, /* tp_frees */ + 0, /* tp_maxalloc */ + 0, /* tp_prev */ + 0 /* tp_next */ +#endif + }; + swigpyobject_type = tmp; + type_init = 1; + if (PyType_Ready(&swigpyobject_type) < 0) + return NULL; + } + return &swigpyobject_type; +} + +SWIGRUNTIME PyObject * +SwigPyObject_New(void *ptr, swig_type_info *ty, int own) +{ + SwigPyObject *sobj = PyObject_NEW(SwigPyObject, SwigPyObject_type()); + if (sobj) { + sobj->ptr = ptr; + sobj->ty = ty; + sobj->own = own; + sobj->next = 0; + } + return (PyObject *)sobj; +} + +/* ----------------------------------------------------------------------------- + * Implements a simple Swig Packed type, and use it instead of string + * ----------------------------------------------------------------------------- */ + +typedef struct { + PyObject_HEAD + void *pack; + swig_type_info *ty; + size_t size; +} SwigPyPacked; + +SWIGRUNTIME PyObject * +SwigPyPacked_repr(SwigPyPacked *v) +{ + char result[SWIG_BUFFER_SIZE]; + if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))) { + return SWIG_Python_str_FromFormat("", result, v->ty->name); + } else { + return SWIG_Python_str_FromFormat("", v->ty->name); + } +} + +SWIGRUNTIME PyObject * +SwigPyPacked_str(SwigPyPacked *v) +{ + char result[SWIG_BUFFER_SIZE]; + if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))){ + return SWIG_Python_str_FromFormat("%s%s", result, v->ty->name); + } else { + return SWIG_Python_str_FromChar(v->ty->name); + } +} + +SWIGRUNTIME int +SwigPyPacked_compare(SwigPyPacked *v, SwigPyPacked *w) +{ + size_t i = v->size; + size_t j = w->size; + int s = (i < j) ? -1 : ((i > j) ? 1 : 0); + return s ? s : strncmp((const char *)v->pack, (const char *)w->pack, 2*v->size); +} + +SWIGRUNTIME PyTypeObject* SwigPyPacked_TypeOnce(void); + +SWIGRUNTIME PyTypeObject* +SwigPyPacked_type(void) { + static PyTypeObject *SWIG_STATIC_POINTER(type) = SwigPyPacked_TypeOnce(); + return type; +} + +SWIGRUNTIMEINLINE int +SwigPyPacked_Check(PyObject *op) { + return ((op)->ob_type == SwigPyPacked_TypeOnce()) + || (strcmp((op)->ob_type->tp_name,"SwigPyPacked") == 0); +} + +SWIGRUNTIME void +SwigPyPacked_dealloc(PyObject *v) +{ + if (SwigPyPacked_Check(v)) { + SwigPyPacked *sobj = (SwigPyPacked *) v; + free(sobj->pack); + } + PyObject_DEL(v); +} + +SWIGRUNTIME PyTypeObject* +SwigPyPacked_TypeOnce(void) { + static char swigpacked_doc[] = "Swig object carries a C/C++ instance pointer"; + static PyTypeObject swigpypacked_type; + static int type_init = 0; + if (!type_init) { + const PyTypeObject tmp = { +#if PY_VERSION_HEX>=0x03000000 + PyVarObject_HEAD_INIT(NULL, 0) +#else + PyObject_HEAD_INIT(NULL) + 0, /* ob_size */ +#endif + "SwigPyPacked", /* tp_name */ + sizeof(SwigPyPacked), /* tp_basicsize */ + 0, /* tp_itemsize */ + (destructor)SwigPyPacked_dealloc, /* tp_dealloc */ + 0, /* tp_print */ + (getattrfunc)0, /* tp_getattr */ + (setattrfunc)0, /* tp_setattr */ +#if PY_VERSION_HEX>=0x03000000 + 0, /* tp_reserved in 3.0.1 */ +#else + (cmpfunc)SwigPyPacked_compare, /* tp_compare */ +#endif + (reprfunc)SwigPyPacked_repr, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + (hashfunc)0, /* tp_hash */ + (ternaryfunc)0, /* tp_call */ + (reprfunc)SwigPyPacked_str, /* tp_str */ + PyObject_GenericGetAttr, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT, /* tp_flags */ + swigpacked_doc, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + 0, /* tp_bases */ + 0, /* tp_mro */ + 0, /* tp_cache */ + 0, /* tp_subclasses */ + 0, /* tp_weaklist */ + 0, /* tp_del */ + 0, /* tp_version_tag */ +#if PY_VERSION_HEX >= 0x03040000 + 0, /* tp_finalize */ +#endif +#ifdef COUNT_ALLOCS + 0, /* tp_allocs */ + 0, /* tp_frees */ + 0, /* tp_maxalloc */ + 0, /* tp_prev */ + 0 /* tp_next */ +#endif + }; + swigpypacked_type = tmp; + type_init = 1; + if (PyType_Ready(&swigpypacked_type) < 0) + return NULL; + } + return &swigpypacked_type; +} + +SWIGRUNTIME PyObject * +SwigPyPacked_New(void *ptr, size_t size, swig_type_info *ty) +{ + SwigPyPacked *sobj = PyObject_NEW(SwigPyPacked, SwigPyPacked_type()); + if (sobj) { + void *pack = malloc(size); + if (pack) { + memcpy(pack, ptr, size); + sobj->pack = pack; + sobj->ty = ty; + sobj->size = size; + } else { + PyObject_DEL((PyObject *) sobj); + sobj = 0; + } + } + return (PyObject *) sobj; +} + +SWIGRUNTIME swig_type_info * +SwigPyPacked_UnpackData(PyObject *obj, void *ptr, size_t size) +{ + if (SwigPyPacked_Check(obj)) { + SwigPyPacked *sobj = (SwigPyPacked *)obj; + if (sobj->size != size) return 0; + memcpy(ptr, sobj->pack, size); + return sobj->ty; + } else { + return 0; + } +} + +/* ----------------------------------------------------------------------------- + * pointers/data manipulation + * ----------------------------------------------------------------------------- */ + +static PyObject *Swig_This_global = NULL; + +SWIGRUNTIME PyObject * +SWIG_This(void) +{ + if (Swig_This_global == NULL) + Swig_This_global = SWIG_Python_str_FromChar("this"); + return Swig_This_global; +} + +/* #define SWIG_PYTHON_SLOW_GETSET_THIS */ + +/* TODO: I don't know how to implement the fast getset in Python 3 right now */ +#if PY_VERSION_HEX>=0x03000000 +#define SWIG_PYTHON_SLOW_GETSET_THIS +#endif + +SWIGRUNTIME SwigPyObject * +SWIG_Python_GetSwigThis(PyObject *pyobj) +{ + PyObject *obj; + + if (SwigPyObject_Check(pyobj)) + return (SwigPyObject *) pyobj; + +#ifdef SWIGPYTHON_BUILTIN + (void)obj; +# ifdef PyWeakref_CheckProxy + if (PyWeakref_CheckProxy(pyobj)) { + pyobj = PyWeakref_GET_OBJECT(pyobj); + if (pyobj && SwigPyObject_Check(pyobj)) + return (SwigPyObject*) pyobj; + } +# endif + return NULL; +#else + + obj = 0; + +#if !defined(SWIG_PYTHON_SLOW_GETSET_THIS) + if (PyInstance_Check(pyobj)) { + obj = _PyInstance_Lookup(pyobj, SWIG_This()); + } else { + PyObject **dictptr = _PyObject_GetDictPtr(pyobj); + if (dictptr != NULL) { + PyObject *dict = *dictptr; + obj = dict ? PyDict_GetItem(dict, SWIG_This()) : 0; + } else { +#ifdef PyWeakref_CheckProxy + if (PyWeakref_CheckProxy(pyobj)) { + PyObject *wobj = PyWeakref_GET_OBJECT(pyobj); + return wobj ? SWIG_Python_GetSwigThis(wobj) : 0; + } +#endif + obj = PyObject_GetAttr(pyobj,SWIG_This()); + if (obj) { + Py_DECREF(obj); + } else { + if (PyErr_Occurred()) PyErr_Clear(); + return 0; + } + } + } +#else + obj = PyObject_GetAttr(pyobj,SWIG_This()); + if (obj) { + Py_DECREF(obj); + } else { + if (PyErr_Occurred()) PyErr_Clear(); + return 0; + } +#endif + if (obj && !SwigPyObject_Check(obj)) { + /* a PyObject is called 'this', try to get the 'real this' + SwigPyObject from it */ + return SWIG_Python_GetSwigThis(obj); + } + return (SwigPyObject *)obj; +#endif +} + +/* Acquire a pointer value */ + +SWIGRUNTIME int +SWIG_Python_AcquirePtr(PyObject *obj, int own) { + if (own == SWIG_POINTER_OWN) { + SwigPyObject *sobj = SWIG_Python_GetSwigThis(obj); + if (sobj) { + int oldown = sobj->own; + sobj->own = own; + return oldown; + } + } + return 0; +} + +/* Convert a pointer value */ + +SWIGRUNTIME int +SWIG_Python_ConvertPtrAndOwn(PyObject *obj, void **ptr, swig_type_info *ty, int flags, int *own) { + int res; + SwigPyObject *sobj; + int implicit_conv = (flags & SWIG_POINTER_IMPLICIT_CONV) != 0; + + if (!obj) + return SWIG_ERROR; + if (obj == Py_None && !implicit_conv) { + if (ptr) + *ptr = 0; + return (flags & SWIG_POINTER_NO_NULL) ? SWIG_NullReferenceError : SWIG_OK; + } + + res = SWIG_ERROR; + + sobj = SWIG_Python_GetSwigThis(obj); + if (own) + *own = 0; + while (sobj) { + void *vptr = sobj->ptr; + if (ty) { + swig_type_info *to = sobj->ty; + if (to == ty) { + /* no type cast needed */ + if (ptr) *ptr = vptr; + break; + } else { + swig_cast_info *tc = SWIG_TypeCheck(to->name,ty); + if (!tc) { + sobj = (SwigPyObject *)sobj->next; + } else { + if (ptr) { + int newmemory = 0; + *ptr = SWIG_TypeCast(tc,vptr,&newmemory); + if (newmemory == SWIG_CAST_NEW_MEMORY) { + assert(own); /* badly formed typemap which will lead to a memory leak - it must set and use own to delete *ptr */ + if (own) + *own = *own | SWIG_CAST_NEW_MEMORY; + } + } + break; + } + } + } else { + if (ptr) *ptr = vptr; + break; + } + } + if (sobj) { + if (own) + *own = *own | sobj->own; + if (flags & SWIG_POINTER_DISOWN) { + sobj->own = 0; + } + res = SWIG_OK; + } else { + if (implicit_conv) { + SwigPyClientData *data = ty ? (SwigPyClientData *) ty->clientdata : 0; + if (data && !data->implicitconv) { + PyObject *klass = data->klass; + if (klass) { + PyObject *impconv; + data->implicitconv = 1; /* avoid recursion and call 'explicit' constructors*/ + impconv = SWIG_Python_CallFunctor(klass, obj); + data->implicitconv = 0; + if (PyErr_Occurred()) { + PyErr_Clear(); + impconv = 0; + } + if (impconv) { + SwigPyObject *iobj = SWIG_Python_GetSwigThis(impconv); + if (iobj) { + void *vptr; + res = SWIG_Python_ConvertPtrAndOwn((PyObject*)iobj, &vptr, ty, 0, 0); + if (SWIG_IsOK(res)) { + if (ptr) { + *ptr = vptr; + /* transfer the ownership to 'ptr' */ + iobj->own = 0; + res = SWIG_AddCast(res); + res = SWIG_AddNewMask(res); + } else { + res = SWIG_AddCast(res); + } + } + } + Py_DECREF(impconv); + } + } + } + if (!SWIG_IsOK(res) && obj == Py_None) { + if (ptr) + *ptr = 0; + if (PyErr_Occurred()) + PyErr_Clear(); + res = SWIG_OK; + } + } + } + return res; +} + +/* Convert a function ptr value */ + +SWIGRUNTIME int +SWIG_Python_ConvertFunctionPtr(PyObject *obj, void **ptr, swig_type_info *ty) { + if (!PyCFunction_Check(obj)) { + return SWIG_ConvertPtr(obj, ptr, ty, 0); + } else { + void *vptr = 0; + swig_cast_info *tc; + + /* here we get the method pointer for callbacks */ + const char *doc = (((PyCFunctionObject *)obj) -> m_ml -> ml_doc); + const char *desc = doc ? strstr(doc, "swig_ptr: ") : 0; + if (desc) + desc = ty ? SWIG_UnpackVoidPtr(desc + 10, &vptr, ty->name) : 0; + if (!desc) + return SWIG_ERROR; + tc = SWIG_TypeCheck(desc,ty); + if (tc) { + int newmemory = 0; + *ptr = SWIG_TypeCast(tc,vptr,&newmemory); + assert(!newmemory); /* newmemory handling not yet implemented */ + } else { + return SWIG_ERROR; + } + return SWIG_OK; + } +} + +/* Convert a packed pointer value */ + +SWIGRUNTIME int +SWIG_Python_ConvertPacked(PyObject *obj, void *ptr, size_t sz, swig_type_info *ty) { + swig_type_info *to = SwigPyPacked_UnpackData(obj, ptr, sz); + if (!to) return SWIG_ERROR; + if (ty) { + if (to != ty) { + /* check type cast? */ + swig_cast_info *tc = SWIG_TypeCheck(to->name,ty); + if (!tc) return SWIG_ERROR; + } + } + return SWIG_OK; +} + +/* ----------------------------------------------------------------------------- + * Create a new pointer object + * ----------------------------------------------------------------------------- */ + +/* + Create a new instance object, without calling __init__, and set the + 'this' attribute. +*/ + +SWIGRUNTIME PyObject* +SWIG_Python_NewShadowInstance(SwigPyClientData *data, PyObject *swig_this) +{ + PyObject *inst = 0; + PyObject *newraw = data->newraw; + if (newraw) { + inst = PyObject_Call(newraw, data->newargs, NULL); + if (inst) { +#if !defined(SWIG_PYTHON_SLOW_GETSET_THIS) + PyObject **dictptr = _PyObject_GetDictPtr(inst); + if (dictptr != NULL) { + PyObject *dict = *dictptr; + if (dict == NULL) { + dict = PyDict_New(); + *dictptr = dict; + PyDict_SetItem(dict, SWIG_This(), swig_this); + } + } +#else + PyObject *key = SWIG_This(); + PyObject_SetAttr(inst, key, swig_this); +#endif + } + } else { +#if PY_VERSION_HEX >= 0x03000000 + PyObject *empty_args = PyTuple_New(0); + if (empty_args) { + PyObject *empty_kwargs = PyDict_New(); + if (empty_kwargs) { + inst = ((PyTypeObject *)data->newargs)->tp_new((PyTypeObject *)data->newargs, empty_args, empty_kwargs); + Py_DECREF(empty_kwargs); + if (inst) { + PyObject_SetAttr(inst, SWIG_This(), swig_this); + Py_TYPE(inst)->tp_flags &= ~Py_TPFLAGS_VALID_VERSION_TAG; + } + } + Py_DECREF(empty_args); + } +#else + PyObject *dict = PyDict_New(); + if (dict) { + PyDict_SetItem(dict, SWIG_This(), swig_this); + inst = PyInstance_NewRaw(data->newargs, dict); + Py_DECREF(dict); + } +#endif + } + return inst; +} + +SWIGRUNTIME void +SWIG_Python_SetSwigThis(PyObject *inst, PyObject *swig_this) +{ + PyObject *dict; +#if !defined(SWIG_PYTHON_SLOW_GETSET_THIS) + PyObject **dictptr = _PyObject_GetDictPtr(inst); + if (dictptr != NULL) { + dict = *dictptr; + if (dict == NULL) { + dict = PyDict_New(); + *dictptr = dict; + } + PyDict_SetItem(dict, SWIG_This(), swig_this); + return; + } +#endif + dict = PyObject_GetAttrString(inst, "__dict__"); + PyDict_SetItem(dict, SWIG_This(), swig_this); + Py_DECREF(dict); +} + + +SWIGINTERN PyObject * +SWIG_Python_InitShadowInstance(PyObject *args) { + PyObject *obj[2]; + if (!SWIG_Python_UnpackTuple(args, "swiginit", 2, 2, obj)) { + return NULL; + } else { + SwigPyObject *sthis = SWIG_Python_GetSwigThis(obj[0]); + if (sthis) { + SwigPyObject_append((PyObject*) sthis, obj[1]); + } else { + SWIG_Python_SetSwigThis(obj[0], obj[1]); + } + return SWIG_Py_Void(); + } +} + +/* Create a new pointer object */ + +SWIGRUNTIME PyObject * +SWIG_Python_NewPointerObj(PyObject *self, void *ptr, swig_type_info *type, int flags) { + SwigPyClientData *clientdata; + PyObject * robj; + int own; + + if (!ptr) + return SWIG_Py_Void(); + + clientdata = type ? (SwigPyClientData *)(type->clientdata) : 0; + own = (flags & SWIG_POINTER_OWN) ? SWIG_POINTER_OWN : 0; + if (clientdata && clientdata->pytype) { + SwigPyObject *newobj; + if (flags & SWIG_BUILTIN_TP_INIT) { + newobj = (SwigPyObject*) self; + if (newobj->ptr) { + PyObject *next_self = clientdata->pytype->tp_alloc(clientdata->pytype, 0); + while (newobj->next) + newobj = (SwigPyObject *) newobj->next; + newobj->next = next_self; + newobj = (SwigPyObject *)next_self; +#ifdef SWIGPYTHON_BUILTIN + newobj->dict = 0; +#endif + } + } else { + newobj = PyObject_New(SwigPyObject, clientdata->pytype); +#ifdef SWIGPYTHON_BUILTIN + newobj->dict = 0; +#endif + } + if (newobj) { + newobj->ptr = ptr; + newobj->ty = type; + newobj->own = own; + newobj->next = 0; + return (PyObject*) newobj; + } + return SWIG_Py_Void(); + } + + assert(!(flags & SWIG_BUILTIN_TP_INIT)); + + robj = SwigPyObject_New(ptr, type, own); + if (robj && clientdata && !(flags & SWIG_POINTER_NOSHADOW)) { + PyObject *inst = SWIG_Python_NewShadowInstance(clientdata, robj); + Py_DECREF(robj); + robj = inst; + } + return robj; +} + +/* Create a new packed object */ + +SWIGRUNTIMEINLINE PyObject * +SWIG_Python_NewPackedObj(void *ptr, size_t sz, swig_type_info *type) { + return ptr ? SwigPyPacked_New((void *) ptr, sz, type) : SWIG_Py_Void(); +} + +/* -----------------------------------------------------------------------------* + * Get type list + * -----------------------------------------------------------------------------*/ + +#ifdef SWIG_LINK_RUNTIME +void *SWIG_ReturnGlobalTypeList(void *); +#endif + +SWIGRUNTIME swig_module_info * +SWIG_Python_GetModule(void *SWIGUNUSEDPARM(clientdata)) { + static void *type_pointer = (void *)0; + /* first check if module already created */ + if (!type_pointer) { +#ifdef SWIG_LINK_RUNTIME + type_pointer = SWIG_ReturnGlobalTypeList((void *)0); +#else + type_pointer = PyCapsule_Import(SWIGPY_CAPSULE_NAME, 0); + if (PyErr_Occurred()) { + PyErr_Clear(); + type_pointer = (void *)0; + } +#endif + } + return (swig_module_info *) type_pointer; +} + +SWIGRUNTIME void +SWIG_Python_DestroyModule(PyObject *obj) +{ + swig_module_info *swig_module = (swig_module_info *) PyCapsule_GetPointer(obj, SWIGPY_CAPSULE_NAME); + swig_type_info **types = swig_module->types; + size_t i; + for (i =0; i < swig_module->size; ++i) { + swig_type_info *ty = types[i]; + if (ty->owndata) { + SwigPyClientData *data = (SwigPyClientData *) ty->clientdata; + if (data) SwigPyClientData_Del(data); + } + } + Py_DECREF(SWIG_This()); + Swig_This_global = NULL; +} + +SWIGRUNTIME void +SWIG_Python_SetModule(swig_module_info *swig_module) { +#if PY_VERSION_HEX >= 0x03000000 + /* Add a dummy module object into sys.modules */ + PyObject *module = PyImport_AddModule("swig_runtime_data" SWIG_RUNTIME_VERSION); +#else + static PyMethodDef swig_empty_runtime_method_table[] = { {NULL, NULL, 0, NULL} }; /* Sentinel */ + PyObject *module = Py_InitModule("swig_runtime_data" SWIG_RUNTIME_VERSION, swig_empty_runtime_method_table); +#endif + PyObject *pointer = PyCapsule_New((void *) swig_module, SWIGPY_CAPSULE_NAME, SWIG_Python_DestroyModule); + if (pointer && module) { + PyModule_AddObject(module, "type_pointer_capsule" SWIG_TYPE_TABLE_NAME, pointer); + } else { + Py_XDECREF(pointer); + } +} + +/* The python cached type query */ +SWIGRUNTIME PyObject * +SWIG_Python_TypeCache(void) { + static PyObject *SWIG_STATIC_POINTER(cache) = PyDict_New(); + return cache; +} + +SWIGRUNTIME swig_type_info * +SWIG_Python_TypeQuery(const char *type) +{ + PyObject *cache = SWIG_Python_TypeCache(); + PyObject *key = SWIG_Python_str_FromChar(type); + PyObject *obj = PyDict_GetItem(cache, key); + swig_type_info *descriptor; + if (obj) { + descriptor = (swig_type_info *) PyCapsule_GetPointer(obj, NULL); + } else { + swig_module_info *swig_module = SWIG_GetModule(0); + descriptor = SWIG_TypeQueryModule(swig_module, swig_module, type); + if (descriptor) { + obj = PyCapsule_New((void*) descriptor, NULL, NULL); + PyDict_SetItem(cache, key, obj); + Py_DECREF(obj); + } + } + Py_DECREF(key); + return descriptor; +} + +/* + For backward compatibility only +*/ +#define SWIG_POINTER_EXCEPTION 0 +#define SWIG_arg_fail(arg) SWIG_Python_ArgFail(arg) +#define SWIG_MustGetPtr(p, type, argnum, flags) SWIG_Python_MustGetPtr(p, type, argnum, flags) + +SWIGRUNTIME int +SWIG_Python_AddErrMesg(const char* mesg, int infront) +{ + if (PyErr_Occurred()) { + PyObject *type = 0; + PyObject *value = 0; + PyObject *traceback = 0; + PyErr_Fetch(&type, &value, &traceback); + if (value) { + PyObject *old_str = PyObject_Str(value); + const char *tmp = SWIG_Python_str_AsChar(old_str); + const char *errmesg = tmp ? tmp : "Invalid error message"; + Py_XINCREF(type); + PyErr_Clear(); + if (infront) { + PyErr_Format(type, "%s %s", mesg, errmesg); + } else { + PyErr_Format(type, "%s %s", errmesg, mesg); + } + SWIG_Python_str_DelForPy3(tmp); + Py_DECREF(old_str); + } + return 1; + } else { + return 0; + } +} + +SWIGRUNTIME int +SWIG_Python_ArgFail(int argnum) +{ + if (PyErr_Occurred()) { + /* add information about failing argument */ + char mesg[256]; + PyOS_snprintf(mesg, sizeof(mesg), "argument number %d:", argnum); + return SWIG_Python_AddErrMesg(mesg, 1); + } else { + return 0; + } +} + +SWIGRUNTIMEINLINE const char * +SwigPyObject_GetDesc(PyObject *self) +{ + SwigPyObject *v = (SwigPyObject *)self; + swig_type_info *ty = v ? v->ty : 0; + return ty ? ty->str : ""; +} + +SWIGRUNTIME void +SWIG_Python_TypeError(const char *type, PyObject *obj) +{ + if (type) { +#if defined(SWIG_COBJECT_TYPES) + if (obj && SwigPyObject_Check(obj)) { + const char *otype = (const char *) SwigPyObject_GetDesc(obj); + if (otype) { + PyErr_Format(PyExc_TypeError, "a '%s' is expected, 'SwigPyObject(%s)' is received", + type, otype); + return; + } + } else +#endif + { + const char *otype = (obj ? obj->ob_type->tp_name : 0); + if (otype) { + PyObject *str = PyObject_Str(obj); + const char *cstr = str ? SWIG_Python_str_AsChar(str) : 0; + if (cstr) { + PyErr_Format(PyExc_TypeError, "a '%s' is expected, '%s(%s)' is received", + type, otype, cstr); + SWIG_Python_str_DelForPy3(cstr); + } else { + PyErr_Format(PyExc_TypeError, "a '%s' is expected, '%s' is received", + type, otype); + } + Py_XDECREF(str); + return; + } + } + PyErr_Format(PyExc_TypeError, "a '%s' is expected", type); + } else { + PyErr_Format(PyExc_TypeError, "unexpected type is received"); + } +} + + +/* Convert a pointer value, signal an exception on a type mismatch */ +SWIGRUNTIME void * +SWIG_Python_MustGetPtr(PyObject *obj, swig_type_info *ty, int SWIGUNUSEDPARM(argnum), int flags) { + void *result; + if (SWIG_Python_ConvertPtr(obj, &result, ty, flags) == -1) { + PyErr_Clear(); +#if SWIG_POINTER_EXCEPTION + if (flags) { + SWIG_Python_TypeError(SWIG_TypePrettyName(ty), obj); + SWIG_Python_ArgFail(argnum); + } +#endif + } + return result; +} + +#ifdef SWIGPYTHON_BUILTIN +SWIGRUNTIME int +SWIG_Python_NonDynamicSetAttr(PyObject *obj, PyObject *name, PyObject *value) { + PyTypeObject *tp = obj->ob_type; + PyObject *descr; + PyObject *encoded_name; + descrsetfunc f; + int res = -1; + +# ifdef Py_USING_UNICODE + if (PyString_Check(name)) { + name = PyUnicode_Decode(PyString_AsString(name), PyString_Size(name), NULL, NULL); + if (!name) + return -1; + } else if (!PyUnicode_Check(name)) +# else + if (!PyString_Check(name)) +# endif + { + PyErr_Format(PyExc_TypeError, "attribute name must be string, not '%.200s'", name->ob_type->tp_name); + return -1; + } else { + Py_INCREF(name); + } + + if (!tp->tp_dict) { + if (PyType_Ready(tp) < 0) + goto done; + } + + descr = _PyType_Lookup(tp, name); + f = NULL; + if (descr != NULL) + f = descr->ob_type->tp_descr_set; + if (!f) { + if (PyString_Check(name)) { + encoded_name = name; + Py_INCREF(name); + } else { + encoded_name = PyUnicode_AsUTF8String(name); + if (!encoded_name) + return -1; + } + PyErr_Format(PyExc_AttributeError, "'%.100s' object has no attribute '%.200s'", tp->tp_name, PyString_AsString(encoded_name)); + Py_DECREF(encoded_name); + } else { + res = f(descr, obj, value); + } + + done: + Py_DECREF(name); + return res; +} +#endif + + +#ifdef __cplusplus +} +#endif + + + +#define SWIG_exception_fail(code, msg) do { SWIG_Error(code, msg); SWIG_fail; } while(0) + +#define SWIG_contract_assert(expr, msg) if (!(expr)) { SWIG_Error(SWIG_RuntimeError, msg); SWIG_fail; } else + + + +#ifdef __cplusplus +extern "C" { +#endif + +/* Method creation and docstring support functions */ + +SWIGINTERN PyMethodDef *SWIG_PythonGetProxyDoc(const char *name); +SWIGINTERN PyObject *SWIG_PyInstanceMethod_New(PyObject *SWIGUNUSEDPARM(self), PyObject *func); +SWIGINTERN PyObject *SWIG_PyStaticMethod_New(PyObject *SWIGUNUSEDPARM(self), PyObject *func); + +#ifdef __cplusplus +} +#endif + + + #define SWIG_exception(code, msg) do { SWIG_Error(code, msg); SWIG_fail;; } while(0) + + +/* -------- TYPES TABLE (BEGIN) -------- */ + +#define SWIGTYPE_p_allocator_type swig_types[0] +#define SWIGTYPE_p_boost__shared_ptrT_gr__basic_block_t swig_types[1] +#define SWIGTYPE_p_boost__shared_ptrT_gr__block_detail_t swig_types[2] +#define SWIGTYPE_p_boost__shared_ptrT_gr__block_t swig_types[3] +#define SWIGTYPE_p_boost__shared_ptrT_gr__buffer_reader_t swig_types[4] +#define SWIGTYPE_p_boost__shared_ptrT_gr__buffer_t swig_types[5] +#define SWIGTYPE_p_boost__shared_ptrT_gr__flat_flowgraph_t swig_types[6] +#define SWIGTYPE_p_boost__shared_ptrT_gr__flowgraph_t swig_types[7] +#define SWIGTYPE_p_boost__shared_ptrT_gr__hier_block2_t swig_types[8] +#define SWIGTYPE_p_boost__shared_ptrT_gr__io_signature_t swig_types[9] +#define SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t swig_types[10] +#define SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t swig_types[11] +#define SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t swig_types[12] +#define SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t swig_types[13] +#define SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t swig_types[14] +#define SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t swig_types[15] +#define SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t swig_types[16] +#define SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t swig_types[17] +#define SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t swig_types[18] +#define SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t swig_types[19] +#define SWIGTYPE_p_boost__shared_ptrT_gr__top_block_t swig_types[20] +#define SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t swig_types[21] +#define SWIGTYPE_p_char swig_types[22] +#define SWIGTYPE_p_difference_type swig_types[23] +#define SWIGTYPE_p_gr__basic_block swig_types[24] +#define SWIGTYPE_p_gr__block swig_types[25] +#define SWIGTYPE_p_gr__block_gateway swig_types[26] +#define SWIGTYPE_p_gr__endianness_t swig_types[27] +#define SWIGTYPE_p_gr__hier_block2 swig_types[28] +#define SWIGTYPE_p_gr__rt_status_t swig_types[29] +#define SWIGTYPE_p_gr__sync_block swig_types[30] +#define SWIGTYPE_p_gr__sync_decimator swig_types[31] +#define SWIGTYPE_p_gr__sync_interpolator swig_types[32] +#define SWIGTYPE_p_gr__tagged_stream_block swig_types[33] +#define SWIGTYPE_p_gr__tempest__Hsync swig_types[34] +#define SWIGTYPE_p_gr__tempest__fft_peak_fine_sampling_sync swig_types[35] +#define SWIGTYPE_p_gr__tempest__fine_sampling_synchronization swig_types[36] +#define SWIGTYPE_p_gr__tempest__frame_drop swig_types[37] +#define SWIGTYPE_p_gr__tempest__framing swig_types[38] +#define SWIGTYPE_p_gr__tempest__infer_screen_resolution swig_types[39] +#define SWIGTYPE_p_gr__tempest__normalize_flow swig_types[40] +#define SWIGTYPE_p_gr__tempest__sampling_synchronization swig_types[41] +#define SWIGTYPE_p_gr__tempest__ssamp_correction swig_types[42] +#define SWIGTYPE_p_gr__tempest__sync_detector swig_types[43] +#define SWIGTYPE_p_gr__top_block swig_types[44] +#define SWIGTYPE_p_int swig_types[45] +#define SWIGTYPE_p_long_long swig_types[46] +#define SWIGTYPE_p_short swig_types[47] +#define SWIGTYPE_p_signed_char swig_types[48] +#define SWIGTYPE_p_size_type swig_types[49] +#define SWIGTYPE_p_sptr swig_types[50] +#define SWIGTYPE_p_std__complexT_double_t swig_types[51] +#define SWIGTYPE_p_std__complexT_float_t swig_types[52] +#define SWIGTYPE_p_unsigned_char swig_types[53] +#define SWIGTYPE_p_unsigned_int swig_types[54] +#define SWIGTYPE_p_unsigned_long_long swig_types[55] +#define SWIGTYPE_p_unsigned_short swig_types[56] +#define SWIGTYPE_p_value_type swig_types[57] +static swig_type_info *swig_types[59]; +static swig_module_info swig_module = {swig_types, 58, 0, 0, 0, 0}; +#define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name) +#define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name) + +/* -------- TYPES TABLE (END) -------- */ + +#ifdef SWIG_TypeQuery +# undef SWIG_TypeQuery +#endif +#define SWIG_TypeQuery SWIG_Python_TypeQuery + +/*----------------------------------------------- + @(target):= _tempest_swig.so + ------------------------------------------------*/ +#if PY_VERSION_HEX >= 0x03000000 +# define SWIG_init PyInit__tempest_swig + +#else +# define SWIG_init init_tempest_swig + +#endif +#define SWIG_name "_tempest_swig" + +#define SWIGVERSION 0x040001 +#define SWIG_VERSION SWIGVERSION + + +#define SWIG_as_voidptr(a) const_cast< void * >(static_cast< const void * >(a)) +#define SWIG_as_voidptrptr(a) ((void)SWIG_as_voidptr(*a),reinterpret_cast< void** >(a)) + + +#include + + +namespace swig { + class SwigPtr_PyObject { + protected: + PyObject *_obj; + + public: + SwigPtr_PyObject() :_obj(0) + { + } + + SwigPtr_PyObject(const SwigPtr_PyObject& item) : _obj(item._obj) + { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + Py_XINCREF(_obj); + SWIG_PYTHON_THREAD_END_BLOCK; + } + + SwigPtr_PyObject(PyObject *obj, bool initial_ref = true) :_obj(obj) + { + if (initial_ref) { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + Py_XINCREF(_obj); + SWIG_PYTHON_THREAD_END_BLOCK; + } + } + + SwigPtr_PyObject & operator=(const SwigPtr_PyObject& item) + { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + Py_XINCREF(item._obj); + Py_XDECREF(_obj); + _obj = item._obj; + SWIG_PYTHON_THREAD_END_BLOCK; + return *this; + } + + ~SwigPtr_PyObject() + { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + Py_XDECREF(_obj); + SWIG_PYTHON_THREAD_END_BLOCK; + } + + operator PyObject *() const + { + return _obj; + } + + PyObject *operator->() const + { + return _obj; + } + }; +} + + +namespace swig { + struct SwigVar_PyObject : SwigPtr_PyObject { + SwigVar_PyObject(PyObject* obj = 0) : SwigPtr_PyObject(obj, false) { } + + SwigVar_PyObject & operator = (PyObject* obj) + { + Py_XDECREF(_obj); + _obj = obj; + return *this; + } + }; +} + + +#include + + + +#define GR_PYTHON_BLOCKING_CODE(code) { \ + PyThreadState *_save; \ + _save = PyEval_SaveThread(); \ + try{code} \ + catch(...){PyEval_RestoreThread(_save); throw;} \ + PyEval_RestoreThread(_save); \ +} + + + +#include + + +#include +#include + + +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include +#if !defined(SWIG_NO_LLONG_MAX) +# if !defined(LLONG_MAX) && defined(__GNUC__) && defined (__LONG_LONG_MAX__) +# define LLONG_MAX __LONG_LONG_MAX__ +# define LLONG_MIN (-LLONG_MAX - 1LL) +# define ULLONG_MAX (LLONG_MAX * 2ULL + 1ULL) +# endif +#endif + + +#if defined(LLONG_MAX) && !defined(SWIG_LONG_LONG_AVAILABLE) +# define SWIG_LONG_LONG_AVAILABLE +#endif + + +#ifdef SWIG_LONG_LONG_AVAILABLE +SWIGINTERNINLINE PyObject* +SWIG_From_long_SS_long (long long value) +{ + return ((value < LONG_MIN) || (value > LONG_MAX)) ? + PyLong_FromLongLong(value) : PyInt_FromLong(static_cast< long >(value)); +} +#endif + + +#include "tempest/sampling_synchronization.h" +#include "tempest/framing.h" +#include "tempest/Hsync.h" +#include "tempest/normalize_flow.h" +#include "tempest/fine_sampling_synchronization.h" +#include "tempest/sync_detector.h" +#include "tempest/frame_drop.h" +#include "tempest/fft_peak_fine_sampling_sync.h" +#include "tempest/infer_screen_resolution.h" +#include "tempest/ssamp_correction.h" + + +SWIGINTERN int +SWIG_AsVal_double (PyObject *obj, double *val) +{ + int res = SWIG_TypeError; + if (PyFloat_Check(obj)) { + if (val) *val = PyFloat_AsDouble(obj); + return SWIG_OK; +#if PY_VERSION_HEX < 0x03000000 + } else if (PyInt_Check(obj)) { + if (val) *val = (double) PyInt_AsLong(obj); + return SWIG_OK; +#endif + } else if (PyLong_Check(obj)) { + double v = PyLong_AsDouble(obj); + if (!PyErr_Occurred()) { + if (val) *val = v; + return SWIG_OK; + } else { + PyErr_Clear(); + } + } +#ifdef SWIG_PYTHON_CAST_MODE + { + int dispatch = 0; + double d = PyFloat_AsDouble(obj); + if (!PyErr_Occurred()) { + if (val) *val = d; + return SWIG_AddCast(SWIG_OK); + } else { + PyErr_Clear(); + } + if (!dispatch) { + long v = PyLong_AsLong(obj); + if (!PyErr_Occurred()) { + if (val) *val = v; + return SWIG_AddCast(SWIG_AddCast(SWIG_OK)); + } else { + PyErr_Clear(); + } + } + } +#endif + return res; +} + + +#include + + +#include + + +SWIGINTERNINLINE int +SWIG_CanCastAsInteger(double *d, double min, double max) { + double x = *d; + if ((min <= x && x <= max)) { + double fx = floor(x); + double cx = ceil(x); + double rd = ((x - fx) < 0.5) ? fx : cx; /* simple rint */ + if ((errno == EDOM) || (errno == ERANGE)) { + errno = 0; + } else { + double summ, reps, diff; + if (rd < x) { + diff = x - rd; + } else if (rd > x) { + diff = rd - x; + } else { + return 1; + } + summ = rd + x; + reps = diff/summ; + if (reps < 8*DBL_EPSILON) { + *d = rd; + return 1; + } + } + } + return 0; +} + + +SWIGINTERN int +SWIG_AsVal_long (PyObject *obj, long* val) +{ +#if PY_VERSION_HEX < 0x03000000 + if (PyInt_Check(obj)) { + if (val) *val = PyInt_AsLong(obj); + return SWIG_OK; + } else +#endif + if (PyLong_Check(obj)) { + long v = PyLong_AsLong(obj); + if (!PyErr_Occurred()) { + if (val) *val = v; + return SWIG_OK; + } else { + PyErr_Clear(); + return SWIG_OverflowError; + } + } +#ifdef SWIG_PYTHON_CAST_MODE + { + int dispatch = 0; + long v = PyInt_AsLong(obj); + if (!PyErr_Occurred()) { + if (val) *val = v; + return SWIG_AddCast(SWIG_OK); + } else { + PyErr_Clear(); + } + if (!dispatch) { + double d; + int res = SWIG_AddCast(SWIG_AsVal_double (obj,&d)); + if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, LONG_MIN, LONG_MAX)) { + if (val) *val = (long)(d); + return res; + } + } + } +#endif + return SWIG_TypeError; +} + + +SWIGINTERN int +SWIG_AsVal_int (PyObject * obj, int *val) +{ + long v; + int res = SWIG_AsVal_long (obj, &v); + if (SWIG_IsOK(res)) { + if ((v < INT_MIN || v > INT_MAX)) { + return SWIG_OverflowError; + } else { + if (val) *val = static_cast< int >(v); + } + } + return res; +} + + +SWIGINTERNINLINE PyObject* + SWIG_From_unsigned_SS_int (unsigned int value) +{ + return PyInt_FromSize_t((size_t) value); +} + + +SWIGINTERN int +SWIG_AsVal_unsigned_SS_long (PyObject *obj, unsigned long *val) +{ +#if PY_VERSION_HEX < 0x03000000 + if (PyInt_Check(obj)) { + long v = PyInt_AsLong(obj); + if (v >= 0) { + if (val) *val = v; + return SWIG_OK; + } else { + return SWIG_OverflowError; + } + } else +#endif + if (PyLong_Check(obj)) { + unsigned long v = PyLong_AsUnsignedLong(obj); + if (!PyErr_Occurred()) { + if (val) *val = v; + return SWIG_OK; + } else { + PyErr_Clear(); + return SWIG_OverflowError; + } + } +#ifdef SWIG_PYTHON_CAST_MODE + { + int dispatch = 0; + unsigned long v = PyLong_AsUnsignedLong(obj); + if (!PyErr_Occurred()) { + if (val) *val = v; + return SWIG_AddCast(SWIG_OK); + } else { + PyErr_Clear(); + } + if (!dispatch) { + double d; + int res = SWIG_AddCast(SWIG_AsVal_double (obj,&d)); + if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, 0, ULONG_MAX)) { + if (val) *val = (unsigned long)(d); + return res; + } + } + } +#endif + return SWIG_TypeError; +} + + +SWIGINTERN int +SWIG_AsVal_unsigned_SS_int (PyObject * obj, unsigned int *val) +{ + unsigned long v; + int res = SWIG_AsVal_unsigned_SS_long (obj, &v); + if (SWIG_IsOK(res)) { + if ((v > UINT_MAX)) { + return SWIG_OverflowError; + } else { + if (val) *val = static_cast< unsigned int >(v); + } + } + return res; +} + + +SWIGINTERNINLINE PyObject* + SWIG_From_int (int value) +{ + return PyInt_FromLong((long) value); +} + + + #define SWIG_From_double PyFloat_FromDouble + + +#ifdef SWIG_LONG_LONG_AVAILABLE +SWIGINTERNINLINE PyObject* +SWIG_From_unsigned_SS_long_SS_long (unsigned long long value) +{ + return (value > LONG_MAX) ? + PyLong_FromUnsignedLongLong(value) : PyInt_FromLong(static_cast< long >(value)); +} +#endif + + +SWIGINTERNINLINE PyObject* + SWIG_From_bool (bool value) +{ + return PyBool_FromLong(value ? 1 : 0); +} + + +SWIGINTERN swig_type_info* +SWIG_pchar_descriptor(void) +{ + static int init = 0; + static swig_type_info* info = 0; + if (!init) { + info = SWIG_TypeQuery("_p_char"); + init = 1; + } + return info; +} + + +SWIGINTERN int +SWIG_AsCharPtrAndSize(PyObject *obj, char** cptr, size_t* psize, int *alloc) +{ +#if PY_VERSION_HEX>=0x03000000 +#if defined(SWIG_PYTHON_STRICT_BYTE_CHAR) + if (PyBytes_Check(obj)) +#else + if (PyUnicode_Check(obj)) +#endif +#else + if (PyString_Check(obj)) +#endif + { + char *cstr; Py_ssize_t len; + int ret = SWIG_OK; +#if PY_VERSION_HEX>=0x03000000 +#if !defined(SWIG_PYTHON_STRICT_BYTE_CHAR) + if (!alloc && cptr) { + /* We can't allow converting without allocation, since the internal + representation of string in Python 3 is UCS-2/UCS-4 but we require + a UTF-8 representation. + TODO(bhy) More detailed explanation */ + return SWIG_RuntimeError; + } + obj = PyUnicode_AsUTF8String(obj); + if (!obj) + return SWIG_TypeError; + if (alloc) + *alloc = SWIG_NEWOBJ; +#endif + PyBytes_AsStringAndSize(obj, &cstr, &len); +#else + PyString_AsStringAndSize(obj, &cstr, &len); +#endif + if (cptr) { + if (alloc) { + if (*alloc == SWIG_NEWOBJ) { + *cptr = reinterpret_cast< char* >(memcpy(new char[len + 1], cstr, sizeof(char)*(len + 1))); + *alloc = SWIG_NEWOBJ; + } else { + *cptr = cstr; + *alloc = SWIG_OLDOBJ; + } + } else { +#if PY_VERSION_HEX>=0x03000000 +#if defined(SWIG_PYTHON_STRICT_BYTE_CHAR) + *cptr = PyBytes_AsString(obj); +#else + assert(0); /* Should never reach here with Unicode strings in Python 3 */ +#endif +#else + *cptr = SWIG_Python_str_AsChar(obj); + if (!*cptr) + ret = SWIG_TypeError; +#endif + } + } + if (psize) *psize = len + 1; +#if PY_VERSION_HEX>=0x03000000 && !defined(SWIG_PYTHON_STRICT_BYTE_CHAR) + Py_XDECREF(obj); +#endif + return ret; + } else { +#if defined(SWIG_PYTHON_2_UNICODE) +#if defined(SWIG_PYTHON_STRICT_BYTE_CHAR) +#error "Cannot use both SWIG_PYTHON_2_UNICODE and SWIG_PYTHON_STRICT_BYTE_CHAR at once" +#endif +#if PY_VERSION_HEX<0x03000000 + if (PyUnicode_Check(obj)) { + char *cstr; Py_ssize_t len; + if (!alloc && cptr) { + return SWIG_RuntimeError; + } + obj = PyUnicode_AsUTF8String(obj); + if (!obj) + return SWIG_TypeError; + if (PyString_AsStringAndSize(obj, &cstr, &len) != -1) { + if (cptr) { + if (alloc) *alloc = SWIG_NEWOBJ; + *cptr = reinterpret_cast< char* >(memcpy(new char[len + 1], cstr, sizeof(char)*(len + 1))); + } + if (psize) *psize = len + 1; + + Py_XDECREF(obj); + return SWIG_OK; + } else { + Py_XDECREF(obj); + } + } +#endif +#endif + + swig_type_info* pchar_descriptor = SWIG_pchar_descriptor(); + if (pchar_descriptor) { + void* vptr = 0; + if (SWIG_ConvertPtr(obj, &vptr, pchar_descriptor, 0) == SWIG_OK) { + if (cptr) *cptr = (char *) vptr; + if (psize) *psize = vptr ? (strlen((char *)vptr) + 1) : 0; + if (alloc) *alloc = SWIG_OLDOBJ; + return SWIG_OK; + } + } + } + return SWIG_TypeError; +} + + +SWIGINTERN int +SWIG_AsPtr_std_string (PyObject * obj, std::string **val) +{ + char* buf = 0 ; size_t size = 0; int alloc = SWIG_OLDOBJ; + if (SWIG_IsOK((SWIG_AsCharPtrAndSize(obj, &buf, &size, &alloc)))) { + if (buf) { + if (val) *val = new std::string(buf, size - 1); + if (alloc == SWIG_NEWOBJ) delete[] buf; + return SWIG_NEWOBJ; + } else { + if (val) *val = 0; + return SWIG_OLDOBJ; + } + } else { + static int init = 0; + static swig_type_info* descriptor = 0; + if (!init) { + descriptor = SWIG_TypeQuery("std::string" " *"); + init = 1; + } + if (descriptor) { + std::string *vptr; + int res = SWIG_ConvertPtr(obj, (void**)&vptr, descriptor, 0); + if (SWIG_IsOK(res) && val) *val = vptr; + return res; + } + } + return SWIG_ERROR; +} + + +SWIGINTERNINLINE PyObject * +SWIG_FromCharPtrAndSize(const char* carray, size_t size) +{ + if (carray) { + if (size > INT_MAX) { + swig_type_info* pchar_descriptor = SWIG_pchar_descriptor(); + return pchar_descriptor ? + SWIG_InternalNewPointerObj(const_cast< char * >(carray), pchar_descriptor, 0) : SWIG_Py_Void(); + } else { +#if PY_VERSION_HEX >= 0x03000000 +#if defined(SWIG_PYTHON_STRICT_BYTE_CHAR) + return PyBytes_FromStringAndSize(carray, static_cast< Py_ssize_t >(size)); +#else + return PyUnicode_DecodeUTF8(carray, static_cast< Py_ssize_t >(size), "surrogateescape"); +#endif +#else + return PyString_FromStringAndSize(carray, static_cast< Py_ssize_t >(size)); +#endif + } + } else { + return SWIG_Py_Void(); + } +} + + +SWIGINTERNINLINE PyObject * +SWIG_From_std_string (const std::string& s) +{ + return SWIG_FromCharPtrAndSize(s.data(), s.size()); +} + + + #define SWIG_From_long PyInt_FromLong + + +SWIGINTERNINLINE PyObject * +SWIG_From_float (float value) +{ + return SWIG_From_double (value); +} + + +/* Getting isfinite working pre C99 across multiple platforms is non-trivial. Users can provide SWIG_isfinite on older platforms. */ +#ifndef SWIG_isfinite +/* isfinite() is a macro for C99 */ +# if defined(isfinite) +# define SWIG_isfinite(X) (isfinite(X)) +# elif defined(__cplusplus) && __cplusplus >= 201103L +/* Use a template so that this works whether isfinite() is std::isfinite() or + * in the global namespace. The reality seems to vary between compiler + * versions. + * + * Make sure namespace std exists to avoid compiler warnings. + * + * extern "C++" is required as this fragment can end up inside an extern "C" { } block + */ +namespace std { } +extern "C++" template +inline int SWIG_isfinite_func(T x) { + using namespace std; + return isfinite(x); +} +# define SWIG_isfinite(X) (SWIG_isfinite_func(X)) +# elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2)) +# define SWIG_isfinite(X) (__builtin_isfinite(X)) +# elif defined(__clang__) && defined(__has_builtin) +# if __has_builtin(__builtin_isfinite) +# define SWIG_isfinite(X) (__builtin_isfinite(X)) +# endif +# elif defined(_MSC_VER) +# define SWIG_isfinite(X) (_finite(X)) +# elif defined(__sun) && defined(__SVR4) +# include +# define SWIG_isfinite(X) (finite(X)) +# endif +#endif + + +/* Accept infinite as a valid float value unless we are unable to check if a value is finite */ +#ifdef SWIG_isfinite +# define SWIG_Float_Overflow_Check(X) ((X < -FLT_MAX || X > FLT_MAX) && SWIG_isfinite(X)) +#else +# define SWIG_Float_Overflow_Check(X) ((X < -FLT_MAX || X > FLT_MAX)) +#endif + + +SWIGINTERN int +SWIG_AsVal_float (PyObject * obj, float *val) +{ + double v; + int res = SWIG_AsVal_double (obj, &v); + if (SWIG_IsOK(res)) { + if (SWIG_Float_Overflow_Check(v)) { + return SWIG_OverflowError; + } else { + if (val) *val = static_cast< float >(v); + } + } + return res; +} + + +namespace swig { + template + struct noconst_traits { + typedef Type noconst_type; + }; + + template + struct noconst_traits { + typedef Type noconst_type; + }; + + /* + type categories + */ + struct pointer_category { }; + struct value_category { }; + + /* + General traits that provides type_name and type_info + */ + template struct traits { }; + + template + inline const char* type_name() { + return traits::noconst_type >::type_name(); + } + + template struct traits_info { + static swig_type_info *type_query(std::string name) { + name += " *"; + return SWIG_TypeQuery(name.c_str()); + } + static swig_type_info *type_info() { + static swig_type_info *info = type_query(type_name()); + return info; + } + }; + + /* + Partial specialization for pointers (traits_info) + */ + template struct traits_info { + static swig_type_info *type_query(std::string name) { + name += " *"; + return SWIG_TypeQuery(name.c_str()); + } + static swig_type_info *type_info() { + static swig_type_info *info = type_query(type_name()); + return info; + } + }; + + template + inline swig_type_info *type_info() { + return traits_info::type_info(); + } + + /* + Partial specialization for pointers (traits) + */ + template struct traits { + typedef pointer_category category; + static std::string make_ptr_name(const char* name) { + std::string ptrname = name; + ptrname += " *"; + return ptrname; + } + static const char* type_name() { + static std::string name = make_ptr_name(swig::type_name()); + return name.c_str(); + } + }; + + template + struct traits_as { }; + + template + struct traits_check { }; + +} + + +namespace swig { + /* + Traits that provides the from method + */ + template struct traits_from_ptr { + static PyObject *from(Type *val, int owner = 0) { + return SWIG_InternalNewPointerObj(val, type_info(), owner); + } + }; + + template struct traits_from { + static PyObject *from(const Type& val) { + return traits_from_ptr::from(new Type(val), 1); + } + }; + + template struct traits_from { + static PyObject *from(Type* val) { + return traits_from_ptr::from(val, 0); + } + }; + + template struct traits_from { + static PyObject *from(const Type* val) { + return traits_from_ptr::from(const_cast(val), 0); + } + }; + + + template + inline PyObject *from(const Type& val) { + return traits_from::from(val); + } + + template + inline PyObject *from_ptr(Type* val, int owner) { + return traits_from_ptr::from(val, owner); + } + + /* + Traits that provides the asval/as/check method + */ + template + struct traits_asptr { + static int asptr(PyObject *obj, Type **val) { + Type *p = 0; + swig_type_info *descriptor = type_info(); + int res = descriptor ? SWIG_ConvertPtr(obj, (void **)&p, descriptor, 0) : SWIG_ERROR; + if (SWIG_IsOK(res)) { + if (val) *val = p; + } + return res; + } + }; + + template + inline int asptr(PyObject *obj, Type **vptr) { + return traits_asptr::asptr(obj, vptr); + } + + template + struct traits_asval { + static int asval(PyObject *obj, Type *val) { + if (val) { + Type *p = 0; + int res = traits_asptr::asptr(obj, &p); + if (!SWIG_IsOK(res)) return res; + if (p) { + typedef typename noconst_traits::noconst_type noconst_type; + *(const_cast(val)) = *p; + if (SWIG_IsNewObj(res)){ + delete p; + res = SWIG_DelNewMask(res); + } + return res; + } else { + return SWIG_ERROR; + } + } else { + return traits_asptr::asptr(obj, (Type **)(0)); + } + } + }; + + template struct traits_asval { + static int asval(PyObject *obj, Type **val) { + if (val) { + typedef typename noconst_traits::noconst_type noconst_type; + noconst_type *p = 0; + int res = traits_asptr::asptr(obj, &p); + if (SWIG_IsOK(res)) { + *(const_cast(val)) = p; + } + return res; + } else { + return traits_asptr::asptr(obj, (Type **)(0)); + } + } + }; + + template + inline int asval(PyObject *obj, Type *val) { + return traits_asval::asval(obj, val); + } + + template + struct traits_as { + static Type as(PyObject *obj) { + Type v; + int res = asval(obj, &v); + if (!obj || !SWIG_IsOK(res)) { + if (!PyErr_Occurred()) { + ::SWIG_Error(SWIG_TypeError, swig::type_name()); + } + throw std::invalid_argument("bad type"); + } + return v; + } + }; + + template + struct traits_as { + static Type as(PyObject *obj) { + Type *v = 0; + int res = (obj ? traits_asptr::asptr(obj, &v) : SWIG_ERROR); + if (SWIG_IsOK(res) && v) { + if (SWIG_IsNewObj(res)) { + Type r(*v); + delete v; + return r; + } else { + return *v; + } + } else { + if (!PyErr_Occurred()) { + SWIG_Error(SWIG_TypeError, swig::type_name()); + } + throw std::invalid_argument("bad type"); + } + } + }; + + template + struct traits_as { + static Type* as(PyObject *obj) { + Type *v = 0; + int res = (obj ? traits_asptr::asptr(obj, &v) : SWIG_ERROR); + if (SWIG_IsOK(res)) { + return v; + } else { + if (!PyErr_Occurred()) { + SWIG_Error(SWIG_TypeError, swig::type_name()); + } + throw std::invalid_argument("bad type"); + } + } + }; + + template + inline Type as(PyObject *obj) { + return traits_as::category>::as(obj); + } + + template + struct traits_check { + static bool check(PyObject *obj) { + int res = obj ? asval(obj, (Type *)(0)) : SWIG_ERROR; + return SWIG_IsOK(res) ? true : false; + } + }; + + template + struct traits_check { + static bool check(PyObject *obj) { + int res = obj ? asptr(obj, (Type **)(0)) : SWIG_ERROR; + return SWIG_IsOK(res) ? true : false; + } + }; + + template + inline bool check(PyObject *obj) { + return traits_check::category>::check(obj); + } +} + + +namespace swig { + template <> struct traits< float > { + typedef value_category category; + static const char* type_name() { return"float"; } + }; + template <> struct traits_asval< float > { + typedef float value_type; + static int asval(PyObject *obj, value_type *val) { + return SWIG_AsVal_float (obj, val); + } + }; + template <> struct traits_from< float > { + typedef float value_type; + static PyObject *from(const value_type& val) { + return SWIG_From_float (val); + } + }; +} + + +#include + + +#include + +namespace std { + template <> + struct less + { + bool + operator()(PyObject * v, PyObject *w) const + { + bool res; + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + res = PyObject_RichCompareBool(v, w, Py_LT) ? true : false; + /* This may fall into a case of inconsistent + eg. ObjA > ObjX > ObjB + but ObjA < ObjB + */ + if( PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_TypeError) ) + { + /* Objects can't be compared, this mostly occurred in Python 3.0 */ + /* Compare their ptr directly for a workaround */ + res = (v < w); + PyErr_Clear(); + } + SWIG_PYTHON_THREAD_END_BLOCK; + return res; + } + }; + + template <> + struct less + { + bool + operator()(const swig::SwigPtr_PyObject& v, const swig::SwigPtr_PyObject& w) const + { + return std::less()(v, w); + } + }; + + template <> + struct less + { + bool + operator()(const swig::SwigVar_PyObject& v, const swig::SwigVar_PyObject& w) const + { + return std::less()(v, w); + } + }; + +} + +namespace swig { + template <> struct traits { + typedef value_category category; + static const char* type_name() { return "PyObject *"; } + }; + + template <> struct traits_asval { + typedef PyObject * value_type; + static int asval(PyObject *obj, value_type *val) { + if (val) *val = obj; + return SWIG_OK; + } + }; + + template <> + struct traits_check { + static bool check(PyObject *) { + return true; + } + }; + + template <> struct traits_from { + typedef PyObject * value_type; + static PyObject *from(const value_type& val) { + Py_XINCREF(val); + return val; + } + }; + +} + +namespace swig { + template + inline size_t + check_index(Difference i, size_t size, bool insert = false) { + if ( i < 0 ) { + if ((size_t) (-i) <= size) + return (size_t) (i + size); + } else if ( (size_t) i < size ) { + return (size_t) i; + } else if (insert && ((size_t) i == size)) { + return size; + } + throw std::out_of_range("index out of range"); + } + + template + void + slice_adjust(Difference i, Difference j, Py_ssize_t step, size_t size, Difference &ii, Difference &jj, bool insert = false) { + if (step == 0) { + throw std::invalid_argument("slice step cannot be zero"); + } else if (step > 0) { + // Required range: 0 <= i < size, 0 <= j < size, i <= j + if (i < 0) { + ii = 0; + } else if (i < (Difference)size) { + ii = i; + } else if (insert && (i >= (Difference)size)) { + ii = (Difference)size; + } + if (j < 0) { + jj = 0; + } else { + jj = (j < (Difference)size) ? j : (Difference)size; + } + if (jj < ii) + jj = ii; + } else { + // Required range: -1 <= i < size-1, -1 <= j < size-1, i >= j + if (i < -1) { + ii = -1; + } else if (i < (Difference) size) { + ii = i; + } else if (i >= (Difference)(size-1)) { + ii = (Difference)(size-1); + } + if (j < -1) { + jj = -1; + } else { + jj = (j < (Difference)size ) ? j : (Difference)(size-1); + } + if (ii < jj) + ii = jj; + } + } + + template + inline typename Sequence::iterator + getpos(Sequence* self, Difference i) { + typename Sequence::iterator pos = self->begin(); + std::advance(pos, check_index(i,self->size())); + return pos; + } + + template + inline typename Sequence::const_iterator + cgetpos(const Sequence* self, Difference i) { + typename Sequence::const_iterator pos = self->begin(); + std::advance(pos, check_index(i,self->size())); + return pos; + } + + template + inline void + erase(Sequence* seq, const typename Sequence::iterator& position) { + seq->erase(position); + } + + template + struct traits_reserve { + static void reserve(Sequence & /*seq*/, typename Sequence::size_type /*n*/) { + // This should be specialized for types that support reserve + } + }; + + template + inline Sequence* + getslice(const Sequence* self, Difference i, Difference j, Py_ssize_t step) { + typename Sequence::size_type size = self->size(); + Difference ii = 0; + Difference jj = 0; + swig::slice_adjust(i, j, step, size, ii, jj); + + if (step > 0) { + typename Sequence::const_iterator sb = self->begin(); + typename Sequence::const_iterator se = self->begin(); + std::advance(sb,ii); + std::advance(se,jj); + if (step == 1) { + return new Sequence(sb, se); + } else { + Sequence *sequence = new Sequence(); + swig::traits_reserve::reserve(*sequence, (jj - ii + step - 1) / step); + typename Sequence::const_iterator it = sb; + while (it!=se) { + sequence->push_back(*it); + for (Py_ssize_t c=0; c::reserve(*sequence, (ii - jj - step - 1) / -step); + typename Sequence::const_reverse_iterator sb = self->rbegin(); + typename Sequence::const_reverse_iterator se = self->rbegin(); + std::advance(sb,size-ii-1); + std::advance(se,size-jj-1); + typename Sequence::const_reverse_iterator it = sb; + while (it!=se) { + sequence->push_back(*it); + for (Py_ssize_t c=0; c<-step && it!=se; ++c) + it++; + } + return sequence; + } + } + + template + inline void + setslice(Sequence* self, Difference i, Difference j, Py_ssize_t step, const InputSeq& is = InputSeq()) { + typename Sequence::size_type size = self->size(); + Difference ii = 0; + Difference jj = 0; + swig::slice_adjust(i, j, step, size, ii, jj, true); + if (step > 0) { + if (step == 1) { + size_t ssize = jj - ii; + if (ssize <= is.size()) { + // expanding/staying the same size + swig::traits_reserve::reserve(*self, self->size() - ssize + is.size()); + typename Sequence::iterator sb = self->begin(); + typename InputSeq::const_iterator isit = is.begin(); + std::advance(sb,ii); + std::advance(isit, jj - ii); + self->insert(std::copy(is.begin(), isit, sb), isit, is.end()); + } else { + // shrinking + typename Sequence::iterator sb = self->begin(); + typename Sequence::iterator se = self->begin(); + std::advance(sb,ii); + std::advance(se,jj); + self->erase(sb,se); + sb = self->begin(); + std::advance(sb,ii); + self->insert(sb, is.begin(), is.end()); + } + } else { + size_t replacecount = (jj - ii + step - 1) / step; + if (is.size() != replacecount) { + char msg[1024]; + sprintf(msg, "attempt to assign sequence of size %lu to extended slice of size %lu", (unsigned long)is.size(), (unsigned long)replacecount); + throw std::invalid_argument(msg); + } + typename Sequence::const_iterator isit = is.begin(); + typename Sequence::iterator it = self->begin(); + std::advance(it,ii); + for (size_t rc=0; rcend(); ++rc) { + *it++ = *isit++; + for (Py_ssize_t c=0; c<(step-1) && it != self->end(); ++c) + it++; + } + } + } else { + size_t replacecount = (ii - jj - step - 1) / -step; + if (is.size() != replacecount) { + char msg[1024]; + sprintf(msg, "attempt to assign sequence of size %lu to extended slice of size %lu", (unsigned long)is.size(), (unsigned long)replacecount); + throw std::invalid_argument(msg); + } + typename Sequence::const_iterator isit = is.begin(); + typename Sequence::reverse_iterator it = self->rbegin(); + std::advance(it,size-ii-1); + for (size_t rc=0; rcrend(); ++rc) { + *it++ = *isit++; + for (Py_ssize_t c=0; c<(-step-1) && it != self->rend(); ++c) + it++; + } + } + } + + template + inline void + delslice(Sequence* self, Difference i, Difference j, Py_ssize_t step) { + typename Sequence::size_type size = self->size(); + Difference ii = 0; + Difference jj = 0; + swig::slice_adjust(i, j, step, size, ii, jj, true); + if (step > 0) { + typename Sequence::iterator sb = self->begin(); + std::advance(sb,ii); + if (step == 1) { + typename Sequence::iterator se = self->begin(); + std::advance(se,jj); + self->erase(sb,se); + } else { + typename Sequence::iterator it = sb; + size_t delcount = (jj - ii + step - 1) / step; + while (delcount) { + it = self->erase(it); + for (Py_ssize_t c=0; c<(step-1) && it != self->end(); ++c) + it++; + delcount--; + } + } + } else { + typename Sequence::reverse_iterator sb = self->rbegin(); + std::advance(sb,size-ii-1); + typename Sequence::reverse_iterator it = sb; + size_t delcount = (ii - jj - step - 1) / -step; + while (delcount) { + it = typename Sequence::reverse_iterator(self->erase((++it).base())); + for (Py_ssize_t c=0; c<(-step-1) && it != self->rend(); ++c) + it++; + delcount--; + } + } + } +} + + +namespace swig { + struct stop_iteration { + }; + + struct SwigPyIterator { + private: + SwigPtr_PyObject _seq; + + protected: + SwigPyIterator(PyObject *seq) : _seq(seq) + { + } + + public: + virtual ~SwigPyIterator() {} + + // Access iterator method, required by Python + virtual PyObject *value() const = 0; + + // Forward iterator method, required by Python + virtual SwigPyIterator *incr(size_t n = 1) = 0; + + // Backward iterator method, very common in C++, but not required in Python + virtual SwigPyIterator *decr(size_t /*n*/ = 1) + { + throw stop_iteration(); + } + + // Random access iterator methods, but not required in Python + virtual ptrdiff_t distance(const SwigPyIterator &/*x*/) const + { + throw std::invalid_argument("operation not supported"); + } + + virtual bool equal (const SwigPyIterator &/*x*/) const + { + throw std::invalid_argument("operation not supported"); + } + + // C++ common/needed methods + virtual SwigPyIterator *copy() const = 0; + + PyObject *next() + { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; // disable threads + PyObject *obj = value(); + incr(); + SWIG_PYTHON_THREAD_END_BLOCK; // re-enable threads + return obj; + } + + /* Make an alias for Python 3.x */ + PyObject *__next__() + { + return next(); + } + + PyObject *previous() + { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; // disable threads + decr(); + PyObject *obj = value(); + SWIG_PYTHON_THREAD_END_BLOCK; // re-enable threads + return obj; + } + + SwigPyIterator *advance(ptrdiff_t n) + { + return (n > 0) ? incr(n) : decr(-n); + } + + bool operator == (const SwigPyIterator& x) const + { + return equal(x); + } + + bool operator != (const SwigPyIterator& x) const + { + return ! operator==(x); + } + + SwigPyIterator& operator += (ptrdiff_t n) + { + return *advance(n); + } + + SwigPyIterator& operator -= (ptrdiff_t n) + { + return *advance(-n); + } + + SwigPyIterator* operator + (ptrdiff_t n) const + { + return copy()->advance(n); + } + + SwigPyIterator* operator - (ptrdiff_t n) const + { + return copy()->advance(-n); + } + + ptrdiff_t operator - (const SwigPyIterator& x) const + { + return x.distance(*this); + } + + static swig_type_info* descriptor() { + static int init = 0; + static swig_type_info* desc = 0; + if (!init) { + desc = SWIG_TypeQuery("swig::SwigPyIterator *"); + init = 1; + } + return desc; + } + }; + +#if defined(SWIGPYTHON_BUILTIN) + inline PyObject* make_output_iterator_builtin (PyObject *pyself) + { + Py_INCREF(pyself); + return pyself; + } +#endif +} + + +#if defined(__SUNPRO_CC) && defined(_RWSTD_VER) +# if !defined(SWIG_NO_STD_NOITERATOR_TRAITS_STL) +# define SWIG_STD_NOITERATOR_TRAITS_STL +# endif +#endif + +#if !defined(SWIG_STD_NOITERATOR_TRAITS_STL) +#include +#else +namespace std { + template + struct iterator_traits { + typedef ptrdiff_t difference_type; + typedef typename Iterator::value_type value_type; + }; + + template + struct iterator_traits<__reverse_bi_iterator > { + typedef Distance difference_type; + typedef T value_type; + }; + + template + struct iterator_traits { + typedef T value_type; + typedef ptrdiff_t difference_type; + }; + + template + inline typename iterator_traits<_InputIterator>::difference_type + distance(_InputIterator __first, _InputIterator __last) + { + typename iterator_traits<_InputIterator>::difference_type __n = 0; + while (__first != __last) { + ++__first; ++__n; + } + return __n; + } +} +#endif + + +namespace swig { + template + class SwigPyIterator_T : public SwigPyIterator + { + public: + typedef OutIterator out_iterator; + typedef typename std::iterator_traits::value_type value_type; + typedef SwigPyIterator_T self_type; + + SwigPyIterator_T(out_iterator curr, PyObject *seq) + : SwigPyIterator(seq), current(curr) + { + } + + const out_iterator& get_current() const + { + return current; + } + + + bool equal (const SwigPyIterator &iter) const + { + const self_type *iters = dynamic_cast(&iter); + if (iters) { + return (current == iters->get_current()); + } else { + throw std::invalid_argument("bad iterator type"); + } + } + + ptrdiff_t distance(const SwigPyIterator &iter) const + { + const self_type *iters = dynamic_cast(&iter); + if (iters) { + return std::distance(current, iters->get_current()); + } else { + throw std::invalid_argument("bad iterator type"); + } + } + + protected: + out_iterator current; + }; + + template + struct from_oper + { + typedef const ValueType& argument_type; + typedef PyObject *result_type; + result_type operator()(argument_type v) const + { + return swig::from(v); + } + }; + + template::value_type, + typename FromOper = from_oper > + class SwigPyForwardIteratorOpen_T : public SwigPyIterator_T + { + public: + FromOper from; + typedef OutIterator out_iterator; + typedef ValueType value_type; + typedef SwigPyIterator_T base; + typedef SwigPyForwardIteratorOpen_T self_type; + + SwigPyForwardIteratorOpen_T(out_iterator curr, PyObject *seq) + : SwigPyIterator_T(curr, seq) + { + } + + PyObject *value() const { + return from(static_cast(*(base::current))); + } + + SwigPyIterator *copy() const + { + return new self_type(*this); + } + + SwigPyIterator *incr(size_t n = 1) + { + while (n--) { + ++base::current; + } + return this; + } + + }; + + template::value_type, + typename FromOper = from_oper > + class SwigPyIteratorOpen_T : public SwigPyForwardIteratorOpen_T + { + public: + FromOper from; + typedef OutIterator out_iterator; + typedef ValueType value_type; + typedef SwigPyIterator_T base; + typedef SwigPyIteratorOpen_T self_type; + + SwigPyIteratorOpen_T(out_iterator curr, PyObject *seq) + : SwigPyForwardIteratorOpen_T(curr, seq) + { + } + + SwigPyIterator *decr(size_t n = 1) + { + while (n--) { + --base::current; + } + return this; + } + }; + + template::value_type, + typename FromOper = from_oper > + class SwigPyForwardIteratorClosed_T : public SwigPyIterator_T + { + public: + FromOper from; + typedef OutIterator out_iterator; + typedef ValueType value_type; + typedef SwigPyIterator_T base; + typedef SwigPyForwardIteratorClosed_T self_type; + + SwigPyForwardIteratorClosed_T(out_iterator curr, out_iterator first, out_iterator last, PyObject *seq) + : SwigPyIterator_T(curr, seq), begin(first), end(last) + { + } + + PyObject *value() const { + if (base::current == end) { + throw stop_iteration(); + } else { + return from(static_cast(*(base::current))); + } + } + + SwigPyIterator *copy() const + { + return new self_type(*this); + } + + SwigPyIterator *incr(size_t n = 1) + { + while (n--) { + if (base::current == end) { + throw stop_iteration(); + } else { + ++base::current; + } + } + return this; + } + + protected: + out_iterator begin; + out_iterator end; + }; + + template::value_type, + typename FromOper = from_oper > + class SwigPyIteratorClosed_T : public SwigPyForwardIteratorClosed_T + { + public: + FromOper from; + typedef OutIterator out_iterator; + typedef ValueType value_type; + typedef SwigPyIterator_T base; + typedef SwigPyForwardIteratorClosed_T base0; + typedef SwigPyIteratorClosed_T self_type; + + SwigPyIteratorClosed_T(out_iterator curr, out_iterator first, out_iterator last, PyObject *seq) + : SwigPyForwardIteratorClosed_T(curr, first, last, seq) + { + } + + SwigPyIterator *decr(size_t n = 1) + { + while (n--) { + if (base::current == base0::begin) { + throw stop_iteration(); + } else { + --base::current; + } + } + return this; + } + }; + + + template + inline SwigPyIterator* + make_output_forward_iterator(const OutIter& current, const OutIter& begin,const OutIter& end, PyObject *seq = 0) + { + return new SwigPyForwardIteratorClosed_T(current, begin, end, seq); + } + + template + inline SwigPyIterator* + make_output_iterator(const OutIter& current, const OutIter& begin,const OutIter& end, PyObject *seq = 0) + { + return new SwigPyIteratorClosed_T(current, begin, end, seq); + } + + template + inline SwigPyIterator* + make_output_forward_iterator(const OutIter& current, PyObject *seq = 0) + { + return new SwigPyForwardIteratorOpen_T(current, seq); + } + + template + inline SwigPyIterator* + make_output_iterator(const OutIter& current, PyObject *seq = 0) + { + return new SwigPyIteratorOpen_T(current, seq); + } + +} + + +namespace swig +{ + template + struct SwigPySequence_Ref + { + SwigPySequence_Ref(PyObject* seq, Py_ssize_t index) + : _seq(seq), _index(index) + { + } + + operator T () const + { + swig::SwigVar_PyObject item = PySequence_GetItem(_seq, _index); + try { + return swig::as(item); + } catch (const std::invalid_argument& e) { + char msg[1024]; + sprintf(msg, "in sequence element %d ", (int)_index); + if (!PyErr_Occurred()) { + ::SWIG_Error(SWIG_TypeError, swig::type_name()); + } + SWIG_Python_AddErrorMsg(msg); + SWIG_Python_AddErrorMsg(e.what()); + throw; + } + } + + SwigPySequence_Ref& operator=(const T& v) + { + PySequence_SetItem(_seq, _index, swig::from(v)); + return *this; + } + + private: + PyObject* _seq; + Py_ssize_t _index; + }; + + template + struct SwigPySequence_ArrowProxy + { + SwigPySequence_ArrowProxy(const T& x): m_value(x) {} + const T* operator->() const { return &m_value; } + operator const T*() const { return &m_value; } + T m_value; + }; + + template + struct SwigPySequence_InputIterator + { + typedef SwigPySequence_InputIterator self; + + typedef std::random_access_iterator_tag iterator_category; + typedef Reference reference; + typedef T value_type; + typedef T* pointer; + typedef Py_ssize_t difference_type; + + SwigPySequence_InputIterator() + { + } + + SwigPySequence_InputIterator(PyObject* seq, Py_ssize_t index) + : _seq(seq), _index(index) + { + } + + reference operator*() const + { + return reference(_seq, _index); + } + + SwigPySequence_ArrowProxy + operator->() const { + return SwigPySequence_ArrowProxy(operator*()); + } + + bool operator==(const self& ri) const + { + return (_index == ri._index) && (_seq == ri._seq); + } + + bool operator!=(const self& ri) const + { + return !(operator==(ri)); + } + + self& operator ++ () + { + ++_index; + return *this; + } + + self& operator -- () + { + --_index; + return *this; + } + + self& operator += (difference_type n) + { + _index += n; + return *this; + } + + self operator +(difference_type n) const + { + return self(_seq, _index + n); + } + + self& operator -= (difference_type n) + { + _index -= n; + return *this; + } + + self operator -(difference_type n) const + { + return self(_seq, _index - n); + } + + difference_type operator - (const self& ri) const + { + return _index - ri._index; + } + + bool operator < (const self& ri) const + { + return _index < ri._index; + } + + reference + operator[](difference_type n) const + { + return reference(_seq, _index + n); + } + + private: + PyObject* _seq; + difference_type _index; + }; + + // STL container wrapper around a Python sequence + template + struct SwigPySequence_Cont + { + typedef SwigPySequence_Ref reference; + typedef const SwigPySequence_Ref const_reference; + typedef T value_type; + typedef T* pointer; + typedef Py_ssize_t difference_type; + typedef size_t size_type; + typedef const pointer const_pointer; + typedef SwigPySequence_InputIterator iterator; + typedef SwigPySequence_InputIterator const_iterator; + + SwigPySequence_Cont(PyObject* seq) : _seq(0) + { + if (!PySequence_Check(seq)) { + throw std::invalid_argument("a sequence is expected"); + } + _seq = seq; + Py_INCREF(_seq); + } + + ~SwigPySequence_Cont() + { + Py_XDECREF(_seq); + } + + size_type size() const + { + return static_cast(PySequence_Size(_seq)); + } + + bool empty() const + { + return size() == 0; + } + + iterator begin() + { + return iterator(_seq, 0); + } + + const_iterator begin() const + { + return const_iterator(_seq, 0); + } + + iterator end() + { + return iterator(_seq, size()); + } + + const_iterator end() const + { + return const_iterator(_seq, size()); + } + + reference operator[](difference_type n) + { + return reference(_seq, n); + } + + const_reference operator[](difference_type n) const + { + return const_reference(_seq, n); + } + + bool check() const + { + Py_ssize_t s = size(); + for (Py_ssize_t i = 0; i < s; ++i) { + swig::SwigVar_PyObject item = PySequence_GetItem(_seq, i); + if (!swig::check(item)) + return false; + } + return true; + } + + private: + PyObject* _seq; + }; + +} + + +namespace swig { + template + inline void + assign(const SwigPySeq& swigpyseq, Seq* seq) { + // seq->assign(swigpyseq.begin(), swigpyseq.end()); // not used as not always implemented + typedef typename SwigPySeq::value_type value_type; + typename SwigPySeq::const_iterator it = swigpyseq.begin(); + for (;it != swigpyseq.end(); ++it) { + seq->insert(seq->end(),(value_type)(*it)); + } + } + + template + struct traits_asptr_stdseq { + typedef Seq sequence; + typedef T value_type; + + static int asptr(PyObject *obj, sequence **seq) { + if (obj == Py_None || SWIG_Python_GetSwigThis(obj)) { + sequence *p; + swig_type_info *descriptor = swig::type_info(); + if (descriptor && SWIG_IsOK(::SWIG_ConvertPtr(obj, (void **)&p, descriptor, 0))) { + if (seq) *seq = p; + return SWIG_OLDOBJ; + } + } else if (PySequence_Check(obj)) { + try { + SwigPySequence_Cont swigpyseq(obj); + if (seq) { + sequence *pseq = new sequence(); + assign(swigpyseq, pseq); + *seq = pseq; + return SWIG_NEWOBJ; + } else { + return swigpyseq.check() ? SWIG_OK : SWIG_ERROR; + } + } catch (std::exception& e) { + if (seq) { + if (!PyErr_Occurred()) { + PyErr_SetString(PyExc_TypeError, e.what()); + } + } + return SWIG_ERROR; + } + } + return SWIG_ERROR; + } + }; + + template + struct traits_from_stdseq { + typedef Seq sequence; + typedef T value_type; + typedef typename Seq::size_type size_type; + typedef typename sequence::const_iterator const_iterator; + + static PyObject *from(const sequence& seq) { +#ifdef SWIG_PYTHON_EXTRA_NATIVE_CONTAINERS + swig_type_info *desc = swig::type_info(); + if (desc && desc->clientdata) { + return SWIG_InternalNewPointerObj(new sequence(seq), desc, SWIG_POINTER_OWN); + } +#endif + size_type size = seq.size(); + if (size <= (size_type)INT_MAX) { + PyObject *obj = PyTuple_New((Py_ssize_t)size); + Py_ssize_t i = 0; + for (const_iterator it = seq.begin(); it != seq.end(); ++it, ++i) { + PyTuple_SetItem(obj,i,swig::from(*it)); + } + return obj; + } else { + PyErr_SetString(PyExc_OverflowError,"sequence size not valid in python"); + return NULL; + } + } + }; +} + + + namespace swig { + template + struct traits_reserve > { + static void reserve(std::vector &seq, typename std::vector::size_type n) { + seq.reserve(n); + } + }; + + template + struct traits_asptr > { + static int asptr(PyObject *obj, std::vector **vec) { + return traits_asptr_stdseq >::asptr(obj, vec); + } + }; + + template + struct traits_from > { + static PyObject *from(const std::vector& vec) { + return traits_from_stdseq >::from(vec); + } + }; + } + + + namespace swig { + template <> struct traits > > { + typedef pointer_category category; + static const char* type_name() { + return "std::vector<" "float" "," "std::allocator< float >" " >"; + } + }; + } + + +namespace swig { + template <> struct traits< int > { + typedef value_category category; + static const char* type_name() { return"int"; } + }; + template <> struct traits_asval< int > { + typedef int value_type; + static int asval(PyObject *obj, value_type *val) { + return SWIG_AsVal_int (obj, val); + } + }; + template <> struct traits_from< int > { + typedef int value_type; + static PyObject *from(const value_type& val) { + return SWIG_From_int (val); + } + }; +} + + + namespace swig { + template <> struct traits > > { + typedef pointer_category category; + static const char* type_name() { + return "std::vector<" "int" "," "std::allocator< int >" " >"; + } + }; + } + + +SWIGINTERN int +SWIG_AsVal_bool (PyObject *obj, bool *val) +{ + int r; + if (!PyBool_Check(obj)) + return SWIG_ERROR; + r = PyObject_IsTrue(obj); + if (r == -1) + return SWIG_ERROR; + if (val) *val = r ? true : false; + return SWIG_OK; +} + +#ifdef __cplusplus +extern "C" { +#endif +SWIGINTERN PyObject *_wrap_high_res_timer_now(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + gr::high_res_timer_type result; + + if (!SWIG_Python_UnpackTuple(args, "high_res_timer_now", 0, 0, 0)) SWIG_fail; + { + try { + result = (gr::high_res_timer_type)gr::high_res_timer_now(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_long_SS_long(static_cast< long long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_high_res_timer_now_perfmon(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + gr::high_res_timer_type result; + + if (!SWIG_Python_UnpackTuple(args, "high_res_timer_now_perfmon", 0, 0, 0)) SWIG_fail; + { + try { + result = (gr::high_res_timer_type)gr::high_res_timer_now_perfmon(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_long_SS_long(static_cast< long long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_high_res_timer_tps(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + gr::high_res_timer_type result; + + if (!SWIG_Python_UnpackTuple(args, "high_res_timer_tps", 0, 0, 0)) SWIG_fail; + { + try { + result = (gr::high_res_timer_type)gr::high_res_timer_tps(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_long_SS_long(static_cast< long long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_high_res_timer_epoch(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + gr::high_res_timer_type result; + + if (!SWIG_Python_UnpackTuple(args, "high_res_timer_epoch", 0, 0, 0)) SWIG_fail; + { + try { + result = (gr::high_res_timer_type)gr::high_res_timer_epoch(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_long_SS_long(static_cast< long long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_make(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + int arg1 ; + double arg2 ; + int val1 ; + int ecode1 = 0 ; + double val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"Htotal", (char *)"manual_correction", NULL + }; + gr::tempest::sampling_synchronization::sptr result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:sampling_synchronization_make", kwnames, &obj0, &obj1)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "sampling_synchronization_make" "', argument " "1"" of type '" "int""'"); + } + arg1 = static_cast< int >(val1); + ecode2 = SWIG_AsVal_double(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sampling_synchronization_make" "', argument " "2"" of type '" "double""'"); + } + arg2 = static_cast< double >(val2); + { + try { + result = gr::tempest::sampling_synchronization::make(arg1,arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new gr::tempest::sampling_synchronization::sptr(static_cast< const gr::tempest::sampling_synchronization::sptr& >(result))), SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_set_Htotal(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + gr::tempest::sampling_synchronization *arg1 = (gr::tempest::sampling_synchronization *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"Htotal", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:sampling_synchronization_set_Htotal", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_gr__tempest__sampling_synchronization, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_set_Htotal" "', argument " "1"" of type '" "gr::tempest::sampling_synchronization *""'"); + } + arg1 = reinterpret_cast< gr::tempest::sampling_synchronization * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sampling_synchronization_set_Htotal" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + (arg1)->set_Htotal(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_set_manual_correction(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + gr::tempest::sampling_synchronization *arg1 = (gr::tempest::sampling_synchronization *) 0 ; + double arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + double val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"correction", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:sampling_synchronization_set_manual_correction", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_gr__tempest__sampling_synchronization, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_set_manual_correction" "', argument " "1"" of type '" "gr::tempest::sampling_synchronization *""'"); + } + arg1 = reinterpret_cast< gr::tempest::sampling_synchronization * >(argp1); + ecode2 = SWIG_AsVal_double(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sampling_synchronization_set_manual_correction" "', argument " "2"" of type '" "double""'"); + } + arg2 = static_cast< double >(val2); + { + try { + (arg1)->set_manual_correction(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_sampling_synchronization(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + gr::tempest::sampling_synchronization *arg1 = (gr::tempest::sampling_synchronization *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_gr__tempest__sampling_synchronization, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_sampling_synchronization" "', argument " "1"" of type '" "gr::tempest::sampling_synchronization *""'"); + } + arg1 = reinterpret_cast< gr::tempest::sampling_synchronization * >(argp1); + { + try { + delete arg1; + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *sampling_synchronization_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!SWIG_Python_UnpackTuple(args, "swigregister", 1, 1, &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_gr__tempest__sampling_synchronization, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_new_sampling_synchronization_sptr__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **SWIGUNUSEDPARM(swig_obj)) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *result = 0 ; + + if ((nobjs < 0) || (nobjs > 0)) SWIG_fail; + { + try { + result = (boost::shared_ptr< gr::tempest::sampling_synchronization > *)new boost::shared_ptr< gr::tempest::sampling_synchronization >(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_sampling_synchronization_sptr__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + gr::tempest::sampling_synchronization *arg1 = (gr::tempest::sampling_synchronization *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + boost::shared_ptr< gr::tempest::sampling_synchronization > *result = 0 ; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_gr__tempest__sampling_synchronization, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_sampling_synchronization_sptr" "', argument " "1"" of type '" "gr::tempest::sampling_synchronization *""'"); + } + arg1 = reinterpret_cast< gr::tempest::sampling_synchronization * >(argp1); + { + try { + result = (boost::shared_ptr< gr::tempest::sampling_synchronization > *)new boost::shared_ptr< gr::tempest::sampling_synchronization >(arg1); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_sampling_synchronization_sptr(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[2] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "new_sampling_synchronization_sptr", 0, 1, argv))) SWIG_fail; + --argc; + if (argc == 0) { + return _wrap_new_sampling_synchronization_sptr__SWIG_0(self, argc, argv); + } + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_gr__tempest__sampling_synchronization, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_new_sampling_synchronization_sptr__SWIG_1(self, argc, argv); + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'new_sampling_synchronization_sptr'.\n" + " Possible C/C++ prototypes are:\n" + " boost::shared_ptr< gr::tempest::sampling_synchronization >::shared_ptr()\n" + " boost::shared_ptr< gr::tempest::sampling_synchronization >::shared_ptr(gr::tempest::sampling_synchronization *)\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr___deref__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + gr::tempest::sampling_synchronization *result = 0 ; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr___deref__" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + { + try { + result = (gr::tempest::sampling_synchronization *)(arg1)->operator ->(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_gr__tempest__sampling_synchronization, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_sampling_synchronization_sptr(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_sampling_synchronization_sptr" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + { + try { + delete arg1; + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_make(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + int arg2 ; + double arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + double val3 ; + int ecode3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"Htotal", (char *)"manual_correction", NULL + }; + gr::tempest::sampling_synchronization::sptr result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOO:sampling_synchronization_sptr_make", kwnames, &obj0, &obj1, &obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_make" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sampling_synchronization_sptr_make" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_double(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "sampling_synchronization_sptr_make" "', argument " "3"" of type '" "double""'"); + } + arg3 = static_cast< double >(val3); + { + try { + result = (*arg1)->make(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new gr::tempest::sampling_synchronization::sptr(static_cast< const gr::tempest::sampling_synchronization::sptr& >(result))), SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_set_Htotal(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"Htotal", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:sampling_synchronization_sptr_set_Htotal", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_set_Htotal" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sampling_synchronization_sptr_set_Htotal" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + (*arg1)->set_Htotal(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_set_manual_correction(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + double arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + double val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"correction", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:sampling_synchronization_sptr_set_manual_correction", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_set_manual_correction" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + ecode2 = SWIG_AsVal_double(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sampling_synchronization_sptr_set_manual_correction" "', argument " "2"" of type '" "double""'"); + } + arg2 = static_cast< double >(val2); + { + try { + (*arg1)->set_manual_correction(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_history(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + unsigned int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_history" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + { + try { + result = (unsigned int)(*arg1)->history(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_int(static_cast< unsigned int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_declare_sample_delay__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + int arg2 ; + int arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int val3 ; + int ecode3 = 0 ; + + if ((nobjs < 3) || (nobjs > 3)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_declare_sample_delay" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sampling_synchronization_sptr_declare_sample_delay" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_int(swig_obj[2], &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "sampling_synchronization_sptr_declare_sample_delay" "', argument " "3"" of type '" "int""'"); + } + arg3 = static_cast< int >(val3); + { + try { + (*arg1)->declare_sample_delay(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_declare_sample_delay__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + unsigned int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + unsigned int val2 ; + int ecode2 = 0 ; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_declare_sample_delay" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + ecode2 = SWIG_AsVal_unsigned_SS_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sampling_synchronization_sptr_declare_sample_delay" "', argument " "2"" of type '" "unsigned int""'"); + } + arg2 = static_cast< unsigned int >(val2); + { + try { + (*arg1)->declare_sample_delay(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_declare_sample_delay(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[4] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "sampling_synchronization_sptr_declare_sample_delay", 0, 3, argv))) SWIG_fail; + --argc; + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_unsigned_SS_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_sampling_synchronization_sptr_declare_sample_delay__SWIG_1(self, argc, argv); + } + } + } + if (argc == 3) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + { + int res = SWIG_AsVal_int(argv[2], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_sampling_synchronization_sptr_declare_sample_delay__SWIG_0(self, argc, argv); + } + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'sampling_synchronization_sptr_declare_sample_delay'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::declare_sample_delay(int,int)\n" + " gr::block::declare_sample_delay(unsigned int)\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_sample_delay(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"which", NULL + }; + unsigned int result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:sampling_synchronization_sptr_sample_delay", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_sample_delay" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sampling_synchronization_sptr_sample_delay" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (unsigned int)(*arg1)->sample_delay(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_int(static_cast< unsigned int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_set_output_multiple(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"multiple", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:sampling_synchronization_sptr_set_output_multiple", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_set_output_multiple" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sampling_synchronization_sptr_set_output_multiple" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + (*arg1)->set_output_multiple(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_output_multiple(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_output_multiple" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + { + try { + result = (int)(*arg1)->output_multiple(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_relative_rate(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + double result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_relative_rate" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + { + try { + result = (double)(*arg1)->relative_rate(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_double(static_cast< double >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_relative_rate_i(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + uint64_t result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_relative_rate_i" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + { + try { + result = (uint64_t)(*arg1)->relative_rate_i(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_long_SS_long(static_cast< unsigned long long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_relative_rate_d(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + uint64_t result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_relative_rate_d" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + { + try { + result = (uint64_t)(*arg1)->relative_rate_d(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_long_SS_long(static_cast< unsigned long long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_start(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + bool result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_start" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + { + try { + result = (bool)(*arg1)->start(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_bool(static_cast< bool >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_stop(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + bool result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_stop" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + { + try { + result = (bool)(*arg1)->stop(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_bool(static_cast< bool >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_nitems_read(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + unsigned int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + unsigned int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"which_input", NULL + }; + uint64_t result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:sampling_synchronization_sptr_nitems_read", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_nitems_read" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + ecode2 = SWIG_AsVal_unsigned_SS_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sampling_synchronization_sptr_nitems_read" "', argument " "2"" of type '" "unsigned int""'"); + } + arg2 = static_cast< unsigned int >(val2); + { + try { + result = (uint64_t)(*arg1)->nitems_read(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_long_SS_long(static_cast< unsigned long long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_nitems_written(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + unsigned int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + unsigned int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"which_output", NULL + }; + uint64_t result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:sampling_synchronization_sptr_nitems_written", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_nitems_written" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + ecode2 = SWIG_AsVal_unsigned_SS_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sampling_synchronization_sptr_nitems_written" "', argument " "2"" of type '" "unsigned int""'"); + } + arg2 = static_cast< unsigned int >(val2); + { + try { + result = (uint64_t)(*arg1)->nitems_written(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_long_SS_long(static_cast< unsigned long long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_set_log_level(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + std::string arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"level", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:sampling_synchronization_sptr_set_log_level", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_set_log_level" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + { + std::string *ptr = (std::string *)0; + int res = SWIG_AsPtr_std_string(obj1, &ptr); + if (!SWIG_IsOK(res) || !ptr) { + SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "sampling_synchronization_sptr_set_log_level" "', argument " "2"" of type '" "std::string""'"); + } + arg2 = *ptr; + if (SWIG_IsNewObj(res)) delete ptr; + } + { + try { + (*arg1)->set_log_level(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_log_level(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + std::string result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_log_level" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + { + try { + result = (*arg1)->log_level(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_std_string(static_cast< std::string >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_max_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_max_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + { + try { + result = (int)(*arg1)->max_noutput_items(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_set_max_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"m", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:sampling_synchronization_sptr_set_max_noutput_items", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_set_max_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sampling_synchronization_sptr_set_max_noutput_items" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + (*arg1)->set_max_noutput_items(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_unset_max_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_unset_max_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + { + try { + (*arg1)->unset_max_noutput_items(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_is_set_max_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + bool result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_is_set_max_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + { + try { + result = (bool)(*arg1)->is_set_max_noutput_items(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_bool(static_cast< bool >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_set_min_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"m", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:sampling_synchronization_sptr_set_min_noutput_items", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_set_min_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sampling_synchronization_sptr_set_min_noutput_items" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + (*arg1)->set_min_noutput_items(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_min_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_min_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + { + try { + result = (int)(*arg1)->min_noutput_items(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_max_output_buffer(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"i", NULL + }; + long result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:sampling_synchronization_sptr_max_output_buffer", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_max_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sampling_synchronization_sptr_max_output_buffer" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (long)(*arg1)->max_output_buffer(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_long(static_cast< long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_set_max_output_buffer__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + long arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + long val2 ; + int ecode2 = 0 ; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_set_max_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + ecode2 = SWIG_AsVal_long(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sampling_synchronization_sptr_set_max_output_buffer" "', argument " "2"" of type '" "long""'"); + } + arg2 = static_cast< long >(val2); + { + try { + (*arg1)->set_max_output_buffer(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_set_max_output_buffer__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + int arg2 ; + long arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + long val3 ; + int ecode3 = 0 ; + + if ((nobjs < 3) || (nobjs > 3)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_set_max_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sampling_synchronization_sptr_set_max_output_buffer" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_long(swig_obj[2], &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "sampling_synchronization_sptr_set_max_output_buffer" "', argument " "3"" of type '" "long""'"); + } + arg3 = static_cast< long >(val3); + { + try { + (*arg1)->set_max_output_buffer(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_set_max_output_buffer(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[4] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "sampling_synchronization_sptr_set_max_output_buffer", 0, 3, argv))) SWIG_fail; + --argc; + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_long(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_sampling_synchronization_sptr_set_max_output_buffer__SWIG_0(self, argc, argv); + } + } + } + if (argc == 3) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + { + int res = SWIG_AsVal_long(argv[2], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_sampling_synchronization_sptr_set_max_output_buffer__SWIG_1(self, argc, argv); + } + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'sampling_synchronization_sptr_set_max_output_buffer'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::set_max_output_buffer(long)\n" + " gr::block::set_max_output_buffer(int,long)\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_min_output_buffer(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"i", NULL + }; + long result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:sampling_synchronization_sptr_min_output_buffer", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_min_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sampling_synchronization_sptr_min_output_buffer" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (long)(*arg1)->min_output_buffer(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_long(static_cast< long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_set_min_output_buffer__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + long arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + long val2 ; + int ecode2 = 0 ; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_set_min_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + ecode2 = SWIG_AsVal_long(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sampling_synchronization_sptr_set_min_output_buffer" "', argument " "2"" of type '" "long""'"); + } + arg2 = static_cast< long >(val2); + { + try { + (*arg1)->set_min_output_buffer(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_set_min_output_buffer__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + int arg2 ; + long arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + long val3 ; + int ecode3 = 0 ; + + if ((nobjs < 3) || (nobjs > 3)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_set_min_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sampling_synchronization_sptr_set_min_output_buffer" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_long(swig_obj[2], &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "sampling_synchronization_sptr_set_min_output_buffer" "', argument " "3"" of type '" "long""'"); + } + arg3 = static_cast< long >(val3); + { + try { + (*arg1)->set_min_output_buffer(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_set_min_output_buffer(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[4] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "sampling_synchronization_sptr_set_min_output_buffer", 0, 3, argv))) SWIG_fail; + --argc; + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_long(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_sampling_synchronization_sptr_set_min_output_buffer__SWIG_0(self, argc, argv); + } + } + } + if (argc == 3) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + { + int res = SWIG_AsVal_long(argv[2], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_sampling_synchronization_sptr_set_min_output_buffer__SWIG_1(self, argc, argv); + } + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'sampling_synchronization_sptr_set_min_output_buffer'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::set_min_output_buffer(long)\n" + " gr::block::set_min_output_buffer(int,long)\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_pc_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_pc_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + { + try { + result = (float)(*arg1)->pc_noutput_items(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_pc_noutput_items_avg(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_pc_noutput_items_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + { + try { + result = (float)(*arg1)->pc_noutput_items_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_pc_noutput_items_var(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_pc_noutput_items_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + { + try { + result = (float)(*arg1)->pc_noutput_items_var(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_pc_nproduced(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_pc_nproduced" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + { + try { + result = (float)(*arg1)->pc_nproduced(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_pc_nproduced_avg(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_pc_nproduced_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + { + try { + result = (float)(*arg1)->pc_nproduced_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_pc_nproduced_var(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_pc_nproduced_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + { + try { + result = (float)(*arg1)->pc_nproduced_var(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_pc_input_buffers_full__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_pc_input_buffers_full" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sampling_synchronization_sptr_pc_input_buffers_full" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_input_buffers_full(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_pc_input_buffers_full__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_pc_input_buffers_full" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + { + try { + result = (*arg1)->pc_input_buffers_full(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_pc_input_buffers_full(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "sampling_synchronization_sptr_pc_input_buffers_full", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_sampling_synchronization_sptr_pc_input_buffers_full__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_sampling_synchronization_sptr_pc_input_buffers_full__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'sampling_synchronization_sptr_pc_input_buffers_full'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_input_buffers_full(int)\n" + " gr::block::pc_input_buffers_full()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_pc_input_buffers_full_avg__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_pc_input_buffers_full_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sampling_synchronization_sptr_pc_input_buffers_full_avg" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_input_buffers_full_avg(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_pc_input_buffers_full_avg__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_pc_input_buffers_full_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + { + try { + result = (*arg1)->pc_input_buffers_full_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_pc_input_buffers_full_avg(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "sampling_synchronization_sptr_pc_input_buffers_full_avg", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_sampling_synchronization_sptr_pc_input_buffers_full_avg__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_sampling_synchronization_sptr_pc_input_buffers_full_avg__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'sampling_synchronization_sptr_pc_input_buffers_full_avg'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_input_buffers_full_avg(int)\n" + " gr::block::pc_input_buffers_full_avg()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_pc_input_buffers_full_var__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_pc_input_buffers_full_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sampling_synchronization_sptr_pc_input_buffers_full_var" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_input_buffers_full_var(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_pc_input_buffers_full_var__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_pc_input_buffers_full_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + { + try { + result = (*arg1)->pc_input_buffers_full_var(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_pc_input_buffers_full_var(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "sampling_synchronization_sptr_pc_input_buffers_full_var", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_sampling_synchronization_sptr_pc_input_buffers_full_var__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_sampling_synchronization_sptr_pc_input_buffers_full_var__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'sampling_synchronization_sptr_pc_input_buffers_full_var'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_input_buffers_full_var(int)\n" + " gr::block::pc_input_buffers_full_var()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_pc_output_buffers_full__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_pc_output_buffers_full" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sampling_synchronization_sptr_pc_output_buffers_full" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_output_buffers_full(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_pc_output_buffers_full__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_pc_output_buffers_full" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + { + try { + result = (*arg1)->pc_output_buffers_full(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_pc_output_buffers_full(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "sampling_synchronization_sptr_pc_output_buffers_full", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_sampling_synchronization_sptr_pc_output_buffers_full__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_sampling_synchronization_sptr_pc_output_buffers_full__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'sampling_synchronization_sptr_pc_output_buffers_full'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_output_buffers_full(int)\n" + " gr::block::pc_output_buffers_full()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_pc_output_buffers_full_avg__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_pc_output_buffers_full_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sampling_synchronization_sptr_pc_output_buffers_full_avg" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_output_buffers_full_avg(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_pc_output_buffers_full_avg__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_pc_output_buffers_full_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + { + try { + result = (*arg1)->pc_output_buffers_full_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_pc_output_buffers_full_avg(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "sampling_synchronization_sptr_pc_output_buffers_full_avg", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_sampling_synchronization_sptr_pc_output_buffers_full_avg__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_sampling_synchronization_sptr_pc_output_buffers_full_avg__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'sampling_synchronization_sptr_pc_output_buffers_full_avg'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_output_buffers_full_avg(int)\n" + " gr::block::pc_output_buffers_full_avg()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_pc_output_buffers_full_var__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_pc_output_buffers_full_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sampling_synchronization_sptr_pc_output_buffers_full_var" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_output_buffers_full_var(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_pc_output_buffers_full_var__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_pc_output_buffers_full_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + { + try { + result = (*arg1)->pc_output_buffers_full_var(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_pc_output_buffers_full_var(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "sampling_synchronization_sptr_pc_output_buffers_full_var", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_sampling_synchronization_sptr_pc_output_buffers_full_var__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_sampling_synchronization_sptr_pc_output_buffers_full_var__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'sampling_synchronization_sptr_pc_output_buffers_full_var'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_output_buffers_full_var(int)\n" + " gr::block::pc_output_buffers_full_var()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_pc_work_time(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_pc_work_time" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + { + try { + result = (float)(*arg1)->pc_work_time(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_pc_work_time_avg(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_pc_work_time_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + { + try { + result = (float)(*arg1)->pc_work_time_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_pc_work_time_var(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_pc_work_time_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + { + try { + result = (float)(*arg1)->pc_work_time_var(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_pc_work_time_total(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_pc_work_time_total" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + { + try { + result = (float)(*arg1)->pc_work_time_total(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_pc_throughput_avg(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_pc_throughput_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + { + try { + result = (float)(*arg1)->pc_throughput_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_set_processor_affinity(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + std::vector< int,std::allocator< int > > *arg2 = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 = SWIG_OLDOBJ ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"mask", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:sampling_synchronization_sptr_set_processor_affinity", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_set_processor_affinity" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + { + std::vector< int,std::allocator< int > > *ptr = (std::vector< int,std::allocator< int > > *)0; + res2 = swig::asptr(obj1, &ptr); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "sampling_synchronization_sptr_set_processor_affinity" "', argument " "2"" of type '" "std::vector< int,std::allocator< int > > const &""'"); + } + if (!ptr) { + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "sampling_synchronization_sptr_set_processor_affinity" "', argument " "2"" of type '" "std::vector< int,std::allocator< int > > const &""'"); + } + arg2 = ptr; + } + { + try { + (*arg1)->set_processor_affinity((std::vector< int,std::allocator< int > > const &)*arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + if (SWIG_IsNewObj(res2)) delete arg2; + return resultobj; +fail: + if (SWIG_IsNewObj(res2)) delete arg2; + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_unset_processor_affinity(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_unset_processor_affinity" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + { + try { + (*arg1)->unset_processor_affinity(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_processor_affinity(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + std::vector< int,std::allocator< int > > result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_processor_affinity" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + { + try { + result = (*arg1)->processor_affinity(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< int,std::allocator< int > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_active_thread_priority(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_active_thread_priority" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + { + try { + result = (int)(*arg1)->active_thread_priority(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_thread_priority(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_thread_priority" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + { + try { + result = (int)(*arg1)->thread_priority(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_set_thread_priority(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"priority", NULL + }; + int result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:sampling_synchronization_sptr_set_thread_priority", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_set_thread_priority" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sampling_synchronization_sptr_set_thread_priority" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (int)(*arg1)->set_thread_priority(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_name(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + std::string result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_name" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + { + try { + result = (*arg1)->name(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_std_string(static_cast< std::string >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_symbol_name(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + std::string result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_symbol_name" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + { + try { + result = (*arg1)->symbol_name(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_std_string(static_cast< std::string >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_input_signature(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + gr::io_signature::sptr result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_input_signature" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + { + try { + result = (*arg1)->input_signature(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new gr::io_signature::sptr(static_cast< const gr::io_signature::sptr& >(result))), SWIGTYPE_p_boost__shared_ptrT_gr__io_signature_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_output_signature(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + gr::io_signature::sptr result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_output_signature" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + { + try { + result = (*arg1)->output_signature(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new gr::io_signature::sptr(static_cast< const gr::io_signature::sptr& >(result))), SWIGTYPE_p_boost__shared_ptrT_gr__io_signature_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_unique_id(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + long result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_unique_id" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + { + try { + result = (long)(*arg1)->unique_id(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_long(static_cast< long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_to_basic_block(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + gr::basic_block_sptr result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_to_basic_block" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + { + try { + result = (*arg1)->to_basic_block(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new gr::basic_block_sptr(static_cast< const gr::basic_block_sptr& >(result))), SWIGTYPE_p_boost__shared_ptrT_gr__basic_block_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_check_topology(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + int arg2 ; + int arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int val3 ; + int ecode3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"ninputs", (char *)"noutputs", NULL + }; + bool result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOO:sampling_synchronization_sptr_check_topology", kwnames, &obj0, &obj1, &obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_check_topology" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sampling_synchronization_sptr_check_topology" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_int(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "sampling_synchronization_sptr_check_topology" "', argument " "3"" of type '" "int""'"); + } + arg3 = static_cast< int >(val3); + { + try { + result = (bool)(*arg1)->check_topology(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_bool(static_cast< bool >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_alias(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + std::string result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_alias" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + { + try { + result = (*arg1)->alias(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_std_string(static_cast< std::string >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_set_block_alias(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + std::string arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"name", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:sampling_synchronization_sptr_set_block_alias", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_set_block_alias" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + { + std::string *ptr = (std::string *)0; + int res = SWIG_AsPtr_std_string(obj1, &ptr); + if (!SWIG_IsOK(res) || !ptr) { + SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "sampling_synchronization_sptr_set_block_alias" "', argument " "2"" of type '" "std::string""'"); + } + arg2 = *ptr; + if (SWIG_IsNewObj(res)) delete ptr; + } + { + try { + (*arg1)->set_block_alias(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr__post(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + pmt::pmt_t arg2 ; + pmt::pmt_t arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 ; + int res2 = 0 ; + void *argp3 ; + int res3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"which_port", (char *)"msg", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOO:sampling_synchronization_sptr__post", kwnames, &obj0, &obj1, &obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr__post" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + { + res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, 0 | 0); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "sampling_synchronization_sptr__post" "', argument " "2"" of type '" "pmt::pmt_t""'"); + } + if (!argp2) { + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "sampling_synchronization_sptr__post" "', argument " "2"" of type '" "pmt::pmt_t""'"); + } else { + pmt::pmt_t * temp = reinterpret_cast< pmt::pmt_t * >(argp2); + arg2 = *temp; + if (SWIG_IsNewObj(res2)) delete temp; + } + } + { + res3 = SWIG_ConvertPtr(obj2, &argp3, SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, 0 | 0); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "sampling_synchronization_sptr__post" "', argument " "3"" of type '" "pmt::pmt_t""'"); + } + if (!argp3) { + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "sampling_synchronization_sptr__post" "', argument " "3"" of type '" "pmt::pmt_t""'"); + } else { + pmt::pmt_t * temp = reinterpret_cast< pmt::pmt_t * >(argp3); + arg3 = *temp; + if (SWIG_IsNewObj(res3)) delete temp; + } + } + { + try { + (*arg1)->_post(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_message_ports_in(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + pmt::pmt_t result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_message_ports_in" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + { + try { + result = (*arg1)->message_ports_in(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new pmt::pmt_t(static_cast< const pmt::pmt_t& >(result))), SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_message_ports_out(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + pmt::pmt_t result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_message_ports_out" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + { + try { + result = (*arg1)->message_ports_out(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new pmt::pmt_t(static_cast< const pmt::pmt_t& >(result))), SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sampling_synchronization_sptr_message_subscribers(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::sampling_synchronization > *) 0 ; + pmt::pmt_t arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"which_port", NULL + }; + pmt::pmt_t result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:sampling_synchronization_sptr_message_subscribers", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sampling_synchronization_sptr_message_subscribers" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sampling_synchronization > * >(argp1); + { + res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, 0 | 0); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "sampling_synchronization_sptr_message_subscribers" "', argument " "2"" of type '" "pmt::pmt_t""'"); + } + if (!argp2) { + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "sampling_synchronization_sptr_message_subscribers" "', argument " "2"" of type '" "pmt::pmt_t""'"); + } else { + pmt::pmt_t * temp = reinterpret_cast< pmt::pmt_t * >(argp2); + arg2 = *temp; + if (SWIG_IsNewObj(res2)) delete temp; + } + } + { + try { + result = (*arg1)->message_subscribers(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new pmt::pmt_t(static_cast< const pmt::pmt_t& >(result))), SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *sampling_synchronization_sptr_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!SWIG_Python_UnpackTuple(args, "swigregister", 1, 1, &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *sampling_synchronization_sptr_swiginit(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + return SWIG_Python_InitShadowInstance(args); +} + +SWIGINTERN PyObject *_wrap_framing_make(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + int arg1 ; + int arg2 ; + int arg3 ; + int arg4 ; + int val1 ; + int ecode1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int val3 ; + int ecode3 = 0 ; + int val4 ; + int ecode4 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + PyObject * obj3 = 0 ; + char * kwnames[] = { + (char *)"Htotal", (char *)"Vtotal", (char *)"Hdisplay", (char *)"Vdisplay", NULL + }; + gr::tempest::framing::sptr result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOOO:framing_make", kwnames, &obj0, &obj1, &obj2, &obj3)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "framing_make" "', argument " "1"" of type '" "int""'"); + } + arg1 = static_cast< int >(val1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "framing_make" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_int(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "framing_make" "', argument " "3"" of type '" "int""'"); + } + arg3 = static_cast< int >(val3); + ecode4 = SWIG_AsVal_int(obj3, &val4); + if (!SWIG_IsOK(ecode4)) { + SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "framing_make" "', argument " "4"" of type '" "int""'"); + } + arg4 = static_cast< int >(val4); + { + try { + result = gr::tempest::framing::make(arg1,arg2,arg3,arg4); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new gr::tempest::framing::sptr(static_cast< const gr::tempest::framing::sptr& >(result))), SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_set_Htotal_and_Vtotal(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + gr::tempest::framing *arg1 = (gr::tempest::framing *) 0 ; + int arg2 ; + int arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int val3 ; + int ecode3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"Htotal", (char *)"Vtotal", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOO:framing_set_Htotal_and_Vtotal", kwnames, &obj0, &obj1, &obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_gr__tempest__framing, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_set_Htotal_and_Vtotal" "', argument " "1"" of type '" "gr::tempest::framing *""'"); + } + arg1 = reinterpret_cast< gr::tempest::framing * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "framing_set_Htotal_and_Vtotal" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_int(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "framing_set_Htotal_and_Vtotal" "', argument " "3"" of type '" "int""'"); + } + arg3 = static_cast< int >(val3); + { + try { + (arg1)->set_Htotal_and_Vtotal(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_framing(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + gr::tempest::framing *arg1 = (gr::tempest::framing *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_gr__tempest__framing, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_framing" "', argument " "1"" of type '" "gr::tempest::framing *""'"); + } + arg1 = reinterpret_cast< gr::tempest::framing * >(argp1); + { + try { + delete arg1; + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *framing_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!SWIG_Python_UnpackTuple(args, "swigregister", 1, 1, &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_gr__tempest__framing, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_new_framing_sptr__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **SWIGUNUSEDPARM(swig_obj)) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *result = 0 ; + + if ((nobjs < 0) || (nobjs > 0)) SWIG_fail; + { + try { + result = (boost::shared_ptr< gr::tempest::framing > *)new boost::shared_ptr< gr::tempest::framing >(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_framing_sptr__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + gr::tempest::framing *arg1 = (gr::tempest::framing *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + boost::shared_ptr< gr::tempest::framing > *result = 0 ; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_gr__tempest__framing, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_framing_sptr" "', argument " "1"" of type '" "gr::tempest::framing *""'"); + } + arg1 = reinterpret_cast< gr::tempest::framing * >(argp1); + { + try { + result = (boost::shared_ptr< gr::tempest::framing > *)new boost::shared_ptr< gr::tempest::framing >(arg1); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_framing_sptr(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[2] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "new_framing_sptr", 0, 1, argv))) SWIG_fail; + --argc; + if (argc == 0) { + return _wrap_new_framing_sptr__SWIG_0(self, argc, argv); + } + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_gr__tempest__framing, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_new_framing_sptr__SWIG_1(self, argc, argv); + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'new_framing_sptr'.\n" + " Possible C/C++ prototypes are:\n" + " boost::shared_ptr< gr::tempest::framing >::shared_ptr()\n" + " boost::shared_ptr< gr::tempest::framing >::shared_ptr(gr::tempest::framing *)\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr___deref__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + gr::tempest::framing *result = 0 ; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr___deref__" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + { + try { + result = (gr::tempest::framing *)(arg1)->operator ->(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_gr__tempest__framing, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_framing_sptr(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_framing_sptr" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + { + try { + delete arg1; + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_make(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + int arg2 ; + int arg3 ; + int arg4 ; + int arg5 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int val3 ; + int ecode3 = 0 ; + int val4 ; + int ecode4 = 0 ; + int val5 ; + int ecode5 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + PyObject * obj3 = 0 ; + PyObject * obj4 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"Htotal", (char *)"Vtotal", (char *)"Hdisplay", (char *)"Vdisplay", NULL + }; + gr::tempest::framing::sptr result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOOOO:framing_sptr_make", kwnames, &obj0, &obj1, &obj2, &obj3, &obj4)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_make" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "framing_sptr_make" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_int(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "framing_sptr_make" "', argument " "3"" of type '" "int""'"); + } + arg3 = static_cast< int >(val3); + ecode4 = SWIG_AsVal_int(obj3, &val4); + if (!SWIG_IsOK(ecode4)) { + SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "framing_sptr_make" "', argument " "4"" of type '" "int""'"); + } + arg4 = static_cast< int >(val4); + ecode5 = SWIG_AsVal_int(obj4, &val5); + if (!SWIG_IsOK(ecode5)) { + SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "framing_sptr_make" "', argument " "5"" of type '" "int""'"); + } + arg5 = static_cast< int >(val5); + { + try { + result = (*arg1)->make(arg2,arg3,arg4,arg5); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new gr::tempest::framing::sptr(static_cast< const gr::tempest::framing::sptr& >(result))), SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_set_Htotal_and_Vtotal(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + int arg2 ; + int arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int val3 ; + int ecode3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"Htotal", (char *)"Vtotal", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOO:framing_sptr_set_Htotal_and_Vtotal", kwnames, &obj0, &obj1, &obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_set_Htotal_and_Vtotal" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "framing_sptr_set_Htotal_and_Vtotal" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_int(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "framing_sptr_set_Htotal_and_Vtotal" "', argument " "3"" of type '" "int""'"); + } + arg3 = static_cast< int >(val3); + { + try { + (*arg1)->set_Htotal_and_Vtotal(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_history(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + unsigned int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_history" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + { + try { + result = (unsigned int)(*arg1)->history(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_int(static_cast< unsigned int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_declare_sample_delay__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + int arg2 ; + int arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int val3 ; + int ecode3 = 0 ; + + if ((nobjs < 3) || (nobjs > 3)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_declare_sample_delay" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "framing_sptr_declare_sample_delay" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_int(swig_obj[2], &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "framing_sptr_declare_sample_delay" "', argument " "3"" of type '" "int""'"); + } + arg3 = static_cast< int >(val3); + { + try { + (*arg1)->declare_sample_delay(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_declare_sample_delay__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + unsigned int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + unsigned int val2 ; + int ecode2 = 0 ; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_declare_sample_delay" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + ecode2 = SWIG_AsVal_unsigned_SS_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "framing_sptr_declare_sample_delay" "', argument " "2"" of type '" "unsigned int""'"); + } + arg2 = static_cast< unsigned int >(val2); + { + try { + (*arg1)->declare_sample_delay(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_declare_sample_delay(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[4] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "framing_sptr_declare_sample_delay", 0, 3, argv))) SWIG_fail; + --argc; + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_unsigned_SS_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_framing_sptr_declare_sample_delay__SWIG_1(self, argc, argv); + } + } + } + if (argc == 3) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + { + int res = SWIG_AsVal_int(argv[2], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_framing_sptr_declare_sample_delay__SWIG_0(self, argc, argv); + } + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'framing_sptr_declare_sample_delay'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::declare_sample_delay(int,int)\n" + " gr::block::declare_sample_delay(unsigned int)\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_sample_delay(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"which", NULL + }; + unsigned int result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:framing_sptr_sample_delay", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_sample_delay" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "framing_sptr_sample_delay" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (unsigned int)(*arg1)->sample_delay(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_int(static_cast< unsigned int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_set_output_multiple(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"multiple", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:framing_sptr_set_output_multiple", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_set_output_multiple" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "framing_sptr_set_output_multiple" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + (*arg1)->set_output_multiple(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_output_multiple(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_output_multiple" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + { + try { + result = (int)(*arg1)->output_multiple(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_relative_rate(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + double result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_relative_rate" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + { + try { + result = (double)(*arg1)->relative_rate(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_double(static_cast< double >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_relative_rate_i(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + uint64_t result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_relative_rate_i" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + { + try { + result = (uint64_t)(*arg1)->relative_rate_i(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_long_SS_long(static_cast< unsigned long long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_relative_rate_d(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + uint64_t result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_relative_rate_d" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + { + try { + result = (uint64_t)(*arg1)->relative_rate_d(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_long_SS_long(static_cast< unsigned long long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_start(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + bool result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_start" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + { + try { + result = (bool)(*arg1)->start(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_bool(static_cast< bool >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_stop(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + bool result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_stop" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + { + try { + result = (bool)(*arg1)->stop(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_bool(static_cast< bool >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_nitems_read(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + unsigned int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + unsigned int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"which_input", NULL + }; + uint64_t result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:framing_sptr_nitems_read", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_nitems_read" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + ecode2 = SWIG_AsVal_unsigned_SS_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "framing_sptr_nitems_read" "', argument " "2"" of type '" "unsigned int""'"); + } + arg2 = static_cast< unsigned int >(val2); + { + try { + result = (uint64_t)(*arg1)->nitems_read(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_long_SS_long(static_cast< unsigned long long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_nitems_written(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + unsigned int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + unsigned int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"which_output", NULL + }; + uint64_t result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:framing_sptr_nitems_written", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_nitems_written" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + ecode2 = SWIG_AsVal_unsigned_SS_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "framing_sptr_nitems_written" "', argument " "2"" of type '" "unsigned int""'"); + } + arg2 = static_cast< unsigned int >(val2); + { + try { + result = (uint64_t)(*arg1)->nitems_written(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_long_SS_long(static_cast< unsigned long long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_set_log_level(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + std::string arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"level", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:framing_sptr_set_log_level", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_set_log_level" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + { + std::string *ptr = (std::string *)0; + int res = SWIG_AsPtr_std_string(obj1, &ptr); + if (!SWIG_IsOK(res) || !ptr) { + SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "framing_sptr_set_log_level" "', argument " "2"" of type '" "std::string""'"); + } + arg2 = *ptr; + if (SWIG_IsNewObj(res)) delete ptr; + } + { + try { + (*arg1)->set_log_level(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_log_level(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + std::string result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_log_level" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + { + try { + result = (*arg1)->log_level(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_std_string(static_cast< std::string >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_max_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_max_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + { + try { + result = (int)(*arg1)->max_noutput_items(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_set_max_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"m", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:framing_sptr_set_max_noutput_items", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_set_max_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "framing_sptr_set_max_noutput_items" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + (*arg1)->set_max_noutput_items(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_unset_max_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_unset_max_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + { + try { + (*arg1)->unset_max_noutput_items(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_is_set_max_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + bool result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_is_set_max_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + { + try { + result = (bool)(*arg1)->is_set_max_noutput_items(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_bool(static_cast< bool >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_set_min_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"m", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:framing_sptr_set_min_noutput_items", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_set_min_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "framing_sptr_set_min_noutput_items" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + (*arg1)->set_min_noutput_items(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_min_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_min_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + { + try { + result = (int)(*arg1)->min_noutput_items(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_max_output_buffer(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"i", NULL + }; + long result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:framing_sptr_max_output_buffer", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_max_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "framing_sptr_max_output_buffer" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (long)(*arg1)->max_output_buffer(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_long(static_cast< long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_set_max_output_buffer__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + long arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + long val2 ; + int ecode2 = 0 ; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_set_max_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + ecode2 = SWIG_AsVal_long(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "framing_sptr_set_max_output_buffer" "', argument " "2"" of type '" "long""'"); + } + arg2 = static_cast< long >(val2); + { + try { + (*arg1)->set_max_output_buffer(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_set_max_output_buffer__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + int arg2 ; + long arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + long val3 ; + int ecode3 = 0 ; + + if ((nobjs < 3) || (nobjs > 3)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_set_max_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "framing_sptr_set_max_output_buffer" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_long(swig_obj[2], &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "framing_sptr_set_max_output_buffer" "', argument " "3"" of type '" "long""'"); + } + arg3 = static_cast< long >(val3); + { + try { + (*arg1)->set_max_output_buffer(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_set_max_output_buffer(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[4] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "framing_sptr_set_max_output_buffer", 0, 3, argv))) SWIG_fail; + --argc; + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_long(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_framing_sptr_set_max_output_buffer__SWIG_0(self, argc, argv); + } + } + } + if (argc == 3) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + { + int res = SWIG_AsVal_long(argv[2], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_framing_sptr_set_max_output_buffer__SWIG_1(self, argc, argv); + } + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'framing_sptr_set_max_output_buffer'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::set_max_output_buffer(long)\n" + " gr::block::set_max_output_buffer(int,long)\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_min_output_buffer(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"i", NULL + }; + long result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:framing_sptr_min_output_buffer", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_min_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "framing_sptr_min_output_buffer" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (long)(*arg1)->min_output_buffer(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_long(static_cast< long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_set_min_output_buffer__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + long arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + long val2 ; + int ecode2 = 0 ; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_set_min_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + ecode2 = SWIG_AsVal_long(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "framing_sptr_set_min_output_buffer" "', argument " "2"" of type '" "long""'"); + } + arg2 = static_cast< long >(val2); + { + try { + (*arg1)->set_min_output_buffer(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_set_min_output_buffer__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + int arg2 ; + long arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + long val3 ; + int ecode3 = 0 ; + + if ((nobjs < 3) || (nobjs > 3)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_set_min_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "framing_sptr_set_min_output_buffer" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_long(swig_obj[2], &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "framing_sptr_set_min_output_buffer" "', argument " "3"" of type '" "long""'"); + } + arg3 = static_cast< long >(val3); + { + try { + (*arg1)->set_min_output_buffer(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_set_min_output_buffer(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[4] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "framing_sptr_set_min_output_buffer", 0, 3, argv))) SWIG_fail; + --argc; + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_long(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_framing_sptr_set_min_output_buffer__SWIG_0(self, argc, argv); + } + } + } + if (argc == 3) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + { + int res = SWIG_AsVal_long(argv[2], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_framing_sptr_set_min_output_buffer__SWIG_1(self, argc, argv); + } + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'framing_sptr_set_min_output_buffer'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::set_min_output_buffer(long)\n" + " gr::block::set_min_output_buffer(int,long)\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_pc_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_pc_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + { + try { + result = (float)(*arg1)->pc_noutput_items(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_pc_noutput_items_avg(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_pc_noutput_items_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + { + try { + result = (float)(*arg1)->pc_noutput_items_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_pc_noutput_items_var(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_pc_noutput_items_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + { + try { + result = (float)(*arg1)->pc_noutput_items_var(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_pc_nproduced(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_pc_nproduced" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + { + try { + result = (float)(*arg1)->pc_nproduced(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_pc_nproduced_avg(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_pc_nproduced_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + { + try { + result = (float)(*arg1)->pc_nproduced_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_pc_nproduced_var(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_pc_nproduced_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + { + try { + result = (float)(*arg1)->pc_nproduced_var(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_pc_input_buffers_full__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_pc_input_buffers_full" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "framing_sptr_pc_input_buffers_full" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_input_buffers_full(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_pc_input_buffers_full__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_pc_input_buffers_full" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + { + try { + result = (*arg1)->pc_input_buffers_full(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_pc_input_buffers_full(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "framing_sptr_pc_input_buffers_full", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_framing_sptr_pc_input_buffers_full__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_framing_sptr_pc_input_buffers_full__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'framing_sptr_pc_input_buffers_full'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_input_buffers_full(int)\n" + " gr::block::pc_input_buffers_full()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_pc_input_buffers_full_avg__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_pc_input_buffers_full_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "framing_sptr_pc_input_buffers_full_avg" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_input_buffers_full_avg(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_pc_input_buffers_full_avg__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_pc_input_buffers_full_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + { + try { + result = (*arg1)->pc_input_buffers_full_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_pc_input_buffers_full_avg(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "framing_sptr_pc_input_buffers_full_avg", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_framing_sptr_pc_input_buffers_full_avg__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_framing_sptr_pc_input_buffers_full_avg__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'framing_sptr_pc_input_buffers_full_avg'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_input_buffers_full_avg(int)\n" + " gr::block::pc_input_buffers_full_avg()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_pc_input_buffers_full_var__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_pc_input_buffers_full_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "framing_sptr_pc_input_buffers_full_var" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_input_buffers_full_var(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_pc_input_buffers_full_var__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_pc_input_buffers_full_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + { + try { + result = (*arg1)->pc_input_buffers_full_var(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_pc_input_buffers_full_var(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "framing_sptr_pc_input_buffers_full_var", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_framing_sptr_pc_input_buffers_full_var__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_framing_sptr_pc_input_buffers_full_var__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'framing_sptr_pc_input_buffers_full_var'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_input_buffers_full_var(int)\n" + " gr::block::pc_input_buffers_full_var()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_pc_output_buffers_full__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_pc_output_buffers_full" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "framing_sptr_pc_output_buffers_full" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_output_buffers_full(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_pc_output_buffers_full__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_pc_output_buffers_full" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + { + try { + result = (*arg1)->pc_output_buffers_full(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_pc_output_buffers_full(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "framing_sptr_pc_output_buffers_full", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_framing_sptr_pc_output_buffers_full__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_framing_sptr_pc_output_buffers_full__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'framing_sptr_pc_output_buffers_full'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_output_buffers_full(int)\n" + " gr::block::pc_output_buffers_full()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_pc_output_buffers_full_avg__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_pc_output_buffers_full_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "framing_sptr_pc_output_buffers_full_avg" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_output_buffers_full_avg(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_pc_output_buffers_full_avg__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_pc_output_buffers_full_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + { + try { + result = (*arg1)->pc_output_buffers_full_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_pc_output_buffers_full_avg(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "framing_sptr_pc_output_buffers_full_avg", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_framing_sptr_pc_output_buffers_full_avg__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_framing_sptr_pc_output_buffers_full_avg__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'framing_sptr_pc_output_buffers_full_avg'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_output_buffers_full_avg(int)\n" + " gr::block::pc_output_buffers_full_avg()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_pc_output_buffers_full_var__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_pc_output_buffers_full_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "framing_sptr_pc_output_buffers_full_var" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_output_buffers_full_var(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_pc_output_buffers_full_var__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_pc_output_buffers_full_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + { + try { + result = (*arg1)->pc_output_buffers_full_var(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_pc_output_buffers_full_var(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "framing_sptr_pc_output_buffers_full_var", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_framing_sptr_pc_output_buffers_full_var__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_framing_sptr_pc_output_buffers_full_var__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'framing_sptr_pc_output_buffers_full_var'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_output_buffers_full_var(int)\n" + " gr::block::pc_output_buffers_full_var()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_pc_work_time(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_pc_work_time" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + { + try { + result = (float)(*arg1)->pc_work_time(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_pc_work_time_avg(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_pc_work_time_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + { + try { + result = (float)(*arg1)->pc_work_time_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_pc_work_time_var(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_pc_work_time_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + { + try { + result = (float)(*arg1)->pc_work_time_var(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_pc_work_time_total(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_pc_work_time_total" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + { + try { + result = (float)(*arg1)->pc_work_time_total(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_pc_throughput_avg(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_pc_throughput_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + { + try { + result = (float)(*arg1)->pc_throughput_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_set_processor_affinity(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + std::vector< int,std::allocator< int > > *arg2 = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 = SWIG_OLDOBJ ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"mask", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:framing_sptr_set_processor_affinity", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_set_processor_affinity" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + { + std::vector< int,std::allocator< int > > *ptr = (std::vector< int,std::allocator< int > > *)0; + res2 = swig::asptr(obj1, &ptr); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "framing_sptr_set_processor_affinity" "', argument " "2"" of type '" "std::vector< int,std::allocator< int > > const &""'"); + } + if (!ptr) { + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "framing_sptr_set_processor_affinity" "', argument " "2"" of type '" "std::vector< int,std::allocator< int > > const &""'"); + } + arg2 = ptr; + } + { + try { + (*arg1)->set_processor_affinity((std::vector< int,std::allocator< int > > const &)*arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + if (SWIG_IsNewObj(res2)) delete arg2; + return resultobj; +fail: + if (SWIG_IsNewObj(res2)) delete arg2; + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_unset_processor_affinity(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_unset_processor_affinity" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + { + try { + (*arg1)->unset_processor_affinity(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_processor_affinity(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + std::vector< int,std::allocator< int > > result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_processor_affinity" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + { + try { + result = (*arg1)->processor_affinity(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< int,std::allocator< int > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_active_thread_priority(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_active_thread_priority" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + { + try { + result = (int)(*arg1)->active_thread_priority(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_thread_priority(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_thread_priority" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + { + try { + result = (int)(*arg1)->thread_priority(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_set_thread_priority(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"priority", NULL + }; + int result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:framing_sptr_set_thread_priority", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_set_thread_priority" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "framing_sptr_set_thread_priority" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (int)(*arg1)->set_thread_priority(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_name(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + std::string result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_name" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + { + try { + result = (*arg1)->name(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_std_string(static_cast< std::string >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_symbol_name(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + std::string result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_symbol_name" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + { + try { + result = (*arg1)->symbol_name(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_std_string(static_cast< std::string >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_input_signature(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + gr::io_signature::sptr result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_input_signature" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + { + try { + result = (*arg1)->input_signature(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new gr::io_signature::sptr(static_cast< const gr::io_signature::sptr& >(result))), SWIGTYPE_p_boost__shared_ptrT_gr__io_signature_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_output_signature(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + gr::io_signature::sptr result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_output_signature" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + { + try { + result = (*arg1)->output_signature(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new gr::io_signature::sptr(static_cast< const gr::io_signature::sptr& >(result))), SWIGTYPE_p_boost__shared_ptrT_gr__io_signature_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_unique_id(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + long result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_unique_id" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + { + try { + result = (long)(*arg1)->unique_id(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_long(static_cast< long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_to_basic_block(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + gr::basic_block_sptr result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_to_basic_block" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + { + try { + result = (*arg1)->to_basic_block(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new gr::basic_block_sptr(static_cast< const gr::basic_block_sptr& >(result))), SWIGTYPE_p_boost__shared_ptrT_gr__basic_block_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_check_topology(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + int arg2 ; + int arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int val3 ; + int ecode3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"ninputs", (char *)"noutputs", NULL + }; + bool result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOO:framing_sptr_check_topology", kwnames, &obj0, &obj1, &obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_check_topology" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "framing_sptr_check_topology" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_int(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "framing_sptr_check_topology" "', argument " "3"" of type '" "int""'"); + } + arg3 = static_cast< int >(val3); + { + try { + result = (bool)(*arg1)->check_topology(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_bool(static_cast< bool >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_alias(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + std::string result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_alias" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + { + try { + result = (*arg1)->alias(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_std_string(static_cast< std::string >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_set_block_alias(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + std::string arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"name", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:framing_sptr_set_block_alias", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_set_block_alias" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + { + std::string *ptr = (std::string *)0; + int res = SWIG_AsPtr_std_string(obj1, &ptr); + if (!SWIG_IsOK(res) || !ptr) { + SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "framing_sptr_set_block_alias" "', argument " "2"" of type '" "std::string""'"); + } + arg2 = *ptr; + if (SWIG_IsNewObj(res)) delete ptr; + } + { + try { + (*arg1)->set_block_alias(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr__post(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + pmt::pmt_t arg2 ; + pmt::pmt_t arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 ; + int res2 = 0 ; + void *argp3 ; + int res3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"which_port", (char *)"msg", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOO:framing_sptr__post", kwnames, &obj0, &obj1, &obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr__post" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + { + res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, 0 | 0); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "framing_sptr__post" "', argument " "2"" of type '" "pmt::pmt_t""'"); + } + if (!argp2) { + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "framing_sptr__post" "', argument " "2"" of type '" "pmt::pmt_t""'"); + } else { + pmt::pmt_t * temp = reinterpret_cast< pmt::pmt_t * >(argp2); + arg2 = *temp; + if (SWIG_IsNewObj(res2)) delete temp; + } + } + { + res3 = SWIG_ConvertPtr(obj2, &argp3, SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, 0 | 0); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "framing_sptr__post" "', argument " "3"" of type '" "pmt::pmt_t""'"); + } + if (!argp3) { + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "framing_sptr__post" "', argument " "3"" of type '" "pmt::pmt_t""'"); + } else { + pmt::pmt_t * temp = reinterpret_cast< pmt::pmt_t * >(argp3); + arg3 = *temp; + if (SWIG_IsNewObj(res3)) delete temp; + } + } + { + try { + (*arg1)->_post(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_message_ports_in(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + pmt::pmt_t result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_message_ports_in" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + { + try { + result = (*arg1)->message_ports_in(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new pmt::pmt_t(static_cast< const pmt::pmt_t& >(result))), SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_message_ports_out(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + pmt::pmt_t result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_message_ports_out" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + { + try { + result = (*arg1)->message_ports_out(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new pmt::pmt_t(static_cast< const pmt::pmt_t& >(result))), SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_framing_sptr_message_subscribers(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::framing > *arg1 = (boost::shared_ptr< gr::tempest::framing > *) 0 ; + pmt::pmt_t arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"which_port", NULL + }; + pmt::pmt_t result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:framing_sptr_message_subscribers", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "framing_sptr_message_subscribers" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::framing > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::framing > * >(argp1); + { + res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, 0 | 0); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "framing_sptr_message_subscribers" "', argument " "2"" of type '" "pmt::pmt_t""'"); + } + if (!argp2) { + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "framing_sptr_message_subscribers" "', argument " "2"" of type '" "pmt::pmt_t""'"); + } else { + pmt::pmt_t * temp = reinterpret_cast< pmt::pmt_t * >(argp2); + arg2 = *temp; + if (SWIG_IsNewObj(res2)) delete temp; + } + } + { + try { + result = (*arg1)->message_subscribers(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new pmt::pmt_t(static_cast< const pmt::pmt_t& >(result))), SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *framing_sptr_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!SWIG_Python_UnpackTuple(args, "swigregister", 1, 1, &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_boost__shared_ptrT_gr__tempest__framing_t, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *framing_sptr_swiginit(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + return SWIG_Python_InitShadowInstance(args); +} + +SWIGINTERN PyObject *_wrap_Hsync_make(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + int arg1 ; + int arg2 ; + int val1 ; + int ecode1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"Htotal", (char *)"delay", NULL + }; + gr::tempest::Hsync::sptr result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:Hsync_make", kwnames, &obj0, &obj1)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "Hsync_make" "', argument " "1"" of type '" "int""'"); + } + arg1 = static_cast< int >(val1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Hsync_make" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = gr::tempest::Hsync::make(arg1,arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new gr::tempest::Hsync::sptr(static_cast< const gr::tempest::Hsync::sptr& >(result))), SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_set_Htotal_and_delay(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + gr::tempest::Hsync *arg1 = (gr::tempest::Hsync *) 0 ; + int arg2 ; + int arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int val3 ; + int ecode3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"Htotal", (char *)"delay", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOO:Hsync_set_Htotal_and_delay", kwnames, &obj0, &obj1, &obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_gr__tempest__Hsync, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_set_Htotal_and_delay" "', argument " "1"" of type '" "gr::tempest::Hsync *""'"); + } + arg1 = reinterpret_cast< gr::tempest::Hsync * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Hsync_set_Htotal_and_delay" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_int(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Hsync_set_Htotal_and_delay" "', argument " "3"" of type '" "int""'"); + } + arg3 = static_cast< int >(val3); + { + try { + (arg1)->set_Htotal_and_delay(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_Hsync(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + gr::tempest::Hsync *arg1 = (gr::tempest::Hsync *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_gr__tempest__Hsync, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_Hsync" "', argument " "1"" of type '" "gr::tempest::Hsync *""'"); + } + arg1 = reinterpret_cast< gr::tempest::Hsync * >(argp1); + { + try { + delete arg1; + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *Hsync_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!SWIG_Python_UnpackTuple(args, "swigregister", 1, 1, &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_gr__tempest__Hsync, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_new_Hsync_sptr__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **SWIGUNUSEDPARM(swig_obj)) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *result = 0 ; + + if ((nobjs < 0) || (nobjs > 0)) SWIG_fail; + { + try { + result = (boost::shared_ptr< gr::tempest::Hsync > *)new boost::shared_ptr< gr::tempest::Hsync >(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_Hsync_sptr__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + gr::tempest::Hsync *arg1 = (gr::tempest::Hsync *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + boost::shared_ptr< gr::tempest::Hsync > *result = 0 ; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_gr__tempest__Hsync, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Hsync_sptr" "', argument " "1"" of type '" "gr::tempest::Hsync *""'"); + } + arg1 = reinterpret_cast< gr::tempest::Hsync * >(argp1); + { + try { + result = (boost::shared_ptr< gr::tempest::Hsync > *)new boost::shared_ptr< gr::tempest::Hsync >(arg1); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_Hsync_sptr(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[2] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "new_Hsync_sptr", 0, 1, argv))) SWIG_fail; + --argc; + if (argc == 0) { + return _wrap_new_Hsync_sptr__SWIG_0(self, argc, argv); + } + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_gr__tempest__Hsync, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_new_Hsync_sptr__SWIG_1(self, argc, argv); + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'new_Hsync_sptr'.\n" + " Possible C/C++ prototypes are:\n" + " boost::shared_ptr< gr::tempest::Hsync >::shared_ptr()\n" + " boost::shared_ptr< gr::tempest::Hsync >::shared_ptr(gr::tempest::Hsync *)\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr___deref__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + gr::tempest::Hsync *result = 0 ; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr___deref__" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + { + try { + result = (gr::tempest::Hsync *)(arg1)->operator ->(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_gr__tempest__Hsync, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_Hsync_sptr(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_Hsync_sptr" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + { + try { + delete arg1; + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_make(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + int arg2 ; + int arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int val3 ; + int ecode3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"Htotal", (char *)"delay", NULL + }; + gr::tempest::Hsync::sptr result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOO:Hsync_sptr_make", kwnames, &obj0, &obj1, &obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_make" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Hsync_sptr_make" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_int(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Hsync_sptr_make" "', argument " "3"" of type '" "int""'"); + } + arg3 = static_cast< int >(val3); + { + try { + result = (*arg1)->make(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new gr::tempest::Hsync::sptr(static_cast< const gr::tempest::Hsync::sptr& >(result))), SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_set_Htotal_and_delay(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + int arg2 ; + int arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int val3 ; + int ecode3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"Htotal", (char *)"delay", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOO:Hsync_sptr_set_Htotal_and_delay", kwnames, &obj0, &obj1, &obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_set_Htotal_and_delay" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Hsync_sptr_set_Htotal_and_delay" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_int(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Hsync_sptr_set_Htotal_and_delay" "', argument " "3"" of type '" "int""'"); + } + arg3 = static_cast< int >(val3); + { + try { + (*arg1)->set_Htotal_and_delay(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_history(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + unsigned int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_history" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + { + try { + result = (unsigned int)(*arg1)->history(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_int(static_cast< unsigned int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_declare_sample_delay__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + int arg2 ; + int arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int val3 ; + int ecode3 = 0 ; + + if ((nobjs < 3) || (nobjs > 3)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_declare_sample_delay" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Hsync_sptr_declare_sample_delay" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_int(swig_obj[2], &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Hsync_sptr_declare_sample_delay" "', argument " "3"" of type '" "int""'"); + } + arg3 = static_cast< int >(val3); + { + try { + (*arg1)->declare_sample_delay(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_declare_sample_delay__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + unsigned int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + unsigned int val2 ; + int ecode2 = 0 ; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_declare_sample_delay" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + ecode2 = SWIG_AsVal_unsigned_SS_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Hsync_sptr_declare_sample_delay" "', argument " "2"" of type '" "unsigned int""'"); + } + arg2 = static_cast< unsigned int >(val2); + { + try { + (*arg1)->declare_sample_delay(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_declare_sample_delay(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[4] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "Hsync_sptr_declare_sample_delay", 0, 3, argv))) SWIG_fail; + --argc; + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_unsigned_SS_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_Hsync_sptr_declare_sample_delay__SWIG_1(self, argc, argv); + } + } + } + if (argc == 3) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + { + int res = SWIG_AsVal_int(argv[2], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_Hsync_sptr_declare_sample_delay__SWIG_0(self, argc, argv); + } + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'Hsync_sptr_declare_sample_delay'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::declare_sample_delay(int,int)\n" + " gr::block::declare_sample_delay(unsigned int)\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_sample_delay(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"which", NULL + }; + unsigned int result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:Hsync_sptr_sample_delay", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_sample_delay" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Hsync_sptr_sample_delay" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (unsigned int)(*arg1)->sample_delay(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_int(static_cast< unsigned int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_set_output_multiple(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"multiple", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:Hsync_sptr_set_output_multiple", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_set_output_multiple" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Hsync_sptr_set_output_multiple" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + (*arg1)->set_output_multiple(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_output_multiple(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_output_multiple" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + { + try { + result = (int)(*arg1)->output_multiple(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_relative_rate(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + double result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_relative_rate" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + { + try { + result = (double)(*arg1)->relative_rate(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_double(static_cast< double >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_relative_rate_i(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + uint64_t result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_relative_rate_i" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + { + try { + result = (uint64_t)(*arg1)->relative_rate_i(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_long_SS_long(static_cast< unsigned long long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_relative_rate_d(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + uint64_t result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_relative_rate_d" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + { + try { + result = (uint64_t)(*arg1)->relative_rate_d(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_long_SS_long(static_cast< unsigned long long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_start(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + bool result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_start" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + { + try { + result = (bool)(*arg1)->start(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_bool(static_cast< bool >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_stop(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + bool result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_stop" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + { + try { + result = (bool)(*arg1)->stop(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_bool(static_cast< bool >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_nitems_read(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + unsigned int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + unsigned int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"which_input", NULL + }; + uint64_t result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:Hsync_sptr_nitems_read", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_nitems_read" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + ecode2 = SWIG_AsVal_unsigned_SS_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Hsync_sptr_nitems_read" "', argument " "2"" of type '" "unsigned int""'"); + } + arg2 = static_cast< unsigned int >(val2); + { + try { + result = (uint64_t)(*arg1)->nitems_read(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_long_SS_long(static_cast< unsigned long long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_nitems_written(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + unsigned int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + unsigned int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"which_output", NULL + }; + uint64_t result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:Hsync_sptr_nitems_written", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_nitems_written" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + ecode2 = SWIG_AsVal_unsigned_SS_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Hsync_sptr_nitems_written" "', argument " "2"" of type '" "unsigned int""'"); + } + arg2 = static_cast< unsigned int >(val2); + { + try { + result = (uint64_t)(*arg1)->nitems_written(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_long_SS_long(static_cast< unsigned long long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_set_log_level(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + std::string arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"level", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:Hsync_sptr_set_log_level", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_set_log_level" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + { + std::string *ptr = (std::string *)0; + int res = SWIG_AsPtr_std_string(obj1, &ptr); + if (!SWIG_IsOK(res) || !ptr) { + SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "Hsync_sptr_set_log_level" "', argument " "2"" of type '" "std::string""'"); + } + arg2 = *ptr; + if (SWIG_IsNewObj(res)) delete ptr; + } + { + try { + (*arg1)->set_log_level(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_log_level(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + std::string result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_log_level" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + { + try { + result = (*arg1)->log_level(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_std_string(static_cast< std::string >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_max_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_max_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + { + try { + result = (int)(*arg1)->max_noutput_items(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_set_max_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"m", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:Hsync_sptr_set_max_noutput_items", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_set_max_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Hsync_sptr_set_max_noutput_items" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + (*arg1)->set_max_noutput_items(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_unset_max_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_unset_max_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + { + try { + (*arg1)->unset_max_noutput_items(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_is_set_max_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + bool result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_is_set_max_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + { + try { + result = (bool)(*arg1)->is_set_max_noutput_items(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_bool(static_cast< bool >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_set_min_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"m", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:Hsync_sptr_set_min_noutput_items", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_set_min_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Hsync_sptr_set_min_noutput_items" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + (*arg1)->set_min_noutput_items(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_min_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_min_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + { + try { + result = (int)(*arg1)->min_noutput_items(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_max_output_buffer(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"i", NULL + }; + long result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:Hsync_sptr_max_output_buffer", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_max_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Hsync_sptr_max_output_buffer" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (long)(*arg1)->max_output_buffer(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_long(static_cast< long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_set_max_output_buffer__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + long arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + long val2 ; + int ecode2 = 0 ; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_set_max_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + ecode2 = SWIG_AsVal_long(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Hsync_sptr_set_max_output_buffer" "', argument " "2"" of type '" "long""'"); + } + arg2 = static_cast< long >(val2); + { + try { + (*arg1)->set_max_output_buffer(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_set_max_output_buffer__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + int arg2 ; + long arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + long val3 ; + int ecode3 = 0 ; + + if ((nobjs < 3) || (nobjs > 3)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_set_max_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Hsync_sptr_set_max_output_buffer" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_long(swig_obj[2], &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Hsync_sptr_set_max_output_buffer" "', argument " "3"" of type '" "long""'"); + } + arg3 = static_cast< long >(val3); + { + try { + (*arg1)->set_max_output_buffer(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_set_max_output_buffer(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[4] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "Hsync_sptr_set_max_output_buffer", 0, 3, argv))) SWIG_fail; + --argc; + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_long(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_Hsync_sptr_set_max_output_buffer__SWIG_0(self, argc, argv); + } + } + } + if (argc == 3) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + { + int res = SWIG_AsVal_long(argv[2], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_Hsync_sptr_set_max_output_buffer__SWIG_1(self, argc, argv); + } + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'Hsync_sptr_set_max_output_buffer'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::set_max_output_buffer(long)\n" + " gr::block::set_max_output_buffer(int,long)\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_min_output_buffer(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"i", NULL + }; + long result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:Hsync_sptr_min_output_buffer", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_min_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Hsync_sptr_min_output_buffer" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (long)(*arg1)->min_output_buffer(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_long(static_cast< long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_set_min_output_buffer__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + long arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + long val2 ; + int ecode2 = 0 ; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_set_min_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + ecode2 = SWIG_AsVal_long(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Hsync_sptr_set_min_output_buffer" "', argument " "2"" of type '" "long""'"); + } + arg2 = static_cast< long >(val2); + { + try { + (*arg1)->set_min_output_buffer(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_set_min_output_buffer__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + int arg2 ; + long arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + long val3 ; + int ecode3 = 0 ; + + if ((nobjs < 3) || (nobjs > 3)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_set_min_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Hsync_sptr_set_min_output_buffer" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_long(swig_obj[2], &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Hsync_sptr_set_min_output_buffer" "', argument " "3"" of type '" "long""'"); + } + arg3 = static_cast< long >(val3); + { + try { + (*arg1)->set_min_output_buffer(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_set_min_output_buffer(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[4] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "Hsync_sptr_set_min_output_buffer", 0, 3, argv))) SWIG_fail; + --argc; + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_long(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_Hsync_sptr_set_min_output_buffer__SWIG_0(self, argc, argv); + } + } + } + if (argc == 3) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + { + int res = SWIG_AsVal_long(argv[2], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_Hsync_sptr_set_min_output_buffer__SWIG_1(self, argc, argv); + } + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'Hsync_sptr_set_min_output_buffer'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::set_min_output_buffer(long)\n" + " gr::block::set_min_output_buffer(int,long)\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_pc_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_pc_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + { + try { + result = (float)(*arg1)->pc_noutput_items(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_pc_noutput_items_avg(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_pc_noutput_items_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + { + try { + result = (float)(*arg1)->pc_noutput_items_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_pc_noutput_items_var(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_pc_noutput_items_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + { + try { + result = (float)(*arg1)->pc_noutput_items_var(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_pc_nproduced(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_pc_nproduced" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + { + try { + result = (float)(*arg1)->pc_nproduced(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_pc_nproduced_avg(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_pc_nproduced_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + { + try { + result = (float)(*arg1)->pc_nproduced_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_pc_nproduced_var(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_pc_nproduced_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + { + try { + result = (float)(*arg1)->pc_nproduced_var(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_pc_input_buffers_full__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_pc_input_buffers_full" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Hsync_sptr_pc_input_buffers_full" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_input_buffers_full(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_pc_input_buffers_full__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_pc_input_buffers_full" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + { + try { + result = (*arg1)->pc_input_buffers_full(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_pc_input_buffers_full(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "Hsync_sptr_pc_input_buffers_full", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_Hsync_sptr_pc_input_buffers_full__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_Hsync_sptr_pc_input_buffers_full__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'Hsync_sptr_pc_input_buffers_full'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_input_buffers_full(int)\n" + " gr::block::pc_input_buffers_full()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_pc_input_buffers_full_avg__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_pc_input_buffers_full_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Hsync_sptr_pc_input_buffers_full_avg" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_input_buffers_full_avg(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_pc_input_buffers_full_avg__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_pc_input_buffers_full_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + { + try { + result = (*arg1)->pc_input_buffers_full_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_pc_input_buffers_full_avg(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "Hsync_sptr_pc_input_buffers_full_avg", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_Hsync_sptr_pc_input_buffers_full_avg__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_Hsync_sptr_pc_input_buffers_full_avg__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'Hsync_sptr_pc_input_buffers_full_avg'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_input_buffers_full_avg(int)\n" + " gr::block::pc_input_buffers_full_avg()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_pc_input_buffers_full_var__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_pc_input_buffers_full_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Hsync_sptr_pc_input_buffers_full_var" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_input_buffers_full_var(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_pc_input_buffers_full_var__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_pc_input_buffers_full_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + { + try { + result = (*arg1)->pc_input_buffers_full_var(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_pc_input_buffers_full_var(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "Hsync_sptr_pc_input_buffers_full_var", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_Hsync_sptr_pc_input_buffers_full_var__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_Hsync_sptr_pc_input_buffers_full_var__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'Hsync_sptr_pc_input_buffers_full_var'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_input_buffers_full_var(int)\n" + " gr::block::pc_input_buffers_full_var()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_pc_output_buffers_full__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_pc_output_buffers_full" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Hsync_sptr_pc_output_buffers_full" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_output_buffers_full(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_pc_output_buffers_full__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_pc_output_buffers_full" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + { + try { + result = (*arg1)->pc_output_buffers_full(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_pc_output_buffers_full(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "Hsync_sptr_pc_output_buffers_full", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_Hsync_sptr_pc_output_buffers_full__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_Hsync_sptr_pc_output_buffers_full__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'Hsync_sptr_pc_output_buffers_full'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_output_buffers_full(int)\n" + " gr::block::pc_output_buffers_full()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_pc_output_buffers_full_avg__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_pc_output_buffers_full_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Hsync_sptr_pc_output_buffers_full_avg" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_output_buffers_full_avg(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_pc_output_buffers_full_avg__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_pc_output_buffers_full_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + { + try { + result = (*arg1)->pc_output_buffers_full_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_pc_output_buffers_full_avg(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "Hsync_sptr_pc_output_buffers_full_avg", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_Hsync_sptr_pc_output_buffers_full_avg__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_Hsync_sptr_pc_output_buffers_full_avg__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'Hsync_sptr_pc_output_buffers_full_avg'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_output_buffers_full_avg(int)\n" + " gr::block::pc_output_buffers_full_avg()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_pc_output_buffers_full_var__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_pc_output_buffers_full_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Hsync_sptr_pc_output_buffers_full_var" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_output_buffers_full_var(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_pc_output_buffers_full_var__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_pc_output_buffers_full_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + { + try { + result = (*arg1)->pc_output_buffers_full_var(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_pc_output_buffers_full_var(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "Hsync_sptr_pc_output_buffers_full_var", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_Hsync_sptr_pc_output_buffers_full_var__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_Hsync_sptr_pc_output_buffers_full_var__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'Hsync_sptr_pc_output_buffers_full_var'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_output_buffers_full_var(int)\n" + " gr::block::pc_output_buffers_full_var()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_pc_work_time(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_pc_work_time" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + { + try { + result = (float)(*arg1)->pc_work_time(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_pc_work_time_avg(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_pc_work_time_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + { + try { + result = (float)(*arg1)->pc_work_time_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_pc_work_time_var(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_pc_work_time_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + { + try { + result = (float)(*arg1)->pc_work_time_var(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_pc_work_time_total(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_pc_work_time_total" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + { + try { + result = (float)(*arg1)->pc_work_time_total(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_pc_throughput_avg(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_pc_throughput_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + { + try { + result = (float)(*arg1)->pc_throughput_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_set_processor_affinity(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + std::vector< int,std::allocator< int > > *arg2 = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 = SWIG_OLDOBJ ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"mask", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:Hsync_sptr_set_processor_affinity", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_set_processor_affinity" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + { + std::vector< int,std::allocator< int > > *ptr = (std::vector< int,std::allocator< int > > *)0; + res2 = swig::asptr(obj1, &ptr); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Hsync_sptr_set_processor_affinity" "', argument " "2"" of type '" "std::vector< int,std::allocator< int > > const &""'"); + } + if (!ptr) { + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Hsync_sptr_set_processor_affinity" "', argument " "2"" of type '" "std::vector< int,std::allocator< int > > const &""'"); + } + arg2 = ptr; + } + { + try { + (*arg1)->set_processor_affinity((std::vector< int,std::allocator< int > > const &)*arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + if (SWIG_IsNewObj(res2)) delete arg2; + return resultobj; +fail: + if (SWIG_IsNewObj(res2)) delete arg2; + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_unset_processor_affinity(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_unset_processor_affinity" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + { + try { + (*arg1)->unset_processor_affinity(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_processor_affinity(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + std::vector< int,std::allocator< int > > result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_processor_affinity" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + { + try { + result = (*arg1)->processor_affinity(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< int,std::allocator< int > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_active_thread_priority(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_active_thread_priority" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + { + try { + result = (int)(*arg1)->active_thread_priority(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_thread_priority(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_thread_priority" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + { + try { + result = (int)(*arg1)->thread_priority(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_set_thread_priority(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"priority", NULL + }; + int result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:Hsync_sptr_set_thread_priority", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_set_thread_priority" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Hsync_sptr_set_thread_priority" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (int)(*arg1)->set_thread_priority(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_name(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + std::string result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_name" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + { + try { + result = (*arg1)->name(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_std_string(static_cast< std::string >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_symbol_name(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + std::string result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_symbol_name" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + { + try { + result = (*arg1)->symbol_name(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_std_string(static_cast< std::string >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_input_signature(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + gr::io_signature::sptr result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_input_signature" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + { + try { + result = (*arg1)->input_signature(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new gr::io_signature::sptr(static_cast< const gr::io_signature::sptr& >(result))), SWIGTYPE_p_boost__shared_ptrT_gr__io_signature_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_output_signature(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + gr::io_signature::sptr result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_output_signature" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + { + try { + result = (*arg1)->output_signature(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new gr::io_signature::sptr(static_cast< const gr::io_signature::sptr& >(result))), SWIGTYPE_p_boost__shared_ptrT_gr__io_signature_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_unique_id(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + long result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_unique_id" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + { + try { + result = (long)(*arg1)->unique_id(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_long(static_cast< long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_to_basic_block(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + gr::basic_block_sptr result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_to_basic_block" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + { + try { + result = (*arg1)->to_basic_block(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new gr::basic_block_sptr(static_cast< const gr::basic_block_sptr& >(result))), SWIGTYPE_p_boost__shared_ptrT_gr__basic_block_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_check_topology(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + int arg2 ; + int arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int val3 ; + int ecode3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"ninputs", (char *)"noutputs", NULL + }; + bool result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOO:Hsync_sptr_check_topology", kwnames, &obj0, &obj1, &obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_check_topology" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "Hsync_sptr_check_topology" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_int(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Hsync_sptr_check_topology" "', argument " "3"" of type '" "int""'"); + } + arg3 = static_cast< int >(val3); + { + try { + result = (bool)(*arg1)->check_topology(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_bool(static_cast< bool >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_alias(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + std::string result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_alias" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + { + try { + result = (*arg1)->alias(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_std_string(static_cast< std::string >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_set_block_alias(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + std::string arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"name", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:Hsync_sptr_set_block_alias", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_set_block_alias" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + { + std::string *ptr = (std::string *)0; + int res = SWIG_AsPtr_std_string(obj1, &ptr); + if (!SWIG_IsOK(res) || !ptr) { + SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "Hsync_sptr_set_block_alias" "', argument " "2"" of type '" "std::string""'"); + } + arg2 = *ptr; + if (SWIG_IsNewObj(res)) delete ptr; + } + { + try { + (*arg1)->set_block_alias(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr__post(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + pmt::pmt_t arg2 ; + pmt::pmt_t arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 ; + int res2 = 0 ; + void *argp3 ; + int res3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"which_port", (char *)"msg", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOO:Hsync_sptr__post", kwnames, &obj0, &obj1, &obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr__post" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + { + res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, 0 | 0); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Hsync_sptr__post" "', argument " "2"" of type '" "pmt::pmt_t""'"); + } + if (!argp2) { + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Hsync_sptr__post" "', argument " "2"" of type '" "pmt::pmt_t""'"); + } else { + pmt::pmt_t * temp = reinterpret_cast< pmt::pmt_t * >(argp2); + arg2 = *temp; + if (SWIG_IsNewObj(res2)) delete temp; + } + } + { + res3 = SWIG_ConvertPtr(obj2, &argp3, SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, 0 | 0); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Hsync_sptr__post" "', argument " "3"" of type '" "pmt::pmt_t""'"); + } + if (!argp3) { + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Hsync_sptr__post" "', argument " "3"" of type '" "pmt::pmt_t""'"); + } else { + pmt::pmt_t * temp = reinterpret_cast< pmt::pmt_t * >(argp3); + arg3 = *temp; + if (SWIG_IsNewObj(res3)) delete temp; + } + } + { + try { + (*arg1)->_post(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_message_ports_in(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + pmt::pmt_t result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_message_ports_in" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + { + try { + result = (*arg1)->message_ports_in(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new pmt::pmt_t(static_cast< const pmt::pmt_t& >(result))), SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_message_ports_out(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + pmt::pmt_t result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_message_ports_out" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + { + try { + result = (*arg1)->message_ports_out(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new pmt::pmt_t(static_cast< const pmt::pmt_t& >(result))), SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_Hsync_sptr_message_subscribers(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::Hsync > *arg1 = (boost::shared_ptr< gr::tempest::Hsync > *) 0 ; + pmt::pmt_t arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"which_port", NULL + }; + pmt::pmt_t result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:Hsync_sptr_message_subscribers", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Hsync_sptr_message_subscribers" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::Hsync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::Hsync > * >(argp1); + { + res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, 0 | 0); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Hsync_sptr_message_subscribers" "', argument " "2"" of type '" "pmt::pmt_t""'"); + } + if (!argp2) { + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Hsync_sptr_message_subscribers" "', argument " "2"" of type '" "pmt::pmt_t""'"); + } else { + pmt::pmt_t * temp = reinterpret_cast< pmt::pmt_t * >(argp2); + arg2 = *temp; + if (SWIG_IsNewObj(res2)) delete temp; + } + } + { + try { + result = (*arg1)->message_subscribers(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new pmt::pmt_t(static_cast< const pmt::pmt_t& >(result))), SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *Hsync_sptr_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!SWIG_Python_UnpackTuple(args, "swigregister", 1, 1, &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_boost__shared_ptrT_gr__tempest__Hsync_t, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *Hsync_sptr_swiginit(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + return SWIG_Python_InitShadowInstance(args); +} + +SWIGINTERN PyObject *_wrap_normalize_flow_make(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + float arg1 ; + float arg2 ; + int arg3 ; + float arg4 ; + float arg5 ; + float val1 ; + int ecode1 = 0 ; + float val2 ; + int ecode2 = 0 ; + int val3 ; + int ecode3 = 0 ; + float val4 ; + int ecode4 = 0 ; + float val5 ; + int ecode5 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + PyObject * obj3 = 0 ; + PyObject * obj4 = 0 ; + char * kwnames[] = { + (char *)"min", (char *)"max", (char *)"window", (char *)"alpha_avg", (char *)"update_proba", NULL + }; + gr::tempest::normalize_flow::sptr result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOOOO:normalize_flow_make", kwnames, &obj0, &obj1, &obj2, &obj3, &obj4)) SWIG_fail; + ecode1 = SWIG_AsVal_float(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "normalize_flow_make" "', argument " "1"" of type '" "float""'"); + } + arg1 = static_cast< float >(val1); + ecode2 = SWIG_AsVal_float(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "normalize_flow_make" "', argument " "2"" of type '" "float""'"); + } + arg2 = static_cast< float >(val2); + ecode3 = SWIG_AsVal_int(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "normalize_flow_make" "', argument " "3"" of type '" "int""'"); + } + arg3 = static_cast< int >(val3); + ecode4 = SWIG_AsVal_float(obj3, &val4); + if (!SWIG_IsOK(ecode4)) { + SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "normalize_flow_make" "', argument " "4"" of type '" "float""'"); + } + arg4 = static_cast< float >(val4); + ecode5 = SWIG_AsVal_float(obj4, &val5); + if (!SWIG_IsOK(ecode5)) { + SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "normalize_flow_make" "', argument " "5"" of type '" "float""'"); + } + arg5 = static_cast< float >(val5); + { + try { + result = gr::tempest::normalize_flow::make(arg1,arg2,arg3,arg4,arg5); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new gr::tempest::normalize_flow::sptr(static_cast< const gr::tempest::normalize_flow::sptr& >(result))), SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_set_min_max(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + gr::tempest::normalize_flow *arg1 = (gr::tempest::normalize_flow *) 0 ; + float arg2 ; + float arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + float val2 ; + int ecode2 = 0 ; + float val3 ; + int ecode3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"min", (char *)"max", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOO:normalize_flow_set_min_max", kwnames, &obj0, &obj1, &obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_gr__tempest__normalize_flow, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_set_min_max" "', argument " "1"" of type '" "gr::tempest::normalize_flow *""'"); + } + arg1 = reinterpret_cast< gr::tempest::normalize_flow * >(argp1); + ecode2 = SWIG_AsVal_float(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "normalize_flow_set_min_max" "', argument " "2"" of type '" "float""'"); + } + arg2 = static_cast< float >(val2); + ecode3 = SWIG_AsVal_float(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "normalize_flow_set_min_max" "', argument " "3"" of type '" "float""'"); + } + arg3 = static_cast< float >(val3); + { + try { + (arg1)->set_min_max(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_normalize_flow(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + gr::tempest::normalize_flow *arg1 = (gr::tempest::normalize_flow *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_gr__tempest__normalize_flow, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_normalize_flow" "', argument " "1"" of type '" "gr::tempest::normalize_flow *""'"); + } + arg1 = reinterpret_cast< gr::tempest::normalize_flow * >(argp1); + { + try { + delete arg1; + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *normalize_flow_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!SWIG_Python_UnpackTuple(args, "swigregister", 1, 1, &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_gr__tempest__normalize_flow, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_new_normalize_flow_sptr__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **SWIGUNUSEDPARM(swig_obj)) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *result = 0 ; + + if ((nobjs < 0) || (nobjs > 0)) SWIG_fail; + { + try { + result = (boost::shared_ptr< gr::tempest::normalize_flow > *)new boost::shared_ptr< gr::tempest::normalize_flow >(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_normalize_flow_sptr__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + gr::tempest::normalize_flow *arg1 = (gr::tempest::normalize_flow *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + boost::shared_ptr< gr::tempest::normalize_flow > *result = 0 ; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_gr__tempest__normalize_flow, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_normalize_flow_sptr" "', argument " "1"" of type '" "gr::tempest::normalize_flow *""'"); + } + arg1 = reinterpret_cast< gr::tempest::normalize_flow * >(argp1); + { + try { + result = (boost::shared_ptr< gr::tempest::normalize_flow > *)new boost::shared_ptr< gr::tempest::normalize_flow >(arg1); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_normalize_flow_sptr(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[2] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "new_normalize_flow_sptr", 0, 1, argv))) SWIG_fail; + --argc; + if (argc == 0) { + return _wrap_new_normalize_flow_sptr__SWIG_0(self, argc, argv); + } + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_gr__tempest__normalize_flow, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_new_normalize_flow_sptr__SWIG_1(self, argc, argv); + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'new_normalize_flow_sptr'.\n" + " Possible C/C++ prototypes are:\n" + " boost::shared_ptr< gr::tempest::normalize_flow >::shared_ptr()\n" + " boost::shared_ptr< gr::tempest::normalize_flow >::shared_ptr(gr::tempest::normalize_flow *)\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr___deref__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + gr::tempest::normalize_flow *result = 0 ; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr___deref__" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + { + try { + result = (gr::tempest::normalize_flow *)(arg1)->operator ->(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_gr__tempest__normalize_flow, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_normalize_flow_sptr(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_normalize_flow_sptr" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + { + try { + delete arg1; + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_make(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + float arg2 ; + float arg3 ; + int arg4 ; + float arg5 ; + float arg6 ; + void *argp1 = 0 ; + int res1 = 0 ; + float val2 ; + int ecode2 = 0 ; + float val3 ; + int ecode3 = 0 ; + int val4 ; + int ecode4 = 0 ; + float val5 ; + int ecode5 = 0 ; + float val6 ; + int ecode6 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + PyObject * obj3 = 0 ; + PyObject * obj4 = 0 ; + PyObject * obj5 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"min", (char *)"max", (char *)"window", (char *)"alpha_avg", (char *)"update_proba", NULL + }; + gr::tempest::normalize_flow::sptr result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOOOOO:normalize_flow_sptr_make", kwnames, &obj0, &obj1, &obj2, &obj3, &obj4, &obj5)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_make" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + ecode2 = SWIG_AsVal_float(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "normalize_flow_sptr_make" "', argument " "2"" of type '" "float""'"); + } + arg2 = static_cast< float >(val2); + ecode3 = SWIG_AsVal_float(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "normalize_flow_sptr_make" "', argument " "3"" of type '" "float""'"); + } + arg3 = static_cast< float >(val3); + ecode4 = SWIG_AsVal_int(obj3, &val4); + if (!SWIG_IsOK(ecode4)) { + SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "normalize_flow_sptr_make" "', argument " "4"" of type '" "int""'"); + } + arg4 = static_cast< int >(val4); + ecode5 = SWIG_AsVal_float(obj4, &val5); + if (!SWIG_IsOK(ecode5)) { + SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "normalize_flow_sptr_make" "', argument " "5"" of type '" "float""'"); + } + arg5 = static_cast< float >(val5); + ecode6 = SWIG_AsVal_float(obj5, &val6); + if (!SWIG_IsOK(ecode6)) { + SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "normalize_flow_sptr_make" "', argument " "6"" of type '" "float""'"); + } + arg6 = static_cast< float >(val6); + { + try { + result = (*arg1)->make(arg2,arg3,arg4,arg5,arg6); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new gr::tempest::normalize_flow::sptr(static_cast< const gr::tempest::normalize_flow::sptr& >(result))), SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_set_min_max(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + float arg2 ; + float arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + float val2 ; + int ecode2 = 0 ; + float val3 ; + int ecode3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"min", (char *)"max", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOO:normalize_flow_sptr_set_min_max", kwnames, &obj0, &obj1, &obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_set_min_max" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + ecode2 = SWIG_AsVal_float(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "normalize_flow_sptr_set_min_max" "', argument " "2"" of type '" "float""'"); + } + arg2 = static_cast< float >(val2); + ecode3 = SWIG_AsVal_float(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "normalize_flow_sptr_set_min_max" "', argument " "3"" of type '" "float""'"); + } + arg3 = static_cast< float >(val3); + { + try { + (*arg1)->set_min_max(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_history(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + unsigned int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_history" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + { + try { + result = (unsigned int)(*arg1)->history(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_int(static_cast< unsigned int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_declare_sample_delay__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + int arg2 ; + int arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int val3 ; + int ecode3 = 0 ; + + if ((nobjs < 3) || (nobjs > 3)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_declare_sample_delay" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "normalize_flow_sptr_declare_sample_delay" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_int(swig_obj[2], &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "normalize_flow_sptr_declare_sample_delay" "', argument " "3"" of type '" "int""'"); + } + arg3 = static_cast< int >(val3); + { + try { + (*arg1)->declare_sample_delay(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_declare_sample_delay__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + unsigned int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + unsigned int val2 ; + int ecode2 = 0 ; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_declare_sample_delay" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + ecode2 = SWIG_AsVal_unsigned_SS_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "normalize_flow_sptr_declare_sample_delay" "', argument " "2"" of type '" "unsigned int""'"); + } + arg2 = static_cast< unsigned int >(val2); + { + try { + (*arg1)->declare_sample_delay(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_declare_sample_delay(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[4] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "normalize_flow_sptr_declare_sample_delay", 0, 3, argv))) SWIG_fail; + --argc; + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_unsigned_SS_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_normalize_flow_sptr_declare_sample_delay__SWIG_1(self, argc, argv); + } + } + } + if (argc == 3) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + { + int res = SWIG_AsVal_int(argv[2], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_normalize_flow_sptr_declare_sample_delay__SWIG_0(self, argc, argv); + } + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'normalize_flow_sptr_declare_sample_delay'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::declare_sample_delay(int,int)\n" + " gr::block::declare_sample_delay(unsigned int)\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_sample_delay(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"which", NULL + }; + unsigned int result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:normalize_flow_sptr_sample_delay", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_sample_delay" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "normalize_flow_sptr_sample_delay" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (unsigned int)(*arg1)->sample_delay(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_int(static_cast< unsigned int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_set_output_multiple(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"multiple", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:normalize_flow_sptr_set_output_multiple", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_set_output_multiple" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "normalize_flow_sptr_set_output_multiple" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + (*arg1)->set_output_multiple(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_output_multiple(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_output_multiple" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + { + try { + result = (int)(*arg1)->output_multiple(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_relative_rate(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + double result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_relative_rate" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + { + try { + result = (double)(*arg1)->relative_rate(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_double(static_cast< double >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_relative_rate_i(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + uint64_t result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_relative_rate_i" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + { + try { + result = (uint64_t)(*arg1)->relative_rate_i(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_long_SS_long(static_cast< unsigned long long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_relative_rate_d(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + uint64_t result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_relative_rate_d" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + { + try { + result = (uint64_t)(*arg1)->relative_rate_d(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_long_SS_long(static_cast< unsigned long long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_start(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + bool result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_start" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + { + try { + result = (bool)(*arg1)->start(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_bool(static_cast< bool >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_stop(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + bool result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_stop" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + { + try { + result = (bool)(*arg1)->stop(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_bool(static_cast< bool >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_nitems_read(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + unsigned int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + unsigned int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"which_input", NULL + }; + uint64_t result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:normalize_flow_sptr_nitems_read", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_nitems_read" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + ecode2 = SWIG_AsVal_unsigned_SS_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "normalize_flow_sptr_nitems_read" "', argument " "2"" of type '" "unsigned int""'"); + } + arg2 = static_cast< unsigned int >(val2); + { + try { + result = (uint64_t)(*arg1)->nitems_read(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_long_SS_long(static_cast< unsigned long long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_nitems_written(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + unsigned int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + unsigned int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"which_output", NULL + }; + uint64_t result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:normalize_flow_sptr_nitems_written", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_nitems_written" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + ecode2 = SWIG_AsVal_unsigned_SS_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "normalize_flow_sptr_nitems_written" "', argument " "2"" of type '" "unsigned int""'"); + } + arg2 = static_cast< unsigned int >(val2); + { + try { + result = (uint64_t)(*arg1)->nitems_written(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_long_SS_long(static_cast< unsigned long long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_set_log_level(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + std::string arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"level", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:normalize_flow_sptr_set_log_level", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_set_log_level" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + { + std::string *ptr = (std::string *)0; + int res = SWIG_AsPtr_std_string(obj1, &ptr); + if (!SWIG_IsOK(res) || !ptr) { + SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "normalize_flow_sptr_set_log_level" "', argument " "2"" of type '" "std::string""'"); + } + arg2 = *ptr; + if (SWIG_IsNewObj(res)) delete ptr; + } + { + try { + (*arg1)->set_log_level(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_log_level(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + std::string result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_log_level" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + { + try { + result = (*arg1)->log_level(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_std_string(static_cast< std::string >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_max_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_max_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + { + try { + result = (int)(*arg1)->max_noutput_items(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_set_max_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"m", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:normalize_flow_sptr_set_max_noutput_items", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_set_max_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "normalize_flow_sptr_set_max_noutput_items" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + (*arg1)->set_max_noutput_items(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_unset_max_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_unset_max_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + { + try { + (*arg1)->unset_max_noutput_items(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_is_set_max_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + bool result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_is_set_max_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + { + try { + result = (bool)(*arg1)->is_set_max_noutput_items(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_bool(static_cast< bool >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_set_min_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"m", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:normalize_flow_sptr_set_min_noutput_items", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_set_min_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "normalize_flow_sptr_set_min_noutput_items" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + (*arg1)->set_min_noutput_items(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_min_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_min_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + { + try { + result = (int)(*arg1)->min_noutput_items(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_max_output_buffer(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"i", NULL + }; + long result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:normalize_flow_sptr_max_output_buffer", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_max_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "normalize_flow_sptr_max_output_buffer" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (long)(*arg1)->max_output_buffer(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_long(static_cast< long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_set_max_output_buffer__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + long arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + long val2 ; + int ecode2 = 0 ; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_set_max_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + ecode2 = SWIG_AsVal_long(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "normalize_flow_sptr_set_max_output_buffer" "', argument " "2"" of type '" "long""'"); + } + arg2 = static_cast< long >(val2); + { + try { + (*arg1)->set_max_output_buffer(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_set_max_output_buffer__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + int arg2 ; + long arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + long val3 ; + int ecode3 = 0 ; + + if ((nobjs < 3) || (nobjs > 3)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_set_max_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "normalize_flow_sptr_set_max_output_buffer" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_long(swig_obj[2], &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "normalize_flow_sptr_set_max_output_buffer" "', argument " "3"" of type '" "long""'"); + } + arg3 = static_cast< long >(val3); + { + try { + (*arg1)->set_max_output_buffer(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_set_max_output_buffer(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[4] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "normalize_flow_sptr_set_max_output_buffer", 0, 3, argv))) SWIG_fail; + --argc; + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_long(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_normalize_flow_sptr_set_max_output_buffer__SWIG_0(self, argc, argv); + } + } + } + if (argc == 3) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + { + int res = SWIG_AsVal_long(argv[2], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_normalize_flow_sptr_set_max_output_buffer__SWIG_1(self, argc, argv); + } + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'normalize_flow_sptr_set_max_output_buffer'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::set_max_output_buffer(long)\n" + " gr::block::set_max_output_buffer(int,long)\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_min_output_buffer(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"i", NULL + }; + long result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:normalize_flow_sptr_min_output_buffer", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_min_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "normalize_flow_sptr_min_output_buffer" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (long)(*arg1)->min_output_buffer(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_long(static_cast< long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_set_min_output_buffer__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + long arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + long val2 ; + int ecode2 = 0 ; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_set_min_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + ecode2 = SWIG_AsVal_long(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "normalize_flow_sptr_set_min_output_buffer" "', argument " "2"" of type '" "long""'"); + } + arg2 = static_cast< long >(val2); + { + try { + (*arg1)->set_min_output_buffer(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_set_min_output_buffer__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + int arg2 ; + long arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + long val3 ; + int ecode3 = 0 ; + + if ((nobjs < 3) || (nobjs > 3)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_set_min_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "normalize_flow_sptr_set_min_output_buffer" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_long(swig_obj[2], &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "normalize_flow_sptr_set_min_output_buffer" "', argument " "3"" of type '" "long""'"); + } + arg3 = static_cast< long >(val3); + { + try { + (*arg1)->set_min_output_buffer(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_set_min_output_buffer(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[4] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "normalize_flow_sptr_set_min_output_buffer", 0, 3, argv))) SWIG_fail; + --argc; + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_long(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_normalize_flow_sptr_set_min_output_buffer__SWIG_0(self, argc, argv); + } + } + } + if (argc == 3) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + { + int res = SWIG_AsVal_long(argv[2], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_normalize_flow_sptr_set_min_output_buffer__SWIG_1(self, argc, argv); + } + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'normalize_flow_sptr_set_min_output_buffer'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::set_min_output_buffer(long)\n" + " gr::block::set_min_output_buffer(int,long)\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_pc_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_pc_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + { + try { + result = (float)(*arg1)->pc_noutput_items(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_pc_noutput_items_avg(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_pc_noutput_items_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + { + try { + result = (float)(*arg1)->pc_noutput_items_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_pc_noutput_items_var(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_pc_noutput_items_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + { + try { + result = (float)(*arg1)->pc_noutput_items_var(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_pc_nproduced(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_pc_nproduced" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + { + try { + result = (float)(*arg1)->pc_nproduced(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_pc_nproduced_avg(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_pc_nproduced_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + { + try { + result = (float)(*arg1)->pc_nproduced_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_pc_nproduced_var(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_pc_nproduced_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + { + try { + result = (float)(*arg1)->pc_nproduced_var(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_pc_input_buffers_full__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_pc_input_buffers_full" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "normalize_flow_sptr_pc_input_buffers_full" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_input_buffers_full(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_pc_input_buffers_full__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_pc_input_buffers_full" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + { + try { + result = (*arg1)->pc_input_buffers_full(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_pc_input_buffers_full(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "normalize_flow_sptr_pc_input_buffers_full", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_normalize_flow_sptr_pc_input_buffers_full__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_normalize_flow_sptr_pc_input_buffers_full__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'normalize_flow_sptr_pc_input_buffers_full'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_input_buffers_full(int)\n" + " gr::block::pc_input_buffers_full()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_pc_input_buffers_full_avg__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_pc_input_buffers_full_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "normalize_flow_sptr_pc_input_buffers_full_avg" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_input_buffers_full_avg(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_pc_input_buffers_full_avg__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_pc_input_buffers_full_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + { + try { + result = (*arg1)->pc_input_buffers_full_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_pc_input_buffers_full_avg(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "normalize_flow_sptr_pc_input_buffers_full_avg", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_normalize_flow_sptr_pc_input_buffers_full_avg__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_normalize_flow_sptr_pc_input_buffers_full_avg__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'normalize_flow_sptr_pc_input_buffers_full_avg'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_input_buffers_full_avg(int)\n" + " gr::block::pc_input_buffers_full_avg()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_pc_input_buffers_full_var__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_pc_input_buffers_full_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "normalize_flow_sptr_pc_input_buffers_full_var" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_input_buffers_full_var(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_pc_input_buffers_full_var__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_pc_input_buffers_full_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + { + try { + result = (*arg1)->pc_input_buffers_full_var(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_pc_input_buffers_full_var(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "normalize_flow_sptr_pc_input_buffers_full_var", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_normalize_flow_sptr_pc_input_buffers_full_var__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_normalize_flow_sptr_pc_input_buffers_full_var__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'normalize_flow_sptr_pc_input_buffers_full_var'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_input_buffers_full_var(int)\n" + " gr::block::pc_input_buffers_full_var()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_pc_output_buffers_full__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_pc_output_buffers_full" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "normalize_flow_sptr_pc_output_buffers_full" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_output_buffers_full(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_pc_output_buffers_full__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_pc_output_buffers_full" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + { + try { + result = (*arg1)->pc_output_buffers_full(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_pc_output_buffers_full(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "normalize_flow_sptr_pc_output_buffers_full", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_normalize_flow_sptr_pc_output_buffers_full__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_normalize_flow_sptr_pc_output_buffers_full__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'normalize_flow_sptr_pc_output_buffers_full'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_output_buffers_full(int)\n" + " gr::block::pc_output_buffers_full()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_pc_output_buffers_full_avg__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_pc_output_buffers_full_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "normalize_flow_sptr_pc_output_buffers_full_avg" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_output_buffers_full_avg(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_pc_output_buffers_full_avg__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_pc_output_buffers_full_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + { + try { + result = (*arg1)->pc_output_buffers_full_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_pc_output_buffers_full_avg(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "normalize_flow_sptr_pc_output_buffers_full_avg", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_normalize_flow_sptr_pc_output_buffers_full_avg__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_normalize_flow_sptr_pc_output_buffers_full_avg__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'normalize_flow_sptr_pc_output_buffers_full_avg'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_output_buffers_full_avg(int)\n" + " gr::block::pc_output_buffers_full_avg()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_pc_output_buffers_full_var__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_pc_output_buffers_full_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "normalize_flow_sptr_pc_output_buffers_full_var" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_output_buffers_full_var(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_pc_output_buffers_full_var__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_pc_output_buffers_full_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + { + try { + result = (*arg1)->pc_output_buffers_full_var(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_pc_output_buffers_full_var(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "normalize_flow_sptr_pc_output_buffers_full_var", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_normalize_flow_sptr_pc_output_buffers_full_var__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_normalize_flow_sptr_pc_output_buffers_full_var__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'normalize_flow_sptr_pc_output_buffers_full_var'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_output_buffers_full_var(int)\n" + " gr::block::pc_output_buffers_full_var()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_pc_work_time(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_pc_work_time" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + { + try { + result = (float)(*arg1)->pc_work_time(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_pc_work_time_avg(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_pc_work_time_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + { + try { + result = (float)(*arg1)->pc_work_time_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_pc_work_time_var(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_pc_work_time_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + { + try { + result = (float)(*arg1)->pc_work_time_var(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_pc_work_time_total(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_pc_work_time_total" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + { + try { + result = (float)(*arg1)->pc_work_time_total(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_pc_throughput_avg(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_pc_throughput_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + { + try { + result = (float)(*arg1)->pc_throughput_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_set_processor_affinity(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + std::vector< int,std::allocator< int > > *arg2 = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 = SWIG_OLDOBJ ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"mask", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:normalize_flow_sptr_set_processor_affinity", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_set_processor_affinity" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + { + std::vector< int,std::allocator< int > > *ptr = (std::vector< int,std::allocator< int > > *)0; + res2 = swig::asptr(obj1, &ptr); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "normalize_flow_sptr_set_processor_affinity" "', argument " "2"" of type '" "std::vector< int,std::allocator< int > > const &""'"); + } + if (!ptr) { + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "normalize_flow_sptr_set_processor_affinity" "', argument " "2"" of type '" "std::vector< int,std::allocator< int > > const &""'"); + } + arg2 = ptr; + } + { + try { + (*arg1)->set_processor_affinity((std::vector< int,std::allocator< int > > const &)*arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + if (SWIG_IsNewObj(res2)) delete arg2; + return resultobj; +fail: + if (SWIG_IsNewObj(res2)) delete arg2; + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_unset_processor_affinity(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_unset_processor_affinity" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + { + try { + (*arg1)->unset_processor_affinity(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_processor_affinity(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + std::vector< int,std::allocator< int > > result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_processor_affinity" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + { + try { + result = (*arg1)->processor_affinity(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< int,std::allocator< int > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_active_thread_priority(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_active_thread_priority" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + { + try { + result = (int)(*arg1)->active_thread_priority(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_thread_priority(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_thread_priority" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + { + try { + result = (int)(*arg1)->thread_priority(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_set_thread_priority(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"priority", NULL + }; + int result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:normalize_flow_sptr_set_thread_priority", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_set_thread_priority" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "normalize_flow_sptr_set_thread_priority" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (int)(*arg1)->set_thread_priority(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_name(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + std::string result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_name" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + { + try { + result = (*arg1)->name(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_std_string(static_cast< std::string >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_symbol_name(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + std::string result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_symbol_name" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + { + try { + result = (*arg1)->symbol_name(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_std_string(static_cast< std::string >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_input_signature(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + gr::io_signature::sptr result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_input_signature" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + { + try { + result = (*arg1)->input_signature(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new gr::io_signature::sptr(static_cast< const gr::io_signature::sptr& >(result))), SWIGTYPE_p_boost__shared_ptrT_gr__io_signature_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_output_signature(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + gr::io_signature::sptr result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_output_signature" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + { + try { + result = (*arg1)->output_signature(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new gr::io_signature::sptr(static_cast< const gr::io_signature::sptr& >(result))), SWIGTYPE_p_boost__shared_ptrT_gr__io_signature_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_unique_id(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + long result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_unique_id" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + { + try { + result = (long)(*arg1)->unique_id(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_long(static_cast< long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_to_basic_block(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + gr::basic_block_sptr result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_to_basic_block" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + { + try { + result = (*arg1)->to_basic_block(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new gr::basic_block_sptr(static_cast< const gr::basic_block_sptr& >(result))), SWIGTYPE_p_boost__shared_ptrT_gr__basic_block_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_check_topology(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + int arg2 ; + int arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int val3 ; + int ecode3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"ninputs", (char *)"noutputs", NULL + }; + bool result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOO:normalize_flow_sptr_check_topology", kwnames, &obj0, &obj1, &obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_check_topology" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "normalize_flow_sptr_check_topology" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_int(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "normalize_flow_sptr_check_topology" "', argument " "3"" of type '" "int""'"); + } + arg3 = static_cast< int >(val3); + { + try { + result = (bool)(*arg1)->check_topology(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_bool(static_cast< bool >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_alias(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + std::string result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_alias" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + { + try { + result = (*arg1)->alias(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_std_string(static_cast< std::string >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_set_block_alias(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + std::string arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"name", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:normalize_flow_sptr_set_block_alias", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_set_block_alias" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + { + std::string *ptr = (std::string *)0; + int res = SWIG_AsPtr_std_string(obj1, &ptr); + if (!SWIG_IsOK(res) || !ptr) { + SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "normalize_flow_sptr_set_block_alias" "', argument " "2"" of type '" "std::string""'"); + } + arg2 = *ptr; + if (SWIG_IsNewObj(res)) delete ptr; + } + { + try { + (*arg1)->set_block_alias(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr__post(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + pmt::pmt_t arg2 ; + pmt::pmt_t arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 ; + int res2 = 0 ; + void *argp3 ; + int res3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"which_port", (char *)"msg", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOO:normalize_flow_sptr__post", kwnames, &obj0, &obj1, &obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr__post" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + { + res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, 0 | 0); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "normalize_flow_sptr__post" "', argument " "2"" of type '" "pmt::pmt_t""'"); + } + if (!argp2) { + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "normalize_flow_sptr__post" "', argument " "2"" of type '" "pmt::pmt_t""'"); + } else { + pmt::pmt_t * temp = reinterpret_cast< pmt::pmt_t * >(argp2); + arg2 = *temp; + if (SWIG_IsNewObj(res2)) delete temp; + } + } + { + res3 = SWIG_ConvertPtr(obj2, &argp3, SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, 0 | 0); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "normalize_flow_sptr__post" "', argument " "3"" of type '" "pmt::pmt_t""'"); + } + if (!argp3) { + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "normalize_flow_sptr__post" "', argument " "3"" of type '" "pmt::pmt_t""'"); + } else { + pmt::pmt_t * temp = reinterpret_cast< pmt::pmt_t * >(argp3); + arg3 = *temp; + if (SWIG_IsNewObj(res3)) delete temp; + } + } + { + try { + (*arg1)->_post(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_message_ports_in(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + pmt::pmt_t result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_message_ports_in" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + { + try { + result = (*arg1)->message_ports_in(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new pmt::pmt_t(static_cast< const pmt::pmt_t& >(result))), SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_message_ports_out(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + pmt::pmt_t result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_message_ports_out" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + { + try { + result = (*arg1)->message_ports_out(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new pmt::pmt_t(static_cast< const pmt::pmt_t& >(result))), SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_normalize_flow_sptr_message_subscribers(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::normalize_flow > *arg1 = (boost::shared_ptr< gr::tempest::normalize_flow > *) 0 ; + pmt::pmt_t arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"which_port", NULL + }; + pmt::pmt_t result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:normalize_flow_sptr_message_subscribers", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "normalize_flow_sptr_message_subscribers" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::normalize_flow > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::normalize_flow > * >(argp1); + { + res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, 0 | 0); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "normalize_flow_sptr_message_subscribers" "', argument " "2"" of type '" "pmt::pmt_t""'"); + } + if (!argp2) { + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "normalize_flow_sptr_message_subscribers" "', argument " "2"" of type '" "pmt::pmt_t""'"); + } else { + pmt::pmt_t * temp = reinterpret_cast< pmt::pmt_t * >(argp2); + arg2 = *temp; + if (SWIG_IsNewObj(res2)) delete temp; + } + } + { + try { + result = (*arg1)->message_subscribers(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new pmt::pmt_t(static_cast< const pmt::pmt_t& >(result))), SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *normalize_flow_sptr_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!SWIG_Python_UnpackTuple(args, "swigregister", 1, 1, &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_boost__shared_ptrT_gr__tempest__normalize_flow_t, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *normalize_flow_sptr_swiginit(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + return SWIG_Python_InitShadowInstance(args); +} + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_make(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + int arg1 ; + int arg2 ; + int arg3 ; + float arg4 ; + float arg5 ; + int val1 ; + int ecode1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int val3 ; + int ecode3 = 0 ; + float val4 ; + int ecode4 = 0 ; + float val5 ; + int ecode5 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + PyObject * obj3 = 0 ; + PyObject * obj4 = 0 ; + char * kwnames[] = { + (char *)"Htotal", (char *)"Vtotal", (char *)"correct_sampling", (char *)"max_deviation", (char *)"update_proba", NULL + }; + gr::tempest::fine_sampling_synchronization::sptr result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOOOO:fine_sampling_synchronization_make", kwnames, &obj0, &obj1, &obj2, &obj3, &obj4)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "fine_sampling_synchronization_make" "', argument " "1"" of type '" "int""'"); + } + arg1 = static_cast< int >(val1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "fine_sampling_synchronization_make" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_int(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "fine_sampling_synchronization_make" "', argument " "3"" of type '" "int""'"); + } + arg3 = static_cast< int >(val3); + ecode4 = SWIG_AsVal_float(obj3, &val4); + if (!SWIG_IsOK(ecode4)) { + SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "fine_sampling_synchronization_make" "', argument " "4"" of type '" "float""'"); + } + arg4 = static_cast< float >(val4); + ecode5 = SWIG_AsVal_float(obj4, &val5); + if (!SWIG_IsOK(ecode5)) { + SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "fine_sampling_synchronization_make" "', argument " "5"" of type '" "float""'"); + } + arg5 = static_cast< float >(val5); + { + try { + result = gr::tempest::fine_sampling_synchronization::make(arg1,arg2,arg3,arg4,arg5); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new gr::tempest::fine_sampling_synchronization::sptr(static_cast< const gr::tempest::fine_sampling_synchronization::sptr& >(result))), SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_set_Htotal_Vtotal(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + gr::tempest::fine_sampling_synchronization *arg1 = (gr::tempest::fine_sampling_synchronization *) 0 ; + int arg2 ; + int arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int val3 ; + int ecode3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"Htotal", (char *)"Vtotal", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOO:fine_sampling_synchronization_set_Htotal_Vtotal", kwnames, &obj0, &obj1, &obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_gr__tempest__fine_sampling_synchronization, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_set_Htotal_Vtotal" "', argument " "1"" of type '" "gr::tempest::fine_sampling_synchronization *""'"); + } + arg1 = reinterpret_cast< gr::tempest::fine_sampling_synchronization * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "fine_sampling_synchronization_set_Htotal_Vtotal" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_int(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "fine_sampling_synchronization_set_Htotal_Vtotal" "', argument " "3"" of type '" "int""'"); + } + arg3 = static_cast< int >(val3); + { + try { + (arg1)->set_Htotal_Vtotal(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_fine_sampling_synchronization(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + gr::tempest::fine_sampling_synchronization *arg1 = (gr::tempest::fine_sampling_synchronization *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_gr__tempest__fine_sampling_synchronization, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_fine_sampling_synchronization" "', argument " "1"" of type '" "gr::tempest::fine_sampling_synchronization *""'"); + } + arg1 = reinterpret_cast< gr::tempest::fine_sampling_synchronization * >(argp1); + { + try { + delete arg1; + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *fine_sampling_synchronization_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!SWIG_Python_UnpackTuple(args, "swigregister", 1, 1, &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_gr__tempest__fine_sampling_synchronization, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_new_fine_sampling_synchronization_sptr__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **SWIGUNUSEDPARM(swig_obj)) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *result = 0 ; + + if ((nobjs < 0) || (nobjs > 0)) SWIG_fail; + { + try { + result = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *)new boost::shared_ptr< gr::tempest::fine_sampling_synchronization >(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_fine_sampling_synchronization_sptr__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + gr::tempest::fine_sampling_synchronization *arg1 = (gr::tempest::fine_sampling_synchronization *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *result = 0 ; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_gr__tempest__fine_sampling_synchronization, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_fine_sampling_synchronization_sptr" "', argument " "1"" of type '" "gr::tempest::fine_sampling_synchronization *""'"); + } + arg1 = reinterpret_cast< gr::tempest::fine_sampling_synchronization * >(argp1); + { + try { + result = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *)new boost::shared_ptr< gr::tempest::fine_sampling_synchronization >(arg1); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_fine_sampling_synchronization_sptr(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[2] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "new_fine_sampling_synchronization_sptr", 0, 1, argv))) SWIG_fail; + --argc; + if (argc == 0) { + return _wrap_new_fine_sampling_synchronization_sptr__SWIG_0(self, argc, argv); + } + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_gr__tempest__fine_sampling_synchronization, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_new_fine_sampling_synchronization_sptr__SWIG_1(self, argc, argv); + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'new_fine_sampling_synchronization_sptr'.\n" + " Possible C/C++ prototypes are:\n" + " boost::shared_ptr< gr::tempest::fine_sampling_synchronization >::shared_ptr()\n" + " boost::shared_ptr< gr::tempest::fine_sampling_synchronization >::shared_ptr(gr::tempest::fine_sampling_synchronization *)\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr___deref__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + gr::tempest::fine_sampling_synchronization *result = 0 ; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr___deref__" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + { + try { + result = (gr::tempest::fine_sampling_synchronization *)(arg1)->operator ->(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_gr__tempest__fine_sampling_synchronization, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_fine_sampling_synchronization_sptr(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_fine_sampling_synchronization_sptr" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + { + try { + delete arg1; + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_make(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + int arg2 ; + int arg3 ; + int arg4 ; + float arg5 ; + float arg6 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int val3 ; + int ecode3 = 0 ; + int val4 ; + int ecode4 = 0 ; + float val5 ; + int ecode5 = 0 ; + float val6 ; + int ecode6 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + PyObject * obj3 = 0 ; + PyObject * obj4 = 0 ; + PyObject * obj5 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"Htotal", (char *)"Vtotal", (char *)"correct_sampling", (char *)"max_deviation", (char *)"update_proba", NULL + }; + gr::tempest::fine_sampling_synchronization::sptr result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOOOOO:fine_sampling_synchronization_sptr_make", kwnames, &obj0, &obj1, &obj2, &obj3, &obj4, &obj5)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_make" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "fine_sampling_synchronization_sptr_make" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_int(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "fine_sampling_synchronization_sptr_make" "', argument " "3"" of type '" "int""'"); + } + arg3 = static_cast< int >(val3); + ecode4 = SWIG_AsVal_int(obj3, &val4); + if (!SWIG_IsOK(ecode4)) { + SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "fine_sampling_synchronization_sptr_make" "', argument " "4"" of type '" "int""'"); + } + arg4 = static_cast< int >(val4); + ecode5 = SWIG_AsVal_float(obj4, &val5); + if (!SWIG_IsOK(ecode5)) { + SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "fine_sampling_synchronization_sptr_make" "', argument " "5"" of type '" "float""'"); + } + arg5 = static_cast< float >(val5); + ecode6 = SWIG_AsVal_float(obj5, &val6); + if (!SWIG_IsOK(ecode6)) { + SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "fine_sampling_synchronization_sptr_make" "', argument " "6"" of type '" "float""'"); + } + arg6 = static_cast< float >(val6); + { + try { + result = (*arg1)->make(arg2,arg3,arg4,arg5,arg6); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new gr::tempest::fine_sampling_synchronization::sptr(static_cast< const gr::tempest::fine_sampling_synchronization::sptr& >(result))), SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_set_Htotal_Vtotal(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + int arg2 ; + int arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int val3 ; + int ecode3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"Htotal", (char *)"Vtotal", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOO:fine_sampling_synchronization_sptr_set_Htotal_Vtotal", kwnames, &obj0, &obj1, &obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_set_Htotal_Vtotal" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "fine_sampling_synchronization_sptr_set_Htotal_Vtotal" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_int(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "fine_sampling_synchronization_sptr_set_Htotal_Vtotal" "', argument " "3"" of type '" "int""'"); + } + arg3 = static_cast< int >(val3); + { + try { + (*arg1)->set_Htotal_Vtotal(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_history(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + unsigned int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_history" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + { + try { + result = (unsigned int)(*arg1)->history(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_int(static_cast< unsigned int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_declare_sample_delay__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + int arg2 ; + int arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int val3 ; + int ecode3 = 0 ; + + if ((nobjs < 3) || (nobjs > 3)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_declare_sample_delay" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "fine_sampling_synchronization_sptr_declare_sample_delay" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_int(swig_obj[2], &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "fine_sampling_synchronization_sptr_declare_sample_delay" "', argument " "3"" of type '" "int""'"); + } + arg3 = static_cast< int >(val3); + { + try { + (*arg1)->declare_sample_delay(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_declare_sample_delay__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + unsigned int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + unsigned int val2 ; + int ecode2 = 0 ; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_declare_sample_delay" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + ecode2 = SWIG_AsVal_unsigned_SS_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "fine_sampling_synchronization_sptr_declare_sample_delay" "', argument " "2"" of type '" "unsigned int""'"); + } + arg2 = static_cast< unsigned int >(val2); + { + try { + (*arg1)->declare_sample_delay(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_declare_sample_delay(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[4] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "fine_sampling_synchronization_sptr_declare_sample_delay", 0, 3, argv))) SWIG_fail; + --argc; + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_unsigned_SS_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_fine_sampling_synchronization_sptr_declare_sample_delay__SWIG_1(self, argc, argv); + } + } + } + if (argc == 3) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + { + int res = SWIG_AsVal_int(argv[2], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_fine_sampling_synchronization_sptr_declare_sample_delay__SWIG_0(self, argc, argv); + } + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'fine_sampling_synchronization_sptr_declare_sample_delay'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::declare_sample_delay(int,int)\n" + " gr::block::declare_sample_delay(unsigned int)\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_sample_delay(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"which", NULL + }; + unsigned int result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:fine_sampling_synchronization_sptr_sample_delay", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_sample_delay" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "fine_sampling_synchronization_sptr_sample_delay" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (unsigned int)(*arg1)->sample_delay(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_int(static_cast< unsigned int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_set_output_multiple(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"multiple", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:fine_sampling_synchronization_sptr_set_output_multiple", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_set_output_multiple" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "fine_sampling_synchronization_sptr_set_output_multiple" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + (*arg1)->set_output_multiple(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_output_multiple(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_output_multiple" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + { + try { + result = (int)(*arg1)->output_multiple(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_relative_rate(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + double result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_relative_rate" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + { + try { + result = (double)(*arg1)->relative_rate(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_double(static_cast< double >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_relative_rate_i(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + uint64_t result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_relative_rate_i" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + { + try { + result = (uint64_t)(*arg1)->relative_rate_i(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_long_SS_long(static_cast< unsigned long long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_relative_rate_d(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + uint64_t result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_relative_rate_d" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + { + try { + result = (uint64_t)(*arg1)->relative_rate_d(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_long_SS_long(static_cast< unsigned long long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_start(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + bool result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_start" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + { + try { + result = (bool)(*arg1)->start(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_bool(static_cast< bool >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_stop(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + bool result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_stop" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + { + try { + result = (bool)(*arg1)->stop(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_bool(static_cast< bool >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_nitems_read(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + unsigned int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + unsigned int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"which_input", NULL + }; + uint64_t result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:fine_sampling_synchronization_sptr_nitems_read", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_nitems_read" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + ecode2 = SWIG_AsVal_unsigned_SS_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "fine_sampling_synchronization_sptr_nitems_read" "', argument " "2"" of type '" "unsigned int""'"); + } + arg2 = static_cast< unsigned int >(val2); + { + try { + result = (uint64_t)(*arg1)->nitems_read(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_long_SS_long(static_cast< unsigned long long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_nitems_written(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + unsigned int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + unsigned int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"which_output", NULL + }; + uint64_t result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:fine_sampling_synchronization_sptr_nitems_written", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_nitems_written" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + ecode2 = SWIG_AsVal_unsigned_SS_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "fine_sampling_synchronization_sptr_nitems_written" "', argument " "2"" of type '" "unsigned int""'"); + } + arg2 = static_cast< unsigned int >(val2); + { + try { + result = (uint64_t)(*arg1)->nitems_written(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_long_SS_long(static_cast< unsigned long long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_set_log_level(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + std::string arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"level", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:fine_sampling_synchronization_sptr_set_log_level", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_set_log_level" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + { + std::string *ptr = (std::string *)0; + int res = SWIG_AsPtr_std_string(obj1, &ptr); + if (!SWIG_IsOK(res) || !ptr) { + SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "fine_sampling_synchronization_sptr_set_log_level" "', argument " "2"" of type '" "std::string""'"); + } + arg2 = *ptr; + if (SWIG_IsNewObj(res)) delete ptr; + } + { + try { + (*arg1)->set_log_level(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_log_level(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + std::string result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_log_level" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + { + try { + result = (*arg1)->log_level(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_std_string(static_cast< std::string >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_max_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_max_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + { + try { + result = (int)(*arg1)->max_noutput_items(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_set_max_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"m", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:fine_sampling_synchronization_sptr_set_max_noutput_items", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_set_max_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "fine_sampling_synchronization_sptr_set_max_noutput_items" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + (*arg1)->set_max_noutput_items(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_unset_max_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_unset_max_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + { + try { + (*arg1)->unset_max_noutput_items(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_is_set_max_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + bool result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_is_set_max_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + { + try { + result = (bool)(*arg1)->is_set_max_noutput_items(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_bool(static_cast< bool >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_set_min_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"m", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:fine_sampling_synchronization_sptr_set_min_noutput_items", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_set_min_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "fine_sampling_synchronization_sptr_set_min_noutput_items" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + (*arg1)->set_min_noutput_items(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_min_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_min_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + { + try { + result = (int)(*arg1)->min_noutput_items(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_max_output_buffer(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"i", NULL + }; + long result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:fine_sampling_synchronization_sptr_max_output_buffer", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_max_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "fine_sampling_synchronization_sptr_max_output_buffer" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (long)(*arg1)->max_output_buffer(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_long(static_cast< long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_set_max_output_buffer__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + long arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + long val2 ; + int ecode2 = 0 ; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_set_max_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + ecode2 = SWIG_AsVal_long(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "fine_sampling_synchronization_sptr_set_max_output_buffer" "', argument " "2"" of type '" "long""'"); + } + arg2 = static_cast< long >(val2); + { + try { + (*arg1)->set_max_output_buffer(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_set_max_output_buffer__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + int arg2 ; + long arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + long val3 ; + int ecode3 = 0 ; + + if ((nobjs < 3) || (nobjs > 3)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_set_max_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "fine_sampling_synchronization_sptr_set_max_output_buffer" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_long(swig_obj[2], &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "fine_sampling_synchronization_sptr_set_max_output_buffer" "', argument " "3"" of type '" "long""'"); + } + arg3 = static_cast< long >(val3); + { + try { + (*arg1)->set_max_output_buffer(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_set_max_output_buffer(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[4] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "fine_sampling_synchronization_sptr_set_max_output_buffer", 0, 3, argv))) SWIG_fail; + --argc; + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_long(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_fine_sampling_synchronization_sptr_set_max_output_buffer__SWIG_0(self, argc, argv); + } + } + } + if (argc == 3) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + { + int res = SWIG_AsVal_long(argv[2], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_fine_sampling_synchronization_sptr_set_max_output_buffer__SWIG_1(self, argc, argv); + } + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'fine_sampling_synchronization_sptr_set_max_output_buffer'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::set_max_output_buffer(long)\n" + " gr::block::set_max_output_buffer(int,long)\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_min_output_buffer(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"i", NULL + }; + long result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:fine_sampling_synchronization_sptr_min_output_buffer", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_min_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "fine_sampling_synchronization_sptr_min_output_buffer" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (long)(*arg1)->min_output_buffer(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_long(static_cast< long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_set_min_output_buffer__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + long arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + long val2 ; + int ecode2 = 0 ; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_set_min_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + ecode2 = SWIG_AsVal_long(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "fine_sampling_synchronization_sptr_set_min_output_buffer" "', argument " "2"" of type '" "long""'"); + } + arg2 = static_cast< long >(val2); + { + try { + (*arg1)->set_min_output_buffer(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_set_min_output_buffer__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + int arg2 ; + long arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + long val3 ; + int ecode3 = 0 ; + + if ((nobjs < 3) || (nobjs > 3)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_set_min_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "fine_sampling_synchronization_sptr_set_min_output_buffer" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_long(swig_obj[2], &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "fine_sampling_synchronization_sptr_set_min_output_buffer" "', argument " "3"" of type '" "long""'"); + } + arg3 = static_cast< long >(val3); + { + try { + (*arg1)->set_min_output_buffer(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_set_min_output_buffer(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[4] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "fine_sampling_synchronization_sptr_set_min_output_buffer", 0, 3, argv))) SWIG_fail; + --argc; + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_long(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_fine_sampling_synchronization_sptr_set_min_output_buffer__SWIG_0(self, argc, argv); + } + } + } + if (argc == 3) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + { + int res = SWIG_AsVal_long(argv[2], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_fine_sampling_synchronization_sptr_set_min_output_buffer__SWIG_1(self, argc, argv); + } + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'fine_sampling_synchronization_sptr_set_min_output_buffer'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::set_min_output_buffer(long)\n" + " gr::block::set_min_output_buffer(int,long)\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_pc_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_pc_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + { + try { + result = (float)(*arg1)->pc_noutput_items(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_pc_noutput_items_avg(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_pc_noutput_items_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + { + try { + result = (float)(*arg1)->pc_noutput_items_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_pc_noutput_items_var(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_pc_noutput_items_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + { + try { + result = (float)(*arg1)->pc_noutput_items_var(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_pc_nproduced(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_pc_nproduced" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + { + try { + result = (float)(*arg1)->pc_nproduced(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_pc_nproduced_avg(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_pc_nproduced_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + { + try { + result = (float)(*arg1)->pc_nproduced_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_pc_nproduced_var(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_pc_nproduced_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + { + try { + result = (float)(*arg1)->pc_nproduced_var(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_pc_input_buffers_full__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_pc_input_buffers_full" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "fine_sampling_synchronization_sptr_pc_input_buffers_full" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_input_buffers_full(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_pc_input_buffers_full__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_pc_input_buffers_full" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + { + try { + result = (*arg1)->pc_input_buffers_full(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_pc_input_buffers_full(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "fine_sampling_synchronization_sptr_pc_input_buffers_full", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_fine_sampling_synchronization_sptr_pc_input_buffers_full__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_fine_sampling_synchronization_sptr_pc_input_buffers_full__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'fine_sampling_synchronization_sptr_pc_input_buffers_full'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_input_buffers_full(int)\n" + " gr::block::pc_input_buffers_full()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_pc_input_buffers_full_avg__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_pc_input_buffers_full_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "fine_sampling_synchronization_sptr_pc_input_buffers_full_avg" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_input_buffers_full_avg(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_pc_input_buffers_full_avg__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_pc_input_buffers_full_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + { + try { + result = (*arg1)->pc_input_buffers_full_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_pc_input_buffers_full_avg(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "fine_sampling_synchronization_sptr_pc_input_buffers_full_avg", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_fine_sampling_synchronization_sptr_pc_input_buffers_full_avg__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_fine_sampling_synchronization_sptr_pc_input_buffers_full_avg__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'fine_sampling_synchronization_sptr_pc_input_buffers_full_avg'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_input_buffers_full_avg(int)\n" + " gr::block::pc_input_buffers_full_avg()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_pc_input_buffers_full_var__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_pc_input_buffers_full_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "fine_sampling_synchronization_sptr_pc_input_buffers_full_var" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_input_buffers_full_var(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_pc_input_buffers_full_var__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_pc_input_buffers_full_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + { + try { + result = (*arg1)->pc_input_buffers_full_var(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_pc_input_buffers_full_var(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "fine_sampling_synchronization_sptr_pc_input_buffers_full_var", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_fine_sampling_synchronization_sptr_pc_input_buffers_full_var__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_fine_sampling_synchronization_sptr_pc_input_buffers_full_var__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'fine_sampling_synchronization_sptr_pc_input_buffers_full_var'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_input_buffers_full_var(int)\n" + " gr::block::pc_input_buffers_full_var()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_pc_output_buffers_full__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_pc_output_buffers_full" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "fine_sampling_synchronization_sptr_pc_output_buffers_full" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_output_buffers_full(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_pc_output_buffers_full__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_pc_output_buffers_full" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + { + try { + result = (*arg1)->pc_output_buffers_full(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_pc_output_buffers_full(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "fine_sampling_synchronization_sptr_pc_output_buffers_full", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_fine_sampling_synchronization_sptr_pc_output_buffers_full__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_fine_sampling_synchronization_sptr_pc_output_buffers_full__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'fine_sampling_synchronization_sptr_pc_output_buffers_full'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_output_buffers_full(int)\n" + " gr::block::pc_output_buffers_full()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_pc_output_buffers_full_avg__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_pc_output_buffers_full_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "fine_sampling_synchronization_sptr_pc_output_buffers_full_avg" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_output_buffers_full_avg(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_pc_output_buffers_full_avg__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_pc_output_buffers_full_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + { + try { + result = (*arg1)->pc_output_buffers_full_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_pc_output_buffers_full_avg(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "fine_sampling_synchronization_sptr_pc_output_buffers_full_avg", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_fine_sampling_synchronization_sptr_pc_output_buffers_full_avg__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_fine_sampling_synchronization_sptr_pc_output_buffers_full_avg__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'fine_sampling_synchronization_sptr_pc_output_buffers_full_avg'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_output_buffers_full_avg(int)\n" + " gr::block::pc_output_buffers_full_avg()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_pc_output_buffers_full_var__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_pc_output_buffers_full_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "fine_sampling_synchronization_sptr_pc_output_buffers_full_var" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_output_buffers_full_var(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_pc_output_buffers_full_var__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_pc_output_buffers_full_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + { + try { + result = (*arg1)->pc_output_buffers_full_var(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_pc_output_buffers_full_var(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "fine_sampling_synchronization_sptr_pc_output_buffers_full_var", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_fine_sampling_synchronization_sptr_pc_output_buffers_full_var__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_fine_sampling_synchronization_sptr_pc_output_buffers_full_var__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'fine_sampling_synchronization_sptr_pc_output_buffers_full_var'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_output_buffers_full_var(int)\n" + " gr::block::pc_output_buffers_full_var()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_pc_work_time(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_pc_work_time" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + { + try { + result = (float)(*arg1)->pc_work_time(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_pc_work_time_avg(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_pc_work_time_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + { + try { + result = (float)(*arg1)->pc_work_time_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_pc_work_time_var(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_pc_work_time_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + { + try { + result = (float)(*arg1)->pc_work_time_var(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_pc_work_time_total(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_pc_work_time_total" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + { + try { + result = (float)(*arg1)->pc_work_time_total(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_pc_throughput_avg(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_pc_throughput_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + { + try { + result = (float)(*arg1)->pc_throughput_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_set_processor_affinity(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + std::vector< int,std::allocator< int > > *arg2 = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 = SWIG_OLDOBJ ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"mask", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:fine_sampling_synchronization_sptr_set_processor_affinity", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_set_processor_affinity" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + { + std::vector< int,std::allocator< int > > *ptr = (std::vector< int,std::allocator< int > > *)0; + res2 = swig::asptr(obj1, &ptr); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "fine_sampling_synchronization_sptr_set_processor_affinity" "', argument " "2"" of type '" "std::vector< int,std::allocator< int > > const &""'"); + } + if (!ptr) { + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "fine_sampling_synchronization_sptr_set_processor_affinity" "', argument " "2"" of type '" "std::vector< int,std::allocator< int > > const &""'"); + } + arg2 = ptr; + } + { + try { + (*arg1)->set_processor_affinity((std::vector< int,std::allocator< int > > const &)*arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + if (SWIG_IsNewObj(res2)) delete arg2; + return resultobj; +fail: + if (SWIG_IsNewObj(res2)) delete arg2; + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_unset_processor_affinity(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_unset_processor_affinity" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + { + try { + (*arg1)->unset_processor_affinity(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_processor_affinity(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + std::vector< int,std::allocator< int > > result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_processor_affinity" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + { + try { + result = (*arg1)->processor_affinity(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< int,std::allocator< int > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_active_thread_priority(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_active_thread_priority" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + { + try { + result = (int)(*arg1)->active_thread_priority(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_thread_priority(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_thread_priority" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + { + try { + result = (int)(*arg1)->thread_priority(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_set_thread_priority(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"priority", NULL + }; + int result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:fine_sampling_synchronization_sptr_set_thread_priority", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_set_thread_priority" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "fine_sampling_synchronization_sptr_set_thread_priority" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (int)(*arg1)->set_thread_priority(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_name(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + std::string result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_name" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + { + try { + result = (*arg1)->name(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_std_string(static_cast< std::string >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_symbol_name(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + std::string result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_symbol_name" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + { + try { + result = (*arg1)->symbol_name(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_std_string(static_cast< std::string >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_input_signature(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + gr::io_signature::sptr result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_input_signature" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + { + try { + result = (*arg1)->input_signature(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new gr::io_signature::sptr(static_cast< const gr::io_signature::sptr& >(result))), SWIGTYPE_p_boost__shared_ptrT_gr__io_signature_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_output_signature(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + gr::io_signature::sptr result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_output_signature" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + { + try { + result = (*arg1)->output_signature(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new gr::io_signature::sptr(static_cast< const gr::io_signature::sptr& >(result))), SWIGTYPE_p_boost__shared_ptrT_gr__io_signature_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_unique_id(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + long result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_unique_id" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + { + try { + result = (long)(*arg1)->unique_id(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_long(static_cast< long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_to_basic_block(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + gr::basic_block_sptr result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_to_basic_block" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + { + try { + result = (*arg1)->to_basic_block(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new gr::basic_block_sptr(static_cast< const gr::basic_block_sptr& >(result))), SWIGTYPE_p_boost__shared_ptrT_gr__basic_block_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_check_topology(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + int arg2 ; + int arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int val3 ; + int ecode3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"ninputs", (char *)"noutputs", NULL + }; + bool result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOO:fine_sampling_synchronization_sptr_check_topology", kwnames, &obj0, &obj1, &obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_check_topology" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "fine_sampling_synchronization_sptr_check_topology" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_int(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "fine_sampling_synchronization_sptr_check_topology" "', argument " "3"" of type '" "int""'"); + } + arg3 = static_cast< int >(val3); + { + try { + result = (bool)(*arg1)->check_topology(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_bool(static_cast< bool >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_alias(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + std::string result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_alias" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + { + try { + result = (*arg1)->alias(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_std_string(static_cast< std::string >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_set_block_alias(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + std::string arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"name", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:fine_sampling_synchronization_sptr_set_block_alias", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_set_block_alias" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + { + std::string *ptr = (std::string *)0; + int res = SWIG_AsPtr_std_string(obj1, &ptr); + if (!SWIG_IsOK(res) || !ptr) { + SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "fine_sampling_synchronization_sptr_set_block_alias" "', argument " "2"" of type '" "std::string""'"); + } + arg2 = *ptr; + if (SWIG_IsNewObj(res)) delete ptr; + } + { + try { + (*arg1)->set_block_alias(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr__post(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + pmt::pmt_t arg2 ; + pmt::pmt_t arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 ; + int res2 = 0 ; + void *argp3 ; + int res3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"which_port", (char *)"msg", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOO:fine_sampling_synchronization_sptr__post", kwnames, &obj0, &obj1, &obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr__post" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + { + res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, 0 | 0); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "fine_sampling_synchronization_sptr__post" "', argument " "2"" of type '" "pmt::pmt_t""'"); + } + if (!argp2) { + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "fine_sampling_synchronization_sptr__post" "', argument " "2"" of type '" "pmt::pmt_t""'"); + } else { + pmt::pmt_t * temp = reinterpret_cast< pmt::pmt_t * >(argp2); + arg2 = *temp; + if (SWIG_IsNewObj(res2)) delete temp; + } + } + { + res3 = SWIG_ConvertPtr(obj2, &argp3, SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, 0 | 0); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "fine_sampling_synchronization_sptr__post" "', argument " "3"" of type '" "pmt::pmt_t""'"); + } + if (!argp3) { + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "fine_sampling_synchronization_sptr__post" "', argument " "3"" of type '" "pmt::pmt_t""'"); + } else { + pmt::pmt_t * temp = reinterpret_cast< pmt::pmt_t * >(argp3); + arg3 = *temp; + if (SWIG_IsNewObj(res3)) delete temp; + } + } + { + try { + (*arg1)->_post(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_message_ports_in(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + pmt::pmt_t result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_message_ports_in" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + { + try { + result = (*arg1)->message_ports_in(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new pmt::pmt_t(static_cast< const pmt::pmt_t& >(result))), SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_message_ports_out(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + pmt::pmt_t result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_message_ports_out" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + { + try { + result = (*arg1)->message_ports_out(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new pmt::pmt_t(static_cast< const pmt::pmt_t& >(result))), SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fine_sampling_synchronization_sptr_message_subscribers(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *arg1 = (boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *) 0 ; + pmt::pmt_t arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"which_port", NULL + }; + pmt::pmt_t result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:fine_sampling_synchronization_sptr_message_subscribers", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fine_sampling_synchronization_sptr_message_subscribers" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fine_sampling_synchronization > * >(argp1); + { + res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, 0 | 0); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "fine_sampling_synchronization_sptr_message_subscribers" "', argument " "2"" of type '" "pmt::pmt_t""'"); + } + if (!argp2) { + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "fine_sampling_synchronization_sptr_message_subscribers" "', argument " "2"" of type '" "pmt::pmt_t""'"); + } else { + pmt::pmt_t * temp = reinterpret_cast< pmt::pmt_t * >(argp2); + arg2 = *temp; + if (SWIG_IsNewObj(res2)) delete temp; + } + } + { + try { + result = (*arg1)->message_subscribers(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new pmt::pmt_t(static_cast< const pmt::pmt_t& >(result))), SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *fine_sampling_synchronization_sptr_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!SWIG_Python_UnpackTuple(args, "swigregister", 1, 1, &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *fine_sampling_synchronization_sptr_swiginit(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + return SWIG_Python_InitShadowInstance(args); +} + +SWIGINTERN PyObject *_wrap_sync_detector_make(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + int arg1 ; + int arg2 ; + int arg3 ; + int arg4 ; + int val1 ; + int ecode1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int val3 ; + int ecode3 = 0 ; + int val4 ; + int ecode4 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + PyObject * obj3 = 0 ; + char * kwnames[] = { + (char *)"hscreen", (char *)"vscreen", (char *)"hblanking", (char *)"vblanking", NULL + }; + gr::tempest::sync_detector::sptr result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOOO:sync_detector_make", kwnames, &obj0, &obj1, &obj2, &obj3)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "sync_detector_make" "', argument " "1"" of type '" "int""'"); + } + arg1 = static_cast< int >(val1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sync_detector_make" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_int(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "sync_detector_make" "', argument " "3"" of type '" "int""'"); + } + arg3 = static_cast< int >(val3); + ecode4 = SWIG_AsVal_int(obj3, &val4); + if (!SWIG_IsOK(ecode4)) { + SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "sync_detector_make" "', argument " "4"" of type '" "int""'"); + } + arg4 = static_cast< int >(val4); + { + try { + result = gr::tempest::sync_detector::make(arg1,arg2,arg3,arg4); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new gr::tempest::sync_detector::sptr(static_cast< const gr::tempest::sync_detector::sptr& >(result))), SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_sync_detector(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + gr::tempest::sync_detector *arg1 = (gr::tempest::sync_detector *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_gr__tempest__sync_detector, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_sync_detector" "', argument " "1"" of type '" "gr::tempest::sync_detector *""'"); + } + arg1 = reinterpret_cast< gr::tempest::sync_detector * >(argp1); + { + try { + delete arg1; + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *sync_detector_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!SWIG_Python_UnpackTuple(args, "swigregister", 1, 1, &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_gr__tempest__sync_detector, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_new_sync_detector_sptr__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **SWIGUNUSEDPARM(swig_obj)) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *result = 0 ; + + if ((nobjs < 0) || (nobjs > 0)) SWIG_fail; + { + try { + result = (boost::shared_ptr< gr::tempest::sync_detector > *)new boost::shared_ptr< gr::tempest::sync_detector >(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_sync_detector_sptr__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + gr::tempest::sync_detector *arg1 = (gr::tempest::sync_detector *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + boost::shared_ptr< gr::tempest::sync_detector > *result = 0 ; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_gr__tempest__sync_detector, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_sync_detector_sptr" "', argument " "1"" of type '" "gr::tempest::sync_detector *""'"); + } + arg1 = reinterpret_cast< gr::tempest::sync_detector * >(argp1); + { + try { + result = (boost::shared_ptr< gr::tempest::sync_detector > *)new boost::shared_ptr< gr::tempest::sync_detector >(arg1); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_sync_detector_sptr(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[2] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "new_sync_detector_sptr", 0, 1, argv))) SWIG_fail; + --argc; + if (argc == 0) { + return _wrap_new_sync_detector_sptr__SWIG_0(self, argc, argv); + } + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_gr__tempest__sync_detector, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_new_sync_detector_sptr__SWIG_1(self, argc, argv); + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'new_sync_detector_sptr'.\n" + " Possible C/C++ prototypes are:\n" + " boost::shared_ptr< gr::tempest::sync_detector >::shared_ptr()\n" + " boost::shared_ptr< gr::tempest::sync_detector >::shared_ptr(gr::tempest::sync_detector *)\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr___deref__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + gr::tempest::sync_detector *result = 0 ; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr___deref__" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + { + try { + result = (gr::tempest::sync_detector *)(arg1)->operator ->(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_gr__tempest__sync_detector, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_sync_detector_sptr(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_sync_detector_sptr" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + { + try { + delete arg1; + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_make(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + int arg2 ; + int arg3 ; + int arg4 ; + int arg5 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int val3 ; + int ecode3 = 0 ; + int val4 ; + int ecode4 = 0 ; + int val5 ; + int ecode5 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + PyObject * obj3 = 0 ; + PyObject * obj4 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"hscreen", (char *)"vscreen", (char *)"hblanking", (char *)"vblanking", NULL + }; + gr::tempest::sync_detector::sptr result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOOOO:sync_detector_sptr_make", kwnames, &obj0, &obj1, &obj2, &obj3, &obj4)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_make" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sync_detector_sptr_make" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_int(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "sync_detector_sptr_make" "', argument " "3"" of type '" "int""'"); + } + arg3 = static_cast< int >(val3); + ecode4 = SWIG_AsVal_int(obj3, &val4); + if (!SWIG_IsOK(ecode4)) { + SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "sync_detector_sptr_make" "', argument " "4"" of type '" "int""'"); + } + arg4 = static_cast< int >(val4); + ecode5 = SWIG_AsVal_int(obj4, &val5); + if (!SWIG_IsOK(ecode5)) { + SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "sync_detector_sptr_make" "', argument " "5"" of type '" "int""'"); + } + arg5 = static_cast< int >(val5); + { + try { + result = (*arg1)->make(arg2,arg3,arg4,arg5); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new gr::tempest::sync_detector::sptr(static_cast< const gr::tempest::sync_detector::sptr& >(result))), SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_history(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + unsigned int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_history" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + { + try { + result = (unsigned int)(*arg1)->history(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_int(static_cast< unsigned int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_declare_sample_delay__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + int arg2 ; + int arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int val3 ; + int ecode3 = 0 ; + + if ((nobjs < 3) || (nobjs > 3)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_declare_sample_delay" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sync_detector_sptr_declare_sample_delay" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_int(swig_obj[2], &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "sync_detector_sptr_declare_sample_delay" "', argument " "3"" of type '" "int""'"); + } + arg3 = static_cast< int >(val3); + { + try { + (*arg1)->declare_sample_delay(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_declare_sample_delay__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + unsigned int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + unsigned int val2 ; + int ecode2 = 0 ; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_declare_sample_delay" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + ecode2 = SWIG_AsVal_unsigned_SS_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sync_detector_sptr_declare_sample_delay" "', argument " "2"" of type '" "unsigned int""'"); + } + arg2 = static_cast< unsigned int >(val2); + { + try { + (*arg1)->declare_sample_delay(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_declare_sample_delay(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[4] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "sync_detector_sptr_declare_sample_delay", 0, 3, argv))) SWIG_fail; + --argc; + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_unsigned_SS_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_sync_detector_sptr_declare_sample_delay__SWIG_1(self, argc, argv); + } + } + } + if (argc == 3) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + { + int res = SWIG_AsVal_int(argv[2], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_sync_detector_sptr_declare_sample_delay__SWIG_0(self, argc, argv); + } + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'sync_detector_sptr_declare_sample_delay'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::declare_sample_delay(int,int)\n" + " gr::block::declare_sample_delay(unsigned int)\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_sample_delay(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"which", NULL + }; + unsigned int result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:sync_detector_sptr_sample_delay", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_sample_delay" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sync_detector_sptr_sample_delay" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (unsigned int)(*arg1)->sample_delay(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_int(static_cast< unsigned int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_set_output_multiple(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"multiple", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:sync_detector_sptr_set_output_multiple", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_set_output_multiple" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sync_detector_sptr_set_output_multiple" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + (*arg1)->set_output_multiple(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_output_multiple(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_output_multiple" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + { + try { + result = (int)(*arg1)->output_multiple(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_relative_rate(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + double result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_relative_rate" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + { + try { + result = (double)(*arg1)->relative_rate(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_double(static_cast< double >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_relative_rate_i(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + uint64_t result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_relative_rate_i" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + { + try { + result = (uint64_t)(*arg1)->relative_rate_i(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_long_SS_long(static_cast< unsigned long long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_relative_rate_d(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + uint64_t result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_relative_rate_d" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + { + try { + result = (uint64_t)(*arg1)->relative_rate_d(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_long_SS_long(static_cast< unsigned long long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_start(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + bool result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_start" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + { + try { + result = (bool)(*arg1)->start(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_bool(static_cast< bool >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_stop(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + bool result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_stop" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + { + try { + result = (bool)(*arg1)->stop(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_bool(static_cast< bool >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_nitems_read(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + unsigned int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + unsigned int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"which_input", NULL + }; + uint64_t result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:sync_detector_sptr_nitems_read", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_nitems_read" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + ecode2 = SWIG_AsVal_unsigned_SS_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sync_detector_sptr_nitems_read" "', argument " "2"" of type '" "unsigned int""'"); + } + arg2 = static_cast< unsigned int >(val2); + { + try { + result = (uint64_t)(*arg1)->nitems_read(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_long_SS_long(static_cast< unsigned long long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_nitems_written(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + unsigned int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + unsigned int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"which_output", NULL + }; + uint64_t result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:sync_detector_sptr_nitems_written", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_nitems_written" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + ecode2 = SWIG_AsVal_unsigned_SS_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sync_detector_sptr_nitems_written" "', argument " "2"" of type '" "unsigned int""'"); + } + arg2 = static_cast< unsigned int >(val2); + { + try { + result = (uint64_t)(*arg1)->nitems_written(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_long_SS_long(static_cast< unsigned long long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_set_log_level(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + std::string arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"level", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:sync_detector_sptr_set_log_level", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_set_log_level" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + { + std::string *ptr = (std::string *)0; + int res = SWIG_AsPtr_std_string(obj1, &ptr); + if (!SWIG_IsOK(res) || !ptr) { + SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "sync_detector_sptr_set_log_level" "', argument " "2"" of type '" "std::string""'"); + } + arg2 = *ptr; + if (SWIG_IsNewObj(res)) delete ptr; + } + { + try { + (*arg1)->set_log_level(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_log_level(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + std::string result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_log_level" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + { + try { + result = (*arg1)->log_level(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_std_string(static_cast< std::string >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_max_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_max_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + { + try { + result = (int)(*arg1)->max_noutput_items(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_set_max_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"m", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:sync_detector_sptr_set_max_noutput_items", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_set_max_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sync_detector_sptr_set_max_noutput_items" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + (*arg1)->set_max_noutput_items(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_unset_max_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_unset_max_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + { + try { + (*arg1)->unset_max_noutput_items(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_is_set_max_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + bool result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_is_set_max_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + { + try { + result = (bool)(*arg1)->is_set_max_noutput_items(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_bool(static_cast< bool >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_set_min_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"m", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:sync_detector_sptr_set_min_noutput_items", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_set_min_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sync_detector_sptr_set_min_noutput_items" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + (*arg1)->set_min_noutput_items(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_min_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_min_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + { + try { + result = (int)(*arg1)->min_noutput_items(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_max_output_buffer(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"i", NULL + }; + long result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:sync_detector_sptr_max_output_buffer", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_max_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sync_detector_sptr_max_output_buffer" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (long)(*arg1)->max_output_buffer(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_long(static_cast< long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_set_max_output_buffer__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + long arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + long val2 ; + int ecode2 = 0 ; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_set_max_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + ecode2 = SWIG_AsVal_long(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sync_detector_sptr_set_max_output_buffer" "', argument " "2"" of type '" "long""'"); + } + arg2 = static_cast< long >(val2); + { + try { + (*arg1)->set_max_output_buffer(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_set_max_output_buffer__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + int arg2 ; + long arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + long val3 ; + int ecode3 = 0 ; + + if ((nobjs < 3) || (nobjs > 3)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_set_max_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sync_detector_sptr_set_max_output_buffer" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_long(swig_obj[2], &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "sync_detector_sptr_set_max_output_buffer" "', argument " "3"" of type '" "long""'"); + } + arg3 = static_cast< long >(val3); + { + try { + (*arg1)->set_max_output_buffer(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_set_max_output_buffer(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[4] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "sync_detector_sptr_set_max_output_buffer", 0, 3, argv))) SWIG_fail; + --argc; + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_long(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_sync_detector_sptr_set_max_output_buffer__SWIG_0(self, argc, argv); + } + } + } + if (argc == 3) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + { + int res = SWIG_AsVal_long(argv[2], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_sync_detector_sptr_set_max_output_buffer__SWIG_1(self, argc, argv); + } + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'sync_detector_sptr_set_max_output_buffer'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::set_max_output_buffer(long)\n" + " gr::block::set_max_output_buffer(int,long)\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_min_output_buffer(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"i", NULL + }; + long result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:sync_detector_sptr_min_output_buffer", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_min_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sync_detector_sptr_min_output_buffer" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (long)(*arg1)->min_output_buffer(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_long(static_cast< long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_set_min_output_buffer__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + long arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + long val2 ; + int ecode2 = 0 ; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_set_min_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + ecode2 = SWIG_AsVal_long(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sync_detector_sptr_set_min_output_buffer" "', argument " "2"" of type '" "long""'"); + } + arg2 = static_cast< long >(val2); + { + try { + (*arg1)->set_min_output_buffer(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_set_min_output_buffer__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + int arg2 ; + long arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + long val3 ; + int ecode3 = 0 ; + + if ((nobjs < 3) || (nobjs > 3)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_set_min_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sync_detector_sptr_set_min_output_buffer" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_long(swig_obj[2], &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "sync_detector_sptr_set_min_output_buffer" "', argument " "3"" of type '" "long""'"); + } + arg3 = static_cast< long >(val3); + { + try { + (*arg1)->set_min_output_buffer(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_set_min_output_buffer(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[4] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "sync_detector_sptr_set_min_output_buffer", 0, 3, argv))) SWIG_fail; + --argc; + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_long(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_sync_detector_sptr_set_min_output_buffer__SWIG_0(self, argc, argv); + } + } + } + if (argc == 3) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + { + int res = SWIG_AsVal_long(argv[2], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_sync_detector_sptr_set_min_output_buffer__SWIG_1(self, argc, argv); + } + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'sync_detector_sptr_set_min_output_buffer'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::set_min_output_buffer(long)\n" + " gr::block::set_min_output_buffer(int,long)\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_pc_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_pc_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + { + try { + result = (float)(*arg1)->pc_noutput_items(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_pc_noutput_items_avg(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_pc_noutput_items_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + { + try { + result = (float)(*arg1)->pc_noutput_items_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_pc_noutput_items_var(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_pc_noutput_items_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + { + try { + result = (float)(*arg1)->pc_noutput_items_var(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_pc_nproduced(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_pc_nproduced" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + { + try { + result = (float)(*arg1)->pc_nproduced(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_pc_nproduced_avg(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_pc_nproduced_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + { + try { + result = (float)(*arg1)->pc_nproduced_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_pc_nproduced_var(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_pc_nproduced_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + { + try { + result = (float)(*arg1)->pc_nproduced_var(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_pc_input_buffers_full__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_pc_input_buffers_full" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sync_detector_sptr_pc_input_buffers_full" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_input_buffers_full(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_pc_input_buffers_full__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_pc_input_buffers_full" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + { + try { + result = (*arg1)->pc_input_buffers_full(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_pc_input_buffers_full(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "sync_detector_sptr_pc_input_buffers_full", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_sync_detector_sptr_pc_input_buffers_full__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_sync_detector_sptr_pc_input_buffers_full__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'sync_detector_sptr_pc_input_buffers_full'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_input_buffers_full(int)\n" + " gr::block::pc_input_buffers_full()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_pc_input_buffers_full_avg__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_pc_input_buffers_full_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sync_detector_sptr_pc_input_buffers_full_avg" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_input_buffers_full_avg(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_pc_input_buffers_full_avg__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_pc_input_buffers_full_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + { + try { + result = (*arg1)->pc_input_buffers_full_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_pc_input_buffers_full_avg(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "sync_detector_sptr_pc_input_buffers_full_avg", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_sync_detector_sptr_pc_input_buffers_full_avg__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_sync_detector_sptr_pc_input_buffers_full_avg__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'sync_detector_sptr_pc_input_buffers_full_avg'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_input_buffers_full_avg(int)\n" + " gr::block::pc_input_buffers_full_avg()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_pc_input_buffers_full_var__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_pc_input_buffers_full_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sync_detector_sptr_pc_input_buffers_full_var" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_input_buffers_full_var(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_pc_input_buffers_full_var__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_pc_input_buffers_full_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + { + try { + result = (*arg1)->pc_input_buffers_full_var(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_pc_input_buffers_full_var(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "sync_detector_sptr_pc_input_buffers_full_var", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_sync_detector_sptr_pc_input_buffers_full_var__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_sync_detector_sptr_pc_input_buffers_full_var__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'sync_detector_sptr_pc_input_buffers_full_var'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_input_buffers_full_var(int)\n" + " gr::block::pc_input_buffers_full_var()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_pc_output_buffers_full__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_pc_output_buffers_full" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sync_detector_sptr_pc_output_buffers_full" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_output_buffers_full(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_pc_output_buffers_full__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_pc_output_buffers_full" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + { + try { + result = (*arg1)->pc_output_buffers_full(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_pc_output_buffers_full(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "sync_detector_sptr_pc_output_buffers_full", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_sync_detector_sptr_pc_output_buffers_full__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_sync_detector_sptr_pc_output_buffers_full__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'sync_detector_sptr_pc_output_buffers_full'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_output_buffers_full(int)\n" + " gr::block::pc_output_buffers_full()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_pc_output_buffers_full_avg__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_pc_output_buffers_full_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sync_detector_sptr_pc_output_buffers_full_avg" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_output_buffers_full_avg(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_pc_output_buffers_full_avg__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_pc_output_buffers_full_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + { + try { + result = (*arg1)->pc_output_buffers_full_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_pc_output_buffers_full_avg(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "sync_detector_sptr_pc_output_buffers_full_avg", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_sync_detector_sptr_pc_output_buffers_full_avg__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_sync_detector_sptr_pc_output_buffers_full_avg__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'sync_detector_sptr_pc_output_buffers_full_avg'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_output_buffers_full_avg(int)\n" + " gr::block::pc_output_buffers_full_avg()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_pc_output_buffers_full_var__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_pc_output_buffers_full_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sync_detector_sptr_pc_output_buffers_full_var" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_output_buffers_full_var(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_pc_output_buffers_full_var__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_pc_output_buffers_full_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + { + try { + result = (*arg1)->pc_output_buffers_full_var(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_pc_output_buffers_full_var(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "sync_detector_sptr_pc_output_buffers_full_var", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_sync_detector_sptr_pc_output_buffers_full_var__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_sync_detector_sptr_pc_output_buffers_full_var__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'sync_detector_sptr_pc_output_buffers_full_var'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_output_buffers_full_var(int)\n" + " gr::block::pc_output_buffers_full_var()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_pc_work_time(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_pc_work_time" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + { + try { + result = (float)(*arg1)->pc_work_time(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_pc_work_time_avg(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_pc_work_time_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + { + try { + result = (float)(*arg1)->pc_work_time_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_pc_work_time_var(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_pc_work_time_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + { + try { + result = (float)(*arg1)->pc_work_time_var(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_pc_work_time_total(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_pc_work_time_total" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + { + try { + result = (float)(*arg1)->pc_work_time_total(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_pc_throughput_avg(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_pc_throughput_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + { + try { + result = (float)(*arg1)->pc_throughput_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_set_processor_affinity(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + std::vector< int,std::allocator< int > > *arg2 = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 = SWIG_OLDOBJ ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"mask", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:sync_detector_sptr_set_processor_affinity", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_set_processor_affinity" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + { + std::vector< int,std::allocator< int > > *ptr = (std::vector< int,std::allocator< int > > *)0; + res2 = swig::asptr(obj1, &ptr); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "sync_detector_sptr_set_processor_affinity" "', argument " "2"" of type '" "std::vector< int,std::allocator< int > > const &""'"); + } + if (!ptr) { + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "sync_detector_sptr_set_processor_affinity" "', argument " "2"" of type '" "std::vector< int,std::allocator< int > > const &""'"); + } + arg2 = ptr; + } + { + try { + (*arg1)->set_processor_affinity((std::vector< int,std::allocator< int > > const &)*arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + if (SWIG_IsNewObj(res2)) delete arg2; + return resultobj; +fail: + if (SWIG_IsNewObj(res2)) delete arg2; + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_unset_processor_affinity(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_unset_processor_affinity" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + { + try { + (*arg1)->unset_processor_affinity(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_processor_affinity(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + std::vector< int,std::allocator< int > > result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_processor_affinity" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + { + try { + result = (*arg1)->processor_affinity(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< int,std::allocator< int > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_active_thread_priority(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_active_thread_priority" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + { + try { + result = (int)(*arg1)->active_thread_priority(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_thread_priority(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_thread_priority" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + { + try { + result = (int)(*arg1)->thread_priority(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_set_thread_priority(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"priority", NULL + }; + int result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:sync_detector_sptr_set_thread_priority", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_set_thread_priority" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sync_detector_sptr_set_thread_priority" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (int)(*arg1)->set_thread_priority(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_name(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + std::string result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_name" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + { + try { + result = (*arg1)->name(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_std_string(static_cast< std::string >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_symbol_name(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + std::string result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_symbol_name" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + { + try { + result = (*arg1)->symbol_name(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_std_string(static_cast< std::string >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_input_signature(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + gr::io_signature::sptr result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_input_signature" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + { + try { + result = (*arg1)->input_signature(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new gr::io_signature::sptr(static_cast< const gr::io_signature::sptr& >(result))), SWIGTYPE_p_boost__shared_ptrT_gr__io_signature_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_output_signature(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + gr::io_signature::sptr result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_output_signature" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + { + try { + result = (*arg1)->output_signature(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new gr::io_signature::sptr(static_cast< const gr::io_signature::sptr& >(result))), SWIGTYPE_p_boost__shared_ptrT_gr__io_signature_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_unique_id(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + long result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_unique_id" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + { + try { + result = (long)(*arg1)->unique_id(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_long(static_cast< long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_to_basic_block(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + gr::basic_block_sptr result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_to_basic_block" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + { + try { + result = (*arg1)->to_basic_block(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new gr::basic_block_sptr(static_cast< const gr::basic_block_sptr& >(result))), SWIGTYPE_p_boost__shared_ptrT_gr__basic_block_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_check_topology(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + int arg2 ; + int arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int val3 ; + int ecode3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"ninputs", (char *)"noutputs", NULL + }; + bool result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOO:sync_detector_sptr_check_topology", kwnames, &obj0, &obj1, &obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_check_topology" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "sync_detector_sptr_check_topology" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_int(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "sync_detector_sptr_check_topology" "', argument " "3"" of type '" "int""'"); + } + arg3 = static_cast< int >(val3); + { + try { + result = (bool)(*arg1)->check_topology(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_bool(static_cast< bool >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_alias(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + std::string result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_alias" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + { + try { + result = (*arg1)->alias(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_std_string(static_cast< std::string >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_set_block_alias(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + std::string arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"name", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:sync_detector_sptr_set_block_alias", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_set_block_alias" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + { + std::string *ptr = (std::string *)0; + int res = SWIG_AsPtr_std_string(obj1, &ptr); + if (!SWIG_IsOK(res) || !ptr) { + SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "sync_detector_sptr_set_block_alias" "', argument " "2"" of type '" "std::string""'"); + } + arg2 = *ptr; + if (SWIG_IsNewObj(res)) delete ptr; + } + { + try { + (*arg1)->set_block_alias(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr__post(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + pmt::pmt_t arg2 ; + pmt::pmt_t arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 ; + int res2 = 0 ; + void *argp3 ; + int res3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"which_port", (char *)"msg", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOO:sync_detector_sptr__post", kwnames, &obj0, &obj1, &obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr__post" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + { + res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, 0 | 0); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "sync_detector_sptr__post" "', argument " "2"" of type '" "pmt::pmt_t""'"); + } + if (!argp2) { + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "sync_detector_sptr__post" "', argument " "2"" of type '" "pmt::pmt_t""'"); + } else { + pmt::pmt_t * temp = reinterpret_cast< pmt::pmt_t * >(argp2); + arg2 = *temp; + if (SWIG_IsNewObj(res2)) delete temp; + } + } + { + res3 = SWIG_ConvertPtr(obj2, &argp3, SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, 0 | 0); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "sync_detector_sptr__post" "', argument " "3"" of type '" "pmt::pmt_t""'"); + } + if (!argp3) { + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "sync_detector_sptr__post" "', argument " "3"" of type '" "pmt::pmt_t""'"); + } else { + pmt::pmt_t * temp = reinterpret_cast< pmt::pmt_t * >(argp3); + arg3 = *temp; + if (SWIG_IsNewObj(res3)) delete temp; + } + } + { + try { + (*arg1)->_post(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_message_ports_in(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + pmt::pmt_t result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_message_ports_in" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + { + try { + result = (*arg1)->message_ports_in(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new pmt::pmt_t(static_cast< const pmt::pmt_t& >(result))), SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_message_ports_out(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + pmt::pmt_t result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_message_ports_out" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + { + try { + result = (*arg1)->message_ports_out(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new pmt::pmt_t(static_cast< const pmt::pmt_t& >(result))), SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_sync_detector_sptr_message_subscribers(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::sync_detector > *arg1 = (boost::shared_ptr< gr::tempest::sync_detector > *) 0 ; + pmt::pmt_t arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"which_port", NULL + }; + pmt::pmt_t result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:sync_detector_sptr_message_subscribers", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sync_detector_sptr_message_subscribers" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::sync_detector > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::sync_detector > * >(argp1); + { + res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, 0 | 0); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "sync_detector_sptr_message_subscribers" "', argument " "2"" of type '" "pmt::pmt_t""'"); + } + if (!argp2) { + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "sync_detector_sptr_message_subscribers" "', argument " "2"" of type '" "pmt::pmt_t""'"); + } else { + pmt::pmt_t * temp = reinterpret_cast< pmt::pmt_t * >(argp2); + arg2 = *temp; + if (SWIG_IsNewObj(res2)) delete temp; + } + } + { + try { + result = (*arg1)->message_subscribers(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new pmt::pmt_t(static_cast< const pmt::pmt_t& >(result))), SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *sync_detector_sptr_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!SWIG_Python_UnpackTuple(args, "swigregister", 1, 1, &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_boost__shared_ptrT_gr__tempest__sync_detector_t, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *sync_detector_sptr_swiginit(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + return SWIG_Python_InitShadowInstance(args); +} + +SWIGINTERN PyObject *_wrap_frame_drop_make(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + int arg1 ; + int arg2 ; + int arg3 ; + float arg4 ; + float arg5 ; + double arg6 ; + int val1 ; + int ecode1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int val3 ; + int ecode3 = 0 ; + float val4 ; + int ecode4 = 0 ; + float val5 ; + int ecode5 = 0 ; + double val6 ; + int ecode6 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + PyObject * obj3 = 0 ; + PyObject * obj4 = 0 ; + PyObject * obj5 = 0 ; + char * kwnames[] = { + (char *)"Htotal", (char *)"Vtotal", (char *)"correct_sampling", (char *)"max_deviation", (char *)"update_proba", (char *)"actual_samp_rate", NULL + }; + gr::tempest::frame_drop::sptr result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOOOOO:frame_drop_make", kwnames, &obj0, &obj1, &obj2, &obj3, &obj4, &obj5)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "frame_drop_make" "', argument " "1"" of type '" "int""'"); + } + arg1 = static_cast< int >(val1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "frame_drop_make" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_int(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "frame_drop_make" "', argument " "3"" of type '" "int""'"); + } + arg3 = static_cast< int >(val3); + ecode4 = SWIG_AsVal_float(obj3, &val4); + if (!SWIG_IsOK(ecode4)) { + SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "frame_drop_make" "', argument " "4"" of type '" "float""'"); + } + arg4 = static_cast< float >(val4); + ecode5 = SWIG_AsVal_float(obj4, &val5); + if (!SWIG_IsOK(ecode5)) { + SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "frame_drop_make" "', argument " "5"" of type '" "float""'"); + } + arg5 = static_cast< float >(val5); + ecode6 = SWIG_AsVal_double(obj5, &val6); + if (!SWIG_IsOK(ecode6)) { + SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "frame_drop_make" "', argument " "6"" of type '" "double""'"); + } + arg6 = static_cast< double >(val6); + { + try { + result = gr::tempest::frame_drop::make(arg1,arg2,arg3,arg4,arg5,arg6); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new gr::tempest::frame_drop::sptr(static_cast< const gr::tempest::frame_drop::sptr& >(result))), SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_frame_drop(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + gr::tempest::frame_drop *arg1 = (gr::tempest::frame_drop *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_gr__tempest__frame_drop, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_frame_drop" "', argument " "1"" of type '" "gr::tempest::frame_drop *""'"); + } + arg1 = reinterpret_cast< gr::tempest::frame_drop * >(argp1); + { + try { + delete arg1; + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *frame_drop_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!SWIG_Python_UnpackTuple(args, "swigregister", 1, 1, &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_gr__tempest__frame_drop, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_new_frame_drop_sptr__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **SWIGUNUSEDPARM(swig_obj)) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *result = 0 ; + + if ((nobjs < 0) || (nobjs > 0)) SWIG_fail; + { + try { + result = (boost::shared_ptr< gr::tempest::frame_drop > *)new boost::shared_ptr< gr::tempest::frame_drop >(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_frame_drop_sptr__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + gr::tempest::frame_drop *arg1 = (gr::tempest::frame_drop *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + boost::shared_ptr< gr::tempest::frame_drop > *result = 0 ; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_gr__tempest__frame_drop, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_frame_drop_sptr" "', argument " "1"" of type '" "gr::tempest::frame_drop *""'"); + } + arg1 = reinterpret_cast< gr::tempest::frame_drop * >(argp1); + { + try { + result = (boost::shared_ptr< gr::tempest::frame_drop > *)new boost::shared_ptr< gr::tempest::frame_drop >(arg1); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_frame_drop_sptr(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[2] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "new_frame_drop_sptr", 0, 1, argv))) SWIG_fail; + --argc; + if (argc == 0) { + return _wrap_new_frame_drop_sptr__SWIG_0(self, argc, argv); + } + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_gr__tempest__frame_drop, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_new_frame_drop_sptr__SWIG_1(self, argc, argv); + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'new_frame_drop_sptr'.\n" + " Possible C/C++ prototypes are:\n" + " boost::shared_ptr< gr::tempest::frame_drop >::shared_ptr()\n" + " boost::shared_ptr< gr::tempest::frame_drop >::shared_ptr(gr::tempest::frame_drop *)\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr___deref__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + gr::tempest::frame_drop *result = 0 ; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr___deref__" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + { + try { + result = (gr::tempest::frame_drop *)(arg1)->operator ->(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_gr__tempest__frame_drop, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_frame_drop_sptr(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_frame_drop_sptr" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + { + try { + delete arg1; + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_make(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + int arg2 ; + int arg3 ; + int arg4 ; + float arg5 ; + float arg6 ; + double arg7 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int val3 ; + int ecode3 = 0 ; + int val4 ; + int ecode4 = 0 ; + float val5 ; + int ecode5 = 0 ; + float val6 ; + int ecode6 = 0 ; + double val7 ; + int ecode7 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + PyObject * obj3 = 0 ; + PyObject * obj4 = 0 ; + PyObject * obj5 = 0 ; + PyObject * obj6 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"Htotal", (char *)"Vtotal", (char *)"correct_sampling", (char *)"max_deviation", (char *)"update_proba", (char *)"actual_samp_rate", NULL + }; + gr::tempest::frame_drop::sptr result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOOOOOO:frame_drop_sptr_make", kwnames, &obj0, &obj1, &obj2, &obj3, &obj4, &obj5, &obj6)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_make" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "frame_drop_sptr_make" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_int(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "frame_drop_sptr_make" "', argument " "3"" of type '" "int""'"); + } + arg3 = static_cast< int >(val3); + ecode4 = SWIG_AsVal_int(obj3, &val4); + if (!SWIG_IsOK(ecode4)) { + SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "frame_drop_sptr_make" "', argument " "4"" of type '" "int""'"); + } + arg4 = static_cast< int >(val4); + ecode5 = SWIG_AsVal_float(obj4, &val5); + if (!SWIG_IsOK(ecode5)) { + SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "frame_drop_sptr_make" "', argument " "5"" of type '" "float""'"); + } + arg5 = static_cast< float >(val5); + ecode6 = SWIG_AsVal_float(obj5, &val6); + if (!SWIG_IsOK(ecode6)) { + SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "frame_drop_sptr_make" "', argument " "6"" of type '" "float""'"); + } + arg6 = static_cast< float >(val6); + ecode7 = SWIG_AsVal_double(obj6, &val7); + if (!SWIG_IsOK(ecode7)) { + SWIG_exception_fail(SWIG_ArgError(ecode7), "in method '" "frame_drop_sptr_make" "', argument " "7"" of type '" "double""'"); + } + arg7 = static_cast< double >(val7); + { + try { + result = (*arg1)->make(arg2,arg3,arg4,arg5,arg6,arg7); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new gr::tempest::frame_drop::sptr(static_cast< const gr::tempest::frame_drop::sptr& >(result))), SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_history(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + unsigned int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_history" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + { + try { + result = (unsigned int)(*arg1)->history(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_int(static_cast< unsigned int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_declare_sample_delay__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + int arg2 ; + int arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int val3 ; + int ecode3 = 0 ; + + if ((nobjs < 3) || (nobjs > 3)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_declare_sample_delay" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "frame_drop_sptr_declare_sample_delay" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_int(swig_obj[2], &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "frame_drop_sptr_declare_sample_delay" "', argument " "3"" of type '" "int""'"); + } + arg3 = static_cast< int >(val3); + { + try { + (*arg1)->declare_sample_delay(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_declare_sample_delay__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + unsigned int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + unsigned int val2 ; + int ecode2 = 0 ; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_declare_sample_delay" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + ecode2 = SWIG_AsVal_unsigned_SS_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "frame_drop_sptr_declare_sample_delay" "', argument " "2"" of type '" "unsigned int""'"); + } + arg2 = static_cast< unsigned int >(val2); + { + try { + (*arg1)->declare_sample_delay(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_declare_sample_delay(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[4] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "frame_drop_sptr_declare_sample_delay", 0, 3, argv))) SWIG_fail; + --argc; + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_unsigned_SS_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_frame_drop_sptr_declare_sample_delay__SWIG_1(self, argc, argv); + } + } + } + if (argc == 3) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + { + int res = SWIG_AsVal_int(argv[2], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_frame_drop_sptr_declare_sample_delay__SWIG_0(self, argc, argv); + } + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'frame_drop_sptr_declare_sample_delay'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::declare_sample_delay(int,int)\n" + " gr::block::declare_sample_delay(unsigned int)\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_sample_delay(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"which", NULL + }; + unsigned int result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:frame_drop_sptr_sample_delay", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_sample_delay" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "frame_drop_sptr_sample_delay" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (unsigned int)(*arg1)->sample_delay(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_int(static_cast< unsigned int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_set_output_multiple(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"multiple", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:frame_drop_sptr_set_output_multiple", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_set_output_multiple" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "frame_drop_sptr_set_output_multiple" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + (*arg1)->set_output_multiple(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_output_multiple(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_output_multiple" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + { + try { + result = (int)(*arg1)->output_multiple(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_relative_rate(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + double result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_relative_rate" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + { + try { + result = (double)(*arg1)->relative_rate(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_double(static_cast< double >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_relative_rate_i(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + uint64_t result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_relative_rate_i" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + { + try { + result = (uint64_t)(*arg1)->relative_rate_i(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_long_SS_long(static_cast< unsigned long long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_relative_rate_d(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + uint64_t result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_relative_rate_d" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + { + try { + result = (uint64_t)(*arg1)->relative_rate_d(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_long_SS_long(static_cast< unsigned long long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_start(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + bool result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_start" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + { + try { + result = (bool)(*arg1)->start(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_bool(static_cast< bool >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_stop(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + bool result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_stop" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + { + try { + result = (bool)(*arg1)->stop(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_bool(static_cast< bool >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_nitems_read(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + unsigned int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + unsigned int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"which_input", NULL + }; + uint64_t result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:frame_drop_sptr_nitems_read", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_nitems_read" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + ecode2 = SWIG_AsVal_unsigned_SS_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "frame_drop_sptr_nitems_read" "', argument " "2"" of type '" "unsigned int""'"); + } + arg2 = static_cast< unsigned int >(val2); + { + try { + result = (uint64_t)(*arg1)->nitems_read(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_long_SS_long(static_cast< unsigned long long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_nitems_written(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + unsigned int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + unsigned int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"which_output", NULL + }; + uint64_t result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:frame_drop_sptr_nitems_written", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_nitems_written" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + ecode2 = SWIG_AsVal_unsigned_SS_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "frame_drop_sptr_nitems_written" "', argument " "2"" of type '" "unsigned int""'"); + } + arg2 = static_cast< unsigned int >(val2); + { + try { + result = (uint64_t)(*arg1)->nitems_written(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_long_SS_long(static_cast< unsigned long long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_set_log_level(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + std::string arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"level", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:frame_drop_sptr_set_log_level", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_set_log_level" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + { + std::string *ptr = (std::string *)0; + int res = SWIG_AsPtr_std_string(obj1, &ptr); + if (!SWIG_IsOK(res) || !ptr) { + SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "frame_drop_sptr_set_log_level" "', argument " "2"" of type '" "std::string""'"); + } + arg2 = *ptr; + if (SWIG_IsNewObj(res)) delete ptr; + } + { + try { + (*arg1)->set_log_level(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_log_level(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + std::string result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_log_level" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + { + try { + result = (*arg1)->log_level(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_std_string(static_cast< std::string >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_max_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_max_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + { + try { + result = (int)(*arg1)->max_noutput_items(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_set_max_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"m", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:frame_drop_sptr_set_max_noutput_items", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_set_max_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "frame_drop_sptr_set_max_noutput_items" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + (*arg1)->set_max_noutput_items(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_unset_max_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_unset_max_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + { + try { + (*arg1)->unset_max_noutput_items(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_is_set_max_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + bool result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_is_set_max_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + { + try { + result = (bool)(*arg1)->is_set_max_noutput_items(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_bool(static_cast< bool >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_set_min_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"m", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:frame_drop_sptr_set_min_noutput_items", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_set_min_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "frame_drop_sptr_set_min_noutput_items" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + (*arg1)->set_min_noutput_items(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_min_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_min_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + { + try { + result = (int)(*arg1)->min_noutput_items(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_max_output_buffer(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"i", NULL + }; + long result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:frame_drop_sptr_max_output_buffer", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_max_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "frame_drop_sptr_max_output_buffer" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (long)(*arg1)->max_output_buffer(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_long(static_cast< long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_set_max_output_buffer__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + long arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + long val2 ; + int ecode2 = 0 ; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_set_max_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + ecode2 = SWIG_AsVal_long(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "frame_drop_sptr_set_max_output_buffer" "', argument " "2"" of type '" "long""'"); + } + arg2 = static_cast< long >(val2); + { + try { + (*arg1)->set_max_output_buffer(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_set_max_output_buffer__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + int arg2 ; + long arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + long val3 ; + int ecode3 = 0 ; + + if ((nobjs < 3) || (nobjs > 3)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_set_max_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "frame_drop_sptr_set_max_output_buffer" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_long(swig_obj[2], &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "frame_drop_sptr_set_max_output_buffer" "', argument " "3"" of type '" "long""'"); + } + arg3 = static_cast< long >(val3); + { + try { + (*arg1)->set_max_output_buffer(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_set_max_output_buffer(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[4] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "frame_drop_sptr_set_max_output_buffer", 0, 3, argv))) SWIG_fail; + --argc; + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_long(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_frame_drop_sptr_set_max_output_buffer__SWIG_0(self, argc, argv); + } + } + } + if (argc == 3) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + { + int res = SWIG_AsVal_long(argv[2], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_frame_drop_sptr_set_max_output_buffer__SWIG_1(self, argc, argv); + } + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'frame_drop_sptr_set_max_output_buffer'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::set_max_output_buffer(long)\n" + " gr::block::set_max_output_buffer(int,long)\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_min_output_buffer(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"i", NULL + }; + long result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:frame_drop_sptr_min_output_buffer", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_min_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "frame_drop_sptr_min_output_buffer" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (long)(*arg1)->min_output_buffer(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_long(static_cast< long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_set_min_output_buffer__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + long arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + long val2 ; + int ecode2 = 0 ; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_set_min_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + ecode2 = SWIG_AsVal_long(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "frame_drop_sptr_set_min_output_buffer" "', argument " "2"" of type '" "long""'"); + } + arg2 = static_cast< long >(val2); + { + try { + (*arg1)->set_min_output_buffer(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_set_min_output_buffer__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + int arg2 ; + long arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + long val3 ; + int ecode3 = 0 ; + + if ((nobjs < 3) || (nobjs > 3)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_set_min_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "frame_drop_sptr_set_min_output_buffer" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_long(swig_obj[2], &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "frame_drop_sptr_set_min_output_buffer" "', argument " "3"" of type '" "long""'"); + } + arg3 = static_cast< long >(val3); + { + try { + (*arg1)->set_min_output_buffer(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_set_min_output_buffer(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[4] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "frame_drop_sptr_set_min_output_buffer", 0, 3, argv))) SWIG_fail; + --argc; + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_long(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_frame_drop_sptr_set_min_output_buffer__SWIG_0(self, argc, argv); + } + } + } + if (argc == 3) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + { + int res = SWIG_AsVal_long(argv[2], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_frame_drop_sptr_set_min_output_buffer__SWIG_1(self, argc, argv); + } + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'frame_drop_sptr_set_min_output_buffer'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::set_min_output_buffer(long)\n" + " gr::block::set_min_output_buffer(int,long)\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_pc_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_pc_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + { + try { + result = (float)(*arg1)->pc_noutput_items(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_pc_noutput_items_avg(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_pc_noutput_items_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + { + try { + result = (float)(*arg1)->pc_noutput_items_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_pc_noutput_items_var(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_pc_noutput_items_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + { + try { + result = (float)(*arg1)->pc_noutput_items_var(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_pc_nproduced(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_pc_nproduced" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + { + try { + result = (float)(*arg1)->pc_nproduced(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_pc_nproduced_avg(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_pc_nproduced_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + { + try { + result = (float)(*arg1)->pc_nproduced_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_pc_nproduced_var(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_pc_nproduced_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + { + try { + result = (float)(*arg1)->pc_nproduced_var(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_pc_input_buffers_full__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_pc_input_buffers_full" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "frame_drop_sptr_pc_input_buffers_full" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_input_buffers_full(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_pc_input_buffers_full__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_pc_input_buffers_full" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + { + try { + result = (*arg1)->pc_input_buffers_full(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_pc_input_buffers_full(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "frame_drop_sptr_pc_input_buffers_full", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_frame_drop_sptr_pc_input_buffers_full__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_frame_drop_sptr_pc_input_buffers_full__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'frame_drop_sptr_pc_input_buffers_full'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_input_buffers_full(int)\n" + " gr::block::pc_input_buffers_full()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_pc_input_buffers_full_avg__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_pc_input_buffers_full_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "frame_drop_sptr_pc_input_buffers_full_avg" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_input_buffers_full_avg(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_pc_input_buffers_full_avg__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_pc_input_buffers_full_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + { + try { + result = (*arg1)->pc_input_buffers_full_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_pc_input_buffers_full_avg(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "frame_drop_sptr_pc_input_buffers_full_avg", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_frame_drop_sptr_pc_input_buffers_full_avg__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_frame_drop_sptr_pc_input_buffers_full_avg__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'frame_drop_sptr_pc_input_buffers_full_avg'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_input_buffers_full_avg(int)\n" + " gr::block::pc_input_buffers_full_avg()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_pc_input_buffers_full_var__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_pc_input_buffers_full_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "frame_drop_sptr_pc_input_buffers_full_var" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_input_buffers_full_var(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_pc_input_buffers_full_var__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_pc_input_buffers_full_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + { + try { + result = (*arg1)->pc_input_buffers_full_var(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_pc_input_buffers_full_var(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "frame_drop_sptr_pc_input_buffers_full_var", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_frame_drop_sptr_pc_input_buffers_full_var__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_frame_drop_sptr_pc_input_buffers_full_var__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'frame_drop_sptr_pc_input_buffers_full_var'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_input_buffers_full_var(int)\n" + " gr::block::pc_input_buffers_full_var()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_pc_output_buffers_full__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_pc_output_buffers_full" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "frame_drop_sptr_pc_output_buffers_full" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_output_buffers_full(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_pc_output_buffers_full__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_pc_output_buffers_full" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + { + try { + result = (*arg1)->pc_output_buffers_full(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_pc_output_buffers_full(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "frame_drop_sptr_pc_output_buffers_full", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_frame_drop_sptr_pc_output_buffers_full__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_frame_drop_sptr_pc_output_buffers_full__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'frame_drop_sptr_pc_output_buffers_full'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_output_buffers_full(int)\n" + " gr::block::pc_output_buffers_full()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_pc_output_buffers_full_avg__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_pc_output_buffers_full_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "frame_drop_sptr_pc_output_buffers_full_avg" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_output_buffers_full_avg(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_pc_output_buffers_full_avg__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_pc_output_buffers_full_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + { + try { + result = (*arg1)->pc_output_buffers_full_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_pc_output_buffers_full_avg(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "frame_drop_sptr_pc_output_buffers_full_avg", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_frame_drop_sptr_pc_output_buffers_full_avg__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_frame_drop_sptr_pc_output_buffers_full_avg__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'frame_drop_sptr_pc_output_buffers_full_avg'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_output_buffers_full_avg(int)\n" + " gr::block::pc_output_buffers_full_avg()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_pc_output_buffers_full_var__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_pc_output_buffers_full_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "frame_drop_sptr_pc_output_buffers_full_var" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_output_buffers_full_var(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_pc_output_buffers_full_var__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_pc_output_buffers_full_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + { + try { + result = (*arg1)->pc_output_buffers_full_var(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_pc_output_buffers_full_var(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "frame_drop_sptr_pc_output_buffers_full_var", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_frame_drop_sptr_pc_output_buffers_full_var__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_frame_drop_sptr_pc_output_buffers_full_var__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'frame_drop_sptr_pc_output_buffers_full_var'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_output_buffers_full_var(int)\n" + " gr::block::pc_output_buffers_full_var()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_pc_work_time(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_pc_work_time" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + { + try { + result = (float)(*arg1)->pc_work_time(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_pc_work_time_avg(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_pc_work_time_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + { + try { + result = (float)(*arg1)->pc_work_time_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_pc_work_time_var(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_pc_work_time_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + { + try { + result = (float)(*arg1)->pc_work_time_var(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_pc_work_time_total(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_pc_work_time_total" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + { + try { + result = (float)(*arg1)->pc_work_time_total(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_pc_throughput_avg(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_pc_throughput_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + { + try { + result = (float)(*arg1)->pc_throughput_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_set_processor_affinity(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + std::vector< int,std::allocator< int > > *arg2 = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 = SWIG_OLDOBJ ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"mask", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:frame_drop_sptr_set_processor_affinity", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_set_processor_affinity" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + { + std::vector< int,std::allocator< int > > *ptr = (std::vector< int,std::allocator< int > > *)0; + res2 = swig::asptr(obj1, &ptr); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "frame_drop_sptr_set_processor_affinity" "', argument " "2"" of type '" "std::vector< int,std::allocator< int > > const &""'"); + } + if (!ptr) { + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "frame_drop_sptr_set_processor_affinity" "', argument " "2"" of type '" "std::vector< int,std::allocator< int > > const &""'"); + } + arg2 = ptr; + } + { + try { + (*arg1)->set_processor_affinity((std::vector< int,std::allocator< int > > const &)*arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + if (SWIG_IsNewObj(res2)) delete arg2; + return resultobj; +fail: + if (SWIG_IsNewObj(res2)) delete arg2; + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_unset_processor_affinity(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_unset_processor_affinity" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + { + try { + (*arg1)->unset_processor_affinity(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_processor_affinity(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + std::vector< int,std::allocator< int > > result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_processor_affinity" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + { + try { + result = (*arg1)->processor_affinity(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< int,std::allocator< int > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_active_thread_priority(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_active_thread_priority" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + { + try { + result = (int)(*arg1)->active_thread_priority(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_thread_priority(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_thread_priority" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + { + try { + result = (int)(*arg1)->thread_priority(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_set_thread_priority(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"priority", NULL + }; + int result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:frame_drop_sptr_set_thread_priority", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_set_thread_priority" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "frame_drop_sptr_set_thread_priority" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (int)(*arg1)->set_thread_priority(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_name(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + std::string result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_name" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + { + try { + result = (*arg1)->name(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_std_string(static_cast< std::string >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_symbol_name(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + std::string result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_symbol_name" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + { + try { + result = (*arg1)->symbol_name(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_std_string(static_cast< std::string >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_input_signature(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + gr::io_signature::sptr result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_input_signature" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + { + try { + result = (*arg1)->input_signature(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new gr::io_signature::sptr(static_cast< const gr::io_signature::sptr& >(result))), SWIGTYPE_p_boost__shared_ptrT_gr__io_signature_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_output_signature(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + gr::io_signature::sptr result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_output_signature" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + { + try { + result = (*arg1)->output_signature(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new gr::io_signature::sptr(static_cast< const gr::io_signature::sptr& >(result))), SWIGTYPE_p_boost__shared_ptrT_gr__io_signature_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_unique_id(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + long result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_unique_id" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + { + try { + result = (long)(*arg1)->unique_id(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_long(static_cast< long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_to_basic_block(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + gr::basic_block_sptr result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_to_basic_block" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + { + try { + result = (*arg1)->to_basic_block(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new gr::basic_block_sptr(static_cast< const gr::basic_block_sptr& >(result))), SWIGTYPE_p_boost__shared_ptrT_gr__basic_block_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_check_topology(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + int arg2 ; + int arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int val3 ; + int ecode3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"ninputs", (char *)"noutputs", NULL + }; + bool result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOO:frame_drop_sptr_check_topology", kwnames, &obj0, &obj1, &obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_check_topology" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "frame_drop_sptr_check_topology" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_int(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "frame_drop_sptr_check_topology" "', argument " "3"" of type '" "int""'"); + } + arg3 = static_cast< int >(val3); + { + try { + result = (bool)(*arg1)->check_topology(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_bool(static_cast< bool >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_alias(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + std::string result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_alias" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + { + try { + result = (*arg1)->alias(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_std_string(static_cast< std::string >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_set_block_alias(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + std::string arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"name", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:frame_drop_sptr_set_block_alias", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_set_block_alias" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + { + std::string *ptr = (std::string *)0; + int res = SWIG_AsPtr_std_string(obj1, &ptr); + if (!SWIG_IsOK(res) || !ptr) { + SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "frame_drop_sptr_set_block_alias" "', argument " "2"" of type '" "std::string""'"); + } + arg2 = *ptr; + if (SWIG_IsNewObj(res)) delete ptr; + } + { + try { + (*arg1)->set_block_alias(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr__post(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + pmt::pmt_t arg2 ; + pmt::pmt_t arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 ; + int res2 = 0 ; + void *argp3 ; + int res3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"which_port", (char *)"msg", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOO:frame_drop_sptr__post", kwnames, &obj0, &obj1, &obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr__post" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + { + res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, 0 | 0); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "frame_drop_sptr__post" "', argument " "2"" of type '" "pmt::pmt_t""'"); + } + if (!argp2) { + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "frame_drop_sptr__post" "', argument " "2"" of type '" "pmt::pmt_t""'"); + } else { + pmt::pmt_t * temp = reinterpret_cast< pmt::pmt_t * >(argp2); + arg2 = *temp; + if (SWIG_IsNewObj(res2)) delete temp; + } + } + { + res3 = SWIG_ConvertPtr(obj2, &argp3, SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, 0 | 0); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "frame_drop_sptr__post" "', argument " "3"" of type '" "pmt::pmt_t""'"); + } + if (!argp3) { + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "frame_drop_sptr__post" "', argument " "3"" of type '" "pmt::pmt_t""'"); + } else { + pmt::pmt_t * temp = reinterpret_cast< pmt::pmt_t * >(argp3); + arg3 = *temp; + if (SWIG_IsNewObj(res3)) delete temp; + } + } + { + try { + (*arg1)->_post(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_message_ports_in(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + pmt::pmt_t result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_message_ports_in" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + { + try { + result = (*arg1)->message_ports_in(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new pmt::pmt_t(static_cast< const pmt::pmt_t& >(result))), SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_message_ports_out(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + pmt::pmt_t result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_message_ports_out" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + { + try { + result = (*arg1)->message_ports_out(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new pmt::pmt_t(static_cast< const pmt::pmt_t& >(result))), SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_frame_drop_sptr_message_subscribers(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::frame_drop > *arg1 = (boost::shared_ptr< gr::tempest::frame_drop > *) 0 ; + pmt::pmt_t arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"which_port", NULL + }; + pmt::pmt_t result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:frame_drop_sptr_message_subscribers", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "frame_drop_sptr_message_subscribers" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::frame_drop > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::frame_drop > * >(argp1); + { + res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, 0 | 0); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "frame_drop_sptr_message_subscribers" "', argument " "2"" of type '" "pmt::pmt_t""'"); + } + if (!argp2) { + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "frame_drop_sptr_message_subscribers" "', argument " "2"" of type '" "pmt::pmt_t""'"); + } else { + pmt::pmt_t * temp = reinterpret_cast< pmt::pmt_t * >(argp2); + arg2 = *temp; + if (SWIG_IsNewObj(res2)) delete temp; + } + } + { + try { + result = (*arg1)->message_subscribers(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new pmt::pmt_t(static_cast< const pmt::pmt_t& >(result))), SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *frame_drop_sptr_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!SWIG_Python_UnpackTuple(args, "swigregister", 1, 1, &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_boost__shared_ptrT_gr__tempest__frame_drop_t, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *frame_drop_sptr_swiginit(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + return SWIG_Python_InitShadowInstance(args); +} + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_make(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + int arg1 ; + int arg2 ; + int arg3 ; + int arg4 ; + int arg5 ; + bool arg6 ; + int val1 ; + int ecode1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int val3 ; + int ecode3 = 0 ; + int val4 ; + int ecode4 = 0 ; + int val5 ; + int ecode5 = 0 ; + bool val6 ; + int ecode6 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + PyObject * obj3 = 0 ; + PyObject * obj4 = 0 ; + PyObject * obj5 = 0 ; + char * kwnames[] = { + (char *)"sample_rate", (char *)"size", (char *)"refresh_rate", (char *)"Vvisible", (char *)"Hvisible", (char *)"automatic_mode", NULL + }; + gr::tempest::fft_peak_fine_sampling_sync::sptr result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOOOOO:fft_peak_fine_sampling_sync_make", kwnames, &obj0, &obj1, &obj2, &obj3, &obj4, &obj5)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "fft_peak_fine_sampling_sync_make" "', argument " "1"" of type '" "int""'"); + } + arg1 = static_cast< int >(val1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "fft_peak_fine_sampling_sync_make" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_int(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "fft_peak_fine_sampling_sync_make" "', argument " "3"" of type '" "int""'"); + } + arg3 = static_cast< int >(val3); + ecode4 = SWIG_AsVal_int(obj3, &val4); + if (!SWIG_IsOK(ecode4)) { + SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "fft_peak_fine_sampling_sync_make" "', argument " "4"" of type '" "int""'"); + } + arg4 = static_cast< int >(val4); + ecode5 = SWIG_AsVal_int(obj4, &val5); + if (!SWIG_IsOK(ecode5)) { + SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "fft_peak_fine_sampling_sync_make" "', argument " "5"" of type '" "int""'"); + } + arg5 = static_cast< int >(val5); + ecode6 = SWIG_AsVal_bool(obj5, &val6); + if (!SWIG_IsOK(ecode6)) { + SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "fft_peak_fine_sampling_sync_make" "', argument " "6"" of type '" "bool""'"); + } + arg6 = static_cast< bool >(val6); + { + try { + result = gr::tempest::fft_peak_fine_sampling_sync::make(arg1,arg2,arg3,arg4,arg5,arg6); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new gr::tempest::fft_peak_fine_sampling_sync::sptr(static_cast< const gr::tempest::fft_peak_fine_sampling_sync::sptr& >(result))), SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_fft_peak_fine_sampling_sync(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + gr::tempest::fft_peak_fine_sampling_sync *arg1 = (gr::tempest::fft_peak_fine_sampling_sync *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_gr__tempest__fft_peak_fine_sampling_sync, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_fft_peak_fine_sampling_sync" "', argument " "1"" of type '" "gr::tempest::fft_peak_fine_sampling_sync *""'"); + } + arg1 = reinterpret_cast< gr::tempest::fft_peak_fine_sampling_sync * >(argp1); + { + try { + delete arg1; + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *fft_peak_fine_sampling_sync_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!SWIG_Python_UnpackTuple(args, "swigregister", 1, 1, &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_gr__tempest__fft_peak_fine_sampling_sync, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_new_fft_peak_fine_sampling_sync_sptr__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **SWIGUNUSEDPARM(swig_obj)) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *result = 0 ; + + if ((nobjs < 0) || (nobjs > 0)) SWIG_fail; + { + try { + result = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *)new boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync >(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_fft_peak_fine_sampling_sync_sptr__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + gr::tempest::fft_peak_fine_sampling_sync *arg1 = (gr::tempest::fft_peak_fine_sampling_sync *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *result = 0 ; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_gr__tempest__fft_peak_fine_sampling_sync, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_fft_peak_fine_sampling_sync_sptr" "', argument " "1"" of type '" "gr::tempest::fft_peak_fine_sampling_sync *""'"); + } + arg1 = reinterpret_cast< gr::tempest::fft_peak_fine_sampling_sync * >(argp1); + { + try { + result = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *)new boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync >(arg1); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_fft_peak_fine_sampling_sync_sptr(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[2] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "new_fft_peak_fine_sampling_sync_sptr", 0, 1, argv))) SWIG_fail; + --argc; + if (argc == 0) { + return _wrap_new_fft_peak_fine_sampling_sync_sptr__SWIG_0(self, argc, argv); + } + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_gr__tempest__fft_peak_fine_sampling_sync, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_new_fft_peak_fine_sampling_sync_sptr__SWIG_1(self, argc, argv); + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'new_fft_peak_fine_sampling_sync_sptr'.\n" + " Possible C/C++ prototypes are:\n" + " boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync >::shared_ptr()\n" + " boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync >::shared_ptr(gr::tempest::fft_peak_fine_sampling_sync *)\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr___deref__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + gr::tempest::fft_peak_fine_sampling_sync *result = 0 ; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr___deref__" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + { + try { + result = (gr::tempest::fft_peak_fine_sampling_sync *)(arg1)->operator ->(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_gr__tempest__fft_peak_fine_sampling_sync, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_fft_peak_fine_sampling_sync_sptr(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_fft_peak_fine_sampling_sync_sptr" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + { + try { + delete arg1; + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_make(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + int arg2 ; + int arg3 ; + int arg4 ; + int arg5 ; + int arg6 ; + bool arg7 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int val3 ; + int ecode3 = 0 ; + int val4 ; + int ecode4 = 0 ; + int val5 ; + int ecode5 = 0 ; + int val6 ; + int ecode6 = 0 ; + bool val7 ; + int ecode7 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + PyObject * obj3 = 0 ; + PyObject * obj4 = 0 ; + PyObject * obj5 = 0 ; + PyObject * obj6 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"sample_rate", (char *)"size", (char *)"refresh_rate", (char *)"Vvisible", (char *)"Hvisible", (char *)"automatic_mode", NULL + }; + gr::tempest::fft_peak_fine_sampling_sync::sptr result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOOOOOO:fft_peak_fine_sampling_sync_sptr_make", kwnames, &obj0, &obj1, &obj2, &obj3, &obj4, &obj5, &obj6)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_make" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "fft_peak_fine_sampling_sync_sptr_make" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_int(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "fft_peak_fine_sampling_sync_sptr_make" "', argument " "3"" of type '" "int""'"); + } + arg3 = static_cast< int >(val3); + ecode4 = SWIG_AsVal_int(obj3, &val4); + if (!SWIG_IsOK(ecode4)) { + SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "fft_peak_fine_sampling_sync_sptr_make" "', argument " "4"" of type '" "int""'"); + } + arg4 = static_cast< int >(val4); + ecode5 = SWIG_AsVal_int(obj4, &val5); + if (!SWIG_IsOK(ecode5)) { + SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "fft_peak_fine_sampling_sync_sptr_make" "', argument " "5"" of type '" "int""'"); + } + arg5 = static_cast< int >(val5); + ecode6 = SWIG_AsVal_int(obj5, &val6); + if (!SWIG_IsOK(ecode6)) { + SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "fft_peak_fine_sampling_sync_sptr_make" "', argument " "6"" of type '" "int""'"); + } + arg6 = static_cast< int >(val6); + ecode7 = SWIG_AsVal_bool(obj6, &val7); + if (!SWIG_IsOK(ecode7)) { + SWIG_exception_fail(SWIG_ArgError(ecode7), "in method '" "fft_peak_fine_sampling_sync_sptr_make" "', argument " "7"" of type '" "bool""'"); + } + arg7 = static_cast< bool >(val7); + { + try { + result = (*arg1)->make(arg2,arg3,arg4,arg5,arg6,arg7); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new gr::tempest::fft_peak_fine_sampling_sync::sptr(static_cast< const gr::tempest::fft_peak_fine_sampling_sync::sptr& >(result))), SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_history(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + unsigned int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_history" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + { + try { + result = (unsigned int)(*arg1)->history(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_int(static_cast< unsigned int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_declare_sample_delay__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + int arg2 ; + int arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int val3 ; + int ecode3 = 0 ; + + if ((nobjs < 3) || (nobjs > 3)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_declare_sample_delay" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "fft_peak_fine_sampling_sync_sptr_declare_sample_delay" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_int(swig_obj[2], &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "fft_peak_fine_sampling_sync_sptr_declare_sample_delay" "', argument " "3"" of type '" "int""'"); + } + arg3 = static_cast< int >(val3); + { + try { + (*arg1)->declare_sample_delay(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_declare_sample_delay__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + unsigned int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + unsigned int val2 ; + int ecode2 = 0 ; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_declare_sample_delay" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + ecode2 = SWIG_AsVal_unsigned_SS_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "fft_peak_fine_sampling_sync_sptr_declare_sample_delay" "', argument " "2"" of type '" "unsigned int""'"); + } + arg2 = static_cast< unsigned int >(val2); + { + try { + (*arg1)->declare_sample_delay(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_declare_sample_delay(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[4] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "fft_peak_fine_sampling_sync_sptr_declare_sample_delay", 0, 3, argv))) SWIG_fail; + --argc; + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_unsigned_SS_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_fft_peak_fine_sampling_sync_sptr_declare_sample_delay__SWIG_1(self, argc, argv); + } + } + } + if (argc == 3) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + { + int res = SWIG_AsVal_int(argv[2], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_fft_peak_fine_sampling_sync_sptr_declare_sample_delay__SWIG_0(self, argc, argv); + } + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'fft_peak_fine_sampling_sync_sptr_declare_sample_delay'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::declare_sample_delay(int,int)\n" + " gr::block::declare_sample_delay(unsigned int)\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_sample_delay(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"which", NULL + }; + unsigned int result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:fft_peak_fine_sampling_sync_sptr_sample_delay", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_sample_delay" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "fft_peak_fine_sampling_sync_sptr_sample_delay" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (unsigned int)(*arg1)->sample_delay(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_int(static_cast< unsigned int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_set_output_multiple(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"multiple", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:fft_peak_fine_sampling_sync_sptr_set_output_multiple", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_set_output_multiple" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "fft_peak_fine_sampling_sync_sptr_set_output_multiple" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + (*arg1)->set_output_multiple(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_output_multiple(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_output_multiple" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + { + try { + result = (int)(*arg1)->output_multiple(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_relative_rate(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + double result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_relative_rate" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + { + try { + result = (double)(*arg1)->relative_rate(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_double(static_cast< double >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_relative_rate_i(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + uint64_t result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_relative_rate_i" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + { + try { + result = (uint64_t)(*arg1)->relative_rate_i(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_long_SS_long(static_cast< unsigned long long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_relative_rate_d(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + uint64_t result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_relative_rate_d" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + { + try { + result = (uint64_t)(*arg1)->relative_rate_d(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_long_SS_long(static_cast< unsigned long long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_start(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + bool result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_start" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + { + try { + result = (bool)(*arg1)->start(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_bool(static_cast< bool >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_stop(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + bool result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_stop" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + { + try { + result = (bool)(*arg1)->stop(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_bool(static_cast< bool >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_nitems_read(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + unsigned int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + unsigned int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"which_input", NULL + }; + uint64_t result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:fft_peak_fine_sampling_sync_sptr_nitems_read", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_nitems_read" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + ecode2 = SWIG_AsVal_unsigned_SS_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "fft_peak_fine_sampling_sync_sptr_nitems_read" "', argument " "2"" of type '" "unsigned int""'"); + } + arg2 = static_cast< unsigned int >(val2); + { + try { + result = (uint64_t)(*arg1)->nitems_read(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_long_SS_long(static_cast< unsigned long long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_nitems_written(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + unsigned int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + unsigned int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"which_output", NULL + }; + uint64_t result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:fft_peak_fine_sampling_sync_sptr_nitems_written", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_nitems_written" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + ecode2 = SWIG_AsVal_unsigned_SS_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "fft_peak_fine_sampling_sync_sptr_nitems_written" "', argument " "2"" of type '" "unsigned int""'"); + } + arg2 = static_cast< unsigned int >(val2); + { + try { + result = (uint64_t)(*arg1)->nitems_written(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_long_SS_long(static_cast< unsigned long long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_set_log_level(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + std::string arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"level", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:fft_peak_fine_sampling_sync_sptr_set_log_level", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_set_log_level" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + { + std::string *ptr = (std::string *)0; + int res = SWIG_AsPtr_std_string(obj1, &ptr); + if (!SWIG_IsOK(res) || !ptr) { + SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "fft_peak_fine_sampling_sync_sptr_set_log_level" "', argument " "2"" of type '" "std::string""'"); + } + arg2 = *ptr; + if (SWIG_IsNewObj(res)) delete ptr; + } + { + try { + (*arg1)->set_log_level(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_log_level(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + std::string result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_log_level" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + { + try { + result = (*arg1)->log_level(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_std_string(static_cast< std::string >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_max_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_max_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + { + try { + result = (int)(*arg1)->max_noutput_items(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_set_max_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"m", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:fft_peak_fine_sampling_sync_sptr_set_max_noutput_items", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_set_max_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "fft_peak_fine_sampling_sync_sptr_set_max_noutput_items" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + (*arg1)->set_max_noutput_items(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_unset_max_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_unset_max_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + { + try { + (*arg1)->unset_max_noutput_items(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_is_set_max_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + bool result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_is_set_max_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + { + try { + result = (bool)(*arg1)->is_set_max_noutput_items(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_bool(static_cast< bool >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_set_min_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"m", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:fft_peak_fine_sampling_sync_sptr_set_min_noutput_items", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_set_min_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "fft_peak_fine_sampling_sync_sptr_set_min_noutput_items" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + (*arg1)->set_min_noutput_items(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_min_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_min_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + { + try { + result = (int)(*arg1)->min_noutput_items(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_max_output_buffer(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"i", NULL + }; + long result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:fft_peak_fine_sampling_sync_sptr_max_output_buffer", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_max_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "fft_peak_fine_sampling_sync_sptr_max_output_buffer" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (long)(*arg1)->max_output_buffer(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_long(static_cast< long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_set_max_output_buffer__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + long arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + long val2 ; + int ecode2 = 0 ; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_set_max_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + ecode2 = SWIG_AsVal_long(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "fft_peak_fine_sampling_sync_sptr_set_max_output_buffer" "', argument " "2"" of type '" "long""'"); + } + arg2 = static_cast< long >(val2); + { + try { + (*arg1)->set_max_output_buffer(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_set_max_output_buffer__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + int arg2 ; + long arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + long val3 ; + int ecode3 = 0 ; + + if ((nobjs < 3) || (nobjs > 3)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_set_max_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "fft_peak_fine_sampling_sync_sptr_set_max_output_buffer" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_long(swig_obj[2], &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "fft_peak_fine_sampling_sync_sptr_set_max_output_buffer" "', argument " "3"" of type '" "long""'"); + } + arg3 = static_cast< long >(val3); + { + try { + (*arg1)->set_max_output_buffer(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_set_max_output_buffer(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[4] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "fft_peak_fine_sampling_sync_sptr_set_max_output_buffer", 0, 3, argv))) SWIG_fail; + --argc; + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_long(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_fft_peak_fine_sampling_sync_sptr_set_max_output_buffer__SWIG_0(self, argc, argv); + } + } + } + if (argc == 3) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + { + int res = SWIG_AsVal_long(argv[2], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_fft_peak_fine_sampling_sync_sptr_set_max_output_buffer__SWIG_1(self, argc, argv); + } + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'fft_peak_fine_sampling_sync_sptr_set_max_output_buffer'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::set_max_output_buffer(long)\n" + " gr::block::set_max_output_buffer(int,long)\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_min_output_buffer(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"i", NULL + }; + long result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:fft_peak_fine_sampling_sync_sptr_min_output_buffer", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_min_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "fft_peak_fine_sampling_sync_sptr_min_output_buffer" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (long)(*arg1)->min_output_buffer(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_long(static_cast< long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_set_min_output_buffer__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + long arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + long val2 ; + int ecode2 = 0 ; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_set_min_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + ecode2 = SWIG_AsVal_long(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "fft_peak_fine_sampling_sync_sptr_set_min_output_buffer" "', argument " "2"" of type '" "long""'"); + } + arg2 = static_cast< long >(val2); + { + try { + (*arg1)->set_min_output_buffer(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_set_min_output_buffer__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + int arg2 ; + long arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + long val3 ; + int ecode3 = 0 ; + + if ((nobjs < 3) || (nobjs > 3)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_set_min_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "fft_peak_fine_sampling_sync_sptr_set_min_output_buffer" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_long(swig_obj[2], &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "fft_peak_fine_sampling_sync_sptr_set_min_output_buffer" "', argument " "3"" of type '" "long""'"); + } + arg3 = static_cast< long >(val3); + { + try { + (*arg1)->set_min_output_buffer(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_set_min_output_buffer(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[4] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "fft_peak_fine_sampling_sync_sptr_set_min_output_buffer", 0, 3, argv))) SWIG_fail; + --argc; + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_long(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_fft_peak_fine_sampling_sync_sptr_set_min_output_buffer__SWIG_0(self, argc, argv); + } + } + } + if (argc == 3) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + { + int res = SWIG_AsVal_long(argv[2], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_fft_peak_fine_sampling_sync_sptr_set_min_output_buffer__SWIG_1(self, argc, argv); + } + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'fft_peak_fine_sampling_sync_sptr_set_min_output_buffer'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::set_min_output_buffer(long)\n" + " gr::block::set_min_output_buffer(int,long)\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_pc_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_pc_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + { + try { + result = (float)(*arg1)->pc_noutput_items(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_pc_noutput_items_avg(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_pc_noutput_items_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + { + try { + result = (float)(*arg1)->pc_noutput_items_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_pc_noutput_items_var(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_pc_noutput_items_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + { + try { + result = (float)(*arg1)->pc_noutput_items_var(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_pc_nproduced(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_pc_nproduced" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + { + try { + result = (float)(*arg1)->pc_nproduced(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_pc_nproduced_avg(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_pc_nproduced_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + { + try { + result = (float)(*arg1)->pc_nproduced_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_pc_nproduced_var(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_pc_nproduced_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + { + try { + result = (float)(*arg1)->pc_nproduced_var(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_pc_input_buffers_full__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_pc_input_buffers_full" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "fft_peak_fine_sampling_sync_sptr_pc_input_buffers_full" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_input_buffers_full(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_pc_input_buffers_full__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_pc_input_buffers_full" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + { + try { + result = (*arg1)->pc_input_buffers_full(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_pc_input_buffers_full(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "fft_peak_fine_sampling_sync_sptr_pc_input_buffers_full", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_fft_peak_fine_sampling_sync_sptr_pc_input_buffers_full__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_fft_peak_fine_sampling_sync_sptr_pc_input_buffers_full__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'fft_peak_fine_sampling_sync_sptr_pc_input_buffers_full'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_input_buffers_full(int)\n" + " gr::block::pc_input_buffers_full()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_pc_input_buffers_full_avg__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_pc_input_buffers_full_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "fft_peak_fine_sampling_sync_sptr_pc_input_buffers_full_avg" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_input_buffers_full_avg(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_pc_input_buffers_full_avg__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_pc_input_buffers_full_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + { + try { + result = (*arg1)->pc_input_buffers_full_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_pc_input_buffers_full_avg(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "fft_peak_fine_sampling_sync_sptr_pc_input_buffers_full_avg", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_fft_peak_fine_sampling_sync_sptr_pc_input_buffers_full_avg__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_fft_peak_fine_sampling_sync_sptr_pc_input_buffers_full_avg__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'fft_peak_fine_sampling_sync_sptr_pc_input_buffers_full_avg'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_input_buffers_full_avg(int)\n" + " gr::block::pc_input_buffers_full_avg()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_pc_input_buffers_full_var__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_pc_input_buffers_full_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "fft_peak_fine_sampling_sync_sptr_pc_input_buffers_full_var" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_input_buffers_full_var(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_pc_input_buffers_full_var__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_pc_input_buffers_full_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + { + try { + result = (*arg1)->pc_input_buffers_full_var(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_pc_input_buffers_full_var(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "fft_peak_fine_sampling_sync_sptr_pc_input_buffers_full_var", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_fft_peak_fine_sampling_sync_sptr_pc_input_buffers_full_var__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_fft_peak_fine_sampling_sync_sptr_pc_input_buffers_full_var__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'fft_peak_fine_sampling_sync_sptr_pc_input_buffers_full_var'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_input_buffers_full_var(int)\n" + " gr::block::pc_input_buffers_full_var()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_pc_output_buffers_full__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_pc_output_buffers_full" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "fft_peak_fine_sampling_sync_sptr_pc_output_buffers_full" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_output_buffers_full(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_pc_output_buffers_full__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_pc_output_buffers_full" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + { + try { + result = (*arg1)->pc_output_buffers_full(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_pc_output_buffers_full(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "fft_peak_fine_sampling_sync_sptr_pc_output_buffers_full", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_fft_peak_fine_sampling_sync_sptr_pc_output_buffers_full__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_fft_peak_fine_sampling_sync_sptr_pc_output_buffers_full__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'fft_peak_fine_sampling_sync_sptr_pc_output_buffers_full'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_output_buffers_full(int)\n" + " gr::block::pc_output_buffers_full()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_pc_output_buffers_full_avg__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_pc_output_buffers_full_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "fft_peak_fine_sampling_sync_sptr_pc_output_buffers_full_avg" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_output_buffers_full_avg(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_pc_output_buffers_full_avg__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_pc_output_buffers_full_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + { + try { + result = (*arg1)->pc_output_buffers_full_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_pc_output_buffers_full_avg(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "fft_peak_fine_sampling_sync_sptr_pc_output_buffers_full_avg", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_fft_peak_fine_sampling_sync_sptr_pc_output_buffers_full_avg__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_fft_peak_fine_sampling_sync_sptr_pc_output_buffers_full_avg__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'fft_peak_fine_sampling_sync_sptr_pc_output_buffers_full_avg'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_output_buffers_full_avg(int)\n" + " gr::block::pc_output_buffers_full_avg()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_pc_output_buffers_full_var__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_pc_output_buffers_full_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "fft_peak_fine_sampling_sync_sptr_pc_output_buffers_full_var" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_output_buffers_full_var(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_pc_output_buffers_full_var__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_pc_output_buffers_full_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + { + try { + result = (*arg1)->pc_output_buffers_full_var(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_pc_output_buffers_full_var(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "fft_peak_fine_sampling_sync_sptr_pc_output_buffers_full_var", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_fft_peak_fine_sampling_sync_sptr_pc_output_buffers_full_var__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_fft_peak_fine_sampling_sync_sptr_pc_output_buffers_full_var__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'fft_peak_fine_sampling_sync_sptr_pc_output_buffers_full_var'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_output_buffers_full_var(int)\n" + " gr::block::pc_output_buffers_full_var()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_pc_work_time(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_pc_work_time" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + { + try { + result = (float)(*arg1)->pc_work_time(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_pc_work_time_avg(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_pc_work_time_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + { + try { + result = (float)(*arg1)->pc_work_time_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_pc_work_time_var(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_pc_work_time_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + { + try { + result = (float)(*arg1)->pc_work_time_var(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_pc_work_time_total(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_pc_work_time_total" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + { + try { + result = (float)(*arg1)->pc_work_time_total(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_pc_throughput_avg(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_pc_throughput_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + { + try { + result = (float)(*arg1)->pc_throughput_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_set_processor_affinity(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + std::vector< int,std::allocator< int > > *arg2 = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 = SWIG_OLDOBJ ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"mask", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:fft_peak_fine_sampling_sync_sptr_set_processor_affinity", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_set_processor_affinity" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + { + std::vector< int,std::allocator< int > > *ptr = (std::vector< int,std::allocator< int > > *)0; + res2 = swig::asptr(obj1, &ptr); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "fft_peak_fine_sampling_sync_sptr_set_processor_affinity" "', argument " "2"" of type '" "std::vector< int,std::allocator< int > > const &""'"); + } + if (!ptr) { + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "fft_peak_fine_sampling_sync_sptr_set_processor_affinity" "', argument " "2"" of type '" "std::vector< int,std::allocator< int > > const &""'"); + } + arg2 = ptr; + } + { + try { + (*arg1)->set_processor_affinity((std::vector< int,std::allocator< int > > const &)*arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + if (SWIG_IsNewObj(res2)) delete arg2; + return resultobj; +fail: + if (SWIG_IsNewObj(res2)) delete arg2; + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_unset_processor_affinity(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_unset_processor_affinity" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + { + try { + (*arg1)->unset_processor_affinity(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_processor_affinity(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + std::vector< int,std::allocator< int > > result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_processor_affinity" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + { + try { + result = (*arg1)->processor_affinity(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< int,std::allocator< int > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_active_thread_priority(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_active_thread_priority" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + { + try { + result = (int)(*arg1)->active_thread_priority(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_thread_priority(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_thread_priority" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + { + try { + result = (int)(*arg1)->thread_priority(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_set_thread_priority(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"priority", NULL + }; + int result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:fft_peak_fine_sampling_sync_sptr_set_thread_priority", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_set_thread_priority" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "fft_peak_fine_sampling_sync_sptr_set_thread_priority" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (int)(*arg1)->set_thread_priority(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_name(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + std::string result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_name" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + { + try { + result = (*arg1)->name(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_std_string(static_cast< std::string >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_symbol_name(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + std::string result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_symbol_name" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + { + try { + result = (*arg1)->symbol_name(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_std_string(static_cast< std::string >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_input_signature(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + gr::io_signature::sptr result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_input_signature" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + { + try { + result = (*arg1)->input_signature(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new gr::io_signature::sptr(static_cast< const gr::io_signature::sptr& >(result))), SWIGTYPE_p_boost__shared_ptrT_gr__io_signature_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_output_signature(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + gr::io_signature::sptr result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_output_signature" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + { + try { + result = (*arg1)->output_signature(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new gr::io_signature::sptr(static_cast< const gr::io_signature::sptr& >(result))), SWIGTYPE_p_boost__shared_ptrT_gr__io_signature_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_unique_id(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + long result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_unique_id" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + { + try { + result = (long)(*arg1)->unique_id(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_long(static_cast< long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_to_basic_block(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + gr::basic_block_sptr result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_to_basic_block" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + { + try { + result = (*arg1)->to_basic_block(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new gr::basic_block_sptr(static_cast< const gr::basic_block_sptr& >(result))), SWIGTYPE_p_boost__shared_ptrT_gr__basic_block_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_check_topology(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + int arg2 ; + int arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int val3 ; + int ecode3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"ninputs", (char *)"noutputs", NULL + }; + bool result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOO:fft_peak_fine_sampling_sync_sptr_check_topology", kwnames, &obj0, &obj1, &obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_check_topology" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "fft_peak_fine_sampling_sync_sptr_check_topology" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_int(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "fft_peak_fine_sampling_sync_sptr_check_topology" "', argument " "3"" of type '" "int""'"); + } + arg3 = static_cast< int >(val3); + { + try { + result = (bool)(*arg1)->check_topology(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_bool(static_cast< bool >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_alias(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + std::string result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_alias" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + { + try { + result = (*arg1)->alias(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_std_string(static_cast< std::string >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_set_block_alias(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + std::string arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"name", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:fft_peak_fine_sampling_sync_sptr_set_block_alias", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_set_block_alias" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + { + std::string *ptr = (std::string *)0; + int res = SWIG_AsPtr_std_string(obj1, &ptr); + if (!SWIG_IsOK(res) || !ptr) { + SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "fft_peak_fine_sampling_sync_sptr_set_block_alias" "', argument " "2"" of type '" "std::string""'"); + } + arg2 = *ptr; + if (SWIG_IsNewObj(res)) delete ptr; + } + { + try { + (*arg1)->set_block_alias(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr__post(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + pmt::pmt_t arg2 ; + pmt::pmt_t arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 ; + int res2 = 0 ; + void *argp3 ; + int res3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"which_port", (char *)"msg", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOO:fft_peak_fine_sampling_sync_sptr__post", kwnames, &obj0, &obj1, &obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr__post" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + { + res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, 0 | 0); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "fft_peak_fine_sampling_sync_sptr__post" "', argument " "2"" of type '" "pmt::pmt_t""'"); + } + if (!argp2) { + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "fft_peak_fine_sampling_sync_sptr__post" "', argument " "2"" of type '" "pmt::pmt_t""'"); + } else { + pmt::pmt_t * temp = reinterpret_cast< pmt::pmt_t * >(argp2); + arg2 = *temp; + if (SWIG_IsNewObj(res2)) delete temp; + } + } + { + res3 = SWIG_ConvertPtr(obj2, &argp3, SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, 0 | 0); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "fft_peak_fine_sampling_sync_sptr__post" "', argument " "3"" of type '" "pmt::pmt_t""'"); + } + if (!argp3) { + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "fft_peak_fine_sampling_sync_sptr__post" "', argument " "3"" of type '" "pmt::pmt_t""'"); + } else { + pmt::pmt_t * temp = reinterpret_cast< pmt::pmt_t * >(argp3); + arg3 = *temp; + if (SWIG_IsNewObj(res3)) delete temp; + } + } + { + try { + (*arg1)->_post(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_message_ports_in(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + pmt::pmt_t result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_message_ports_in" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + { + try { + result = (*arg1)->message_ports_in(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new pmt::pmt_t(static_cast< const pmt::pmt_t& >(result))), SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_message_ports_out(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + pmt::pmt_t result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_message_ports_out" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + { + try { + result = (*arg1)->message_ports_out(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new pmt::pmt_t(static_cast< const pmt::pmt_t& >(result))), SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_fft_peak_fine_sampling_sync_sptr_message_subscribers(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *arg1 = (boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *) 0 ; + pmt::pmt_t arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"which_port", NULL + }; + pmt::pmt_t result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:fft_peak_fine_sampling_sync_sptr_message_subscribers", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fft_peak_fine_sampling_sync_sptr_message_subscribers" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > * >(argp1); + { + res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, 0 | 0); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "fft_peak_fine_sampling_sync_sptr_message_subscribers" "', argument " "2"" of type '" "pmt::pmt_t""'"); + } + if (!argp2) { + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "fft_peak_fine_sampling_sync_sptr_message_subscribers" "', argument " "2"" of type '" "pmt::pmt_t""'"); + } else { + pmt::pmt_t * temp = reinterpret_cast< pmt::pmt_t * >(argp2); + arg2 = *temp; + if (SWIG_IsNewObj(res2)) delete temp; + } + } + { + try { + result = (*arg1)->message_subscribers(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new pmt::pmt_t(static_cast< const pmt::pmt_t& >(result))), SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *fft_peak_fine_sampling_sync_sptr_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!SWIG_Python_UnpackTuple(args, "swigregister", 1, 1, &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *fft_peak_fine_sampling_sync_sptr_swiginit(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + return SWIG_Python_InitShadowInstance(args); +} + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_set_refresh_rate(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + gr::tempest::infer_screen_resolution *arg1 = (gr::tempest::infer_screen_resolution *) 0 ; + float arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + float val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"refresh_rate", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:infer_screen_resolution_set_refresh_rate", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_gr__tempest__infer_screen_resolution, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_set_refresh_rate" "', argument " "1"" of type '" "gr::tempest::infer_screen_resolution *""'"); + } + arg1 = reinterpret_cast< gr::tempest::infer_screen_resolution * >(argp1); + ecode2 = SWIG_AsVal_float(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "infer_screen_resolution_set_refresh_rate" "', argument " "2"" of type '" "float""'"); + } + arg2 = static_cast< float >(val2); + { + try { + (arg1)->set_refresh_rate(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_make(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + int arg1 ; + int arg2 ; + float arg3 ; + bool arg4 ; + int val1 ; + int ecode1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float val3 ; + int ecode3 = 0 ; + bool val4 ; + int ecode4 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + PyObject * obj3 = 0 ; + char * kwnames[] = { + (char *)"sample_rate", (char *)"fft_size", (char *)"refresh_rate", (char *)"automatic_mode", NULL + }; + gr::tempest::infer_screen_resolution::sptr result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOOO:infer_screen_resolution_make", kwnames, &obj0, &obj1, &obj2, &obj3)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "infer_screen_resolution_make" "', argument " "1"" of type '" "int""'"); + } + arg1 = static_cast< int >(val1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "infer_screen_resolution_make" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_float(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "infer_screen_resolution_make" "', argument " "3"" of type '" "float""'"); + } + arg3 = static_cast< float >(val3); + ecode4 = SWIG_AsVal_bool(obj3, &val4); + if (!SWIG_IsOK(ecode4)) { + SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "infer_screen_resolution_make" "', argument " "4"" of type '" "bool""'"); + } + arg4 = static_cast< bool >(val4); + { + try { + result = gr::tempest::infer_screen_resolution::make(arg1,arg2,arg3,arg4); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new gr::tempest::infer_screen_resolution::sptr(static_cast< const gr::tempest::infer_screen_resolution::sptr& >(result))), SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_infer_screen_resolution(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + gr::tempest::infer_screen_resolution *arg1 = (gr::tempest::infer_screen_resolution *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_gr__tempest__infer_screen_resolution, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_infer_screen_resolution" "', argument " "1"" of type '" "gr::tempest::infer_screen_resolution *""'"); + } + arg1 = reinterpret_cast< gr::tempest::infer_screen_resolution * >(argp1); + { + try { + delete arg1; + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *infer_screen_resolution_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!SWIG_Python_UnpackTuple(args, "swigregister", 1, 1, &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_gr__tempest__infer_screen_resolution, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_new_infer_screen_resolution_sptr__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **SWIGUNUSEDPARM(swig_obj)) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *result = 0 ; + + if ((nobjs < 0) || (nobjs > 0)) SWIG_fail; + { + try { + result = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *)new boost::shared_ptr< gr::tempest::infer_screen_resolution >(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_infer_screen_resolution_sptr__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + gr::tempest::infer_screen_resolution *arg1 = (gr::tempest::infer_screen_resolution *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *result = 0 ; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_gr__tempest__infer_screen_resolution, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_infer_screen_resolution_sptr" "', argument " "1"" of type '" "gr::tempest::infer_screen_resolution *""'"); + } + arg1 = reinterpret_cast< gr::tempest::infer_screen_resolution * >(argp1); + { + try { + result = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *)new boost::shared_ptr< gr::tempest::infer_screen_resolution >(arg1); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_infer_screen_resolution_sptr(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[2] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "new_infer_screen_resolution_sptr", 0, 1, argv))) SWIG_fail; + --argc; + if (argc == 0) { + return _wrap_new_infer_screen_resolution_sptr__SWIG_0(self, argc, argv); + } + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_gr__tempest__infer_screen_resolution, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_new_infer_screen_resolution_sptr__SWIG_1(self, argc, argv); + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'new_infer_screen_resolution_sptr'.\n" + " Possible C/C++ prototypes are:\n" + " boost::shared_ptr< gr::tempest::infer_screen_resolution >::shared_ptr()\n" + " boost::shared_ptr< gr::tempest::infer_screen_resolution >::shared_ptr(gr::tempest::infer_screen_resolution *)\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr___deref__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + gr::tempest::infer_screen_resolution *result = 0 ; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr___deref__" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + { + try { + result = (gr::tempest::infer_screen_resolution *)(arg1)->operator ->(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_gr__tempest__infer_screen_resolution, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_infer_screen_resolution_sptr(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_infer_screen_resolution_sptr" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + { + try { + delete arg1; + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_set_refresh_rate(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + float arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + float val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"refresh_rate", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:infer_screen_resolution_sptr_set_refresh_rate", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_set_refresh_rate" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + ecode2 = SWIG_AsVal_float(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "infer_screen_resolution_sptr_set_refresh_rate" "', argument " "2"" of type '" "float""'"); + } + arg2 = static_cast< float >(val2); + { + try { + (*arg1)->set_refresh_rate(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_make(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + int arg2 ; + int arg3 ; + float arg4 ; + bool arg5 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int val3 ; + int ecode3 = 0 ; + float val4 ; + int ecode4 = 0 ; + bool val5 ; + int ecode5 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + PyObject * obj3 = 0 ; + PyObject * obj4 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"sample_rate", (char *)"fft_size", (char *)"refresh_rate", (char *)"automatic_mode", NULL + }; + gr::tempest::infer_screen_resolution::sptr result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOOOO:infer_screen_resolution_sptr_make", kwnames, &obj0, &obj1, &obj2, &obj3, &obj4)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_make" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "infer_screen_resolution_sptr_make" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_int(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "infer_screen_resolution_sptr_make" "', argument " "3"" of type '" "int""'"); + } + arg3 = static_cast< int >(val3); + ecode4 = SWIG_AsVal_float(obj3, &val4); + if (!SWIG_IsOK(ecode4)) { + SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "infer_screen_resolution_sptr_make" "', argument " "4"" of type '" "float""'"); + } + arg4 = static_cast< float >(val4); + ecode5 = SWIG_AsVal_bool(obj4, &val5); + if (!SWIG_IsOK(ecode5)) { + SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "infer_screen_resolution_sptr_make" "', argument " "5"" of type '" "bool""'"); + } + arg5 = static_cast< bool >(val5); + { + try { + result = (*arg1)->make(arg2,arg3,arg4,arg5); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new gr::tempest::infer_screen_resolution::sptr(static_cast< const gr::tempest::infer_screen_resolution::sptr& >(result))), SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_history(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + unsigned int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_history" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + { + try { + result = (unsigned int)(*arg1)->history(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_int(static_cast< unsigned int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_declare_sample_delay__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + int arg2 ; + int arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int val3 ; + int ecode3 = 0 ; + + if ((nobjs < 3) || (nobjs > 3)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_declare_sample_delay" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "infer_screen_resolution_sptr_declare_sample_delay" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_int(swig_obj[2], &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "infer_screen_resolution_sptr_declare_sample_delay" "', argument " "3"" of type '" "int""'"); + } + arg3 = static_cast< int >(val3); + { + try { + (*arg1)->declare_sample_delay(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_declare_sample_delay__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + unsigned int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + unsigned int val2 ; + int ecode2 = 0 ; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_declare_sample_delay" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + ecode2 = SWIG_AsVal_unsigned_SS_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "infer_screen_resolution_sptr_declare_sample_delay" "', argument " "2"" of type '" "unsigned int""'"); + } + arg2 = static_cast< unsigned int >(val2); + { + try { + (*arg1)->declare_sample_delay(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_declare_sample_delay(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[4] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "infer_screen_resolution_sptr_declare_sample_delay", 0, 3, argv))) SWIG_fail; + --argc; + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_unsigned_SS_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_infer_screen_resolution_sptr_declare_sample_delay__SWIG_1(self, argc, argv); + } + } + } + if (argc == 3) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + { + int res = SWIG_AsVal_int(argv[2], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_infer_screen_resolution_sptr_declare_sample_delay__SWIG_0(self, argc, argv); + } + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'infer_screen_resolution_sptr_declare_sample_delay'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::declare_sample_delay(int,int)\n" + " gr::block::declare_sample_delay(unsigned int)\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_sample_delay(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"which", NULL + }; + unsigned int result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:infer_screen_resolution_sptr_sample_delay", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_sample_delay" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "infer_screen_resolution_sptr_sample_delay" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (unsigned int)(*arg1)->sample_delay(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_int(static_cast< unsigned int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_set_output_multiple(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"multiple", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:infer_screen_resolution_sptr_set_output_multiple", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_set_output_multiple" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "infer_screen_resolution_sptr_set_output_multiple" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + (*arg1)->set_output_multiple(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_output_multiple(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_output_multiple" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + { + try { + result = (int)(*arg1)->output_multiple(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_relative_rate(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + double result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_relative_rate" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + { + try { + result = (double)(*arg1)->relative_rate(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_double(static_cast< double >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_relative_rate_i(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + uint64_t result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_relative_rate_i" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + { + try { + result = (uint64_t)(*arg1)->relative_rate_i(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_long_SS_long(static_cast< unsigned long long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_relative_rate_d(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + uint64_t result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_relative_rate_d" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + { + try { + result = (uint64_t)(*arg1)->relative_rate_d(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_long_SS_long(static_cast< unsigned long long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_start(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + bool result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_start" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + { + try { + result = (bool)(*arg1)->start(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_bool(static_cast< bool >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_stop(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + bool result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_stop" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + { + try { + result = (bool)(*arg1)->stop(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_bool(static_cast< bool >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_nitems_read(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + unsigned int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + unsigned int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"which_input", NULL + }; + uint64_t result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:infer_screen_resolution_sptr_nitems_read", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_nitems_read" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + ecode2 = SWIG_AsVal_unsigned_SS_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "infer_screen_resolution_sptr_nitems_read" "', argument " "2"" of type '" "unsigned int""'"); + } + arg2 = static_cast< unsigned int >(val2); + { + try { + result = (uint64_t)(*arg1)->nitems_read(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_long_SS_long(static_cast< unsigned long long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_nitems_written(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + unsigned int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + unsigned int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"which_output", NULL + }; + uint64_t result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:infer_screen_resolution_sptr_nitems_written", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_nitems_written" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + ecode2 = SWIG_AsVal_unsigned_SS_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "infer_screen_resolution_sptr_nitems_written" "', argument " "2"" of type '" "unsigned int""'"); + } + arg2 = static_cast< unsigned int >(val2); + { + try { + result = (uint64_t)(*arg1)->nitems_written(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_long_SS_long(static_cast< unsigned long long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_set_log_level(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + std::string arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"level", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:infer_screen_resolution_sptr_set_log_level", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_set_log_level" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + { + std::string *ptr = (std::string *)0; + int res = SWIG_AsPtr_std_string(obj1, &ptr); + if (!SWIG_IsOK(res) || !ptr) { + SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "infer_screen_resolution_sptr_set_log_level" "', argument " "2"" of type '" "std::string""'"); + } + arg2 = *ptr; + if (SWIG_IsNewObj(res)) delete ptr; + } + { + try { + (*arg1)->set_log_level(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_log_level(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + std::string result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_log_level" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + { + try { + result = (*arg1)->log_level(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_std_string(static_cast< std::string >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_max_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_max_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + { + try { + result = (int)(*arg1)->max_noutput_items(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_set_max_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"m", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:infer_screen_resolution_sptr_set_max_noutput_items", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_set_max_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "infer_screen_resolution_sptr_set_max_noutput_items" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + (*arg1)->set_max_noutput_items(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_unset_max_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_unset_max_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + { + try { + (*arg1)->unset_max_noutput_items(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_is_set_max_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + bool result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_is_set_max_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + { + try { + result = (bool)(*arg1)->is_set_max_noutput_items(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_bool(static_cast< bool >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_set_min_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"m", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:infer_screen_resolution_sptr_set_min_noutput_items", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_set_min_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "infer_screen_resolution_sptr_set_min_noutput_items" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + (*arg1)->set_min_noutput_items(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_min_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_min_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + { + try { + result = (int)(*arg1)->min_noutput_items(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_max_output_buffer(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"i", NULL + }; + long result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:infer_screen_resolution_sptr_max_output_buffer", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_max_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "infer_screen_resolution_sptr_max_output_buffer" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (long)(*arg1)->max_output_buffer(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_long(static_cast< long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_set_max_output_buffer__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + long arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + long val2 ; + int ecode2 = 0 ; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_set_max_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + ecode2 = SWIG_AsVal_long(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "infer_screen_resolution_sptr_set_max_output_buffer" "', argument " "2"" of type '" "long""'"); + } + arg2 = static_cast< long >(val2); + { + try { + (*arg1)->set_max_output_buffer(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_set_max_output_buffer__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + int arg2 ; + long arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + long val3 ; + int ecode3 = 0 ; + + if ((nobjs < 3) || (nobjs > 3)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_set_max_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "infer_screen_resolution_sptr_set_max_output_buffer" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_long(swig_obj[2], &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "infer_screen_resolution_sptr_set_max_output_buffer" "', argument " "3"" of type '" "long""'"); + } + arg3 = static_cast< long >(val3); + { + try { + (*arg1)->set_max_output_buffer(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_set_max_output_buffer(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[4] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "infer_screen_resolution_sptr_set_max_output_buffer", 0, 3, argv))) SWIG_fail; + --argc; + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_long(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_infer_screen_resolution_sptr_set_max_output_buffer__SWIG_0(self, argc, argv); + } + } + } + if (argc == 3) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + { + int res = SWIG_AsVal_long(argv[2], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_infer_screen_resolution_sptr_set_max_output_buffer__SWIG_1(self, argc, argv); + } + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'infer_screen_resolution_sptr_set_max_output_buffer'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::set_max_output_buffer(long)\n" + " gr::block::set_max_output_buffer(int,long)\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_min_output_buffer(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"i", NULL + }; + long result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:infer_screen_resolution_sptr_min_output_buffer", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_min_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "infer_screen_resolution_sptr_min_output_buffer" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (long)(*arg1)->min_output_buffer(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_long(static_cast< long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_set_min_output_buffer__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + long arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + long val2 ; + int ecode2 = 0 ; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_set_min_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + ecode2 = SWIG_AsVal_long(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "infer_screen_resolution_sptr_set_min_output_buffer" "', argument " "2"" of type '" "long""'"); + } + arg2 = static_cast< long >(val2); + { + try { + (*arg1)->set_min_output_buffer(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_set_min_output_buffer__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + int arg2 ; + long arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + long val3 ; + int ecode3 = 0 ; + + if ((nobjs < 3) || (nobjs > 3)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_set_min_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "infer_screen_resolution_sptr_set_min_output_buffer" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_long(swig_obj[2], &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "infer_screen_resolution_sptr_set_min_output_buffer" "', argument " "3"" of type '" "long""'"); + } + arg3 = static_cast< long >(val3); + { + try { + (*arg1)->set_min_output_buffer(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_set_min_output_buffer(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[4] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "infer_screen_resolution_sptr_set_min_output_buffer", 0, 3, argv))) SWIG_fail; + --argc; + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_long(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_infer_screen_resolution_sptr_set_min_output_buffer__SWIG_0(self, argc, argv); + } + } + } + if (argc == 3) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + { + int res = SWIG_AsVal_long(argv[2], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_infer_screen_resolution_sptr_set_min_output_buffer__SWIG_1(self, argc, argv); + } + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'infer_screen_resolution_sptr_set_min_output_buffer'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::set_min_output_buffer(long)\n" + " gr::block::set_min_output_buffer(int,long)\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_pc_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_pc_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + { + try { + result = (float)(*arg1)->pc_noutput_items(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_pc_noutput_items_avg(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_pc_noutput_items_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + { + try { + result = (float)(*arg1)->pc_noutput_items_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_pc_noutput_items_var(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_pc_noutput_items_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + { + try { + result = (float)(*arg1)->pc_noutput_items_var(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_pc_nproduced(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_pc_nproduced" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + { + try { + result = (float)(*arg1)->pc_nproduced(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_pc_nproduced_avg(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_pc_nproduced_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + { + try { + result = (float)(*arg1)->pc_nproduced_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_pc_nproduced_var(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_pc_nproduced_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + { + try { + result = (float)(*arg1)->pc_nproduced_var(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_pc_input_buffers_full__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_pc_input_buffers_full" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "infer_screen_resolution_sptr_pc_input_buffers_full" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_input_buffers_full(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_pc_input_buffers_full__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_pc_input_buffers_full" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + { + try { + result = (*arg1)->pc_input_buffers_full(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_pc_input_buffers_full(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "infer_screen_resolution_sptr_pc_input_buffers_full", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_infer_screen_resolution_sptr_pc_input_buffers_full__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_infer_screen_resolution_sptr_pc_input_buffers_full__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'infer_screen_resolution_sptr_pc_input_buffers_full'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_input_buffers_full(int)\n" + " gr::block::pc_input_buffers_full()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_pc_input_buffers_full_avg__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_pc_input_buffers_full_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "infer_screen_resolution_sptr_pc_input_buffers_full_avg" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_input_buffers_full_avg(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_pc_input_buffers_full_avg__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_pc_input_buffers_full_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + { + try { + result = (*arg1)->pc_input_buffers_full_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_pc_input_buffers_full_avg(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "infer_screen_resolution_sptr_pc_input_buffers_full_avg", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_infer_screen_resolution_sptr_pc_input_buffers_full_avg__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_infer_screen_resolution_sptr_pc_input_buffers_full_avg__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'infer_screen_resolution_sptr_pc_input_buffers_full_avg'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_input_buffers_full_avg(int)\n" + " gr::block::pc_input_buffers_full_avg()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_pc_input_buffers_full_var__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_pc_input_buffers_full_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "infer_screen_resolution_sptr_pc_input_buffers_full_var" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_input_buffers_full_var(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_pc_input_buffers_full_var__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_pc_input_buffers_full_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + { + try { + result = (*arg1)->pc_input_buffers_full_var(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_pc_input_buffers_full_var(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "infer_screen_resolution_sptr_pc_input_buffers_full_var", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_infer_screen_resolution_sptr_pc_input_buffers_full_var__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_infer_screen_resolution_sptr_pc_input_buffers_full_var__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'infer_screen_resolution_sptr_pc_input_buffers_full_var'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_input_buffers_full_var(int)\n" + " gr::block::pc_input_buffers_full_var()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_pc_output_buffers_full__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_pc_output_buffers_full" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "infer_screen_resolution_sptr_pc_output_buffers_full" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_output_buffers_full(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_pc_output_buffers_full__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_pc_output_buffers_full" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + { + try { + result = (*arg1)->pc_output_buffers_full(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_pc_output_buffers_full(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "infer_screen_resolution_sptr_pc_output_buffers_full", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_infer_screen_resolution_sptr_pc_output_buffers_full__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_infer_screen_resolution_sptr_pc_output_buffers_full__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'infer_screen_resolution_sptr_pc_output_buffers_full'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_output_buffers_full(int)\n" + " gr::block::pc_output_buffers_full()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_pc_output_buffers_full_avg__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_pc_output_buffers_full_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "infer_screen_resolution_sptr_pc_output_buffers_full_avg" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_output_buffers_full_avg(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_pc_output_buffers_full_avg__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_pc_output_buffers_full_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + { + try { + result = (*arg1)->pc_output_buffers_full_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_pc_output_buffers_full_avg(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "infer_screen_resolution_sptr_pc_output_buffers_full_avg", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_infer_screen_resolution_sptr_pc_output_buffers_full_avg__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_infer_screen_resolution_sptr_pc_output_buffers_full_avg__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'infer_screen_resolution_sptr_pc_output_buffers_full_avg'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_output_buffers_full_avg(int)\n" + " gr::block::pc_output_buffers_full_avg()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_pc_output_buffers_full_var__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_pc_output_buffers_full_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "infer_screen_resolution_sptr_pc_output_buffers_full_var" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_output_buffers_full_var(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_pc_output_buffers_full_var__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_pc_output_buffers_full_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + { + try { + result = (*arg1)->pc_output_buffers_full_var(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_pc_output_buffers_full_var(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "infer_screen_resolution_sptr_pc_output_buffers_full_var", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_infer_screen_resolution_sptr_pc_output_buffers_full_var__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_infer_screen_resolution_sptr_pc_output_buffers_full_var__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'infer_screen_resolution_sptr_pc_output_buffers_full_var'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_output_buffers_full_var(int)\n" + " gr::block::pc_output_buffers_full_var()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_pc_work_time(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_pc_work_time" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + { + try { + result = (float)(*arg1)->pc_work_time(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_pc_work_time_avg(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_pc_work_time_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + { + try { + result = (float)(*arg1)->pc_work_time_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_pc_work_time_var(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_pc_work_time_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + { + try { + result = (float)(*arg1)->pc_work_time_var(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_pc_work_time_total(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_pc_work_time_total" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + { + try { + result = (float)(*arg1)->pc_work_time_total(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_pc_throughput_avg(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_pc_throughput_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + { + try { + result = (float)(*arg1)->pc_throughput_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_set_processor_affinity(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + std::vector< int,std::allocator< int > > *arg2 = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 = SWIG_OLDOBJ ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"mask", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:infer_screen_resolution_sptr_set_processor_affinity", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_set_processor_affinity" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + { + std::vector< int,std::allocator< int > > *ptr = (std::vector< int,std::allocator< int > > *)0; + res2 = swig::asptr(obj1, &ptr); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "infer_screen_resolution_sptr_set_processor_affinity" "', argument " "2"" of type '" "std::vector< int,std::allocator< int > > const &""'"); + } + if (!ptr) { + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "infer_screen_resolution_sptr_set_processor_affinity" "', argument " "2"" of type '" "std::vector< int,std::allocator< int > > const &""'"); + } + arg2 = ptr; + } + { + try { + (*arg1)->set_processor_affinity((std::vector< int,std::allocator< int > > const &)*arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + if (SWIG_IsNewObj(res2)) delete arg2; + return resultobj; +fail: + if (SWIG_IsNewObj(res2)) delete arg2; + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_unset_processor_affinity(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_unset_processor_affinity" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + { + try { + (*arg1)->unset_processor_affinity(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_processor_affinity(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + std::vector< int,std::allocator< int > > result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_processor_affinity" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + { + try { + result = (*arg1)->processor_affinity(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< int,std::allocator< int > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_active_thread_priority(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_active_thread_priority" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + { + try { + result = (int)(*arg1)->active_thread_priority(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_thread_priority(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_thread_priority" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + { + try { + result = (int)(*arg1)->thread_priority(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_set_thread_priority(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"priority", NULL + }; + int result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:infer_screen_resolution_sptr_set_thread_priority", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_set_thread_priority" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "infer_screen_resolution_sptr_set_thread_priority" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (int)(*arg1)->set_thread_priority(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_name(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + std::string result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_name" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + { + try { + result = (*arg1)->name(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_std_string(static_cast< std::string >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_symbol_name(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + std::string result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_symbol_name" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + { + try { + result = (*arg1)->symbol_name(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_std_string(static_cast< std::string >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_input_signature(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + gr::io_signature::sptr result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_input_signature" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + { + try { + result = (*arg1)->input_signature(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new gr::io_signature::sptr(static_cast< const gr::io_signature::sptr& >(result))), SWIGTYPE_p_boost__shared_ptrT_gr__io_signature_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_output_signature(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + gr::io_signature::sptr result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_output_signature" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + { + try { + result = (*arg1)->output_signature(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new gr::io_signature::sptr(static_cast< const gr::io_signature::sptr& >(result))), SWIGTYPE_p_boost__shared_ptrT_gr__io_signature_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_unique_id(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + long result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_unique_id" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + { + try { + result = (long)(*arg1)->unique_id(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_long(static_cast< long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_to_basic_block(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + gr::basic_block_sptr result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_to_basic_block" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + { + try { + result = (*arg1)->to_basic_block(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new gr::basic_block_sptr(static_cast< const gr::basic_block_sptr& >(result))), SWIGTYPE_p_boost__shared_ptrT_gr__basic_block_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_check_topology(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + int arg2 ; + int arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int val3 ; + int ecode3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"ninputs", (char *)"noutputs", NULL + }; + bool result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOO:infer_screen_resolution_sptr_check_topology", kwnames, &obj0, &obj1, &obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_check_topology" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "infer_screen_resolution_sptr_check_topology" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_int(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "infer_screen_resolution_sptr_check_topology" "', argument " "3"" of type '" "int""'"); + } + arg3 = static_cast< int >(val3); + { + try { + result = (bool)(*arg1)->check_topology(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_bool(static_cast< bool >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_alias(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + std::string result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_alias" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + { + try { + result = (*arg1)->alias(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_std_string(static_cast< std::string >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_set_block_alias(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + std::string arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"name", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:infer_screen_resolution_sptr_set_block_alias", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_set_block_alias" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + { + std::string *ptr = (std::string *)0; + int res = SWIG_AsPtr_std_string(obj1, &ptr); + if (!SWIG_IsOK(res) || !ptr) { + SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "infer_screen_resolution_sptr_set_block_alias" "', argument " "2"" of type '" "std::string""'"); + } + arg2 = *ptr; + if (SWIG_IsNewObj(res)) delete ptr; + } + { + try { + (*arg1)->set_block_alias(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr__post(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + pmt::pmt_t arg2 ; + pmt::pmt_t arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 ; + int res2 = 0 ; + void *argp3 ; + int res3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"which_port", (char *)"msg", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOO:infer_screen_resolution_sptr__post", kwnames, &obj0, &obj1, &obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr__post" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + { + res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, 0 | 0); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "infer_screen_resolution_sptr__post" "', argument " "2"" of type '" "pmt::pmt_t""'"); + } + if (!argp2) { + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "infer_screen_resolution_sptr__post" "', argument " "2"" of type '" "pmt::pmt_t""'"); + } else { + pmt::pmt_t * temp = reinterpret_cast< pmt::pmt_t * >(argp2); + arg2 = *temp; + if (SWIG_IsNewObj(res2)) delete temp; + } + } + { + res3 = SWIG_ConvertPtr(obj2, &argp3, SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, 0 | 0); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "infer_screen_resolution_sptr__post" "', argument " "3"" of type '" "pmt::pmt_t""'"); + } + if (!argp3) { + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "infer_screen_resolution_sptr__post" "', argument " "3"" of type '" "pmt::pmt_t""'"); + } else { + pmt::pmt_t * temp = reinterpret_cast< pmt::pmt_t * >(argp3); + arg3 = *temp; + if (SWIG_IsNewObj(res3)) delete temp; + } + } + { + try { + (*arg1)->_post(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_message_ports_in(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + pmt::pmt_t result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_message_ports_in" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + { + try { + result = (*arg1)->message_ports_in(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new pmt::pmt_t(static_cast< const pmt::pmt_t& >(result))), SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_message_ports_out(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + pmt::pmt_t result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_message_ports_out" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + { + try { + result = (*arg1)->message_ports_out(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new pmt::pmt_t(static_cast< const pmt::pmt_t& >(result))), SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_infer_screen_resolution_sptr_message_subscribers(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::infer_screen_resolution > *arg1 = (boost::shared_ptr< gr::tempest::infer_screen_resolution > *) 0 ; + pmt::pmt_t arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"which_port", NULL + }; + pmt::pmt_t result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:infer_screen_resolution_sptr_message_subscribers", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "infer_screen_resolution_sptr_message_subscribers" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::infer_screen_resolution > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::infer_screen_resolution > * >(argp1); + { + res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, 0 | 0); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "infer_screen_resolution_sptr_message_subscribers" "', argument " "2"" of type '" "pmt::pmt_t""'"); + } + if (!argp2) { + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "infer_screen_resolution_sptr_message_subscribers" "', argument " "2"" of type '" "pmt::pmt_t""'"); + } else { + pmt::pmt_t * temp = reinterpret_cast< pmt::pmt_t * >(argp2); + arg2 = *temp; + if (SWIG_IsNewObj(res2)) delete temp; + } + } + { + try { + result = (*arg1)->message_subscribers(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new pmt::pmt_t(static_cast< const pmt::pmt_t& >(result))), SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *infer_screen_resolution_sptr_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!SWIG_Python_UnpackTuple(args, "swigregister", 1, 1, &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *infer_screen_resolution_sptr_swiginit(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + return SWIG_Python_InitShadowInstance(args); +} + +SWIGINTERN PyObject *_wrap_ssamp_correction_make(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + int arg1 ; + int arg2 ; + int arg3 ; + float arg4 ; + int val1 ; + int ecode1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int val3 ; + int ecode3 = 0 ; + float val4 ; + int ecode4 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + PyObject * obj3 = 0 ; + char * kwnames[] = { + (char *)"Htotal", (char *)"Vtotal", (char *)"correct_sampling", (char *)"max_deviation", NULL + }; + gr::tempest::ssamp_correction::sptr result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOOO:ssamp_correction_make", kwnames, &obj0, &obj1, &obj2, &obj3)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "ssamp_correction_make" "', argument " "1"" of type '" "int""'"); + } + arg1 = static_cast< int >(val1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ssamp_correction_make" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_int(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "ssamp_correction_make" "', argument " "3"" of type '" "int""'"); + } + arg3 = static_cast< int >(val3); + ecode4 = SWIG_AsVal_float(obj3, &val4); + if (!SWIG_IsOK(ecode4)) { + SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "ssamp_correction_make" "', argument " "4"" of type '" "float""'"); + } + arg4 = static_cast< float >(val4); + { + try { + result = gr::tempest::ssamp_correction::make(arg1,arg2,arg3,arg4); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new gr::tempest::ssamp_correction::sptr(static_cast< const gr::tempest::ssamp_correction::sptr& >(result))), SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_set_Htotal_Vtotal(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + gr::tempest::ssamp_correction *arg1 = (gr::tempest::ssamp_correction *) 0 ; + int arg2 ; + int arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int val3 ; + int ecode3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"Htotal", (char *)"Vtotal", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOO:ssamp_correction_set_Htotal_Vtotal", kwnames, &obj0, &obj1, &obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_gr__tempest__ssamp_correction, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_set_Htotal_Vtotal" "', argument " "1"" of type '" "gr::tempest::ssamp_correction *""'"); + } + arg1 = reinterpret_cast< gr::tempest::ssamp_correction * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ssamp_correction_set_Htotal_Vtotal" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_int(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "ssamp_correction_set_Htotal_Vtotal" "', argument " "3"" of type '" "int""'"); + } + arg3 = static_cast< int >(val3); + { + try { + (arg1)->set_Htotal_Vtotal(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_ssamp_correction(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + gr::tempest::ssamp_correction *arg1 = (gr::tempest::ssamp_correction *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_gr__tempest__ssamp_correction, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_ssamp_correction" "', argument " "1"" of type '" "gr::tempest::ssamp_correction *""'"); + } + arg1 = reinterpret_cast< gr::tempest::ssamp_correction * >(argp1); + { + try { + delete arg1; + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *ssamp_correction_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!SWIG_Python_UnpackTuple(args, "swigregister", 1, 1, &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_gr__tempest__ssamp_correction, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_new_ssamp_correction_sptr__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **SWIGUNUSEDPARM(swig_obj)) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *result = 0 ; + + if ((nobjs < 0) || (nobjs > 0)) SWIG_fail; + { + try { + result = (boost::shared_ptr< gr::tempest::ssamp_correction > *)new boost::shared_ptr< gr::tempest::ssamp_correction >(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_ssamp_correction_sptr__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + gr::tempest::ssamp_correction *arg1 = (gr::tempest::ssamp_correction *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + boost::shared_ptr< gr::tempest::ssamp_correction > *result = 0 ; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_gr__tempest__ssamp_correction, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_ssamp_correction_sptr" "', argument " "1"" of type '" "gr::tempest::ssamp_correction *""'"); + } + arg1 = reinterpret_cast< gr::tempest::ssamp_correction * >(argp1); + { + try { + result = (boost::shared_ptr< gr::tempest::ssamp_correction > *)new boost::shared_ptr< gr::tempest::ssamp_correction >(arg1); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_ssamp_correction_sptr(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[2] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "new_ssamp_correction_sptr", 0, 1, argv))) SWIG_fail; + --argc; + if (argc == 0) { + return _wrap_new_ssamp_correction_sptr__SWIG_0(self, argc, argv); + } + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_gr__tempest__ssamp_correction, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_new_ssamp_correction_sptr__SWIG_1(self, argc, argv); + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'new_ssamp_correction_sptr'.\n" + " Possible C/C++ prototypes are:\n" + " boost::shared_ptr< gr::tempest::ssamp_correction >::shared_ptr()\n" + " boost::shared_ptr< gr::tempest::ssamp_correction >::shared_ptr(gr::tempest::ssamp_correction *)\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr___deref__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + gr::tempest::ssamp_correction *result = 0 ; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr___deref__" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + { + try { + result = (gr::tempest::ssamp_correction *)(arg1)->operator ->(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_gr__tempest__ssamp_correction, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_ssamp_correction_sptr(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_ssamp_correction_sptr" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + { + try { + delete arg1; + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_make(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + int arg2 ; + int arg3 ; + int arg4 ; + float arg5 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int val3 ; + int ecode3 = 0 ; + int val4 ; + int ecode4 = 0 ; + float val5 ; + int ecode5 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + PyObject * obj3 = 0 ; + PyObject * obj4 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"Htotal", (char *)"Vtotal", (char *)"correct_sampling", (char *)"max_deviation", NULL + }; + gr::tempest::ssamp_correction::sptr result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOOOO:ssamp_correction_sptr_make", kwnames, &obj0, &obj1, &obj2, &obj3, &obj4)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_make" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ssamp_correction_sptr_make" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_int(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "ssamp_correction_sptr_make" "', argument " "3"" of type '" "int""'"); + } + arg3 = static_cast< int >(val3); + ecode4 = SWIG_AsVal_int(obj3, &val4); + if (!SWIG_IsOK(ecode4)) { + SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "ssamp_correction_sptr_make" "', argument " "4"" of type '" "int""'"); + } + arg4 = static_cast< int >(val4); + ecode5 = SWIG_AsVal_float(obj4, &val5); + if (!SWIG_IsOK(ecode5)) { + SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "ssamp_correction_sptr_make" "', argument " "5"" of type '" "float""'"); + } + arg5 = static_cast< float >(val5); + { + try { + result = (*arg1)->make(arg2,arg3,arg4,arg5); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new gr::tempest::ssamp_correction::sptr(static_cast< const gr::tempest::ssamp_correction::sptr& >(result))), SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_set_Htotal_Vtotal(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + int arg2 ; + int arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int val3 ; + int ecode3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"Htotal", (char *)"Vtotal", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOO:ssamp_correction_sptr_set_Htotal_Vtotal", kwnames, &obj0, &obj1, &obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_set_Htotal_Vtotal" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ssamp_correction_sptr_set_Htotal_Vtotal" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_int(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "ssamp_correction_sptr_set_Htotal_Vtotal" "', argument " "3"" of type '" "int""'"); + } + arg3 = static_cast< int >(val3); + { + try { + (*arg1)->set_Htotal_Vtotal(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_history(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + unsigned int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_history" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + { + try { + result = (unsigned int)(*arg1)->history(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_int(static_cast< unsigned int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_declare_sample_delay__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + int arg2 ; + int arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int val3 ; + int ecode3 = 0 ; + + if ((nobjs < 3) || (nobjs > 3)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_declare_sample_delay" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ssamp_correction_sptr_declare_sample_delay" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_int(swig_obj[2], &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "ssamp_correction_sptr_declare_sample_delay" "', argument " "3"" of type '" "int""'"); + } + arg3 = static_cast< int >(val3); + { + try { + (*arg1)->declare_sample_delay(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_declare_sample_delay__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + unsigned int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + unsigned int val2 ; + int ecode2 = 0 ; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_declare_sample_delay" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + ecode2 = SWIG_AsVal_unsigned_SS_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ssamp_correction_sptr_declare_sample_delay" "', argument " "2"" of type '" "unsigned int""'"); + } + arg2 = static_cast< unsigned int >(val2); + { + try { + (*arg1)->declare_sample_delay(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_declare_sample_delay(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[4] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "ssamp_correction_sptr_declare_sample_delay", 0, 3, argv))) SWIG_fail; + --argc; + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_unsigned_SS_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_ssamp_correction_sptr_declare_sample_delay__SWIG_1(self, argc, argv); + } + } + } + if (argc == 3) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + { + int res = SWIG_AsVal_int(argv[2], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_ssamp_correction_sptr_declare_sample_delay__SWIG_0(self, argc, argv); + } + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'ssamp_correction_sptr_declare_sample_delay'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::declare_sample_delay(int,int)\n" + " gr::block::declare_sample_delay(unsigned int)\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_sample_delay(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"which", NULL + }; + unsigned int result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:ssamp_correction_sptr_sample_delay", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_sample_delay" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ssamp_correction_sptr_sample_delay" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (unsigned int)(*arg1)->sample_delay(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_int(static_cast< unsigned int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_set_output_multiple(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"multiple", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:ssamp_correction_sptr_set_output_multiple", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_set_output_multiple" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ssamp_correction_sptr_set_output_multiple" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + (*arg1)->set_output_multiple(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_output_multiple(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_output_multiple" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + { + try { + result = (int)(*arg1)->output_multiple(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_relative_rate(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + double result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_relative_rate" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + { + try { + result = (double)(*arg1)->relative_rate(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_double(static_cast< double >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_relative_rate_i(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + uint64_t result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_relative_rate_i" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + { + try { + result = (uint64_t)(*arg1)->relative_rate_i(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_long_SS_long(static_cast< unsigned long long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_relative_rate_d(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + uint64_t result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_relative_rate_d" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + { + try { + result = (uint64_t)(*arg1)->relative_rate_d(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_long_SS_long(static_cast< unsigned long long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_start(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + bool result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_start" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + { + try { + result = (bool)(*arg1)->start(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_bool(static_cast< bool >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_stop(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + bool result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_stop" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + { + try { + result = (bool)(*arg1)->stop(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_bool(static_cast< bool >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_nitems_read(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + unsigned int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + unsigned int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"which_input", NULL + }; + uint64_t result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:ssamp_correction_sptr_nitems_read", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_nitems_read" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + ecode2 = SWIG_AsVal_unsigned_SS_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ssamp_correction_sptr_nitems_read" "', argument " "2"" of type '" "unsigned int""'"); + } + arg2 = static_cast< unsigned int >(val2); + { + try { + result = (uint64_t)(*arg1)->nitems_read(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_long_SS_long(static_cast< unsigned long long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_nitems_written(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + unsigned int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + unsigned int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"which_output", NULL + }; + uint64_t result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:ssamp_correction_sptr_nitems_written", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_nitems_written" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + ecode2 = SWIG_AsVal_unsigned_SS_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ssamp_correction_sptr_nitems_written" "', argument " "2"" of type '" "unsigned int""'"); + } + arg2 = static_cast< unsigned int >(val2); + { + try { + result = (uint64_t)(*arg1)->nitems_written(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_unsigned_SS_long_SS_long(static_cast< unsigned long long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_set_log_level(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + std::string arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"level", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:ssamp_correction_sptr_set_log_level", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_set_log_level" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + { + std::string *ptr = (std::string *)0; + int res = SWIG_AsPtr_std_string(obj1, &ptr); + if (!SWIG_IsOK(res) || !ptr) { + SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "ssamp_correction_sptr_set_log_level" "', argument " "2"" of type '" "std::string""'"); + } + arg2 = *ptr; + if (SWIG_IsNewObj(res)) delete ptr; + } + { + try { + (*arg1)->set_log_level(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_log_level(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + std::string result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_log_level" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + { + try { + result = (*arg1)->log_level(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_std_string(static_cast< std::string >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_max_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_max_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + { + try { + result = (int)(*arg1)->max_noutput_items(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_set_max_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"m", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:ssamp_correction_sptr_set_max_noutput_items", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_set_max_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ssamp_correction_sptr_set_max_noutput_items" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + (*arg1)->set_max_noutput_items(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_unset_max_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_unset_max_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + { + try { + (*arg1)->unset_max_noutput_items(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_is_set_max_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + bool result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_is_set_max_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + { + try { + result = (bool)(*arg1)->is_set_max_noutput_items(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_bool(static_cast< bool >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_set_min_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"m", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:ssamp_correction_sptr_set_min_noutput_items", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_set_min_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ssamp_correction_sptr_set_min_noutput_items" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + (*arg1)->set_min_noutput_items(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_min_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_min_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + { + try { + result = (int)(*arg1)->min_noutput_items(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_max_output_buffer(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"i", NULL + }; + long result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:ssamp_correction_sptr_max_output_buffer", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_max_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ssamp_correction_sptr_max_output_buffer" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (long)(*arg1)->max_output_buffer(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_long(static_cast< long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_set_max_output_buffer__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + long arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + long val2 ; + int ecode2 = 0 ; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_set_max_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + ecode2 = SWIG_AsVal_long(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ssamp_correction_sptr_set_max_output_buffer" "', argument " "2"" of type '" "long""'"); + } + arg2 = static_cast< long >(val2); + { + try { + (*arg1)->set_max_output_buffer(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_set_max_output_buffer__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + int arg2 ; + long arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + long val3 ; + int ecode3 = 0 ; + + if ((nobjs < 3) || (nobjs > 3)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_set_max_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ssamp_correction_sptr_set_max_output_buffer" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_long(swig_obj[2], &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "ssamp_correction_sptr_set_max_output_buffer" "', argument " "3"" of type '" "long""'"); + } + arg3 = static_cast< long >(val3); + { + try { + (*arg1)->set_max_output_buffer(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_set_max_output_buffer(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[4] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "ssamp_correction_sptr_set_max_output_buffer", 0, 3, argv))) SWIG_fail; + --argc; + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_long(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_ssamp_correction_sptr_set_max_output_buffer__SWIG_0(self, argc, argv); + } + } + } + if (argc == 3) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + { + int res = SWIG_AsVal_long(argv[2], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_ssamp_correction_sptr_set_max_output_buffer__SWIG_1(self, argc, argv); + } + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'ssamp_correction_sptr_set_max_output_buffer'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::set_max_output_buffer(long)\n" + " gr::block::set_max_output_buffer(int,long)\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_min_output_buffer(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"i", NULL + }; + long result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:ssamp_correction_sptr_min_output_buffer", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_min_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ssamp_correction_sptr_min_output_buffer" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (long)(*arg1)->min_output_buffer(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_long(static_cast< long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_set_min_output_buffer__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + long arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + long val2 ; + int ecode2 = 0 ; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_set_min_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + ecode2 = SWIG_AsVal_long(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ssamp_correction_sptr_set_min_output_buffer" "', argument " "2"" of type '" "long""'"); + } + arg2 = static_cast< long >(val2); + { + try { + (*arg1)->set_min_output_buffer(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_set_min_output_buffer__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + int arg2 ; + long arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + long val3 ; + int ecode3 = 0 ; + + if ((nobjs < 3) || (nobjs > 3)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_set_min_output_buffer" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ssamp_correction_sptr_set_min_output_buffer" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_long(swig_obj[2], &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "ssamp_correction_sptr_set_min_output_buffer" "', argument " "3"" of type '" "long""'"); + } + arg3 = static_cast< long >(val3); + { + try { + (*arg1)->set_min_output_buffer(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_set_min_output_buffer(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[4] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "ssamp_correction_sptr_set_min_output_buffer", 0, 3, argv))) SWIG_fail; + --argc; + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_long(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_ssamp_correction_sptr_set_min_output_buffer__SWIG_0(self, argc, argv); + } + } + } + if (argc == 3) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + { + int res = SWIG_AsVal_long(argv[2], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_ssamp_correction_sptr_set_min_output_buffer__SWIG_1(self, argc, argv); + } + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'ssamp_correction_sptr_set_min_output_buffer'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::set_min_output_buffer(long)\n" + " gr::block::set_min_output_buffer(int,long)\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_pc_noutput_items(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_pc_noutput_items" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + { + try { + result = (float)(*arg1)->pc_noutput_items(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_pc_noutput_items_avg(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_pc_noutput_items_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + { + try { + result = (float)(*arg1)->pc_noutput_items_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_pc_noutput_items_var(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_pc_noutput_items_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + { + try { + result = (float)(*arg1)->pc_noutput_items_var(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_pc_nproduced(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_pc_nproduced" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + { + try { + result = (float)(*arg1)->pc_nproduced(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_pc_nproduced_avg(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_pc_nproduced_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + { + try { + result = (float)(*arg1)->pc_nproduced_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_pc_nproduced_var(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_pc_nproduced_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + { + try { + result = (float)(*arg1)->pc_nproduced_var(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_pc_input_buffers_full__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_pc_input_buffers_full" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ssamp_correction_sptr_pc_input_buffers_full" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_input_buffers_full(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_pc_input_buffers_full__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_pc_input_buffers_full" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + { + try { + result = (*arg1)->pc_input_buffers_full(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_pc_input_buffers_full(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "ssamp_correction_sptr_pc_input_buffers_full", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_ssamp_correction_sptr_pc_input_buffers_full__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_ssamp_correction_sptr_pc_input_buffers_full__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'ssamp_correction_sptr_pc_input_buffers_full'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_input_buffers_full(int)\n" + " gr::block::pc_input_buffers_full()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_pc_input_buffers_full_avg__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_pc_input_buffers_full_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ssamp_correction_sptr_pc_input_buffers_full_avg" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_input_buffers_full_avg(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_pc_input_buffers_full_avg__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_pc_input_buffers_full_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + { + try { + result = (*arg1)->pc_input_buffers_full_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_pc_input_buffers_full_avg(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "ssamp_correction_sptr_pc_input_buffers_full_avg", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_ssamp_correction_sptr_pc_input_buffers_full_avg__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_ssamp_correction_sptr_pc_input_buffers_full_avg__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'ssamp_correction_sptr_pc_input_buffers_full_avg'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_input_buffers_full_avg(int)\n" + " gr::block::pc_input_buffers_full_avg()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_pc_input_buffers_full_var__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_pc_input_buffers_full_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ssamp_correction_sptr_pc_input_buffers_full_var" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_input_buffers_full_var(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_pc_input_buffers_full_var__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_pc_input_buffers_full_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + { + try { + result = (*arg1)->pc_input_buffers_full_var(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_pc_input_buffers_full_var(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "ssamp_correction_sptr_pc_input_buffers_full_var", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_ssamp_correction_sptr_pc_input_buffers_full_var__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_ssamp_correction_sptr_pc_input_buffers_full_var__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'ssamp_correction_sptr_pc_input_buffers_full_var'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_input_buffers_full_var(int)\n" + " gr::block::pc_input_buffers_full_var()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_pc_output_buffers_full__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_pc_output_buffers_full" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ssamp_correction_sptr_pc_output_buffers_full" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_output_buffers_full(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_pc_output_buffers_full__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_pc_output_buffers_full" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + { + try { + result = (*arg1)->pc_output_buffers_full(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_pc_output_buffers_full(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "ssamp_correction_sptr_pc_output_buffers_full", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_ssamp_correction_sptr_pc_output_buffers_full__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_ssamp_correction_sptr_pc_output_buffers_full__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'ssamp_correction_sptr_pc_output_buffers_full'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_output_buffers_full(int)\n" + " gr::block::pc_output_buffers_full()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_pc_output_buffers_full_avg__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_pc_output_buffers_full_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ssamp_correction_sptr_pc_output_buffers_full_avg" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_output_buffers_full_avg(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_pc_output_buffers_full_avg__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_pc_output_buffers_full_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + { + try { + result = (*arg1)->pc_output_buffers_full_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_pc_output_buffers_full_avg(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "ssamp_correction_sptr_pc_output_buffers_full_avg", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_ssamp_correction_sptr_pc_output_buffers_full_avg__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_ssamp_correction_sptr_pc_output_buffers_full_avg__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'ssamp_correction_sptr_pc_output_buffers_full_avg'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_output_buffers_full_avg(int)\n" + " gr::block::pc_output_buffers_full_avg()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_pc_output_buffers_full_var__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + float result; + + if ((nobjs < 2) || (nobjs > 2)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_pc_output_buffers_full_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + ecode2 = SWIG_AsVal_int(swig_obj[1], &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ssamp_correction_sptr_pc_output_buffers_full_var" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (float)(*arg1)->pc_output_buffers_full_var(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_pc_output_buffers_full_var__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + std::vector< float,std::allocator< float > > result; + + if ((nobjs < 1) || (nobjs > 1)) SWIG_fail; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_pc_output_buffers_full_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + { + try { + result = (*arg1)->pc_output_buffers_full_var(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< float,std::allocator< float > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_pc_output_buffers_full_var(PyObject *self, PyObject *args) { + Py_ssize_t argc; + PyObject *argv[3] = { + 0 + }; + + if (!(argc = SWIG_Python_UnpackTuple(args, "ssamp_correction_sptr_pc_output_buffers_full_var", 0, 2, argv))) SWIG_fail; + --argc; + if (argc == 1) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_ssamp_correction_sptr_pc_output_buffers_full_var__SWIG_1(self, argc, argv); + } + } + if (argc == 2) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_ssamp_correction_sptr_pc_output_buffers_full_var__SWIG_0(self, argc, argv); + } + } + } + +fail: + SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'ssamp_correction_sptr_pc_output_buffers_full_var'.\n" + " Possible C/C++ prototypes are:\n" + " gr::block::pc_output_buffers_full_var(int)\n" + " gr::block::pc_output_buffers_full_var()\n"); + return 0; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_pc_work_time(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_pc_work_time" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + { + try { + result = (float)(*arg1)->pc_work_time(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_pc_work_time_avg(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_pc_work_time_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + { + try { + result = (float)(*arg1)->pc_work_time_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_pc_work_time_var(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_pc_work_time_var" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + { + try { + result = (float)(*arg1)->pc_work_time_var(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_pc_work_time_total(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_pc_work_time_total" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + { + try { + result = (float)(*arg1)->pc_work_time_total(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_pc_throughput_avg(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + float result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_pc_throughput_avg" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + { + try { + result = (float)(*arg1)->pc_throughput_avg(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_float(static_cast< float >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_set_processor_affinity(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + std::vector< int,std::allocator< int > > *arg2 = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 = SWIG_OLDOBJ ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"mask", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:ssamp_correction_sptr_set_processor_affinity", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_set_processor_affinity" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + { + std::vector< int,std::allocator< int > > *ptr = (std::vector< int,std::allocator< int > > *)0; + res2 = swig::asptr(obj1, &ptr); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ssamp_correction_sptr_set_processor_affinity" "', argument " "2"" of type '" "std::vector< int,std::allocator< int > > const &""'"); + } + if (!ptr) { + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "ssamp_correction_sptr_set_processor_affinity" "', argument " "2"" of type '" "std::vector< int,std::allocator< int > > const &""'"); + } + arg2 = ptr; + } + { + try { + (*arg1)->set_processor_affinity((std::vector< int,std::allocator< int > > const &)*arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + if (SWIG_IsNewObj(res2)) delete arg2; + return resultobj; +fail: + if (SWIG_IsNewObj(res2)) delete arg2; + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_unset_processor_affinity(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_unset_processor_affinity" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + { + try { + (*arg1)->unset_processor_affinity(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_processor_affinity(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + std::vector< int,std::allocator< int > > result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_processor_affinity" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + { + try { + result = (*arg1)->processor_affinity(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = swig::from(static_cast< std::vector< int,std::allocator< int > > >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_active_thread_priority(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_active_thread_priority" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + { + try { + result = (int)(*arg1)->active_thread_priority(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_thread_priority(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + int result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_thread_priority" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + { + try { + result = (int)(*arg1)->thread_priority(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_set_thread_priority(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"priority", NULL + }; + int result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:ssamp_correction_sptr_set_thread_priority", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_set_thread_priority" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ssamp_correction_sptr_set_thread_priority" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + { + try { + result = (int)(*arg1)->set_thread_priority(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_int(static_cast< int >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_name(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + std::string result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_name" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + { + try { + result = (*arg1)->name(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_std_string(static_cast< std::string >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_symbol_name(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + std::string result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_symbol_name" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + { + try { + result = (*arg1)->symbol_name(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_std_string(static_cast< std::string >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_input_signature(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + gr::io_signature::sptr result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_input_signature" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + { + try { + result = (*arg1)->input_signature(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new gr::io_signature::sptr(static_cast< const gr::io_signature::sptr& >(result))), SWIGTYPE_p_boost__shared_ptrT_gr__io_signature_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_output_signature(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + gr::io_signature::sptr result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_output_signature" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + { + try { + result = (*arg1)->output_signature(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new gr::io_signature::sptr(static_cast< const gr::io_signature::sptr& >(result))), SWIGTYPE_p_boost__shared_ptrT_gr__io_signature_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_unique_id(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + long result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_unique_id" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > const *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + { + try { + result = (long)(*arg1)->unique_id(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_long(static_cast< long >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_to_basic_block(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + gr::basic_block_sptr result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_to_basic_block" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + { + try { + result = (*arg1)->to_basic_block(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new gr::basic_block_sptr(static_cast< const gr::basic_block_sptr& >(result))), SWIGTYPE_p_boost__shared_ptrT_gr__basic_block_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_check_topology(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + int arg2 ; + int arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int val3 ; + int ecode3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"ninputs", (char *)"noutputs", NULL + }; + bool result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOO:ssamp_correction_sptr_check_topology", kwnames, &obj0, &obj1, &obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_check_topology" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ssamp_correction_sptr_check_topology" "', argument " "2"" of type '" "int""'"); + } + arg2 = static_cast< int >(val2); + ecode3 = SWIG_AsVal_int(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "ssamp_correction_sptr_check_topology" "', argument " "3"" of type '" "int""'"); + } + arg3 = static_cast< int >(val3); + { + try { + result = (bool)(*arg1)->check_topology(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_bool(static_cast< bool >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_alias(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + std::string result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_alias" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + { + try { + result = (*arg1)->alias(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_From_std_string(static_cast< std::string >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_set_block_alias(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + std::string arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"name", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:ssamp_correction_sptr_set_block_alias", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_set_block_alias" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + { + std::string *ptr = (std::string *)0; + int res = SWIG_AsPtr_std_string(obj1, &ptr); + if (!SWIG_IsOK(res) || !ptr) { + SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "ssamp_correction_sptr_set_block_alias" "', argument " "2"" of type '" "std::string""'"); + } + arg2 = *ptr; + if (SWIG_IsNewObj(res)) delete ptr; + } + { + try { + (*arg1)->set_block_alias(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr__post(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + pmt::pmt_t arg2 ; + pmt::pmt_t arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 ; + int res2 = 0 ; + void *argp3 ; + int res3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"which_port", (char *)"msg", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOO:ssamp_correction_sptr__post", kwnames, &obj0, &obj1, &obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr__post" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + { + res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, 0 | 0); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ssamp_correction_sptr__post" "', argument " "2"" of type '" "pmt::pmt_t""'"); + } + if (!argp2) { + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "ssamp_correction_sptr__post" "', argument " "2"" of type '" "pmt::pmt_t""'"); + } else { + pmt::pmt_t * temp = reinterpret_cast< pmt::pmt_t * >(argp2); + arg2 = *temp; + if (SWIG_IsNewObj(res2)) delete temp; + } + } + { + res3 = SWIG_ConvertPtr(obj2, &argp3, SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, 0 | 0); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "ssamp_correction_sptr__post" "', argument " "3"" of type '" "pmt::pmt_t""'"); + } + if (!argp3) { + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "ssamp_correction_sptr__post" "', argument " "3"" of type '" "pmt::pmt_t""'"); + } else { + pmt::pmt_t * temp = reinterpret_cast< pmt::pmt_t * >(argp3); + arg3 = *temp; + if (SWIG_IsNewObj(res3)) delete temp; + } + } + { + try { + (*arg1)->_post(arg2,arg3); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_message_ports_in(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + pmt::pmt_t result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_message_ports_in" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + { + try { + result = (*arg1)->message_ports_in(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new pmt::pmt_t(static_cast< const pmt::pmt_t& >(result))), SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_message_ports_out(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject *swig_obj[1] ; + pmt::pmt_t result; + + if (!args) SWIG_fail; + swig_obj[0] = args; + res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_message_ports_out" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + { + try { + result = (*arg1)->message_ports_out(); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new pmt::pmt_t(static_cast< const pmt::pmt_t& >(result))), SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_ssamp_correction_sptr_message_subscribers(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { + PyObject *resultobj = 0; + boost::shared_ptr< gr::tempest::ssamp_correction > *arg1 = (boost::shared_ptr< gr::tempest::ssamp_correction > *) 0 ; + pmt::pmt_t arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + char * kwnames[] = { + (char *)"self", (char *)"which_port", NULL + }; + pmt::pmt_t result; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:ssamp_correction_sptr_message_subscribers", kwnames, &obj0, &obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ssamp_correction_sptr_message_subscribers" "', argument " "1"" of type '" "boost::shared_ptr< gr::tempest::ssamp_correction > *""'"); + } + arg1 = reinterpret_cast< boost::shared_ptr< gr::tempest::ssamp_correction > * >(argp1); + { + res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, 0 | 0); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ssamp_correction_sptr_message_subscribers" "', argument " "2"" of type '" "pmt::pmt_t""'"); + } + if (!argp2) { + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "ssamp_correction_sptr_message_subscribers" "', argument " "2"" of type '" "pmt::pmt_t""'"); + } else { + pmt::pmt_t * temp = reinterpret_cast< pmt::pmt_t * >(argp2); + arg2 = *temp; + if (SWIG_IsNewObj(res2)) delete temp; + } + } + { + try { + result = (*arg1)->message_subscribers(arg2); + } + catch(std::exception &e) { + SWIG_exception(SWIG_RuntimeError, e.what()); + } + catch(...) { + SWIG_exception(SWIG_RuntimeError, "Unknown exception"); + } + + } + resultobj = SWIG_NewPointerObj((new pmt::pmt_t(static_cast< const pmt::pmt_t& >(result))), SWIGTYPE_p_boost__shared_ptrT_pmt__pmt_base_t, SWIG_POINTER_OWN | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *ssamp_correction_sptr_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!SWIG_Python_UnpackTuple(args, "swigregister", 1, 1, &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *ssamp_correction_sptr_swiginit(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + return SWIG_Python_InitShadowInstance(args); +} + +static PyMethodDef SwigMethods[] = { + { "SWIG_PyInstanceMethod_New", SWIG_PyInstanceMethod_New, METH_O, NULL}, + { "high_res_timer_now", _wrap_high_res_timer_now, METH_NOARGS, "high_res_timer_now() -> gr::high_res_timer_type"}, + { "high_res_timer_now_perfmon", _wrap_high_res_timer_now_perfmon, METH_NOARGS, "high_res_timer_now_perfmon() -> gr::high_res_timer_type"}, + { "high_res_timer_tps", _wrap_high_res_timer_tps, METH_NOARGS, "high_res_timer_tps() -> gr::high_res_timer_type"}, + { "high_res_timer_epoch", _wrap_high_res_timer_epoch, METH_NOARGS, "high_res_timer_epoch() -> gr::high_res_timer_type"}, + { "sampling_synchronization_make", (PyCFunction)(void(*)(void))_wrap_sampling_synchronization_make, METH_VARARGS|METH_KEYWORDS, "sampling_synchronization_make(int Htotal, double manual_correction) -> sampling_synchronization_sptr"}, + { "sampling_synchronization_set_Htotal", (PyCFunction)(void(*)(void))_wrap_sampling_synchronization_set_Htotal, METH_VARARGS|METH_KEYWORDS, "sampling_synchronization_set_Htotal(sampling_synchronization self, int Htotal)"}, + { "sampling_synchronization_set_manual_correction", (PyCFunction)(void(*)(void))_wrap_sampling_synchronization_set_manual_correction, METH_VARARGS|METH_KEYWORDS, "sampling_synchronization_set_manual_correction(sampling_synchronization self, double correction)"}, + { "delete_sampling_synchronization", _wrap_delete_sampling_synchronization, METH_O, "delete_sampling_synchronization(sampling_synchronization self)"}, + { "sampling_synchronization_swigregister", sampling_synchronization_swigregister, METH_O, NULL}, + { "new_sampling_synchronization_sptr", _wrap_new_sampling_synchronization_sptr, METH_VARARGS, "\n" + "sampling_synchronization_sptr()\n" + "new_sampling_synchronization_sptr(sampling_synchronization p) -> sampling_synchronization_sptr\n" + ""}, + { "sampling_synchronization_sptr___deref__", _wrap_sampling_synchronization_sptr___deref__, METH_O, "sampling_synchronization_sptr___deref__(sampling_synchronization_sptr self) -> sampling_synchronization"}, + { "delete_sampling_synchronization_sptr", _wrap_delete_sampling_synchronization_sptr, METH_O, "delete_sampling_synchronization_sptr(sampling_synchronization_sptr self)"}, + { "sampling_synchronization_sptr_make", (PyCFunction)(void(*)(void))_wrap_sampling_synchronization_sptr_make, METH_VARARGS|METH_KEYWORDS, "sampling_synchronization_sptr_make(sampling_synchronization_sptr self, int Htotal, double manual_correction) -> sampling_synchronization_sptr"}, + { "sampling_synchronization_sptr_set_Htotal", (PyCFunction)(void(*)(void))_wrap_sampling_synchronization_sptr_set_Htotal, METH_VARARGS|METH_KEYWORDS, "sampling_synchronization_sptr_set_Htotal(sampling_synchronization_sptr self, int Htotal)"}, + { "sampling_synchronization_sptr_set_manual_correction", (PyCFunction)(void(*)(void))_wrap_sampling_synchronization_sptr_set_manual_correction, METH_VARARGS|METH_KEYWORDS, "sampling_synchronization_sptr_set_manual_correction(sampling_synchronization_sptr self, double correction)"}, + { "sampling_synchronization_sptr_history", _wrap_sampling_synchronization_sptr_history, METH_O, "sampling_synchronization_sptr_history(sampling_synchronization_sptr self) -> unsigned int"}, + { "sampling_synchronization_sptr_declare_sample_delay", _wrap_sampling_synchronization_sptr_declare_sample_delay, METH_VARARGS, "\n" + "sampling_synchronization_sptr_declare_sample_delay(sampling_synchronization_sptr self, int which, int delay)\n" + "sampling_synchronization_sptr_declare_sample_delay(sampling_synchronization_sptr self, unsigned int delay)\n" + ""}, + { "sampling_synchronization_sptr_sample_delay", (PyCFunction)(void(*)(void))_wrap_sampling_synchronization_sptr_sample_delay, METH_VARARGS|METH_KEYWORDS, "sampling_synchronization_sptr_sample_delay(sampling_synchronization_sptr self, int which) -> unsigned int"}, + { "sampling_synchronization_sptr_set_output_multiple", (PyCFunction)(void(*)(void))_wrap_sampling_synchronization_sptr_set_output_multiple, METH_VARARGS|METH_KEYWORDS, "sampling_synchronization_sptr_set_output_multiple(sampling_synchronization_sptr self, int multiple)"}, + { "sampling_synchronization_sptr_output_multiple", _wrap_sampling_synchronization_sptr_output_multiple, METH_O, "sampling_synchronization_sptr_output_multiple(sampling_synchronization_sptr self) -> int"}, + { "sampling_synchronization_sptr_relative_rate", _wrap_sampling_synchronization_sptr_relative_rate, METH_O, "sampling_synchronization_sptr_relative_rate(sampling_synchronization_sptr self) -> double"}, + { "sampling_synchronization_sptr_relative_rate_i", _wrap_sampling_synchronization_sptr_relative_rate_i, METH_O, "sampling_synchronization_sptr_relative_rate_i(sampling_synchronization_sptr self) -> uint64_t"}, + { "sampling_synchronization_sptr_relative_rate_d", _wrap_sampling_synchronization_sptr_relative_rate_d, METH_O, "sampling_synchronization_sptr_relative_rate_d(sampling_synchronization_sptr self) -> uint64_t"}, + { "sampling_synchronization_sptr_start", _wrap_sampling_synchronization_sptr_start, METH_O, "sampling_synchronization_sptr_start(sampling_synchronization_sptr self) -> bool"}, + { "sampling_synchronization_sptr_stop", _wrap_sampling_synchronization_sptr_stop, METH_O, "sampling_synchronization_sptr_stop(sampling_synchronization_sptr self) -> bool"}, + { "sampling_synchronization_sptr_nitems_read", (PyCFunction)(void(*)(void))_wrap_sampling_synchronization_sptr_nitems_read, METH_VARARGS|METH_KEYWORDS, "sampling_synchronization_sptr_nitems_read(sampling_synchronization_sptr self, unsigned int which_input) -> uint64_t"}, + { "sampling_synchronization_sptr_nitems_written", (PyCFunction)(void(*)(void))_wrap_sampling_synchronization_sptr_nitems_written, METH_VARARGS|METH_KEYWORDS, "sampling_synchronization_sptr_nitems_written(sampling_synchronization_sptr self, unsigned int which_output) -> uint64_t"}, + { "sampling_synchronization_sptr_set_log_level", (PyCFunction)(void(*)(void))_wrap_sampling_synchronization_sptr_set_log_level, METH_VARARGS|METH_KEYWORDS, "sampling_synchronization_sptr_set_log_level(sampling_synchronization_sptr self, std::string level)"}, + { "sampling_synchronization_sptr_log_level", _wrap_sampling_synchronization_sptr_log_level, METH_O, "sampling_synchronization_sptr_log_level(sampling_synchronization_sptr self) -> std::string"}, + { "sampling_synchronization_sptr_max_noutput_items", _wrap_sampling_synchronization_sptr_max_noutput_items, METH_O, "sampling_synchronization_sptr_max_noutput_items(sampling_synchronization_sptr self) -> int"}, + { "sampling_synchronization_sptr_set_max_noutput_items", (PyCFunction)(void(*)(void))_wrap_sampling_synchronization_sptr_set_max_noutput_items, METH_VARARGS|METH_KEYWORDS, "sampling_synchronization_sptr_set_max_noutput_items(sampling_synchronization_sptr self, int m)"}, + { "sampling_synchronization_sptr_unset_max_noutput_items", _wrap_sampling_synchronization_sptr_unset_max_noutput_items, METH_O, "sampling_synchronization_sptr_unset_max_noutput_items(sampling_synchronization_sptr self)"}, + { "sampling_synchronization_sptr_is_set_max_noutput_items", _wrap_sampling_synchronization_sptr_is_set_max_noutput_items, METH_O, "sampling_synchronization_sptr_is_set_max_noutput_items(sampling_synchronization_sptr self) -> bool"}, + { "sampling_synchronization_sptr_set_min_noutput_items", (PyCFunction)(void(*)(void))_wrap_sampling_synchronization_sptr_set_min_noutput_items, METH_VARARGS|METH_KEYWORDS, "sampling_synchronization_sptr_set_min_noutput_items(sampling_synchronization_sptr self, int m)"}, + { "sampling_synchronization_sptr_min_noutput_items", _wrap_sampling_synchronization_sptr_min_noutput_items, METH_O, "sampling_synchronization_sptr_min_noutput_items(sampling_synchronization_sptr self) -> int"}, + { "sampling_synchronization_sptr_max_output_buffer", (PyCFunction)(void(*)(void))_wrap_sampling_synchronization_sptr_max_output_buffer, METH_VARARGS|METH_KEYWORDS, "sampling_synchronization_sptr_max_output_buffer(sampling_synchronization_sptr self, int i) -> long"}, + { "sampling_synchronization_sptr_set_max_output_buffer", _wrap_sampling_synchronization_sptr_set_max_output_buffer, METH_VARARGS, "\n" + "sampling_synchronization_sptr_set_max_output_buffer(sampling_synchronization_sptr self, long max_output_buffer)\n" + "sampling_synchronization_sptr_set_max_output_buffer(sampling_synchronization_sptr self, int port, long max_output_buffer)\n" + ""}, + { "sampling_synchronization_sptr_min_output_buffer", (PyCFunction)(void(*)(void))_wrap_sampling_synchronization_sptr_min_output_buffer, METH_VARARGS|METH_KEYWORDS, "sampling_synchronization_sptr_min_output_buffer(sampling_synchronization_sptr self, int i) -> long"}, + { "sampling_synchronization_sptr_set_min_output_buffer", _wrap_sampling_synchronization_sptr_set_min_output_buffer, METH_VARARGS, "\n" + "sampling_synchronization_sptr_set_min_output_buffer(sampling_synchronization_sptr self, long min_output_buffer)\n" + "sampling_synchronization_sptr_set_min_output_buffer(sampling_synchronization_sptr self, int port, long min_output_buffer)\n" + ""}, + { "sampling_synchronization_sptr_pc_noutput_items", _wrap_sampling_synchronization_sptr_pc_noutput_items, METH_O, "sampling_synchronization_sptr_pc_noutput_items(sampling_synchronization_sptr self) -> float"}, + { "sampling_synchronization_sptr_pc_noutput_items_avg", _wrap_sampling_synchronization_sptr_pc_noutput_items_avg, METH_O, "sampling_synchronization_sptr_pc_noutput_items_avg(sampling_synchronization_sptr self) -> float"}, + { "sampling_synchronization_sptr_pc_noutput_items_var", _wrap_sampling_synchronization_sptr_pc_noutput_items_var, METH_O, "sampling_synchronization_sptr_pc_noutput_items_var(sampling_synchronization_sptr self) -> float"}, + { "sampling_synchronization_sptr_pc_nproduced", _wrap_sampling_synchronization_sptr_pc_nproduced, METH_O, "sampling_synchronization_sptr_pc_nproduced(sampling_synchronization_sptr self) -> float"}, + { "sampling_synchronization_sptr_pc_nproduced_avg", _wrap_sampling_synchronization_sptr_pc_nproduced_avg, METH_O, "sampling_synchronization_sptr_pc_nproduced_avg(sampling_synchronization_sptr self) -> float"}, + { "sampling_synchronization_sptr_pc_nproduced_var", _wrap_sampling_synchronization_sptr_pc_nproduced_var, METH_O, "sampling_synchronization_sptr_pc_nproduced_var(sampling_synchronization_sptr self) -> float"}, + { "sampling_synchronization_sptr_pc_input_buffers_full", _wrap_sampling_synchronization_sptr_pc_input_buffers_full, METH_VARARGS, "\n" + "sampling_synchronization_sptr_pc_input_buffers_full(sampling_synchronization_sptr self, int which) -> float\n" + "sampling_synchronization_sptr_pc_input_buffers_full(sampling_synchronization_sptr self) -> pmt_vector_float\n" + ""}, + { "sampling_synchronization_sptr_pc_input_buffers_full_avg", _wrap_sampling_synchronization_sptr_pc_input_buffers_full_avg, METH_VARARGS, "\n" + "sampling_synchronization_sptr_pc_input_buffers_full_avg(sampling_synchronization_sptr self, int which) -> float\n" + "sampling_synchronization_sptr_pc_input_buffers_full_avg(sampling_synchronization_sptr self) -> pmt_vector_float\n" + ""}, + { "sampling_synchronization_sptr_pc_input_buffers_full_var", _wrap_sampling_synchronization_sptr_pc_input_buffers_full_var, METH_VARARGS, "\n" + "sampling_synchronization_sptr_pc_input_buffers_full_var(sampling_synchronization_sptr self, int which) -> float\n" + "sampling_synchronization_sptr_pc_input_buffers_full_var(sampling_synchronization_sptr self) -> pmt_vector_float\n" + ""}, + { "sampling_synchronization_sptr_pc_output_buffers_full", _wrap_sampling_synchronization_sptr_pc_output_buffers_full, METH_VARARGS, "\n" + "sampling_synchronization_sptr_pc_output_buffers_full(sampling_synchronization_sptr self, int which) -> float\n" + "sampling_synchronization_sptr_pc_output_buffers_full(sampling_synchronization_sptr self) -> pmt_vector_float\n" + ""}, + { "sampling_synchronization_sptr_pc_output_buffers_full_avg", _wrap_sampling_synchronization_sptr_pc_output_buffers_full_avg, METH_VARARGS, "\n" + "sampling_synchronization_sptr_pc_output_buffers_full_avg(sampling_synchronization_sptr self, int which) -> float\n" + "sampling_synchronization_sptr_pc_output_buffers_full_avg(sampling_synchronization_sptr self) -> pmt_vector_float\n" + ""}, + { "sampling_synchronization_sptr_pc_output_buffers_full_var", _wrap_sampling_synchronization_sptr_pc_output_buffers_full_var, METH_VARARGS, "\n" + "sampling_synchronization_sptr_pc_output_buffers_full_var(sampling_synchronization_sptr self, int which) -> float\n" + "sampling_synchronization_sptr_pc_output_buffers_full_var(sampling_synchronization_sptr self) -> pmt_vector_float\n" + ""}, + { "sampling_synchronization_sptr_pc_work_time", _wrap_sampling_synchronization_sptr_pc_work_time, METH_O, "sampling_synchronization_sptr_pc_work_time(sampling_synchronization_sptr self) -> float"}, + { "sampling_synchronization_sptr_pc_work_time_avg", _wrap_sampling_synchronization_sptr_pc_work_time_avg, METH_O, "sampling_synchronization_sptr_pc_work_time_avg(sampling_synchronization_sptr self) -> float"}, + { "sampling_synchronization_sptr_pc_work_time_var", _wrap_sampling_synchronization_sptr_pc_work_time_var, METH_O, "sampling_synchronization_sptr_pc_work_time_var(sampling_synchronization_sptr self) -> float"}, + { "sampling_synchronization_sptr_pc_work_time_total", _wrap_sampling_synchronization_sptr_pc_work_time_total, METH_O, "sampling_synchronization_sptr_pc_work_time_total(sampling_synchronization_sptr self) -> float"}, + { "sampling_synchronization_sptr_pc_throughput_avg", _wrap_sampling_synchronization_sptr_pc_throughput_avg, METH_O, "sampling_synchronization_sptr_pc_throughput_avg(sampling_synchronization_sptr self) -> float"}, + { "sampling_synchronization_sptr_set_processor_affinity", (PyCFunction)(void(*)(void))_wrap_sampling_synchronization_sptr_set_processor_affinity, METH_VARARGS|METH_KEYWORDS, "sampling_synchronization_sptr_set_processor_affinity(sampling_synchronization_sptr self, std::vector< int,std::allocator< int > > const & mask)"}, + { "sampling_synchronization_sptr_unset_processor_affinity", _wrap_sampling_synchronization_sptr_unset_processor_affinity, METH_O, "sampling_synchronization_sptr_unset_processor_affinity(sampling_synchronization_sptr self)"}, + { "sampling_synchronization_sptr_processor_affinity", _wrap_sampling_synchronization_sptr_processor_affinity, METH_O, "sampling_synchronization_sptr_processor_affinity(sampling_synchronization_sptr self) -> std::vector< int,std::allocator< int > >"}, + { "sampling_synchronization_sptr_active_thread_priority", _wrap_sampling_synchronization_sptr_active_thread_priority, METH_O, "sampling_synchronization_sptr_active_thread_priority(sampling_synchronization_sptr self) -> int"}, + { "sampling_synchronization_sptr_thread_priority", _wrap_sampling_synchronization_sptr_thread_priority, METH_O, "sampling_synchronization_sptr_thread_priority(sampling_synchronization_sptr self) -> int"}, + { "sampling_synchronization_sptr_set_thread_priority", (PyCFunction)(void(*)(void))_wrap_sampling_synchronization_sptr_set_thread_priority, METH_VARARGS|METH_KEYWORDS, "sampling_synchronization_sptr_set_thread_priority(sampling_synchronization_sptr self, int priority) -> int"}, + { "sampling_synchronization_sptr_name", _wrap_sampling_synchronization_sptr_name, METH_O, "sampling_synchronization_sptr_name(sampling_synchronization_sptr self) -> std::string"}, + { "sampling_synchronization_sptr_symbol_name", _wrap_sampling_synchronization_sptr_symbol_name, METH_O, "sampling_synchronization_sptr_symbol_name(sampling_synchronization_sptr self) -> std::string"}, + { "sampling_synchronization_sptr_input_signature", _wrap_sampling_synchronization_sptr_input_signature, METH_O, "sampling_synchronization_sptr_input_signature(sampling_synchronization_sptr self) -> io_signature_sptr"}, + { "sampling_synchronization_sptr_output_signature", _wrap_sampling_synchronization_sptr_output_signature, METH_O, "sampling_synchronization_sptr_output_signature(sampling_synchronization_sptr self) -> io_signature_sptr"}, + { "sampling_synchronization_sptr_unique_id", _wrap_sampling_synchronization_sptr_unique_id, METH_O, "sampling_synchronization_sptr_unique_id(sampling_synchronization_sptr self) -> long"}, + { "sampling_synchronization_sptr_to_basic_block", _wrap_sampling_synchronization_sptr_to_basic_block, METH_O, "sampling_synchronization_sptr_to_basic_block(sampling_synchronization_sptr self) -> basic_block_sptr"}, + { "sampling_synchronization_sptr_check_topology", (PyCFunction)(void(*)(void))_wrap_sampling_synchronization_sptr_check_topology, METH_VARARGS|METH_KEYWORDS, "sampling_synchronization_sptr_check_topology(sampling_synchronization_sptr self, int ninputs, int noutputs) -> bool"}, + { "sampling_synchronization_sptr_alias", _wrap_sampling_synchronization_sptr_alias, METH_O, "sampling_synchronization_sptr_alias(sampling_synchronization_sptr self) -> std::string"}, + { "sampling_synchronization_sptr_set_block_alias", (PyCFunction)(void(*)(void))_wrap_sampling_synchronization_sptr_set_block_alias, METH_VARARGS|METH_KEYWORDS, "sampling_synchronization_sptr_set_block_alias(sampling_synchronization_sptr self, std::string name)"}, + { "sampling_synchronization_sptr__post", (PyCFunction)(void(*)(void))_wrap_sampling_synchronization_sptr__post, METH_VARARGS|METH_KEYWORDS, "sampling_synchronization_sptr__post(sampling_synchronization_sptr self, swig_pmt_ptr which_port, swig_pmt_ptr msg)"}, + { "sampling_synchronization_sptr_message_ports_in", _wrap_sampling_synchronization_sptr_message_ports_in, METH_O, "sampling_synchronization_sptr_message_ports_in(sampling_synchronization_sptr self) -> swig_pmt_ptr"}, + { "sampling_synchronization_sptr_message_ports_out", _wrap_sampling_synchronization_sptr_message_ports_out, METH_O, "sampling_synchronization_sptr_message_ports_out(sampling_synchronization_sptr self) -> swig_pmt_ptr"}, + { "sampling_synchronization_sptr_message_subscribers", (PyCFunction)(void(*)(void))_wrap_sampling_synchronization_sptr_message_subscribers, METH_VARARGS|METH_KEYWORDS, "sampling_synchronization_sptr_message_subscribers(sampling_synchronization_sptr self, swig_pmt_ptr which_port) -> swig_pmt_ptr"}, + { "sampling_synchronization_sptr_swigregister", sampling_synchronization_sptr_swigregister, METH_O, NULL}, + { "sampling_synchronization_sptr_swiginit", sampling_synchronization_sptr_swiginit, METH_VARARGS, NULL}, + { "framing_make", (PyCFunction)(void(*)(void))_wrap_framing_make, METH_VARARGS|METH_KEYWORDS, "framing_make(int Htotal, int Vtotal, int Hdisplay, int Vdisplay) -> framing_sptr"}, + { "framing_set_Htotal_and_Vtotal", (PyCFunction)(void(*)(void))_wrap_framing_set_Htotal_and_Vtotal, METH_VARARGS|METH_KEYWORDS, "framing_set_Htotal_and_Vtotal(framing self, int Htotal, int Vtotal)"}, + { "delete_framing", _wrap_delete_framing, METH_O, "delete_framing(framing self)"}, + { "framing_swigregister", framing_swigregister, METH_O, NULL}, + { "new_framing_sptr", _wrap_new_framing_sptr, METH_VARARGS, "\n" + "framing_sptr()\n" + "new_framing_sptr(framing p) -> framing_sptr\n" + ""}, + { "framing_sptr___deref__", _wrap_framing_sptr___deref__, METH_O, "framing_sptr___deref__(framing_sptr self) -> framing"}, + { "delete_framing_sptr", _wrap_delete_framing_sptr, METH_O, "delete_framing_sptr(framing_sptr self)"}, + { "framing_sptr_make", (PyCFunction)(void(*)(void))_wrap_framing_sptr_make, METH_VARARGS|METH_KEYWORDS, "framing_sptr_make(framing_sptr self, int Htotal, int Vtotal, int Hdisplay, int Vdisplay) -> framing_sptr"}, + { "framing_sptr_set_Htotal_and_Vtotal", (PyCFunction)(void(*)(void))_wrap_framing_sptr_set_Htotal_and_Vtotal, METH_VARARGS|METH_KEYWORDS, "framing_sptr_set_Htotal_and_Vtotal(framing_sptr self, int Htotal, int Vtotal)"}, + { "framing_sptr_history", _wrap_framing_sptr_history, METH_O, "framing_sptr_history(framing_sptr self) -> unsigned int"}, + { "framing_sptr_declare_sample_delay", _wrap_framing_sptr_declare_sample_delay, METH_VARARGS, "\n" + "framing_sptr_declare_sample_delay(framing_sptr self, int which, int delay)\n" + "framing_sptr_declare_sample_delay(framing_sptr self, unsigned int delay)\n" + ""}, + { "framing_sptr_sample_delay", (PyCFunction)(void(*)(void))_wrap_framing_sptr_sample_delay, METH_VARARGS|METH_KEYWORDS, "framing_sptr_sample_delay(framing_sptr self, int which) -> unsigned int"}, + { "framing_sptr_set_output_multiple", (PyCFunction)(void(*)(void))_wrap_framing_sptr_set_output_multiple, METH_VARARGS|METH_KEYWORDS, "framing_sptr_set_output_multiple(framing_sptr self, int multiple)"}, + { "framing_sptr_output_multiple", _wrap_framing_sptr_output_multiple, METH_O, "framing_sptr_output_multiple(framing_sptr self) -> int"}, + { "framing_sptr_relative_rate", _wrap_framing_sptr_relative_rate, METH_O, "framing_sptr_relative_rate(framing_sptr self) -> double"}, + { "framing_sptr_relative_rate_i", _wrap_framing_sptr_relative_rate_i, METH_O, "framing_sptr_relative_rate_i(framing_sptr self) -> uint64_t"}, + { "framing_sptr_relative_rate_d", _wrap_framing_sptr_relative_rate_d, METH_O, "framing_sptr_relative_rate_d(framing_sptr self) -> uint64_t"}, + { "framing_sptr_start", _wrap_framing_sptr_start, METH_O, "framing_sptr_start(framing_sptr self) -> bool"}, + { "framing_sptr_stop", _wrap_framing_sptr_stop, METH_O, "framing_sptr_stop(framing_sptr self) -> bool"}, + { "framing_sptr_nitems_read", (PyCFunction)(void(*)(void))_wrap_framing_sptr_nitems_read, METH_VARARGS|METH_KEYWORDS, "framing_sptr_nitems_read(framing_sptr self, unsigned int which_input) -> uint64_t"}, + { "framing_sptr_nitems_written", (PyCFunction)(void(*)(void))_wrap_framing_sptr_nitems_written, METH_VARARGS|METH_KEYWORDS, "framing_sptr_nitems_written(framing_sptr self, unsigned int which_output) -> uint64_t"}, + { "framing_sptr_set_log_level", (PyCFunction)(void(*)(void))_wrap_framing_sptr_set_log_level, METH_VARARGS|METH_KEYWORDS, "framing_sptr_set_log_level(framing_sptr self, std::string level)"}, + { "framing_sptr_log_level", _wrap_framing_sptr_log_level, METH_O, "framing_sptr_log_level(framing_sptr self) -> std::string"}, + { "framing_sptr_max_noutput_items", _wrap_framing_sptr_max_noutput_items, METH_O, "framing_sptr_max_noutput_items(framing_sptr self) -> int"}, + { "framing_sptr_set_max_noutput_items", (PyCFunction)(void(*)(void))_wrap_framing_sptr_set_max_noutput_items, METH_VARARGS|METH_KEYWORDS, "framing_sptr_set_max_noutput_items(framing_sptr self, int m)"}, + { "framing_sptr_unset_max_noutput_items", _wrap_framing_sptr_unset_max_noutput_items, METH_O, "framing_sptr_unset_max_noutput_items(framing_sptr self)"}, + { "framing_sptr_is_set_max_noutput_items", _wrap_framing_sptr_is_set_max_noutput_items, METH_O, "framing_sptr_is_set_max_noutput_items(framing_sptr self) -> bool"}, + { "framing_sptr_set_min_noutput_items", (PyCFunction)(void(*)(void))_wrap_framing_sptr_set_min_noutput_items, METH_VARARGS|METH_KEYWORDS, "framing_sptr_set_min_noutput_items(framing_sptr self, int m)"}, + { "framing_sptr_min_noutput_items", _wrap_framing_sptr_min_noutput_items, METH_O, "framing_sptr_min_noutput_items(framing_sptr self) -> int"}, + { "framing_sptr_max_output_buffer", (PyCFunction)(void(*)(void))_wrap_framing_sptr_max_output_buffer, METH_VARARGS|METH_KEYWORDS, "framing_sptr_max_output_buffer(framing_sptr self, int i) -> long"}, + { "framing_sptr_set_max_output_buffer", _wrap_framing_sptr_set_max_output_buffer, METH_VARARGS, "\n" + "framing_sptr_set_max_output_buffer(framing_sptr self, long max_output_buffer)\n" + "framing_sptr_set_max_output_buffer(framing_sptr self, int port, long max_output_buffer)\n" + ""}, + { "framing_sptr_min_output_buffer", (PyCFunction)(void(*)(void))_wrap_framing_sptr_min_output_buffer, METH_VARARGS|METH_KEYWORDS, "framing_sptr_min_output_buffer(framing_sptr self, int i) -> long"}, + { "framing_sptr_set_min_output_buffer", _wrap_framing_sptr_set_min_output_buffer, METH_VARARGS, "\n" + "framing_sptr_set_min_output_buffer(framing_sptr self, long min_output_buffer)\n" + "framing_sptr_set_min_output_buffer(framing_sptr self, int port, long min_output_buffer)\n" + ""}, + { "framing_sptr_pc_noutput_items", _wrap_framing_sptr_pc_noutput_items, METH_O, "framing_sptr_pc_noutput_items(framing_sptr self) -> float"}, + { "framing_sptr_pc_noutput_items_avg", _wrap_framing_sptr_pc_noutput_items_avg, METH_O, "framing_sptr_pc_noutput_items_avg(framing_sptr self) -> float"}, + { "framing_sptr_pc_noutput_items_var", _wrap_framing_sptr_pc_noutput_items_var, METH_O, "framing_sptr_pc_noutput_items_var(framing_sptr self) -> float"}, + { "framing_sptr_pc_nproduced", _wrap_framing_sptr_pc_nproduced, METH_O, "framing_sptr_pc_nproduced(framing_sptr self) -> float"}, + { "framing_sptr_pc_nproduced_avg", _wrap_framing_sptr_pc_nproduced_avg, METH_O, "framing_sptr_pc_nproduced_avg(framing_sptr self) -> float"}, + { "framing_sptr_pc_nproduced_var", _wrap_framing_sptr_pc_nproduced_var, METH_O, "framing_sptr_pc_nproduced_var(framing_sptr self) -> float"}, + { "framing_sptr_pc_input_buffers_full", _wrap_framing_sptr_pc_input_buffers_full, METH_VARARGS, "\n" + "framing_sptr_pc_input_buffers_full(framing_sptr self, int which) -> float\n" + "framing_sptr_pc_input_buffers_full(framing_sptr self) -> pmt_vector_float\n" + ""}, + { "framing_sptr_pc_input_buffers_full_avg", _wrap_framing_sptr_pc_input_buffers_full_avg, METH_VARARGS, "\n" + "framing_sptr_pc_input_buffers_full_avg(framing_sptr self, int which) -> float\n" + "framing_sptr_pc_input_buffers_full_avg(framing_sptr self) -> pmt_vector_float\n" + ""}, + { "framing_sptr_pc_input_buffers_full_var", _wrap_framing_sptr_pc_input_buffers_full_var, METH_VARARGS, "\n" + "framing_sptr_pc_input_buffers_full_var(framing_sptr self, int which) -> float\n" + "framing_sptr_pc_input_buffers_full_var(framing_sptr self) -> pmt_vector_float\n" + ""}, + { "framing_sptr_pc_output_buffers_full", _wrap_framing_sptr_pc_output_buffers_full, METH_VARARGS, "\n" + "framing_sptr_pc_output_buffers_full(framing_sptr self, int which) -> float\n" + "framing_sptr_pc_output_buffers_full(framing_sptr self) -> pmt_vector_float\n" + ""}, + { "framing_sptr_pc_output_buffers_full_avg", _wrap_framing_sptr_pc_output_buffers_full_avg, METH_VARARGS, "\n" + "framing_sptr_pc_output_buffers_full_avg(framing_sptr self, int which) -> float\n" + "framing_sptr_pc_output_buffers_full_avg(framing_sptr self) -> pmt_vector_float\n" + ""}, + { "framing_sptr_pc_output_buffers_full_var", _wrap_framing_sptr_pc_output_buffers_full_var, METH_VARARGS, "\n" + "framing_sptr_pc_output_buffers_full_var(framing_sptr self, int which) -> float\n" + "framing_sptr_pc_output_buffers_full_var(framing_sptr self) -> pmt_vector_float\n" + ""}, + { "framing_sptr_pc_work_time", _wrap_framing_sptr_pc_work_time, METH_O, "framing_sptr_pc_work_time(framing_sptr self) -> float"}, + { "framing_sptr_pc_work_time_avg", _wrap_framing_sptr_pc_work_time_avg, METH_O, "framing_sptr_pc_work_time_avg(framing_sptr self) -> float"}, + { "framing_sptr_pc_work_time_var", _wrap_framing_sptr_pc_work_time_var, METH_O, "framing_sptr_pc_work_time_var(framing_sptr self) -> float"}, + { "framing_sptr_pc_work_time_total", _wrap_framing_sptr_pc_work_time_total, METH_O, "framing_sptr_pc_work_time_total(framing_sptr self) -> float"}, + { "framing_sptr_pc_throughput_avg", _wrap_framing_sptr_pc_throughput_avg, METH_O, "framing_sptr_pc_throughput_avg(framing_sptr self) -> float"}, + { "framing_sptr_set_processor_affinity", (PyCFunction)(void(*)(void))_wrap_framing_sptr_set_processor_affinity, METH_VARARGS|METH_KEYWORDS, "framing_sptr_set_processor_affinity(framing_sptr self, std::vector< int,std::allocator< int > > const & mask)"}, + { "framing_sptr_unset_processor_affinity", _wrap_framing_sptr_unset_processor_affinity, METH_O, "framing_sptr_unset_processor_affinity(framing_sptr self)"}, + { "framing_sptr_processor_affinity", _wrap_framing_sptr_processor_affinity, METH_O, "framing_sptr_processor_affinity(framing_sptr self) -> std::vector< int,std::allocator< int > >"}, + { "framing_sptr_active_thread_priority", _wrap_framing_sptr_active_thread_priority, METH_O, "framing_sptr_active_thread_priority(framing_sptr self) -> int"}, + { "framing_sptr_thread_priority", _wrap_framing_sptr_thread_priority, METH_O, "framing_sptr_thread_priority(framing_sptr self) -> int"}, + { "framing_sptr_set_thread_priority", (PyCFunction)(void(*)(void))_wrap_framing_sptr_set_thread_priority, METH_VARARGS|METH_KEYWORDS, "framing_sptr_set_thread_priority(framing_sptr self, int priority) -> int"}, + { "framing_sptr_name", _wrap_framing_sptr_name, METH_O, "framing_sptr_name(framing_sptr self) -> std::string"}, + { "framing_sptr_symbol_name", _wrap_framing_sptr_symbol_name, METH_O, "framing_sptr_symbol_name(framing_sptr self) -> std::string"}, + { "framing_sptr_input_signature", _wrap_framing_sptr_input_signature, METH_O, "framing_sptr_input_signature(framing_sptr self) -> io_signature_sptr"}, + { "framing_sptr_output_signature", _wrap_framing_sptr_output_signature, METH_O, "framing_sptr_output_signature(framing_sptr self) -> io_signature_sptr"}, + { "framing_sptr_unique_id", _wrap_framing_sptr_unique_id, METH_O, "framing_sptr_unique_id(framing_sptr self) -> long"}, + { "framing_sptr_to_basic_block", _wrap_framing_sptr_to_basic_block, METH_O, "framing_sptr_to_basic_block(framing_sptr self) -> basic_block_sptr"}, + { "framing_sptr_check_topology", (PyCFunction)(void(*)(void))_wrap_framing_sptr_check_topology, METH_VARARGS|METH_KEYWORDS, "framing_sptr_check_topology(framing_sptr self, int ninputs, int noutputs) -> bool"}, + { "framing_sptr_alias", _wrap_framing_sptr_alias, METH_O, "framing_sptr_alias(framing_sptr self) -> std::string"}, + { "framing_sptr_set_block_alias", (PyCFunction)(void(*)(void))_wrap_framing_sptr_set_block_alias, METH_VARARGS|METH_KEYWORDS, "framing_sptr_set_block_alias(framing_sptr self, std::string name)"}, + { "framing_sptr__post", (PyCFunction)(void(*)(void))_wrap_framing_sptr__post, METH_VARARGS|METH_KEYWORDS, "framing_sptr__post(framing_sptr self, swig_pmt_ptr which_port, swig_pmt_ptr msg)"}, + { "framing_sptr_message_ports_in", _wrap_framing_sptr_message_ports_in, METH_O, "framing_sptr_message_ports_in(framing_sptr self) -> swig_pmt_ptr"}, + { "framing_sptr_message_ports_out", _wrap_framing_sptr_message_ports_out, METH_O, "framing_sptr_message_ports_out(framing_sptr self) -> swig_pmt_ptr"}, + { "framing_sptr_message_subscribers", (PyCFunction)(void(*)(void))_wrap_framing_sptr_message_subscribers, METH_VARARGS|METH_KEYWORDS, "framing_sptr_message_subscribers(framing_sptr self, swig_pmt_ptr which_port) -> swig_pmt_ptr"}, + { "framing_sptr_swigregister", framing_sptr_swigregister, METH_O, NULL}, + { "framing_sptr_swiginit", framing_sptr_swiginit, METH_VARARGS, NULL}, + { "Hsync_make", (PyCFunction)(void(*)(void))_wrap_Hsync_make, METH_VARARGS|METH_KEYWORDS, "Hsync_make(int Htotal, int delay) -> Hsync_sptr"}, + { "Hsync_set_Htotal_and_delay", (PyCFunction)(void(*)(void))_wrap_Hsync_set_Htotal_and_delay, METH_VARARGS|METH_KEYWORDS, "Hsync_set_Htotal_and_delay(Hsync self, int Htotal, int delay)"}, + { "delete_Hsync", _wrap_delete_Hsync, METH_O, "delete_Hsync(Hsync self)"}, + { "Hsync_swigregister", Hsync_swigregister, METH_O, NULL}, + { "new_Hsync_sptr", _wrap_new_Hsync_sptr, METH_VARARGS, "\n" + "Hsync_sptr()\n" + "new_Hsync_sptr(Hsync p) -> Hsync_sptr\n" + ""}, + { "Hsync_sptr___deref__", _wrap_Hsync_sptr___deref__, METH_O, "Hsync_sptr___deref__(Hsync_sptr self) -> Hsync"}, + { "delete_Hsync_sptr", _wrap_delete_Hsync_sptr, METH_O, "delete_Hsync_sptr(Hsync_sptr self)"}, + { "Hsync_sptr_make", (PyCFunction)(void(*)(void))_wrap_Hsync_sptr_make, METH_VARARGS|METH_KEYWORDS, "Hsync_sptr_make(Hsync_sptr self, int Htotal, int delay) -> Hsync_sptr"}, + { "Hsync_sptr_set_Htotal_and_delay", (PyCFunction)(void(*)(void))_wrap_Hsync_sptr_set_Htotal_and_delay, METH_VARARGS|METH_KEYWORDS, "Hsync_sptr_set_Htotal_and_delay(Hsync_sptr self, int Htotal, int delay)"}, + { "Hsync_sptr_history", _wrap_Hsync_sptr_history, METH_O, "Hsync_sptr_history(Hsync_sptr self) -> unsigned int"}, + { "Hsync_sptr_declare_sample_delay", _wrap_Hsync_sptr_declare_sample_delay, METH_VARARGS, "\n" + "Hsync_sptr_declare_sample_delay(Hsync_sptr self, int which, int delay)\n" + "Hsync_sptr_declare_sample_delay(Hsync_sptr self, unsigned int delay)\n" + ""}, + { "Hsync_sptr_sample_delay", (PyCFunction)(void(*)(void))_wrap_Hsync_sptr_sample_delay, METH_VARARGS|METH_KEYWORDS, "Hsync_sptr_sample_delay(Hsync_sptr self, int which) -> unsigned int"}, + { "Hsync_sptr_set_output_multiple", (PyCFunction)(void(*)(void))_wrap_Hsync_sptr_set_output_multiple, METH_VARARGS|METH_KEYWORDS, "Hsync_sptr_set_output_multiple(Hsync_sptr self, int multiple)"}, + { "Hsync_sptr_output_multiple", _wrap_Hsync_sptr_output_multiple, METH_O, "Hsync_sptr_output_multiple(Hsync_sptr self) -> int"}, + { "Hsync_sptr_relative_rate", _wrap_Hsync_sptr_relative_rate, METH_O, "Hsync_sptr_relative_rate(Hsync_sptr self) -> double"}, + { "Hsync_sptr_relative_rate_i", _wrap_Hsync_sptr_relative_rate_i, METH_O, "Hsync_sptr_relative_rate_i(Hsync_sptr self) -> uint64_t"}, + { "Hsync_sptr_relative_rate_d", _wrap_Hsync_sptr_relative_rate_d, METH_O, "Hsync_sptr_relative_rate_d(Hsync_sptr self) -> uint64_t"}, + { "Hsync_sptr_start", _wrap_Hsync_sptr_start, METH_O, "Hsync_sptr_start(Hsync_sptr self) -> bool"}, + { "Hsync_sptr_stop", _wrap_Hsync_sptr_stop, METH_O, "Hsync_sptr_stop(Hsync_sptr self) -> bool"}, + { "Hsync_sptr_nitems_read", (PyCFunction)(void(*)(void))_wrap_Hsync_sptr_nitems_read, METH_VARARGS|METH_KEYWORDS, "Hsync_sptr_nitems_read(Hsync_sptr self, unsigned int which_input) -> uint64_t"}, + { "Hsync_sptr_nitems_written", (PyCFunction)(void(*)(void))_wrap_Hsync_sptr_nitems_written, METH_VARARGS|METH_KEYWORDS, "Hsync_sptr_nitems_written(Hsync_sptr self, unsigned int which_output) -> uint64_t"}, + { "Hsync_sptr_set_log_level", (PyCFunction)(void(*)(void))_wrap_Hsync_sptr_set_log_level, METH_VARARGS|METH_KEYWORDS, "Hsync_sptr_set_log_level(Hsync_sptr self, std::string level)"}, + { "Hsync_sptr_log_level", _wrap_Hsync_sptr_log_level, METH_O, "Hsync_sptr_log_level(Hsync_sptr self) -> std::string"}, + { "Hsync_sptr_max_noutput_items", _wrap_Hsync_sptr_max_noutput_items, METH_O, "Hsync_sptr_max_noutput_items(Hsync_sptr self) -> int"}, + { "Hsync_sptr_set_max_noutput_items", (PyCFunction)(void(*)(void))_wrap_Hsync_sptr_set_max_noutput_items, METH_VARARGS|METH_KEYWORDS, "Hsync_sptr_set_max_noutput_items(Hsync_sptr self, int m)"}, + { "Hsync_sptr_unset_max_noutput_items", _wrap_Hsync_sptr_unset_max_noutput_items, METH_O, "Hsync_sptr_unset_max_noutput_items(Hsync_sptr self)"}, + { "Hsync_sptr_is_set_max_noutput_items", _wrap_Hsync_sptr_is_set_max_noutput_items, METH_O, "Hsync_sptr_is_set_max_noutput_items(Hsync_sptr self) -> bool"}, + { "Hsync_sptr_set_min_noutput_items", (PyCFunction)(void(*)(void))_wrap_Hsync_sptr_set_min_noutput_items, METH_VARARGS|METH_KEYWORDS, "Hsync_sptr_set_min_noutput_items(Hsync_sptr self, int m)"}, + { "Hsync_sptr_min_noutput_items", _wrap_Hsync_sptr_min_noutput_items, METH_O, "Hsync_sptr_min_noutput_items(Hsync_sptr self) -> int"}, + { "Hsync_sptr_max_output_buffer", (PyCFunction)(void(*)(void))_wrap_Hsync_sptr_max_output_buffer, METH_VARARGS|METH_KEYWORDS, "Hsync_sptr_max_output_buffer(Hsync_sptr self, int i) -> long"}, + { "Hsync_sptr_set_max_output_buffer", _wrap_Hsync_sptr_set_max_output_buffer, METH_VARARGS, "\n" + "Hsync_sptr_set_max_output_buffer(Hsync_sptr self, long max_output_buffer)\n" + "Hsync_sptr_set_max_output_buffer(Hsync_sptr self, int port, long max_output_buffer)\n" + ""}, + { "Hsync_sptr_min_output_buffer", (PyCFunction)(void(*)(void))_wrap_Hsync_sptr_min_output_buffer, METH_VARARGS|METH_KEYWORDS, "Hsync_sptr_min_output_buffer(Hsync_sptr self, int i) -> long"}, + { "Hsync_sptr_set_min_output_buffer", _wrap_Hsync_sptr_set_min_output_buffer, METH_VARARGS, "\n" + "Hsync_sptr_set_min_output_buffer(Hsync_sptr self, long min_output_buffer)\n" + "Hsync_sptr_set_min_output_buffer(Hsync_sptr self, int port, long min_output_buffer)\n" + ""}, + { "Hsync_sptr_pc_noutput_items", _wrap_Hsync_sptr_pc_noutput_items, METH_O, "Hsync_sptr_pc_noutput_items(Hsync_sptr self) -> float"}, + { "Hsync_sptr_pc_noutput_items_avg", _wrap_Hsync_sptr_pc_noutput_items_avg, METH_O, "Hsync_sptr_pc_noutput_items_avg(Hsync_sptr self) -> float"}, + { "Hsync_sptr_pc_noutput_items_var", _wrap_Hsync_sptr_pc_noutput_items_var, METH_O, "Hsync_sptr_pc_noutput_items_var(Hsync_sptr self) -> float"}, + { "Hsync_sptr_pc_nproduced", _wrap_Hsync_sptr_pc_nproduced, METH_O, "Hsync_sptr_pc_nproduced(Hsync_sptr self) -> float"}, + { "Hsync_sptr_pc_nproduced_avg", _wrap_Hsync_sptr_pc_nproduced_avg, METH_O, "Hsync_sptr_pc_nproduced_avg(Hsync_sptr self) -> float"}, + { "Hsync_sptr_pc_nproduced_var", _wrap_Hsync_sptr_pc_nproduced_var, METH_O, "Hsync_sptr_pc_nproduced_var(Hsync_sptr self) -> float"}, + { "Hsync_sptr_pc_input_buffers_full", _wrap_Hsync_sptr_pc_input_buffers_full, METH_VARARGS, "\n" + "Hsync_sptr_pc_input_buffers_full(Hsync_sptr self, int which) -> float\n" + "Hsync_sptr_pc_input_buffers_full(Hsync_sptr self) -> pmt_vector_float\n" + ""}, + { "Hsync_sptr_pc_input_buffers_full_avg", _wrap_Hsync_sptr_pc_input_buffers_full_avg, METH_VARARGS, "\n" + "Hsync_sptr_pc_input_buffers_full_avg(Hsync_sptr self, int which) -> float\n" + "Hsync_sptr_pc_input_buffers_full_avg(Hsync_sptr self) -> pmt_vector_float\n" + ""}, + { "Hsync_sptr_pc_input_buffers_full_var", _wrap_Hsync_sptr_pc_input_buffers_full_var, METH_VARARGS, "\n" + "Hsync_sptr_pc_input_buffers_full_var(Hsync_sptr self, int which) -> float\n" + "Hsync_sptr_pc_input_buffers_full_var(Hsync_sptr self) -> pmt_vector_float\n" + ""}, + { "Hsync_sptr_pc_output_buffers_full", _wrap_Hsync_sptr_pc_output_buffers_full, METH_VARARGS, "\n" + "Hsync_sptr_pc_output_buffers_full(Hsync_sptr self, int which) -> float\n" + "Hsync_sptr_pc_output_buffers_full(Hsync_sptr self) -> pmt_vector_float\n" + ""}, + { "Hsync_sptr_pc_output_buffers_full_avg", _wrap_Hsync_sptr_pc_output_buffers_full_avg, METH_VARARGS, "\n" + "Hsync_sptr_pc_output_buffers_full_avg(Hsync_sptr self, int which) -> float\n" + "Hsync_sptr_pc_output_buffers_full_avg(Hsync_sptr self) -> pmt_vector_float\n" + ""}, + { "Hsync_sptr_pc_output_buffers_full_var", _wrap_Hsync_sptr_pc_output_buffers_full_var, METH_VARARGS, "\n" + "Hsync_sptr_pc_output_buffers_full_var(Hsync_sptr self, int which) -> float\n" + "Hsync_sptr_pc_output_buffers_full_var(Hsync_sptr self) -> pmt_vector_float\n" + ""}, + { "Hsync_sptr_pc_work_time", _wrap_Hsync_sptr_pc_work_time, METH_O, "Hsync_sptr_pc_work_time(Hsync_sptr self) -> float"}, + { "Hsync_sptr_pc_work_time_avg", _wrap_Hsync_sptr_pc_work_time_avg, METH_O, "Hsync_sptr_pc_work_time_avg(Hsync_sptr self) -> float"}, + { "Hsync_sptr_pc_work_time_var", _wrap_Hsync_sptr_pc_work_time_var, METH_O, "Hsync_sptr_pc_work_time_var(Hsync_sptr self) -> float"}, + { "Hsync_sptr_pc_work_time_total", _wrap_Hsync_sptr_pc_work_time_total, METH_O, "Hsync_sptr_pc_work_time_total(Hsync_sptr self) -> float"}, + { "Hsync_sptr_pc_throughput_avg", _wrap_Hsync_sptr_pc_throughput_avg, METH_O, "Hsync_sptr_pc_throughput_avg(Hsync_sptr self) -> float"}, + { "Hsync_sptr_set_processor_affinity", (PyCFunction)(void(*)(void))_wrap_Hsync_sptr_set_processor_affinity, METH_VARARGS|METH_KEYWORDS, "Hsync_sptr_set_processor_affinity(Hsync_sptr self, std::vector< int,std::allocator< int > > const & mask)"}, + { "Hsync_sptr_unset_processor_affinity", _wrap_Hsync_sptr_unset_processor_affinity, METH_O, "Hsync_sptr_unset_processor_affinity(Hsync_sptr self)"}, + { "Hsync_sptr_processor_affinity", _wrap_Hsync_sptr_processor_affinity, METH_O, "Hsync_sptr_processor_affinity(Hsync_sptr self) -> std::vector< int,std::allocator< int > >"}, + { "Hsync_sptr_active_thread_priority", _wrap_Hsync_sptr_active_thread_priority, METH_O, "Hsync_sptr_active_thread_priority(Hsync_sptr self) -> int"}, + { "Hsync_sptr_thread_priority", _wrap_Hsync_sptr_thread_priority, METH_O, "Hsync_sptr_thread_priority(Hsync_sptr self) -> int"}, + { "Hsync_sptr_set_thread_priority", (PyCFunction)(void(*)(void))_wrap_Hsync_sptr_set_thread_priority, METH_VARARGS|METH_KEYWORDS, "Hsync_sptr_set_thread_priority(Hsync_sptr self, int priority) -> int"}, + { "Hsync_sptr_name", _wrap_Hsync_sptr_name, METH_O, "Hsync_sptr_name(Hsync_sptr self) -> std::string"}, + { "Hsync_sptr_symbol_name", _wrap_Hsync_sptr_symbol_name, METH_O, "Hsync_sptr_symbol_name(Hsync_sptr self) -> std::string"}, + { "Hsync_sptr_input_signature", _wrap_Hsync_sptr_input_signature, METH_O, "Hsync_sptr_input_signature(Hsync_sptr self) -> io_signature_sptr"}, + { "Hsync_sptr_output_signature", _wrap_Hsync_sptr_output_signature, METH_O, "Hsync_sptr_output_signature(Hsync_sptr self) -> io_signature_sptr"}, + { "Hsync_sptr_unique_id", _wrap_Hsync_sptr_unique_id, METH_O, "Hsync_sptr_unique_id(Hsync_sptr self) -> long"}, + { "Hsync_sptr_to_basic_block", _wrap_Hsync_sptr_to_basic_block, METH_O, "Hsync_sptr_to_basic_block(Hsync_sptr self) -> basic_block_sptr"}, + { "Hsync_sptr_check_topology", (PyCFunction)(void(*)(void))_wrap_Hsync_sptr_check_topology, METH_VARARGS|METH_KEYWORDS, "Hsync_sptr_check_topology(Hsync_sptr self, int ninputs, int noutputs) -> bool"}, + { "Hsync_sptr_alias", _wrap_Hsync_sptr_alias, METH_O, "Hsync_sptr_alias(Hsync_sptr self) -> std::string"}, + { "Hsync_sptr_set_block_alias", (PyCFunction)(void(*)(void))_wrap_Hsync_sptr_set_block_alias, METH_VARARGS|METH_KEYWORDS, "Hsync_sptr_set_block_alias(Hsync_sptr self, std::string name)"}, + { "Hsync_sptr__post", (PyCFunction)(void(*)(void))_wrap_Hsync_sptr__post, METH_VARARGS|METH_KEYWORDS, "Hsync_sptr__post(Hsync_sptr self, swig_pmt_ptr which_port, swig_pmt_ptr msg)"}, + { "Hsync_sptr_message_ports_in", _wrap_Hsync_sptr_message_ports_in, METH_O, "Hsync_sptr_message_ports_in(Hsync_sptr self) -> swig_pmt_ptr"}, + { "Hsync_sptr_message_ports_out", _wrap_Hsync_sptr_message_ports_out, METH_O, "Hsync_sptr_message_ports_out(Hsync_sptr self) -> swig_pmt_ptr"}, + { "Hsync_sptr_message_subscribers", (PyCFunction)(void(*)(void))_wrap_Hsync_sptr_message_subscribers, METH_VARARGS|METH_KEYWORDS, "Hsync_sptr_message_subscribers(Hsync_sptr self, swig_pmt_ptr which_port) -> swig_pmt_ptr"}, + { "Hsync_sptr_swigregister", Hsync_sptr_swigregister, METH_O, NULL}, + { "Hsync_sptr_swiginit", Hsync_sptr_swiginit, METH_VARARGS, NULL}, + { "normalize_flow_make", (PyCFunction)(void(*)(void))_wrap_normalize_flow_make, METH_VARARGS|METH_KEYWORDS, "normalize_flow_make(float min, float max, int window, float alpha_avg, float update_proba) -> normalize_flow_sptr"}, + { "normalize_flow_set_min_max", (PyCFunction)(void(*)(void))_wrap_normalize_flow_set_min_max, METH_VARARGS|METH_KEYWORDS, "normalize_flow_set_min_max(normalize_flow self, float min, float max)"}, + { "delete_normalize_flow", _wrap_delete_normalize_flow, METH_O, "delete_normalize_flow(normalize_flow self)"}, + { "normalize_flow_swigregister", normalize_flow_swigregister, METH_O, NULL}, + { "new_normalize_flow_sptr", _wrap_new_normalize_flow_sptr, METH_VARARGS, "\n" + "normalize_flow_sptr()\n" + "new_normalize_flow_sptr(normalize_flow p) -> normalize_flow_sptr\n" + ""}, + { "normalize_flow_sptr___deref__", _wrap_normalize_flow_sptr___deref__, METH_O, "normalize_flow_sptr___deref__(normalize_flow_sptr self) -> normalize_flow"}, + { "delete_normalize_flow_sptr", _wrap_delete_normalize_flow_sptr, METH_O, "delete_normalize_flow_sptr(normalize_flow_sptr self)"}, + { "normalize_flow_sptr_make", (PyCFunction)(void(*)(void))_wrap_normalize_flow_sptr_make, METH_VARARGS|METH_KEYWORDS, "normalize_flow_sptr_make(normalize_flow_sptr self, float min, float max, int window, float alpha_avg, float update_proba) -> normalize_flow_sptr"}, + { "normalize_flow_sptr_set_min_max", (PyCFunction)(void(*)(void))_wrap_normalize_flow_sptr_set_min_max, METH_VARARGS|METH_KEYWORDS, "normalize_flow_sptr_set_min_max(normalize_flow_sptr self, float min, float max)"}, + { "normalize_flow_sptr_history", _wrap_normalize_flow_sptr_history, METH_O, "normalize_flow_sptr_history(normalize_flow_sptr self) -> unsigned int"}, + { "normalize_flow_sptr_declare_sample_delay", _wrap_normalize_flow_sptr_declare_sample_delay, METH_VARARGS, "\n" + "normalize_flow_sptr_declare_sample_delay(normalize_flow_sptr self, int which, int delay)\n" + "normalize_flow_sptr_declare_sample_delay(normalize_flow_sptr self, unsigned int delay)\n" + ""}, + { "normalize_flow_sptr_sample_delay", (PyCFunction)(void(*)(void))_wrap_normalize_flow_sptr_sample_delay, METH_VARARGS|METH_KEYWORDS, "normalize_flow_sptr_sample_delay(normalize_flow_sptr self, int which) -> unsigned int"}, + { "normalize_flow_sptr_set_output_multiple", (PyCFunction)(void(*)(void))_wrap_normalize_flow_sptr_set_output_multiple, METH_VARARGS|METH_KEYWORDS, "normalize_flow_sptr_set_output_multiple(normalize_flow_sptr self, int multiple)"}, + { "normalize_flow_sptr_output_multiple", _wrap_normalize_flow_sptr_output_multiple, METH_O, "normalize_flow_sptr_output_multiple(normalize_flow_sptr self) -> int"}, + { "normalize_flow_sptr_relative_rate", _wrap_normalize_flow_sptr_relative_rate, METH_O, "normalize_flow_sptr_relative_rate(normalize_flow_sptr self) -> double"}, + { "normalize_flow_sptr_relative_rate_i", _wrap_normalize_flow_sptr_relative_rate_i, METH_O, "normalize_flow_sptr_relative_rate_i(normalize_flow_sptr self) -> uint64_t"}, + { "normalize_flow_sptr_relative_rate_d", _wrap_normalize_flow_sptr_relative_rate_d, METH_O, "normalize_flow_sptr_relative_rate_d(normalize_flow_sptr self) -> uint64_t"}, + { "normalize_flow_sptr_start", _wrap_normalize_flow_sptr_start, METH_O, "normalize_flow_sptr_start(normalize_flow_sptr self) -> bool"}, + { "normalize_flow_sptr_stop", _wrap_normalize_flow_sptr_stop, METH_O, "normalize_flow_sptr_stop(normalize_flow_sptr self) -> bool"}, + { "normalize_flow_sptr_nitems_read", (PyCFunction)(void(*)(void))_wrap_normalize_flow_sptr_nitems_read, METH_VARARGS|METH_KEYWORDS, "normalize_flow_sptr_nitems_read(normalize_flow_sptr self, unsigned int which_input) -> uint64_t"}, + { "normalize_flow_sptr_nitems_written", (PyCFunction)(void(*)(void))_wrap_normalize_flow_sptr_nitems_written, METH_VARARGS|METH_KEYWORDS, "normalize_flow_sptr_nitems_written(normalize_flow_sptr self, unsigned int which_output) -> uint64_t"}, + { "normalize_flow_sptr_set_log_level", (PyCFunction)(void(*)(void))_wrap_normalize_flow_sptr_set_log_level, METH_VARARGS|METH_KEYWORDS, "normalize_flow_sptr_set_log_level(normalize_flow_sptr self, std::string level)"}, + { "normalize_flow_sptr_log_level", _wrap_normalize_flow_sptr_log_level, METH_O, "normalize_flow_sptr_log_level(normalize_flow_sptr self) -> std::string"}, + { "normalize_flow_sptr_max_noutput_items", _wrap_normalize_flow_sptr_max_noutput_items, METH_O, "normalize_flow_sptr_max_noutput_items(normalize_flow_sptr self) -> int"}, + { "normalize_flow_sptr_set_max_noutput_items", (PyCFunction)(void(*)(void))_wrap_normalize_flow_sptr_set_max_noutput_items, METH_VARARGS|METH_KEYWORDS, "normalize_flow_sptr_set_max_noutput_items(normalize_flow_sptr self, int m)"}, + { "normalize_flow_sptr_unset_max_noutput_items", _wrap_normalize_flow_sptr_unset_max_noutput_items, METH_O, "normalize_flow_sptr_unset_max_noutput_items(normalize_flow_sptr self)"}, + { "normalize_flow_sptr_is_set_max_noutput_items", _wrap_normalize_flow_sptr_is_set_max_noutput_items, METH_O, "normalize_flow_sptr_is_set_max_noutput_items(normalize_flow_sptr self) -> bool"}, + { "normalize_flow_sptr_set_min_noutput_items", (PyCFunction)(void(*)(void))_wrap_normalize_flow_sptr_set_min_noutput_items, METH_VARARGS|METH_KEYWORDS, "normalize_flow_sptr_set_min_noutput_items(normalize_flow_sptr self, int m)"}, + { "normalize_flow_sptr_min_noutput_items", _wrap_normalize_flow_sptr_min_noutput_items, METH_O, "normalize_flow_sptr_min_noutput_items(normalize_flow_sptr self) -> int"}, + { "normalize_flow_sptr_max_output_buffer", (PyCFunction)(void(*)(void))_wrap_normalize_flow_sptr_max_output_buffer, METH_VARARGS|METH_KEYWORDS, "normalize_flow_sptr_max_output_buffer(normalize_flow_sptr self, int i) -> long"}, + { "normalize_flow_sptr_set_max_output_buffer", _wrap_normalize_flow_sptr_set_max_output_buffer, METH_VARARGS, "\n" + "normalize_flow_sptr_set_max_output_buffer(normalize_flow_sptr self, long max_output_buffer)\n" + "normalize_flow_sptr_set_max_output_buffer(normalize_flow_sptr self, int port, long max_output_buffer)\n" + ""}, + { "normalize_flow_sptr_min_output_buffer", (PyCFunction)(void(*)(void))_wrap_normalize_flow_sptr_min_output_buffer, METH_VARARGS|METH_KEYWORDS, "normalize_flow_sptr_min_output_buffer(normalize_flow_sptr self, int i) -> long"}, + { "normalize_flow_sptr_set_min_output_buffer", _wrap_normalize_flow_sptr_set_min_output_buffer, METH_VARARGS, "\n" + "normalize_flow_sptr_set_min_output_buffer(normalize_flow_sptr self, long min_output_buffer)\n" + "normalize_flow_sptr_set_min_output_buffer(normalize_flow_sptr self, int port, long min_output_buffer)\n" + ""}, + { "normalize_flow_sptr_pc_noutput_items", _wrap_normalize_flow_sptr_pc_noutput_items, METH_O, "normalize_flow_sptr_pc_noutput_items(normalize_flow_sptr self) -> float"}, + { "normalize_flow_sptr_pc_noutput_items_avg", _wrap_normalize_flow_sptr_pc_noutput_items_avg, METH_O, "normalize_flow_sptr_pc_noutput_items_avg(normalize_flow_sptr self) -> float"}, + { "normalize_flow_sptr_pc_noutput_items_var", _wrap_normalize_flow_sptr_pc_noutput_items_var, METH_O, "normalize_flow_sptr_pc_noutput_items_var(normalize_flow_sptr self) -> float"}, + { "normalize_flow_sptr_pc_nproduced", _wrap_normalize_flow_sptr_pc_nproduced, METH_O, "normalize_flow_sptr_pc_nproduced(normalize_flow_sptr self) -> float"}, + { "normalize_flow_sptr_pc_nproduced_avg", _wrap_normalize_flow_sptr_pc_nproduced_avg, METH_O, "normalize_flow_sptr_pc_nproduced_avg(normalize_flow_sptr self) -> float"}, + { "normalize_flow_sptr_pc_nproduced_var", _wrap_normalize_flow_sptr_pc_nproduced_var, METH_O, "normalize_flow_sptr_pc_nproduced_var(normalize_flow_sptr self) -> float"}, + { "normalize_flow_sptr_pc_input_buffers_full", _wrap_normalize_flow_sptr_pc_input_buffers_full, METH_VARARGS, "\n" + "normalize_flow_sptr_pc_input_buffers_full(normalize_flow_sptr self, int which) -> float\n" + "normalize_flow_sptr_pc_input_buffers_full(normalize_flow_sptr self) -> pmt_vector_float\n" + ""}, + { "normalize_flow_sptr_pc_input_buffers_full_avg", _wrap_normalize_flow_sptr_pc_input_buffers_full_avg, METH_VARARGS, "\n" + "normalize_flow_sptr_pc_input_buffers_full_avg(normalize_flow_sptr self, int which) -> float\n" + "normalize_flow_sptr_pc_input_buffers_full_avg(normalize_flow_sptr self) -> pmt_vector_float\n" + ""}, + { "normalize_flow_sptr_pc_input_buffers_full_var", _wrap_normalize_flow_sptr_pc_input_buffers_full_var, METH_VARARGS, "\n" + "normalize_flow_sptr_pc_input_buffers_full_var(normalize_flow_sptr self, int which) -> float\n" + "normalize_flow_sptr_pc_input_buffers_full_var(normalize_flow_sptr self) -> pmt_vector_float\n" + ""}, + { "normalize_flow_sptr_pc_output_buffers_full", _wrap_normalize_flow_sptr_pc_output_buffers_full, METH_VARARGS, "\n" + "normalize_flow_sptr_pc_output_buffers_full(normalize_flow_sptr self, int which) -> float\n" + "normalize_flow_sptr_pc_output_buffers_full(normalize_flow_sptr self) -> pmt_vector_float\n" + ""}, + { "normalize_flow_sptr_pc_output_buffers_full_avg", _wrap_normalize_flow_sptr_pc_output_buffers_full_avg, METH_VARARGS, "\n" + "normalize_flow_sptr_pc_output_buffers_full_avg(normalize_flow_sptr self, int which) -> float\n" + "normalize_flow_sptr_pc_output_buffers_full_avg(normalize_flow_sptr self) -> pmt_vector_float\n" + ""}, + { "normalize_flow_sptr_pc_output_buffers_full_var", _wrap_normalize_flow_sptr_pc_output_buffers_full_var, METH_VARARGS, "\n" + "normalize_flow_sptr_pc_output_buffers_full_var(normalize_flow_sptr self, int which) -> float\n" + "normalize_flow_sptr_pc_output_buffers_full_var(normalize_flow_sptr self) -> pmt_vector_float\n" + ""}, + { "normalize_flow_sptr_pc_work_time", _wrap_normalize_flow_sptr_pc_work_time, METH_O, "normalize_flow_sptr_pc_work_time(normalize_flow_sptr self) -> float"}, + { "normalize_flow_sptr_pc_work_time_avg", _wrap_normalize_flow_sptr_pc_work_time_avg, METH_O, "normalize_flow_sptr_pc_work_time_avg(normalize_flow_sptr self) -> float"}, + { "normalize_flow_sptr_pc_work_time_var", _wrap_normalize_flow_sptr_pc_work_time_var, METH_O, "normalize_flow_sptr_pc_work_time_var(normalize_flow_sptr self) -> float"}, + { "normalize_flow_sptr_pc_work_time_total", _wrap_normalize_flow_sptr_pc_work_time_total, METH_O, "normalize_flow_sptr_pc_work_time_total(normalize_flow_sptr self) -> float"}, + { "normalize_flow_sptr_pc_throughput_avg", _wrap_normalize_flow_sptr_pc_throughput_avg, METH_O, "normalize_flow_sptr_pc_throughput_avg(normalize_flow_sptr self) -> float"}, + { "normalize_flow_sptr_set_processor_affinity", (PyCFunction)(void(*)(void))_wrap_normalize_flow_sptr_set_processor_affinity, METH_VARARGS|METH_KEYWORDS, "normalize_flow_sptr_set_processor_affinity(normalize_flow_sptr self, std::vector< int,std::allocator< int > > const & mask)"}, + { "normalize_flow_sptr_unset_processor_affinity", _wrap_normalize_flow_sptr_unset_processor_affinity, METH_O, "normalize_flow_sptr_unset_processor_affinity(normalize_flow_sptr self)"}, + { "normalize_flow_sptr_processor_affinity", _wrap_normalize_flow_sptr_processor_affinity, METH_O, "normalize_flow_sptr_processor_affinity(normalize_flow_sptr self) -> std::vector< int,std::allocator< int > >"}, + { "normalize_flow_sptr_active_thread_priority", _wrap_normalize_flow_sptr_active_thread_priority, METH_O, "normalize_flow_sptr_active_thread_priority(normalize_flow_sptr self) -> int"}, + { "normalize_flow_sptr_thread_priority", _wrap_normalize_flow_sptr_thread_priority, METH_O, "normalize_flow_sptr_thread_priority(normalize_flow_sptr self) -> int"}, + { "normalize_flow_sptr_set_thread_priority", (PyCFunction)(void(*)(void))_wrap_normalize_flow_sptr_set_thread_priority, METH_VARARGS|METH_KEYWORDS, "normalize_flow_sptr_set_thread_priority(normalize_flow_sptr self, int priority) -> int"}, + { "normalize_flow_sptr_name", _wrap_normalize_flow_sptr_name, METH_O, "normalize_flow_sptr_name(normalize_flow_sptr self) -> std::string"}, + { "normalize_flow_sptr_symbol_name", _wrap_normalize_flow_sptr_symbol_name, METH_O, "normalize_flow_sptr_symbol_name(normalize_flow_sptr self) -> std::string"}, + { "normalize_flow_sptr_input_signature", _wrap_normalize_flow_sptr_input_signature, METH_O, "normalize_flow_sptr_input_signature(normalize_flow_sptr self) -> io_signature_sptr"}, + { "normalize_flow_sptr_output_signature", _wrap_normalize_flow_sptr_output_signature, METH_O, "normalize_flow_sptr_output_signature(normalize_flow_sptr self) -> io_signature_sptr"}, + { "normalize_flow_sptr_unique_id", _wrap_normalize_flow_sptr_unique_id, METH_O, "normalize_flow_sptr_unique_id(normalize_flow_sptr self) -> long"}, + { "normalize_flow_sptr_to_basic_block", _wrap_normalize_flow_sptr_to_basic_block, METH_O, "normalize_flow_sptr_to_basic_block(normalize_flow_sptr self) -> basic_block_sptr"}, + { "normalize_flow_sptr_check_topology", (PyCFunction)(void(*)(void))_wrap_normalize_flow_sptr_check_topology, METH_VARARGS|METH_KEYWORDS, "normalize_flow_sptr_check_topology(normalize_flow_sptr self, int ninputs, int noutputs) -> bool"}, + { "normalize_flow_sptr_alias", _wrap_normalize_flow_sptr_alias, METH_O, "normalize_flow_sptr_alias(normalize_flow_sptr self) -> std::string"}, + { "normalize_flow_sptr_set_block_alias", (PyCFunction)(void(*)(void))_wrap_normalize_flow_sptr_set_block_alias, METH_VARARGS|METH_KEYWORDS, "normalize_flow_sptr_set_block_alias(normalize_flow_sptr self, std::string name)"}, + { "normalize_flow_sptr__post", (PyCFunction)(void(*)(void))_wrap_normalize_flow_sptr__post, METH_VARARGS|METH_KEYWORDS, "normalize_flow_sptr__post(normalize_flow_sptr self, swig_pmt_ptr which_port, swig_pmt_ptr msg)"}, + { "normalize_flow_sptr_message_ports_in", _wrap_normalize_flow_sptr_message_ports_in, METH_O, "normalize_flow_sptr_message_ports_in(normalize_flow_sptr self) -> swig_pmt_ptr"}, + { "normalize_flow_sptr_message_ports_out", _wrap_normalize_flow_sptr_message_ports_out, METH_O, "normalize_flow_sptr_message_ports_out(normalize_flow_sptr self) -> swig_pmt_ptr"}, + { "normalize_flow_sptr_message_subscribers", (PyCFunction)(void(*)(void))_wrap_normalize_flow_sptr_message_subscribers, METH_VARARGS|METH_KEYWORDS, "normalize_flow_sptr_message_subscribers(normalize_flow_sptr self, swig_pmt_ptr which_port) -> swig_pmt_ptr"}, + { "normalize_flow_sptr_swigregister", normalize_flow_sptr_swigregister, METH_O, NULL}, + { "normalize_flow_sptr_swiginit", normalize_flow_sptr_swiginit, METH_VARARGS, NULL}, + { "fine_sampling_synchronization_make", (PyCFunction)(void(*)(void))_wrap_fine_sampling_synchronization_make, METH_VARARGS|METH_KEYWORDS, "fine_sampling_synchronization_make(int Htotal, int Vtotal, int correct_sampling, float max_deviation, float update_proba) -> fine_sampling_synchronization_sptr"}, + { "fine_sampling_synchronization_set_Htotal_Vtotal", (PyCFunction)(void(*)(void))_wrap_fine_sampling_synchronization_set_Htotal_Vtotal, METH_VARARGS|METH_KEYWORDS, "fine_sampling_synchronization_set_Htotal_Vtotal(fine_sampling_synchronization self, int Htotal, int Vtotal)"}, + { "delete_fine_sampling_synchronization", _wrap_delete_fine_sampling_synchronization, METH_O, "delete_fine_sampling_synchronization(fine_sampling_synchronization self)"}, + { "fine_sampling_synchronization_swigregister", fine_sampling_synchronization_swigregister, METH_O, NULL}, + { "new_fine_sampling_synchronization_sptr", _wrap_new_fine_sampling_synchronization_sptr, METH_VARARGS, "\n" + "fine_sampling_synchronization_sptr()\n" + "new_fine_sampling_synchronization_sptr(fine_sampling_synchronization p) -> fine_sampling_synchronization_sptr\n" + ""}, + { "fine_sampling_synchronization_sptr___deref__", _wrap_fine_sampling_synchronization_sptr___deref__, METH_O, "fine_sampling_synchronization_sptr___deref__(fine_sampling_synchronization_sptr self) -> fine_sampling_synchronization"}, + { "delete_fine_sampling_synchronization_sptr", _wrap_delete_fine_sampling_synchronization_sptr, METH_O, "delete_fine_sampling_synchronization_sptr(fine_sampling_synchronization_sptr self)"}, + { "fine_sampling_synchronization_sptr_make", (PyCFunction)(void(*)(void))_wrap_fine_sampling_synchronization_sptr_make, METH_VARARGS|METH_KEYWORDS, "fine_sampling_synchronization_sptr_make(fine_sampling_synchronization_sptr self, int Htotal, int Vtotal, int correct_sampling, float max_deviation, float update_proba) -> fine_sampling_synchronization_sptr"}, + { "fine_sampling_synchronization_sptr_set_Htotal_Vtotal", (PyCFunction)(void(*)(void))_wrap_fine_sampling_synchronization_sptr_set_Htotal_Vtotal, METH_VARARGS|METH_KEYWORDS, "fine_sampling_synchronization_sptr_set_Htotal_Vtotal(fine_sampling_synchronization_sptr self, int Htotal, int Vtotal)"}, + { "fine_sampling_synchronization_sptr_history", _wrap_fine_sampling_synchronization_sptr_history, METH_O, "fine_sampling_synchronization_sptr_history(fine_sampling_synchronization_sptr self) -> unsigned int"}, + { "fine_sampling_synchronization_sptr_declare_sample_delay", _wrap_fine_sampling_synchronization_sptr_declare_sample_delay, METH_VARARGS, "\n" + "fine_sampling_synchronization_sptr_declare_sample_delay(fine_sampling_synchronization_sptr self, int which, int delay)\n" + "fine_sampling_synchronization_sptr_declare_sample_delay(fine_sampling_synchronization_sptr self, unsigned int delay)\n" + ""}, + { "fine_sampling_synchronization_sptr_sample_delay", (PyCFunction)(void(*)(void))_wrap_fine_sampling_synchronization_sptr_sample_delay, METH_VARARGS|METH_KEYWORDS, "fine_sampling_synchronization_sptr_sample_delay(fine_sampling_synchronization_sptr self, int which) -> unsigned int"}, + { "fine_sampling_synchronization_sptr_set_output_multiple", (PyCFunction)(void(*)(void))_wrap_fine_sampling_synchronization_sptr_set_output_multiple, METH_VARARGS|METH_KEYWORDS, "fine_sampling_synchronization_sptr_set_output_multiple(fine_sampling_synchronization_sptr self, int multiple)"}, + { "fine_sampling_synchronization_sptr_output_multiple", _wrap_fine_sampling_synchronization_sptr_output_multiple, METH_O, "fine_sampling_synchronization_sptr_output_multiple(fine_sampling_synchronization_sptr self) -> int"}, + { "fine_sampling_synchronization_sptr_relative_rate", _wrap_fine_sampling_synchronization_sptr_relative_rate, METH_O, "fine_sampling_synchronization_sptr_relative_rate(fine_sampling_synchronization_sptr self) -> double"}, + { "fine_sampling_synchronization_sptr_relative_rate_i", _wrap_fine_sampling_synchronization_sptr_relative_rate_i, METH_O, "fine_sampling_synchronization_sptr_relative_rate_i(fine_sampling_synchronization_sptr self) -> uint64_t"}, + { "fine_sampling_synchronization_sptr_relative_rate_d", _wrap_fine_sampling_synchronization_sptr_relative_rate_d, METH_O, "fine_sampling_synchronization_sptr_relative_rate_d(fine_sampling_synchronization_sptr self) -> uint64_t"}, + { "fine_sampling_synchronization_sptr_start", _wrap_fine_sampling_synchronization_sptr_start, METH_O, "fine_sampling_synchronization_sptr_start(fine_sampling_synchronization_sptr self) -> bool"}, + { "fine_sampling_synchronization_sptr_stop", _wrap_fine_sampling_synchronization_sptr_stop, METH_O, "fine_sampling_synchronization_sptr_stop(fine_sampling_synchronization_sptr self) -> bool"}, + { "fine_sampling_synchronization_sptr_nitems_read", (PyCFunction)(void(*)(void))_wrap_fine_sampling_synchronization_sptr_nitems_read, METH_VARARGS|METH_KEYWORDS, "fine_sampling_synchronization_sptr_nitems_read(fine_sampling_synchronization_sptr self, unsigned int which_input) -> uint64_t"}, + { "fine_sampling_synchronization_sptr_nitems_written", (PyCFunction)(void(*)(void))_wrap_fine_sampling_synchronization_sptr_nitems_written, METH_VARARGS|METH_KEYWORDS, "fine_sampling_synchronization_sptr_nitems_written(fine_sampling_synchronization_sptr self, unsigned int which_output) -> uint64_t"}, + { "fine_sampling_synchronization_sptr_set_log_level", (PyCFunction)(void(*)(void))_wrap_fine_sampling_synchronization_sptr_set_log_level, METH_VARARGS|METH_KEYWORDS, "fine_sampling_synchronization_sptr_set_log_level(fine_sampling_synchronization_sptr self, std::string level)"}, + { "fine_sampling_synchronization_sptr_log_level", _wrap_fine_sampling_synchronization_sptr_log_level, METH_O, "fine_sampling_synchronization_sptr_log_level(fine_sampling_synchronization_sptr self) -> std::string"}, + { "fine_sampling_synchronization_sptr_max_noutput_items", _wrap_fine_sampling_synchronization_sptr_max_noutput_items, METH_O, "fine_sampling_synchronization_sptr_max_noutput_items(fine_sampling_synchronization_sptr self) -> int"}, + { "fine_sampling_synchronization_sptr_set_max_noutput_items", (PyCFunction)(void(*)(void))_wrap_fine_sampling_synchronization_sptr_set_max_noutput_items, METH_VARARGS|METH_KEYWORDS, "fine_sampling_synchronization_sptr_set_max_noutput_items(fine_sampling_synchronization_sptr self, int m)"}, + { "fine_sampling_synchronization_sptr_unset_max_noutput_items", _wrap_fine_sampling_synchronization_sptr_unset_max_noutput_items, METH_O, "fine_sampling_synchronization_sptr_unset_max_noutput_items(fine_sampling_synchronization_sptr self)"}, + { "fine_sampling_synchronization_sptr_is_set_max_noutput_items", _wrap_fine_sampling_synchronization_sptr_is_set_max_noutput_items, METH_O, "fine_sampling_synchronization_sptr_is_set_max_noutput_items(fine_sampling_synchronization_sptr self) -> bool"}, + { "fine_sampling_synchronization_sptr_set_min_noutput_items", (PyCFunction)(void(*)(void))_wrap_fine_sampling_synchronization_sptr_set_min_noutput_items, METH_VARARGS|METH_KEYWORDS, "fine_sampling_synchronization_sptr_set_min_noutput_items(fine_sampling_synchronization_sptr self, int m)"}, + { "fine_sampling_synchronization_sptr_min_noutput_items", _wrap_fine_sampling_synchronization_sptr_min_noutput_items, METH_O, "fine_sampling_synchronization_sptr_min_noutput_items(fine_sampling_synchronization_sptr self) -> int"}, + { "fine_sampling_synchronization_sptr_max_output_buffer", (PyCFunction)(void(*)(void))_wrap_fine_sampling_synchronization_sptr_max_output_buffer, METH_VARARGS|METH_KEYWORDS, "fine_sampling_synchronization_sptr_max_output_buffer(fine_sampling_synchronization_sptr self, int i) -> long"}, + { "fine_sampling_synchronization_sptr_set_max_output_buffer", _wrap_fine_sampling_synchronization_sptr_set_max_output_buffer, METH_VARARGS, "\n" + "fine_sampling_synchronization_sptr_set_max_output_buffer(fine_sampling_synchronization_sptr self, long max_output_buffer)\n" + "fine_sampling_synchronization_sptr_set_max_output_buffer(fine_sampling_synchronization_sptr self, int port, long max_output_buffer)\n" + ""}, + { "fine_sampling_synchronization_sptr_min_output_buffer", (PyCFunction)(void(*)(void))_wrap_fine_sampling_synchronization_sptr_min_output_buffer, METH_VARARGS|METH_KEYWORDS, "fine_sampling_synchronization_sptr_min_output_buffer(fine_sampling_synchronization_sptr self, int i) -> long"}, + { "fine_sampling_synchronization_sptr_set_min_output_buffer", _wrap_fine_sampling_synchronization_sptr_set_min_output_buffer, METH_VARARGS, "\n" + "fine_sampling_synchronization_sptr_set_min_output_buffer(fine_sampling_synchronization_sptr self, long min_output_buffer)\n" + "fine_sampling_synchronization_sptr_set_min_output_buffer(fine_sampling_synchronization_sptr self, int port, long min_output_buffer)\n" + ""}, + { "fine_sampling_synchronization_sptr_pc_noutput_items", _wrap_fine_sampling_synchronization_sptr_pc_noutput_items, METH_O, "fine_sampling_synchronization_sptr_pc_noutput_items(fine_sampling_synchronization_sptr self) -> float"}, + { "fine_sampling_synchronization_sptr_pc_noutput_items_avg", _wrap_fine_sampling_synchronization_sptr_pc_noutput_items_avg, METH_O, "fine_sampling_synchronization_sptr_pc_noutput_items_avg(fine_sampling_synchronization_sptr self) -> float"}, + { "fine_sampling_synchronization_sptr_pc_noutput_items_var", _wrap_fine_sampling_synchronization_sptr_pc_noutput_items_var, METH_O, "fine_sampling_synchronization_sptr_pc_noutput_items_var(fine_sampling_synchronization_sptr self) -> float"}, + { "fine_sampling_synchronization_sptr_pc_nproduced", _wrap_fine_sampling_synchronization_sptr_pc_nproduced, METH_O, "fine_sampling_synchronization_sptr_pc_nproduced(fine_sampling_synchronization_sptr self) -> float"}, + { "fine_sampling_synchronization_sptr_pc_nproduced_avg", _wrap_fine_sampling_synchronization_sptr_pc_nproduced_avg, METH_O, "fine_sampling_synchronization_sptr_pc_nproduced_avg(fine_sampling_synchronization_sptr self) -> float"}, + { "fine_sampling_synchronization_sptr_pc_nproduced_var", _wrap_fine_sampling_synchronization_sptr_pc_nproduced_var, METH_O, "fine_sampling_synchronization_sptr_pc_nproduced_var(fine_sampling_synchronization_sptr self) -> float"}, + { "fine_sampling_synchronization_sptr_pc_input_buffers_full", _wrap_fine_sampling_synchronization_sptr_pc_input_buffers_full, METH_VARARGS, "\n" + "fine_sampling_synchronization_sptr_pc_input_buffers_full(fine_sampling_synchronization_sptr self, int which) -> float\n" + "fine_sampling_synchronization_sptr_pc_input_buffers_full(fine_sampling_synchronization_sptr self) -> pmt_vector_float\n" + ""}, + { "fine_sampling_synchronization_sptr_pc_input_buffers_full_avg", _wrap_fine_sampling_synchronization_sptr_pc_input_buffers_full_avg, METH_VARARGS, "\n" + "fine_sampling_synchronization_sptr_pc_input_buffers_full_avg(fine_sampling_synchronization_sptr self, int which) -> float\n" + "fine_sampling_synchronization_sptr_pc_input_buffers_full_avg(fine_sampling_synchronization_sptr self) -> pmt_vector_float\n" + ""}, + { "fine_sampling_synchronization_sptr_pc_input_buffers_full_var", _wrap_fine_sampling_synchronization_sptr_pc_input_buffers_full_var, METH_VARARGS, "\n" + "fine_sampling_synchronization_sptr_pc_input_buffers_full_var(fine_sampling_synchronization_sptr self, int which) -> float\n" + "fine_sampling_synchronization_sptr_pc_input_buffers_full_var(fine_sampling_synchronization_sptr self) -> pmt_vector_float\n" + ""}, + { "fine_sampling_synchronization_sptr_pc_output_buffers_full", _wrap_fine_sampling_synchronization_sptr_pc_output_buffers_full, METH_VARARGS, "\n" + "fine_sampling_synchronization_sptr_pc_output_buffers_full(fine_sampling_synchronization_sptr self, int which) -> float\n" + "fine_sampling_synchronization_sptr_pc_output_buffers_full(fine_sampling_synchronization_sptr self) -> pmt_vector_float\n" + ""}, + { "fine_sampling_synchronization_sptr_pc_output_buffers_full_avg", _wrap_fine_sampling_synchronization_sptr_pc_output_buffers_full_avg, METH_VARARGS, "\n" + "fine_sampling_synchronization_sptr_pc_output_buffers_full_avg(fine_sampling_synchronization_sptr self, int which) -> float\n" + "fine_sampling_synchronization_sptr_pc_output_buffers_full_avg(fine_sampling_synchronization_sptr self) -> pmt_vector_float\n" + ""}, + { "fine_sampling_synchronization_sptr_pc_output_buffers_full_var", _wrap_fine_sampling_synchronization_sptr_pc_output_buffers_full_var, METH_VARARGS, "\n" + "fine_sampling_synchronization_sptr_pc_output_buffers_full_var(fine_sampling_synchronization_sptr self, int which) -> float\n" + "fine_sampling_synchronization_sptr_pc_output_buffers_full_var(fine_sampling_synchronization_sptr self) -> pmt_vector_float\n" + ""}, + { "fine_sampling_synchronization_sptr_pc_work_time", _wrap_fine_sampling_synchronization_sptr_pc_work_time, METH_O, "fine_sampling_synchronization_sptr_pc_work_time(fine_sampling_synchronization_sptr self) -> float"}, + { "fine_sampling_synchronization_sptr_pc_work_time_avg", _wrap_fine_sampling_synchronization_sptr_pc_work_time_avg, METH_O, "fine_sampling_synchronization_sptr_pc_work_time_avg(fine_sampling_synchronization_sptr self) -> float"}, + { "fine_sampling_synchronization_sptr_pc_work_time_var", _wrap_fine_sampling_synchronization_sptr_pc_work_time_var, METH_O, "fine_sampling_synchronization_sptr_pc_work_time_var(fine_sampling_synchronization_sptr self) -> float"}, + { "fine_sampling_synchronization_sptr_pc_work_time_total", _wrap_fine_sampling_synchronization_sptr_pc_work_time_total, METH_O, "fine_sampling_synchronization_sptr_pc_work_time_total(fine_sampling_synchronization_sptr self) -> float"}, + { "fine_sampling_synchronization_sptr_pc_throughput_avg", _wrap_fine_sampling_synchronization_sptr_pc_throughput_avg, METH_O, "fine_sampling_synchronization_sptr_pc_throughput_avg(fine_sampling_synchronization_sptr self) -> float"}, + { "fine_sampling_synchronization_sptr_set_processor_affinity", (PyCFunction)(void(*)(void))_wrap_fine_sampling_synchronization_sptr_set_processor_affinity, METH_VARARGS|METH_KEYWORDS, "fine_sampling_synchronization_sptr_set_processor_affinity(fine_sampling_synchronization_sptr self, std::vector< int,std::allocator< int > > const & mask)"}, + { "fine_sampling_synchronization_sptr_unset_processor_affinity", _wrap_fine_sampling_synchronization_sptr_unset_processor_affinity, METH_O, "fine_sampling_synchronization_sptr_unset_processor_affinity(fine_sampling_synchronization_sptr self)"}, + { "fine_sampling_synchronization_sptr_processor_affinity", _wrap_fine_sampling_synchronization_sptr_processor_affinity, METH_O, "fine_sampling_synchronization_sptr_processor_affinity(fine_sampling_synchronization_sptr self) -> std::vector< int,std::allocator< int > >"}, + { "fine_sampling_synchronization_sptr_active_thread_priority", _wrap_fine_sampling_synchronization_sptr_active_thread_priority, METH_O, "fine_sampling_synchronization_sptr_active_thread_priority(fine_sampling_synchronization_sptr self) -> int"}, + { "fine_sampling_synchronization_sptr_thread_priority", _wrap_fine_sampling_synchronization_sptr_thread_priority, METH_O, "fine_sampling_synchronization_sptr_thread_priority(fine_sampling_synchronization_sptr self) -> int"}, + { "fine_sampling_synchronization_sptr_set_thread_priority", (PyCFunction)(void(*)(void))_wrap_fine_sampling_synchronization_sptr_set_thread_priority, METH_VARARGS|METH_KEYWORDS, "fine_sampling_synchronization_sptr_set_thread_priority(fine_sampling_synchronization_sptr self, int priority) -> int"}, + { "fine_sampling_synchronization_sptr_name", _wrap_fine_sampling_synchronization_sptr_name, METH_O, "fine_sampling_synchronization_sptr_name(fine_sampling_synchronization_sptr self) -> std::string"}, + { "fine_sampling_synchronization_sptr_symbol_name", _wrap_fine_sampling_synchronization_sptr_symbol_name, METH_O, "fine_sampling_synchronization_sptr_symbol_name(fine_sampling_synchronization_sptr self) -> std::string"}, + { "fine_sampling_synchronization_sptr_input_signature", _wrap_fine_sampling_synchronization_sptr_input_signature, METH_O, "fine_sampling_synchronization_sptr_input_signature(fine_sampling_synchronization_sptr self) -> io_signature_sptr"}, + { "fine_sampling_synchronization_sptr_output_signature", _wrap_fine_sampling_synchronization_sptr_output_signature, METH_O, "fine_sampling_synchronization_sptr_output_signature(fine_sampling_synchronization_sptr self) -> io_signature_sptr"}, + { "fine_sampling_synchronization_sptr_unique_id", _wrap_fine_sampling_synchronization_sptr_unique_id, METH_O, "fine_sampling_synchronization_sptr_unique_id(fine_sampling_synchronization_sptr self) -> long"}, + { "fine_sampling_synchronization_sptr_to_basic_block", _wrap_fine_sampling_synchronization_sptr_to_basic_block, METH_O, "fine_sampling_synchronization_sptr_to_basic_block(fine_sampling_synchronization_sptr self) -> basic_block_sptr"}, + { "fine_sampling_synchronization_sptr_check_topology", (PyCFunction)(void(*)(void))_wrap_fine_sampling_synchronization_sptr_check_topology, METH_VARARGS|METH_KEYWORDS, "fine_sampling_synchronization_sptr_check_topology(fine_sampling_synchronization_sptr self, int ninputs, int noutputs) -> bool"}, + { "fine_sampling_synchronization_sptr_alias", _wrap_fine_sampling_synchronization_sptr_alias, METH_O, "fine_sampling_synchronization_sptr_alias(fine_sampling_synchronization_sptr self) -> std::string"}, + { "fine_sampling_synchronization_sptr_set_block_alias", (PyCFunction)(void(*)(void))_wrap_fine_sampling_synchronization_sptr_set_block_alias, METH_VARARGS|METH_KEYWORDS, "fine_sampling_synchronization_sptr_set_block_alias(fine_sampling_synchronization_sptr self, std::string name)"}, + { "fine_sampling_synchronization_sptr__post", (PyCFunction)(void(*)(void))_wrap_fine_sampling_synchronization_sptr__post, METH_VARARGS|METH_KEYWORDS, "fine_sampling_synchronization_sptr__post(fine_sampling_synchronization_sptr self, swig_pmt_ptr which_port, swig_pmt_ptr msg)"}, + { "fine_sampling_synchronization_sptr_message_ports_in", _wrap_fine_sampling_synchronization_sptr_message_ports_in, METH_O, "fine_sampling_synchronization_sptr_message_ports_in(fine_sampling_synchronization_sptr self) -> swig_pmt_ptr"}, + { "fine_sampling_synchronization_sptr_message_ports_out", _wrap_fine_sampling_synchronization_sptr_message_ports_out, METH_O, "fine_sampling_synchronization_sptr_message_ports_out(fine_sampling_synchronization_sptr self) -> swig_pmt_ptr"}, + { "fine_sampling_synchronization_sptr_message_subscribers", (PyCFunction)(void(*)(void))_wrap_fine_sampling_synchronization_sptr_message_subscribers, METH_VARARGS|METH_KEYWORDS, "fine_sampling_synchronization_sptr_message_subscribers(fine_sampling_synchronization_sptr self, swig_pmt_ptr which_port) -> swig_pmt_ptr"}, + { "fine_sampling_synchronization_sptr_swigregister", fine_sampling_synchronization_sptr_swigregister, METH_O, NULL}, + { "fine_sampling_synchronization_sptr_swiginit", fine_sampling_synchronization_sptr_swiginit, METH_VARARGS, NULL}, + { "sync_detector_make", (PyCFunction)(void(*)(void))_wrap_sync_detector_make, METH_VARARGS|METH_KEYWORDS, "sync_detector_make(int hscreen, int vscreen, int hblanking, int vblanking) -> sync_detector_sptr"}, + { "delete_sync_detector", _wrap_delete_sync_detector, METH_O, "delete_sync_detector(sync_detector self)"}, + { "sync_detector_swigregister", sync_detector_swigregister, METH_O, NULL}, + { "new_sync_detector_sptr", _wrap_new_sync_detector_sptr, METH_VARARGS, "\n" + "sync_detector_sptr()\n" + "new_sync_detector_sptr(sync_detector p) -> sync_detector_sptr\n" + ""}, + { "sync_detector_sptr___deref__", _wrap_sync_detector_sptr___deref__, METH_O, "sync_detector_sptr___deref__(sync_detector_sptr self) -> sync_detector"}, + { "delete_sync_detector_sptr", _wrap_delete_sync_detector_sptr, METH_O, "delete_sync_detector_sptr(sync_detector_sptr self)"}, + { "sync_detector_sptr_make", (PyCFunction)(void(*)(void))_wrap_sync_detector_sptr_make, METH_VARARGS|METH_KEYWORDS, "sync_detector_sptr_make(sync_detector_sptr self, int hscreen, int vscreen, int hblanking, int vblanking) -> sync_detector_sptr"}, + { "sync_detector_sptr_history", _wrap_sync_detector_sptr_history, METH_O, "sync_detector_sptr_history(sync_detector_sptr self) -> unsigned int"}, + { "sync_detector_sptr_declare_sample_delay", _wrap_sync_detector_sptr_declare_sample_delay, METH_VARARGS, "\n" + "sync_detector_sptr_declare_sample_delay(sync_detector_sptr self, int which, int delay)\n" + "sync_detector_sptr_declare_sample_delay(sync_detector_sptr self, unsigned int delay)\n" + ""}, + { "sync_detector_sptr_sample_delay", (PyCFunction)(void(*)(void))_wrap_sync_detector_sptr_sample_delay, METH_VARARGS|METH_KEYWORDS, "sync_detector_sptr_sample_delay(sync_detector_sptr self, int which) -> unsigned int"}, + { "sync_detector_sptr_set_output_multiple", (PyCFunction)(void(*)(void))_wrap_sync_detector_sptr_set_output_multiple, METH_VARARGS|METH_KEYWORDS, "sync_detector_sptr_set_output_multiple(sync_detector_sptr self, int multiple)"}, + { "sync_detector_sptr_output_multiple", _wrap_sync_detector_sptr_output_multiple, METH_O, "sync_detector_sptr_output_multiple(sync_detector_sptr self) -> int"}, + { "sync_detector_sptr_relative_rate", _wrap_sync_detector_sptr_relative_rate, METH_O, "sync_detector_sptr_relative_rate(sync_detector_sptr self) -> double"}, + { "sync_detector_sptr_relative_rate_i", _wrap_sync_detector_sptr_relative_rate_i, METH_O, "sync_detector_sptr_relative_rate_i(sync_detector_sptr self) -> uint64_t"}, + { "sync_detector_sptr_relative_rate_d", _wrap_sync_detector_sptr_relative_rate_d, METH_O, "sync_detector_sptr_relative_rate_d(sync_detector_sptr self) -> uint64_t"}, + { "sync_detector_sptr_start", _wrap_sync_detector_sptr_start, METH_O, "sync_detector_sptr_start(sync_detector_sptr self) -> bool"}, + { "sync_detector_sptr_stop", _wrap_sync_detector_sptr_stop, METH_O, "sync_detector_sptr_stop(sync_detector_sptr self) -> bool"}, + { "sync_detector_sptr_nitems_read", (PyCFunction)(void(*)(void))_wrap_sync_detector_sptr_nitems_read, METH_VARARGS|METH_KEYWORDS, "sync_detector_sptr_nitems_read(sync_detector_sptr self, unsigned int which_input) -> uint64_t"}, + { "sync_detector_sptr_nitems_written", (PyCFunction)(void(*)(void))_wrap_sync_detector_sptr_nitems_written, METH_VARARGS|METH_KEYWORDS, "sync_detector_sptr_nitems_written(sync_detector_sptr self, unsigned int which_output) -> uint64_t"}, + { "sync_detector_sptr_set_log_level", (PyCFunction)(void(*)(void))_wrap_sync_detector_sptr_set_log_level, METH_VARARGS|METH_KEYWORDS, "sync_detector_sptr_set_log_level(sync_detector_sptr self, std::string level)"}, + { "sync_detector_sptr_log_level", _wrap_sync_detector_sptr_log_level, METH_O, "sync_detector_sptr_log_level(sync_detector_sptr self) -> std::string"}, + { "sync_detector_sptr_max_noutput_items", _wrap_sync_detector_sptr_max_noutput_items, METH_O, "sync_detector_sptr_max_noutput_items(sync_detector_sptr self) -> int"}, + { "sync_detector_sptr_set_max_noutput_items", (PyCFunction)(void(*)(void))_wrap_sync_detector_sptr_set_max_noutput_items, METH_VARARGS|METH_KEYWORDS, "sync_detector_sptr_set_max_noutput_items(sync_detector_sptr self, int m)"}, + { "sync_detector_sptr_unset_max_noutput_items", _wrap_sync_detector_sptr_unset_max_noutput_items, METH_O, "sync_detector_sptr_unset_max_noutput_items(sync_detector_sptr self)"}, + { "sync_detector_sptr_is_set_max_noutput_items", _wrap_sync_detector_sptr_is_set_max_noutput_items, METH_O, "sync_detector_sptr_is_set_max_noutput_items(sync_detector_sptr self) -> bool"}, + { "sync_detector_sptr_set_min_noutput_items", (PyCFunction)(void(*)(void))_wrap_sync_detector_sptr_set_min_noutput_items, METH_VARARGS|METH_KEYWORDS, "sync_detector_sptr_set_min_noutput_items(sync_detector_sptr self, int m)"}, + { "sync_detector_sptr_min_noutput_items", _wrap_sync_detector_sptr_min_noutput_items, METH_O, "sync_detector_sptr_min_noutput_items(sync_detector_sptr self) -> int"}, + { "sync_detector_sptr_max_output_buffer", (PyCFunction)(void(*)(void))_wrap_sync_detector_sptr_max_output_buffer, METH_VARARGS|METH_KEYWORDS, "sync_detector_sptr_max_output_buffer(sync_detector_sptr self, int i) -> long"}, + { "sync_detector_sptr_set_max_output_buffer", _wrap_sync_detector_sptr_set_max_output_buffer, METH_VARARGS, "\n" + "sync_detector_sptr_set_max_output_buffer(sync_detector_sptr self, long max_output_buffer)\n" + "sync_detector_sptr_set_max_output_buffer(sync_detector_sptr self, int port, long max_output_buffer)\n" + ""}, + { "sync_detector_sptr_min_output_buffer", (PyCFunction)(void(*)(void))_wrap_sync_detector_sptr_min_output_buffer, METH_VARARGS|METH_KEYWORDS, "sync_detector_sptr_min_output_buffer(sync_detector_sptr self, int i) -> long"}, + { "sync_detector_sptr_set_min_output_buffer", _wrap_sync_detector_sptr_set_min_output_buffer, METH_VARARGS, "\n" + "sync_detector_sptr_set_min_output_buffer(sync_detector_sptr self, long min_output_buffer)\n" + "sync_detector_sptr_set_min_output_buffer(sync_detector_sptr self, int port, long min_output_buffer)\n" + ""}, + { "sync_detector_sptr_pc_noutput_items", _wrap_sync_detector_sptr_pc_noutput_items, METH_O, "sync_detector_sptr_pc_noutput_items(sync_detector_sptr self) -> float"}, + { "sync_detector_sptr_pc_noutput_items_avg", _wrap_sync_detector_sptr_pc_noutput_items_avg, METH_O, "sync_detector_sptr_pc_noutput_items_avg(sync_detector_sptr self) -> float"}, + { "sync_detector_sptr_pc_noutput_items_var", _wrap_sync_detector_sptr_pc_noutput_items_var, METH_O, "sync_detector_sptr_pc_noutput_items_var(sync_detector_sptr self) -> float"}, + { "sync_detector_sptr_pc_nproduced", _wrap_sync_detector_sptr_pc_nproduced, METH_O, "sync_detector_sptr_pc_nproduced(sync_detector_sptr self) -> float"}, + { "sync_detector_sptr_pc_nproduced_avg", _wrap_sync_detector_sptr_pc_nproduced_avg, METH_O, "sync_detector_sptr_pc_nproduced_avg(sync_detector_sptr self) -> float"}, + { "sync_detector_sptr_pc_nproduced_var", _wrap_sync_detector_sptr_pc_nproduced_var, METH_O, "sync_detector_sptr_pc_nproduced_var(sync_detector_sptr self) -> float"}, + { "sync_detector_sptr_pc_input_buffers_full", _wrap_sync_detector_sptr_pc_input_buffers_full, METH_VARARGS, "\n" + "sync_detector_sptr_pc_input_buffers_full(sync_detector_sptr self, int which) -> float\n" + "sync_detector_sptr_pc_input_buffers_full(sync_detector_sptr self) -> pmt_vector_float\n" + ""}, + { "sync_detector_sptr_pc_input_buffers_full_avg", _wrap_sync_detector_sptr_pc_input_buffers_full_avg, METH_VARARGS, "\n" + "sync_detector_sptr_pc_input_buffers_full_avg(sync_detector_sptr self, int which) -> float\n" + "sync_detector_sptr_pc_input_buffers_full_avg(sync_detector_sptr self) -> pmt_vector_float\n" + ""}, + { "sync_detector_sptr_pc_input_buffers_full_var", _wrap_sync_detector_sptr_pc_input_buffers_full_var, METH_VARARGS, "\n" + "sync_detector_sptr_pc_input_buffers_full_var(sync_detector_sptr self, int which) -> float\n" + "sync_detector_sptr_pc_input_buffers_full_var(sync_detector_sptr self) -> pmt_vector_float\n" + ""}, + { "sync_detector_sptr_pc_output_buffers_full", _wrap_sync_detector_sptr_pc_output_buffers_full, METH_VARARGS, "\n" + "sync_detector_sptr_pc_output_buffers_full(sync_detector_sptr self, int which) -> float\n" + "sync_detector_sptr_pc_output_buffers_full(sync_detector_sptr self) -> pmt_vector_float\n" + ""}, + { "sync_detector_sptr_pc_output_buffers_full_avg", _wrap_sync_detector_sptr_pc_output_buffers_full_avg, METH_VARARGS, "\n" + "sync_detector_sptr_pc_output_buffers_full_avg(sync_detector_sptr self, int which) -> float\n" + "sync_detector_sptr_pc_output_buffers_full_avg(sync_detector_sptr self) -> pmt_vector_float\n" + ""}, + { "sync_detector_sptr_pc_output_buffers_full_var", _wrap_sync_detector_sptr_pc_output_buffers_full_var, METH_VARARGS, "\n" + "sync_detector_sptr_pc_output_buffers_full_var(sync_detector_sptr self, int which) -> float\n" + "sync_detector_sptr_pc_output_buffers_full_var(sync_detector_sptr self) -> pmt_vector_float\n" + ""}, + { "sync_detector_sptr_pc_work_time", _wrap_sync_detector_sptr_pc_work_time, METH_O, "sync_detector_sptr_pc_work_time(sync_detector_sptr self) -> float"}, + { "sync_detector_sptr_pc_work_time_avg", _wrap_sync_detector_sptr_pc_work_time_avg, METH_O, "sync_detector_sptr_pc_work_time_avg(sync_detector_sptr self) -> float"}, + { "sync_detector_sptr_pc_work_time_var", _wrap_sync_detector_sptr_pc_work_time_var, METH_O, "sync_detector_sptr_pc_work_time_var(sync_detector_sptr self) -> float"}, + { "sync_detector_sptr_pc_work_time_total", _wrap_sync_detector_sptr_pc_work_time_total, METH_O, "sync_detector_sptr_pc_work_time_total(sync_detector_sptr self) -> float"}, + { "sync_detector_sptr_pc_throughput_avg", _wrap_sync_detector_sptr_pc_throughput_avg, METH_O, "sync_detector_sptr_pc_throughput_avg(sync_detector_sptr self) -> float"}, + { "sync_detector_sptr_set_processor_affinity", (PyCFunction)(void(*)(void))_wrap_sync_detector_sptr_set_processor_affinity, METH_VARARGS|METH_KEYWORDS, "sync_detector_sptr_set_processor_affinity(sync_detector_sptr self, std::vector< int,std::allocator< int > > const & mask)"}, + { "sync_detector_sptr_unset_processor_affinity", _wrap_sync_detector_sptr_unset_processor_affinity, METH_O, "sync_detector_sptr_unset_processor_affinity(sync_detector_sptr self)"}, + { "sync_detector_sptr_processor_affinity", _wrap_sync_detector_sptr_processor_affinity, METH_O, "sync_detector_sptr_processor_affinity(sync_detector_sptr self) -> std::vector< int,std::allocator< int > >"}, + { "sync_detector_sptr_active_thread_priority", _wrap_sync_detector_sptr_active_thread_priority, METH_O, "sync_detector_sptr_active_thread_priority(sync_detector_sptr self) -> int"}, + { "sync_detector_sptr_thread_priority", _wrap_sync_detector_sptr_thread_priority, METH_O, "sync_detector_sptr_thread_priority(sync_detector_sptr self) -> int"}, + { "sync_detector_sptr_set_thread_priority", (PyCFunction)(void(*)(void))_wrap_sync_detector_sptr_set_thread_priority, METH_VARARGS|METH_KEYWORDS, "sync_detector_sptr_set_thread_priority(sync_detector_sptr self, int priority) -> int"}, + { "sync_detector_sptr_name", _wrap_sync_detector_sptr_name, METH_O, "sync_detector_sptr_name(sync_detector_sptr self) -> std::string"}, + { "sync_detector_sptr_symbol_name", _wrap_sync_detector_sptr_symbol_name, METH_O, "sync_detector_sptr_symbol_name(sync_detector_sptr self) -> std::string"}, + { "sync_detector_sptr_input_signature", _wrap_sync_detector_sptr_input_signature, METH_O, "sync_detector_sptr_input_signature(sync_detector_sptr self) -> io_signature_sptr"}, + { "sync_detector_sptr_output_signature", _wrap_sync_detector_sptr_output_signature, METH_O, "sync_detector_sptr_output_signature(sync_detector_sptr self) -> io_signature_sptr"}, + { "sync_detector_sptr_unique_id", _wrap_sync_detector_sptr_unique_id, METH_O, "sync_detector_sptr_unique_id(sync_detector_sptr self) -> long"}, + { "sync_detector_sptr_to_basic_block", _wrap_sync_detector_sptr_to_basic_block, METH_O, "sync_detector_sptr_to_basic_block(sync_detector_sptr self) -> basic_block_sptr"}, + { "sync_detector_sptr_check_topology", (PyCFunction)(void(*)(void))_wrap_sync_detector_sptr_check_topology, METH_VARARGS|METH_KEYWORDS, "sync_detector_sptr_check_topology(sync_detector_sptr self, int ninputs, int noutputs) -> bool"}, + { "sync_detector_sptr_alias", _wrap_sync_detector_sptr_alias, METH_O, "sync_detector_sptr_alias(sync_detector_sptr self) -> std::string"}, + { "sync_detector_sptr_set_block_alias", (PyCFunction)(void(*)(void))_wrap_sync_detector_sptr_set_block_alias, METH_VARARGS|METH_KEYWORDS, "sync_detector_sptr_set_block_alias(sync_detector_sptr self, std::string name)"}, + { "sync_detector_sptr__post", (PyCFunction)(void(*)(void))_wrap_sync_detector_sptr__post, METH_VARARGS|METH_KEYWORDS, "sync_detector_sptr__post(sync_detector_sptr self, swig_pmt_ptr which_port, swig_pmt_ptr msg)"}, + { "sync_detector_sptr_message_ports_in", _wrap_sync_detector_sptr_message_ports_in, METH_O, "sync_detector_sptr_message_ports_in(sync_detector_sptr self) -> swig_pmt_ptr"}, + { "sync_detector_sptr_message_ports_out", _wrap_sync_detector_sptr_message_ports_out, METH_O, "sync_detector_sptr_message_ports_out(sync_detector_sptr self) -> swig_pmt_ptr"}, + { "sync_detector_sptr_message_subscribers", (PyCFunction)(void(*)(void))_wrap_sync_detector_sptr_message_subscribers, METH_VARARGS|METH_KEYWORDS, "sync_detector_sptr_message_subscribers(sync_detector_sptr self, swig_pmt_ptr which_port) -> swig_pmt_ptr"}, + { "sync_detector_sptr_swigregister", sync_detector_sptr_swigregister, METH_O, NULL}, + { "sync_detector_sptr_swiginit", sync_detector_sptr_swiginit, METH_VARARGS, NULL}, + { "frame_drop_make", (PyCFunction)(void(*)(void))_wrap_frame_drop_make, METH_VARARGS|METH_KEYWORDS, "frame_drop_make(int Htotal, int Vtotal, int correct_sampling, float max_deviation, float update_proba, double actual_samp_rate) -> frame_drop_sptr"}, + { "delete_frame_drop", _wrap_delete_frame_drop, METH_O, "delete_frame_drop(frame_drop self)"}, + { "frame_drop_swigregister", frame_drop_swigregister, METH_O, NULL}, + { "new_frame_drop_sptr", _wrap_new_frame_drop_sptr, METH_VARARGS, "\n" + "frame_drop_sptr()\n" + "new_frame_drop_sptr(frame_drop p) -> frame_drop_sptr\n" + ""}, + { "frame_drop_sptr___deref__", _wrap_frame_drop_sptr___deref__, METH_O, "frame_drop_sptr___deref__(frame_drop_sptr self) -> frame_drop"}, + { "delete_frame_drop_sptr", _wrap_delete_frame_drop_sptr, METH_O, "delete_frame_drop_sptr(frame_drop_sptr self)"}, + { "frame_drop_sptr_make", (PyCFunction)(void(*)(void))_wrap_frame_drop_sptr_make, METH_VARARGS|METH_KEYWORDS, "frame_drop_sptr_make(frame_drop_sptr self, int Htotal, int Vtotal, int correct_sampling, float max_deviation, float update_proba, double actual_samp_rate) -> frame_drop_sptr"}, + { "frame_drop_sptr_history", _wrap_frame_drop_sptr_history, METH_O, "frame_drop_sptr_history(frame_drop_sptr self) -> unsigned int"}, + { "frame_drop_sptr_declare_sample_delay", _wrap_frame_drop_sptr_declare_sample_delay, METH_VARARGS, "\n" + "frame_drop_sptr_declare_sample_delay(frame_drop_sptr self, int which, int delay)\n" + "frame_drop_sptr_declare_sample_delay(frame_drop_sptr self, unsigned int delay)\n" + ""}, + { "frame_drop_sptr_sample_delay", (PyCFunction)(void(*)(void))_wrap_frame_drop_sptr_sample_delay, METH_VARARGS|METH_KEYWORDS, "frame_drop_sptr_sample_delay(frame_drop_sptr self, int which) -> unsigned int"}, + { "frame_drop_sptr_set_output_multiple", (PyCFunction)(void(*)(void))_wrap_frame_drop_sptr_set_output_multiple, METH_VARARGS|METH_KEYWORDS, "frame_drop_sptr_set_output_multiple(frame_drop_sptr self, int multiple)"}, + { "frame_drop_sptr_output_multiple", _wrap_frame_drop_sptr_output_multiple, METH_O, "frame_drop_sptr_output_multiple(frame_drop_sptr self) -> int"}, + { "frame_drop_sptr_relative_rate", _wrap_frame_drop_sptr_relative_rate, METH_O, "frame_drop_sptr_relative_rate(frame_drop_sptr self) -> double"}, + { "frame_drop_sptr_relative_rate_i", _wrap_frame_drop_sptr_relative_rate_i, METH_O, "frame_drop_sptr_relative_rate_i(frame_drop_sptr self) -> uint64_t"}, + { "frame_drop_sptr_relative_rate_d", _wrap_frame_drop_sptr_relative_rate_d, METH_O, "frame_drop_sptr_relative_rate_d(frame_drop_sptr self) -> uint64_t"}, + { "frame_drop_sptr_start", _wrap_frame_drop_sptr_start, METH_O, "frame_drop_sptr_start(frame_drop_sptr self) -> bool"}, + { "frame_drop_sptr_stop", _wrap_frame_drop_sptr_stop, METH_O, "frame_drop_sptr_stop(frame_drop_sptr self) -> bool"}, + { "frame_drop_sptr_nitems_read", (PyCFunction)(void(*)(void))_wrap_frame_drop_sptr_nitems_read, METH_VARARGS|METH_KEYWORDS, "frame_drop_sptr_nitems_read(frame_drop_sptr self, unsigned int which_input) -> uint64_t"}, + { "frame_drop_sptr_nitems_written", (PyCFunction)(void(*)(void))_wrap_frame_drop_sptr_nitems_written, METH_VARARGS|METH_KEYWORDS, "frame_drop_sptr_nitems_written(frame_drop_sptr self, unsigned int which_output) -> uint64_t"}, + { "frame_drop_sptr_set_log_level", (PyCFunction)(void(*)(void))_wrap_frame_drop_sptr_set_log_level, METH_VARARGS|METH_KEYWORDS, "frame_drop_sptr_set_log_level(frame_drop_sptr self, std::string level)"}, + { "frame_drop_sptr_log_level", _wrap_frame_drop_sptr_log_level, METH_O, "frame_drop_sptr_log_level(frame_drop_sptr self) -> std::string"}, + { "frame_drop_sptr_max_noutput_items", _wrap_frame_drop_sptr_max_noutput_items, METH_O, "frame_drop_sptr_max_noutput_items(frame_drop_sptr self) -> int"}, + { "frame_drop_sptr_set_max_noutput_items", (PyCFunction)(void(*)(void))_wrap_frame_drop_sptr_set_max_noutput_items, METH_VARARGS|METH_KEYWORDS, "frame_drop_sptr_set_max_noutput_items(frame_drop_sptr self, int m)"}, + { "frame_drop_sptr_unset_max_noutput_items", _wrap_frame_drop_sptr_unset_max_noutput_items, METH_O, "frame_drop_sptr_unset_max_noutput_items(frame_drop_sptr self)"}, + { "frame_drop_sptr_is_set_max_noutput_items", _wrap_frame_drop_sptr_is_set_max_noutput_items, METH_O, "frame_drop_sptr_is_set_max_noutput_items(frame_drop_sptr self) -> bool"}, + { "frame_drop_sptr_set_min_noutput_items", (PyCFunction)(void(*)(void))_wrap_frame_drop_sptr_set_min_noutput_items, METH_VARARGS|METH_KEYWORDS, "frame_drop_sptr_set_min_noutput_items(frame_drop_sptr self, int m)"}, + { "frame_drop_sptr_min_noutput_items", _wrap_frame_drop_sptr_min_noutput_items, METH_O, "frame_drop_sptr_min_noutput_items(frame_drop_sptr self) -> int"}, + { "frame_drop_sptr_max_output_buffer", (PyCFunction)(void(*)(void))_wrap_frame_drop_sptr_max_output_buffer, METH_VARARGS|METH_KEYWORDS, "frame_drop_sptr_max_output_buffer(frame_drop_sptr self, int i) -> long"}, + { "frame_drop_sptr_set_max_output_buffer", _wrap_frame_drop_sptr_set_max_output_buffer, METH_VARARGS, "\n" + "frame_drop_sptr_set_max_output_buffer(frame_drop_sptr self, long max_output_buffer)\n" + "frame_drop_sptr_set_max_output_buffer(frame_drop_sptr self, int port, long max_output_buffer)\n" + ""}, + { "frame_drop_sptr_min_output_buffer", (PyCFunction)(void(*)(void))_wrap_frame_drop_sptr_min_output_buffer, METH_VARARGS|METH_KEYWORDS, "frame_drop_sptr_min_output_buffer(frame_drop_sptr self, int i) -> long"}, + { "frame_drop_sptr_set_min_output_buffer", _wrap_frame_drop_sptr_set_min_output_buffer, METH_VARARGS, "\n" + "frame_drop_sptr_set_min_output_buffer(frame_drop_sptr self, long min_output_buffer)\n" + "frame_drop_sptr_set_min_output_buffer(frame_drop_sptr self, int port, long min_output_buffer)\n" + ""}, + { "frame_drop_sptr_pc_noutput_items", _wrap_frame_drop_sptr_pc_noutput_items, METH_O, "frame_drop_sptr_pc_noutput_items(frame_drop_sptr self) -> float"}, + { "frame_drop_sptr_pc_noutput_items_avg", _wrap_frame_drop_sptr_pc_noutput_items_avg, METH_O, "frame_drop_sptr_pc_noutput_items_avg(frame_drop_sptr self) -> float"}, + { "frame_drop_sptr_pc_noutput_items_var", _wrap_frame_drop_sptr_pc_noutput_items_var, METH_O, "frame_drop_sptr_pc_noutput_items_var(frame_drop_sptr self) -> float"}, + { "frame_drop_sptr_pc_nproduced", _wrap_frame_drop_sptr_pc_nproduced, METH_O, "frame_drop_sptr_pc_nproduced(frame_drop_sptr self) -> float"}, + { "frame_drop_sptr_pc_nproduced_avg", _wrap_frame_drop_sptr_pc_nproduced_avg, METH_O, "frame_drop_sptr_pc_nproduced_avg(frame_drop_sptr self) -> float"}, + { "frame_drop_sptr_pc_nproduced_var", _wrap_frame_drop_sptr_pc_nproduced_var, METH_O, "frame_drop_sptr_pc_nproduced_var(frame_drop_sptr self) -> float"}, + { "frame_drop_sptr_pc_input_buffers_full", _wrap_frame_drop_sptr_pc_input_buffers_full, METH_VARARGS, "\n" + "frame_drop_sptr_pc_input_buffers_full(frame_drop_sptr self, int which) -> float\n" + "frame_drop_sptr_pc_input_buffers_full(frame_drop_sptr self) -> pmt_vector_float\n" + ""}, + { "frame_drop_sptr_pc_input_buffers_full_avg", _wrap_frame_drop_sptr_pc_input_buffers_full_avg, METH_VARARGS, "\n" + "frame_drop_sptr_pc_input_buffers_full_avg(frame_drop_sptr self, int which) -> float\n" + "frame_drop_sptr_pc_input_buffers_full_avg(frame_drop_sptr self) -> pmt_vector_float\n" + ""}, + { "frame_drop_sptr_pc_input_buffers_full_var", _wrap_frame_drop_sptr_pc_input_buffers_full_var, METH_VARARGS, "\n" + "frame_drop_sptr_pc_input_buffers_full_var(frame_drop_sptr self, int which) -> float\n" + "frame_drop_sptr_pc_input_buffers_full_var(frame_drop_sptr self) -> pmt_vector_float\n" + ""}, + { "frame_drop_sptr_pc_output_buffers_full", _wrap_frame_drop_sptr_pc_output_buffers_full, METH_VARARGS, "\n" + "frame_drop_sptr_pc_output_buffers_full(frame_drop_sptr self, int which) -> float\n" + "frame_drop_sptr_pc_output_buffers_full(frame_drop_sptr self) -> pmt_vector_float\n" + ""}, + { "frame_drop_sptr_pc_output_buffers_full_avg", _wrap_frame_drop_sptr_pc_output_buffers_full_avg, METH_VARARGS, "\n" + "frame_drop_sptr_pc_output_buffers_full_avg(frame_drop_sptr self, int which) -> float\n" + "frame_drop_sptr_pc_output_buffers_full_avg(frame_drop_sptr self) -> pmt_vector_float\n" + ""}, + { "frame_drop_sptr_pc_output_buffers_full_var", _wrap_frame_drop_sptr_pc_output_buffers_full_var, METH_VARARGS, "\n" + "frame_drop_sptr_pc_output_buffers_full_var(frame_drop_sptr self, int which) -> float\n" + "frame_drop_sptr_pc_output_buffers_full_var(frame_drop_sptr self) -> pmt_vector_float\n" + ""}, + { "frame_drop_sptr_pc_work_time", _wrap_frame_drop_sptr_pc_work_time, METH_O, "frame_drop_sptr_pc_work_time(frame_drop_sptr self) -> float"}, + { "frame_drop_sptr_pc_work_time_avg", _wrap_frame_drop_sptr_pc_work_time_avg, METH_O, "frame_drop_sptr_pc_work_time_avg(frame_drop_sptr self) -> float"}, + { "frame_drop_sptr_pc_work_time_var", _wrap_frame_drop_sptr_pc_work_time_var, METH_O, "frame_drop_sptr_pc_work_time_var(frame_drop_sptr self) -> float"}, + { "frame_drop_sptr_pc_work_time_total", _wrap_frame_drop_sptr_pc_work_time_total, METH_O, "frame_drop_sptr_pc_work_time_total(frame_drop_sptr self) -> float"}, + { "frame_drop_sptr_pc_throughput_avg", _wrap_frame_drop_sptr_pc_throughput_avg, METH_O, "frame_drop_sptr_pc_throughput_avg(frame_drop_sptr self) -> float"}, + { "frame_drop_sptr_set_processor_affinity", (PyCFunction)(void(*)(void))_wrap_frame_drop_sptr_set_processor_affinity, METH_VARARGS|METH_KEYWORDS, "frame_drop_sptr_set_processor_affinity(frame_drop_sptr self, std::vector< int,std::allocator< int > > const & mask)"}, + { "frame_drop_sptr_unset_processor_affinity", _wrap_frame_drop_sptr_unset_processor_affinity, METH_O, "frame_drop_sptr_unset_processor_affinity(frame_drop_sptr self)"}, + { "frame_drop_sptr_processor_affinity", _wrap_frame_drop_sptr_processor_affinity, METH_O, "frame_drop_sptr_processor_affinity(frame_drop_sptr self) -> std::vector< int,std::allocator< int > >"}, + { "frame_drop_sptr_active_thread_priority", _wrap_frame_drop_sptr_active_thread_priority, METH_O, "frame_drop_sptr_active_thread_priority(frame_drop_sptr self) -> int"}, + { "frame_drop_sptr_thread_priority", _wrap_frame_drop_sptr_thread_priority, METH_O, "frame_drop_sptr_thread_priority(frame_drop_sptr self) -> int"}, + { "frame_drop_sptr_set_thread_priority", (PyCFunction)(void(*)(void))_wrap_frame_drop_sptr_set_thread_priority, METH_VARARGS|METH_KEYWORDS, "frame_drop_sptr_set_thread_priority(frame_drop_sptr self, int priority) -> int"}, + { "frame_drop_sptr_name", _wrap_frame_drop_sptr_name, METH_O, "frame_drop_sptr_name(frame_drop_sptr self) -> std::string"}, + { "frame_drop_sptr_symbol_name", _wrap_frame_drop_sptr_symbol_name, METH_O, "frame_drop_sptr_symbol_name(frame_drop_sptr self) -> std::string"}, + { "frame_drop_sptr_input_signature", _wrap_frame_drop_sptr_input_signature, METH_O, "frame_drop_sptr_input_signature(frame_drop_sptr self) -> io_signature_sptr"}, + { "frame_drop_sptr_output_signature", _wrap_frame_drop_sptr_output_signature, METH_O, "frame_drop_sptr_output_signature(frame_drop_sptr self) -> io_signature_sptr"}, + { "frame_drop_sptr_unique_id", _wrap_frame_drop_sptr_unique_id, METH_O, "frame_drop_sptr_unique_id(frame_drop_sptr self) -> long"}, + { "frame_drop_sptr_to_basic_block", _wrap_frame_drop_sptr_to_basic_block, METH_O, "frame_drop_sptr_to_basic_block(frame_drop_sptr self) -> basic_block_sptr"}, + { "frame_drop_sptr_check_topology", (PyCFunction)(void(*)(void))_wrap_frame_drop_sptr_check_topology, METH_VARARGS|METH_KEYWORDS, "frame_drop_sptr_check_topology(frame_drop_sptr self, int ninputs, int noutputs) -> bool"}, + { "frame_drop_sptr_alias", _wrap_frame_drop_sptr_alias, METH_O, "frame_drop_sptr_alias(frame_drop_sptr self) -> std::string"}, + { "frame_drop_sptr_set_block_alias", (PyCFunction)(void(*)(void))_wrap_frame_drop_sptr_set_block_alias, METH_VARARGS|METH_KEYWORDS, "frame_drop_sptr_set_block_alias(frame_drop_sptr self, std::string name)"}, + { "frame_drop_sptr__post", (PyCFunction)(void(*)(void))_wrap_frame_drop_sptr__post, METH_VARARGS|METH_KEYWORDS, "frame_drop_sptr__post(frame_drop_sptr self, swig_pmt_ptr which_port, swig_pmt_ptr msg)"}, + { "frame_drop_sptr_message_ports_in", _wrap_frame_drop_sptr_message_ports_in, METH_O, "frame_drop_sptr_message_ports_in(frame_drop_sptr self) -> swig_pmt_ptr"}, + { "frame_drop_sptr_message_ports_out", _wrap_frame_drop_sptr_message_ports_out, METH_O, "frame_drop_sptr_message_ports_out(frame_drop_sptr self) -> swig_pmt_ptr"}, + { "frame_drop_sptr_message_subscribers", (PyCFunction)(void(*)(void))_wrap_frame_drop_sptr_message_subscribers, METH_VARARGS|METH_KEYWORDS, "frame_drop_sptr_message_subscribers(frame_drop_sptr self, swig_pmt_ptr which_port) -> swig_pmt_ptr"}, + { "frame_drop_sptr_swigregister", frame_drop_sptr_swigregister, METH_O, NULL}, + { "frame_drop_sptr_swiginit", frame_drop_sptr_swiginit, METH_VARARGS, NULL}, + { "fft_peak_fine_sampling_sync_make", (PyCFunction)(void(*)(void))_wrap_fft_peak_fine_sampling_sync_make, METH_VARARGS|METH_KEYWORDS, "fft_peak_fine_sampling_sync_make(int sample_rate, int size, int refresh_rate, int Vvisible, int Hvisible, bool automatic_mode) -> fft_peak_fine_sampling_sync_sptr"}, + { "delete_fft_peak_fine_sampling_sync", _wrap_delete_fft_peak_fine_sampling_sync, METH_O, "delete_fft_peak_fine_sampling_sync(fft_peak_fine_sampling_sync self)"}, + { "fft_peak_fine_sampling_sync_swigregister", fft_peak_fine_sampling_sync_swigregister, METH_O, NULL}, + { "new_fft_peak_fine_sampling_sync_sptr", _wrap_new_fft_peak_fine_sampling_sync_sptr, METH_VARARGS, "\n" + "fft_peak_fine_sampling_sync_sptr()\n" + "new_fft_peak_fine_sampling_sync_sptr(fft_peak_fine_sampling_sync p) -> fft_peak_fine_sampling_sync_sptr\n" + ""}, + { "fft_peak_fine_sampling_sync_sptr___deref__", _wrap_fft_peak_fine_sampling_sync_sptr___deref__, METH_O, "fft_peak_fine_sampling_sync_sptr___deref__(fft_peak_fine_sampling_sync_sptr self) -> fft_peak_fine_sampling_sync"}, + { "delete_fft_peak_fine_sampling_sync_sptr", _wrap_delete_fft_peak_fine_sampling_sync_sptr, METH_O, "delete_fft_peak_fine_sampling_sync_sptr(fft_peak_fine_sampling_sync_sptr self)"}, + { "fft_peak_fine_sampling_sync_sptr_make", (PyCFunction)(void(*)(void))_wrap_fft_peak_fine_sampling_sync_sptr_make, METH_VARARGS|METH_KEYWORDS, "fft_peak_fine_sampling_sync_sptr_make(fft_peak_fine_sampling_sync_sptr self, int sample_rate, int size, int refresh_rate, int Vvisible, int Hvisible, bool automatic_mode) -> fft_peak_fine_sampling_sync_sptr"}, + { "fft_peak_fine_sampling_sync_sptr_history", _wrap_fft_peak_fine_sampling_sync_sptr_history, METH_O, "fft_peak_fine_sampling_sync_sptr_history(fft_peak_fine_sampling_sync_sptr self) -> unsigned int"}, + { "fft_peak_fine_sampling_sync_sptr_declare_sample_delay", _wrap_fft_peak_fine_sampling_sync_sptr_declare_sample_delay, METH_VARARGS, "\n" + "fft_peak_fine_sampling_sync_sptr_declare_sample_delay(fft_peak_fine_sampling_sync_sptr self, int which, int delay)\n" + "fft_peak_fine_sampling_sync_sptr_declare_sample_delay(fft_peak_fine_sampling_sync_sptr self, unsigned int delay)\n" + ""}, + { "fft_peak_fine_sampling_sync_sptr_sample_delay", (PyCFunction)(void(*)(void))_wrap_fft_peak_fine_sampling_sync_sptr_sample_delay, METH_VARARGS|METH_KEYWORDS, "fft_peak_fine_sampling_sync_sptr_sample_delay(fft_peak_fine_sampling_sync_sptr self, int which) -> unsigned int"}, + { "fft_peak_fine_sampling_sync_sptr_set_output_multiple", (PyCFunction)(void(*)(void))_wrap_fft_peak_fine_sampling_sync_sptr_set_output_multiple, METH_VARARGS|METH_KEYWORDS, "fft_peak_fine_sampling_sync_sptr_set_output_multiple(fft_peak_fine_sampling_sync_sptr self, int multiple)"}, + { "fft_peak_fine_sampling_sync_sptr_output_multiple", _wrap_fft_peak_fine_sampling_sync_sptr_output_multiple, METH_O, "fft_peak_fine_sampling_sync_sptr_output_multiple(fft_peak_fine_sampling_sync_sptr self) -> int"}, + { "fft_peak_fine_sampling_sync_sptr_relative_rate", _wrap_fft_peak_fine_sampling_sync_sptr_relative_rate, METH_O, "fft_peak_fine_sampling_sync_sptr_relative_rate(fft_peak_fine_sampling_sync_sptr self) -> double"}, + { "fft_peak_fine_sampling_sync_sptr_relative_rate_i", _wrap_fft_peak_fine_sampling_sync_sptr_relative_rate_i, METH_O, "fft_peak_fine_sampling_sync_sptr_relative_rate_i(fft_peak_fine_sampling_sync_sptr self) -> uint64_t"}, + { "fft_peak_fine_sampling_sync_sptr_relative_rate_d", _wrap_fft_peak_fine_sampling_sync_sptr_relative_rate_d, METH_O, "fft_peak_fine_sampling_sync_sptr_relative_rate_d(fft_peak_fine_sampling_sync_sptr self) -> uint64_t"}, + { "fft_peak_fine_sampling_sync_sptr_start", _wrap_fft_peak_fine_sampling_sync_sptr_start, METH_O, "fft_peak_fine_sampling_sync_sptr_start(fft_peak_fine_sampling_sync_sptr self) -> bool"}, + { "fft_peak_fine_sampling_sync_sptr_stop", _wrap_fft_peak_fine_sampling_sync_sptr_stop, METH_O, "fft_peak_fine_sampling_sync_sptr_stop(fft_peak_fine_sampling_sync_sptr self) -> bool"}, + { "fft_peak_fine_sampling_sync_sptr_nitems_read", (PyCFunction)(void(*)(void))_wrap_fft_peak_fine_sampling_sync_sptr_nitems_read, METH_VARARGS|METH_KEYWORDS, "fft_peak_fine_sampling_sync_sptr_nitems_read(fft_peak_fine_sampling_sync_sptr self, unsigned int which_input) -> uint64_t"}, + { "fft_peak_fine_sampling_sync_sptr_nitems_written", (PyCFunction)(void(*)(void))_wrap_fft_peak_fine_sampling_sync_sptr_nitems_written, METH_VARARGS|METH_KEYWORDS, "fft_peak_fine_sampling_sync_sptr_nitems_written(fft_peak_fine_sampling_sync_sptr self, unsigned int which_output) -> uint64_t"}, + { "fft_peak_fine_sampling_sync_sptr_set_log_level", (PyCFunction)(void(*)(void))_wrap_fft_peak_fine_sampling_sync_sptr_set_log_level, METH_VARARGS|METH_KEYWORDS, "fft_peak_fine_sampling_sync_sptr_set_log_level(fft_peak_fine_sampling_sync_sptr self, std::string level)"}, + { "fft_peak_fine_sampling_sync_sptr_log_level", _wrap_fft_peak_fine_sampling_sync_sptr_log_level, METH_O, "fft_peak_fine_sampling_sync_sptr_log_level(fft_peak_fine_sampling_sync_sptr self) -> std::string"}, + { "fft_peak_fine_sampling_sync_sptr_max_noutput_items", _wrap_fft_peak_fine_sampling_sync_sptr_max_noutput_items, METH_O, "fft_peak_fine_sampling_sync_sptr_max_noutput_items(fft_peak_fine_sampling_sync_sptr self) -> int"}, + { "fft_peak_fine_sampling_sync_sptr_set_max_noutput_items", (PyCFunction)(void(*)(void))_wrap_fft_peak_fine_sampling_sync_sptr_set_max_noutput_items, METH_VARARGS|METH_KEYWORDS, "fft_peak_fine_sampling_sync_sptr_set_max_noutput_items(fft_peak_fine_sampling_sync_sptr self, int m)"}, + { "fft_peak_fine_sampling_sync_sptr_unset_max_noutput_items", _wrap_fft_peak_fine_sampling_sync_sptr_unset_max_noutput_items, METH_O, "fft_peak_fine_sampling_sync_sptr_unset_max_noutput_items(fft_peak_fine_sampling_sync_sptr self)"}, + { "fft_peak_fine_sampling_sync_sptr_is_set_max_noutput_items", _wrap_fft_peak_fine_sampling_sync_sptr_is_set_max_noutput_items, METH_O, "fft_peak_fine_sampling_sync_sptr_is_set_max_noutput_items(fft_peak_fine_sampling_sync_sptr self) -> bool"}, + { "fft_peak_fine_sampling_sync_sptr_set_min_noutput_items", (PyCFunction)(void(*)(void))_wrap_fft_peak_fine_sampling_sync_sptr_set_min_noutput_items, METH_VARARGS|METH_KEYWORDS, "fft_peak_fine_sampling_sync_sptr_set_min_noutput_items(fft_peak_fine_sampling_sync_sptr self, int m)"}, + { "fft_peak_fine_sampling_sync_sptr_min_noutput_items", _wrap_fft_peak_fine_sampling_sync_sptr_min_noutput_items, METH_O, "fft_peak_fine_sampling_sync_sptr_min_noutput_items(fft_peak_fine_sampling_sync_sptr self) -> int"}, + { "fft_peak_fine_sampling_sync_sptr_max_output_buffer", (PyCFunction)(void(*)(void))_wrap_fft_peak_fine_sampling_sync_sptr_max_output_buffer, METH_VARARGS|METH_KEYWORDS, "fft_peak_fine_sampling_sync_sptr_max_output_buffer(fft_peak_fine_sampling_sync_sptr self, int i) -> long"}, + { "fft_peak_fine_sampling_sync_sptr_set_max_output_buffer", _wrap_fft_peak_fine_sampling_sync_sptr_set_max_output_buffer, METH_VARARGS, "\n" + "fft_peak_fine_sampling_sync_sptr_set_max_output_buffer(fft_peak_fine_sampling_sync_sptr self, long max_output_buffer)\n" + "fft_peak_fine_sampling_sync_sptr_set_max_output_buffer(fft_peak_fine_sampling_sync_sptr self, int port, long max_output_buffer)\n" + ""}, + { "fft_peak_fine_sampling_sync_sptr_min_output_buffer", (PyCFunction)(void(*)(void))_wrap_fft_peak_fine_sampling_sync_sptr_min_output_buffer, METH_VARARGS|METH_KEYWORDS, "fft_peak_fine_sampling_sync_sptr_min_output_buffer(fft_peak_fine_sampling_sync_sptr self, int i) -> long"}, + { "fft_peak_fine_sampling_sync_sptr_set_min_output_buffer", _wrap_fft_peak_fine_sampling_sync_sptr_set_min_output_buffer, METH_VARARGS, "\n" + "fft_peak_fine_sampling_sync_sptr_set_min_output_buffer(fft_peak_fine_sampling_sync_sptr self, long min_output_buffer)\n" + "fft_peak_fine_sampling_sync_sptr_set_min_output_buffer(fft_peak_fine_sampling_sync_sptr self, int port, long min_output_buffer)\n" + ""}, + { "fft_peak_fine_sampling_sync_sptr_pc_noutput_items", _wrap_fft_peak_fine_sampling_sync_sptr_pc_noutput_items, METH_O, "fft_peak_fine_sampling_sync_sptr_pc_noutput_items(fft_peak_fine_sampling_sync_sptr self) -> float"}, + { "fft_peak_fine_sampling_sync_sptr_pc_noutput_items_avg", _wrap_fft_peak_fine_sampling_sync_sptr_pc_noutput_items_avg, METH_O, "fft_peak_fine_sampling_sync_sptr_pc_noutput_items_avg(fft_peak_fine_sampling_sync_sptr self) -> float"}, + { "fft_peak_fine_sampling_sync_sptr_pc_noutput_items_var", _wrap_fft_peak_fine_sampling_sync_sptr_pc_noutput_items_var, METH_O, "fft_peak_fine_sampling_sync_sptr_pc_noutput_items_var(fft_peak_fine_sampling_sync_sptr self) -> float"}, + { "fft_peak_fine_sampling_sync_sptr_pc_nproduced", _wrap_fft_peak_fine_sampling_sync_sptr_pc_nproduced, METH_O, "fft_peak_fine_sampling_sync_sptr_pc_nproduced(fft_peak_fine_sampling_sync_sptr self) -> float"}, + { "fft_peak_fine_sampling_sync_sptr_pc_nproduced_avg", _wrap_fft_peak_fine_sampling_sync_sptr_pc_nproduced_avg, METH_O, "fft_peak_fine_sampling_sync_sptr_pc_nproduced_avg(fft_peak_fine_sampling_sync_sptr self) -> float"}, + { "fft_peak_fine_sampling_sync_sptr_pc_nproduced_var", _wrap_fft_peak_fine_sampling_sync_sptr_pc_nproduced_var, METH_O, "fft_peak_fine_sampling_sync_sptr_pc_nproduced_var(fft_peak_fine_sampling_sync_sptr self) -> float"}, + { "fft_peak_fine_sampling_sync_sptr_pc_input_buffers_full", _wrap_fft_peak_fine_sampling_sync_sptr_pc_input_buffers_full, METH_VARARGS, "\n" + "fft_peak_fine_sampling_sync_sptr_pc_input_buffers_full(fft_peak_fine_sampling_sync_sptr self, int which) -> float\n" + "fft_peak_fine_sampling_sync_sptr_pc_input_buffers_full(fft_peak_fine_sampling_sync_sptr self) -> pmt_vector_float\n" + ""}, + { "fft_peak_fine_sampling_sync_sptr_pc_input_buffers_full_avg", _wrap_fft_peak_fine_sampling_sync_sptr_pc_input_buffers_full_avg, METH_VARARGS, "\n" + "fft_peak_fine_sampling_sync_sptr_pc_input_buffers_full_avg(fft_peak_fine_sampling_sync_sptr self, int which) -> float\n" + "fft_peak_fine_sampling_sync_sptr_pc_input_buffers_full_avg(fft_peak_fine_sampling_sync_sptr self) -> pmt_vector_float\n" + ""}, + { "fft_peak_fine_sampling_sync_sptr_pc_input_buffers_full_var", _wrap_fft_peak_fine_sampling_sync_sptr_pc_input_buffers_full_var, METH_VARARGS, "\n" + "fft_peak_fine_sampling_sync_sptr_pc_input_buffers_full_var(fft_peak_fine_sampling_sync_sptr self, int which) -> float\n" + "fft_peak_fine_sampling_sync_sptr_pc_input_buffers_full_var(fft_peak_fine_sampling_sync_sptr self) -> pmt_vector_float\n" + ""}, + { "fft_peak_fine_sampling_sync_sptr_pc_output_buffers_full", _wrap_fft_peak_fine_sampling_sync_sptr_pc_output_buffers_full, METH_VARARGS, "\n" + "fft_peak_fine_sampling_sync_sptr_pc_output_buffers_full(fft_peak_fine_sampling_sync_sptr self, int which) -> float\n" + "fft_peak_fine_sampling_sync_sptr_pc_output_buffers_full(fft_peak_fine_sampling_sync_sptr self) -> pmt_vector_float\n" + ""}, + { "fft_peak_fine_sampling_sync_sptr_pc_output_buffers_full_avg", _wrap_fft_peak_fine_sampling_sync_sptr_pc_output_buffers_full_avg, METH_VARARGS, "\n" + "fft_peak_fine_sampling_sync_sptr_pc_output_buffers_full_avg(fft_peak_fine_sampling_sync_sptr self, int which) -> float\n" + "fft_peak_fine_sampling_sync_sptr_pc_output_buffers_full_avg(fft_peak_fine_sampling_sync_sptr self) -> pmt_vector_float\n" + ""}, + { "fft_peak_fine_sampling_sync_sptr_pc_output_buffers_full_var", _wrap_fft_peak_fine_sampling_sync_sptr_pc_output_buffers_full_var, METH_VARARGS, "\n" + "fft_peak_fine_sampling_sync_sptr_pc_output_buffers_full_var(fft_peak_fine_sampling_sync_sptr self, int which) -> float\n" + "fft_peak_fine_sampling_sync_sptr_pc_output_buffers_full_var(fft_peak_fine_sampling_sync_sptr self) -> pmt_vector_float\n" + ""}, + { "fft_peak_fine_sampling_sync_sptr_pc_work_time", _wrap_fft_peak_fine_sampling_sync_sptr_pc_work_time, METH_O, "fft_peak_fine_sampling_sync_sptr_pc_work_time(fft_peak_fine_sampling_sync_sptr self) -> float"}, + { "fft_peak_fine_sampling_sync_sptr_pc_work_time_avg", _wrap_fft_peak_fine_sampling_sync_sptr_pc_work_time_avg, METH_O, "fft_peak_fine_sampling_sync_sptr_pc_work_time_avg(fft_peak_fine_sampling_sync_sptr self) -> float"}, + { "fft_peak_fine_sampling_sync_sptr_pc_work_time_var", _wrap_fft_peak_fine_sampling_sync_sptr_pc_work_time_var, METH_O, "fft_peak_fine_sampling_sync_sptr_pc_work_time_var(fft_peak_fine_sampling_sync_sptr self) -> float"}, + { "fft_peak_fine_sampling_sync_sptr_pc_work_time_total", _wrap_fft_peak_fine_sampling_sync_sptr_pc_work_time_total, METH_O, "fft_peak_fine_sampling_sync_sptr_pc_work_time_total(fft_peak_fine_sampling_sync_sptr self) -> float"}, + { "fft_peak_fine_sampling_sync_sptr_pc_throughput_avg", _wrap_fft_peak_fine_sampling_sync_sptr_pc_throughput_avg, METH_O, "fft_peak_fine_sampling_sync_sptr_pc_throughput_avg(fft_peak_fine_sampling_sync_sptr self) -> float"}, + { "fft_peak_fine_sampling_sync_sptr_set_processor_affinity", (PyCFunction)(void(*)(void))_wrap_fft_peak_fine_sampling_sync_sptr_set_processor_affinity, METH_VARARGS|METH_KEYWORDS, "fft_peak_fine_sampling_sync_sptr_set_processor_affinity(fft_peak_fine_sampling_sync_sptr self, std::vector< int,std::allocator< int > > const & mask)"}, + { "fft_peak_fine_sampling_sync_sptr_unset_processor_affinity", _wrap_fft_peak_fine_sampling_sync_sptr_unset_processor_affinity, METH_O, "fft_peak_fine_sampling_sync_sptr_unset_processor_affinity(fft_peak_fine_sampling_sync_sptr self)"}, + { "fft_peak_fine_sampling_sync_sptr_processor_affinity", _wrap_fft_peak_fine_sampling_sync_sptr_processor_affinity, METH_O, "fft_peak_fine_sampling_sync_sptr_processor_affinity(fft_peak_fine_sampling_sync_sptr self) -> std::vector< int,std::allocator< int > >"}, + { "fft_peak_fine_sampling_sync_sptr_active_thread_priority", _wrap_fft_peak_fine_sampling_sync_sptr_active_thread_priority, METH_O, "fft_peak_fine_sampling_sync_sptr_active_thread_priority(fft_peak_fine_sampling_sync_sptr self) -> int"}, + { "fft_peak_fine_sampling_sync_sptr_thread_priority", _wrap_fft_peak_fine_sampling_sync_sptr_thread_priority, METH_O, "fft_peak_fine_sampling_sync_sptr_thread_priority(fft_peak_fine_sampling_sync_sptr self) -> int"}, + { "fft_peak_fine_sampling_sync_sptr_set_thread_priority", (PyCFunction)(void(*)(void))_wrap_fft_peak_fine_sampling_sync_sptr_set_thread_priority, METH_VARARGS|METH_KEYWORDS, "fft_peak_fine_sampling_sync_sptr_set_thread_priority(fft_peak_fine_sampling_sync_sptr self, int priority) -> int"}, + { "fft_peak_fine_sampling_sync_sptr_name", _wrap_fft_peak_fine_sampling_sync_sptr_name, METH_O, "fft_peak_fine_sampling_sync_sptr_name(fft_peak_fine_sampling_sync_sptr self) -> std::string"}, + { "fft_peak_fine_sampling_sync_sptr_symbol_name", _wrap_fft_peak_fine_sampling_sync_sptr_symbol_name, METH_O, "fft_peak_fine_sampling_sync_sptr_symbol_name(fft_peak_fine_sampling_sync_sptr self) -> std::string"}, + { "fft_peak_fine_sampling_sync_sptr_input_signature", _wrap_fft_peak_fine_sampling_sync_sptr_input_signature, METH_O, "fft_peak_fine_sampling_sync_sptr_input_signature(fft_peak_fine_sampling_sync_sptr self) -> io_signature_sptr"}, + { "fft_peak_fine_sampling_sync_sptr_output_signature", _wrap_fft_peak_fine_sampling_sync_sptr_output_signature, METH_O, "fft_peak_fine_sampling_sync_sptr_output_signature(fft_peak_fine_sampling_sync_sptr self) -> io_signature_sptr"}, + { "fft_peak_fine_sampling_sync_sptr_unique_id", _wrap_fft_peak_fine_sampling_sync_sptr_unique_id, METH_O, "fft_peak_fine_sampling_sync_sptr_unique_id(fft_peak_fine_sampling_sync_sptr self) -> long"}, + { "fft_peak_fine_sampling_sync_sptr_to_basic_block", _wrap_fft_peak_fine_sampling_sync_sptr_to_basic_block, METH_O, "fft_peak_fine_sampling_sync_sptr_to_basic_block(fft_peak_fine_sampling_sync_sptr self) -> basic_block_sptr"}, + { "fft_peak_fine_sampling_sync_sptr_check_topology", (PyCFunction)(void(*)(void))_wrap_fft_peak_fine_sampling_sync_sptr_check_topology, METH_VARARGS|METH_KEYWORDS, "fft_peak_fine_sampling_sync_sptr_check_topology(fft_peak_fine_sampling_sync_sptr self, int ninputs, int noutputs) -> bool"}, + { "fft_peak_fine_sampling_sync_sptr_alias", _wrap_fft_peak_fine_sampling_sync_sptr_alias, METH_O, "fft_peak_fine_sampling_sync_sptr_alias(fft_peak_fine_sampling_sync_sptr self) -> std::string"}, + { "fft_peak_fine_sampling_sync_sptr_set_block_alias", (PyCFunction)(void(*)(void))_wrap_fft_peak_fine_sampling_sync_sptr_set_block_alias, METH_VARARGS|METH_KEYWORDS, "fft_peak_fine_sampling_sync_sptr_set_block_alias(fft_peak_fine_sampling_sync_sptr self, std::string name)"}, + { "fft_peak_fine_sampling_sync_sptr__post", (PyCFunction)(void(*)(void))_wrap_fft_peak_fine_sampling_sync_sptr__post, METH_VARARGS|METH_KEYWORDS, "fft_peak_fine_sampling_sync_sptr__post(fft_peak_fine_sampling_sync_sptr self, swig_pmt_ptr which_port, swig_pmt_ptr msg)"}, + { "fft_peak_fine_sampling_sync_sptr_message_ports_in", _wrap_fft_peak_fine_sampling_sync_sptr_message_ports_in, METH_O, "fft_peak_fine_sampling_sync_sptr_message_ports_in(fft_peak_fine_sampling_sync_sptr self) -> swig_pmt_ptr"}, + { "fft_peak_fine_sampling_sync_sptr_message_ports_out", _wrap_fft_peak_fine_sampling_sync_sptr_message_ports_out, METH_O, "fft_peak_fine_sampling_sync_sptr_message_ports_out(fft_peak_fine_sampling_sync_sptr self) -> swig_pmt_ptr"}, + { "fft_peak_fine_sampling_sync_sptr_message_subscribers", (PyCFunction)(void(*)(void))_wrap_fft_peak_fine_sampling_sync_sptr_message_subscribers, METH_VARARGS|METH_KEYWORDS, "fft_peak_fine_sampling_sync_sptr_message_subscribers(fft_peak_fine_sampling_sync_sptr self, swig_pmt_ptr which_port) -> swig_pmt_ptr"}, + { "fft_peak_fine_sampling_sync_sptr_swigregister", fft_peak_fine_sampling_sync_sptr_swigregister, METH_O, NULL}, + { "fft_peak_fine_sampling_sync_sptr_swiginit", fft_peak_fine_sampling_sync_sptr_swiginit, METH_VARARGS, NULL}, + { "infer_screen_resolution_set_refresh_rate", (PyCFunction)(void(*)(void))_wrap_infer_screen_resolution_set_refresh_rate, METH_VARARGS|METH_KEYWORDS, "infer_screen_resolution_set_refresh_rate(infer_screen_resolution self, float refresh_rate)"}, + { "infer_screen_resolution_make", (PyCFunction)(void(*)(void))_wrap_infer_screen_resolution_make, METH_VARARGS|METH_KEYWORDS, "infer_screen_resolution_make(int sample_rate, int fft_size, float refresh_rate, bool automatic_mode) -> infer_screen_resolution_sptr"}, + { "delete_infer_screen_resolution", _wrap_delete_infer_screen_resolution, METH_O, "delete_infer_screen_resolution(infer_screen_resolution self)"}, + { "infer_screen_resolution_swigregister", infer_screen_resolution_swigregister, METH_O, NULL}, + { "new_infer_screen_resolution_sptr", _wrap_new_infer_screen_resolution_sptr, METH_VARARGS, "\n" + "infer_screen_resolution_sptr()\n" + "new_infer_screen_resolution_sptr(infer_screen_resolution p) -> infer_screen_resolution_sptr\n" + ""}, + { "infer_screen_resolution_sptr___deref__", _wrap_infer_screen_resolution_sptr___deref__, METH_O, "infer_screen_resolution_sptr___deref__(infer_screen_resolution_sptr self) -> infer_screen_resolution"}, + { "delete_infer_screen_resolution_sptr", _wrap_delete_infer_screen_resolution_sptr, METH_O, "delete_infer_screen_resolution_sptr(infer_screen_resolution_sptr self)"}, + { "infer_screen_resolution_sptr_set_refresh_rate", (PyCFunction)(void(*)(void))_wrap_infer_screen_resolution_sptr_set_refresh_rate, METH_VARARGS|METH_KEYWORDS, "infer_screen_resolution_sptr_set_refresh_rate(infer_screen_resolution_sptr self, float refresh_rate)"}, + { "infer_screen_resolution_sptr_make", (PyCFunction)(void(*)(void))_wrap_infer_screen_resolution_sptr_make, METH_VARARGS|METH_KEYWORDS, "infer_screen_resolution_sptr_make(infer_screen_resolution_sptr self, int sample_rate, int fft_size, float refresh_rate, bool automatic_mode) -> infer_screen_resolution_sptr"}, + { "infer_screen_resolution_sptr_history", _wrap_infer_screen_resolution_sptr_history, METH_O, "infer_screen_resolution_sptr_history(infer_screen_resolution_sptr self) -> unsigned int"}, + { "infer_screen_resolution_sptr_declare_sample_delay", _wrap_infer_screen_resolution_sptr_declare_sample_delay, METH_VARARGS, "\n" + "infer_screen_resolution_sptr_declare_sample_delay(infer_screen_resolution_sptr self, int which, int delay)\n" + "infer_screen_resolution_sptr_declare_sample_delay(infer_screen_resolution_sptr self, unsigned int delay)\n" + ""}, + { "infer_screen_resolution_sptr_sample_delay", (PyCFunction)(void(*)(void))_wrap_infer_screen_resolution_sptr_sample_delay, METH_VARARGS|METH_KEYWORDS, "infer_screen_resolution_sptr_sample_delay(infer_screen_resolution_sptr self, int which) -> unsigned int"}, + { "infer_screen_resolution_sptr_set_output_multiple", (PyCFunction)(void(*)(void))_wrap_infer_screen_resolution_sptr_set_output_multiple, METH_VARARGS|METH_KEYWORDS, "infer_screen_resolution_sptr_set_output_multiple(infer_screen_resolution_sptr self, int multiple)"}, + { "infer_screen_resolution_sptr_output_multiple", _wrap_infer_screen_resolution_sptr_output_multiple, METH_O, "infer_screen_resolution_sptr_output_multiple(infer_screen_resolution_sptr self) -> int"}, + { "infer_screen_resolution_sptr_relative_rate", _wrap_infer_screen_resolution_sptr_relative_rate, METH_O, "infer_screen_resolution_sptr_relative_rate(infer_screen_resolution_sptr self) -> double"}, + { "infer_screen_resolution_sptr_relative_rate_i", _wrap_infer_screen_resolution_sptr_relative_rate_i, METH_O, "infer_screen_resolution_sptr_relative_rate_i(infer_screen_resolution_sptr self) -> uint64_t"}, + { "infer_screen_resolution_sptr_relative_rate_d", _wrap_infer_screen_resolution_sptr_relative_rate_d, METH_O, "infer_screen_resolution_sptr_relative_rate_d(infer_screen_resolution_sptr self) -> uint64_t"}, + { "infer_screen_resolution_sptr_start", _wrap_infer_screen_resolution_sptr_start, METH_O, "infer_screen_resolution_sptr_start(infer_screen_resolution_sptr self) -> bool"}, + { "infer_screen_resolution_sptr_stop", _wrap_infer_screen_resolution_sptr_stop, METH_O, "infer_screen_resolution_sptr_stop(infer_screen_resolution_sptr self) -> bool"}, + { "infer_screen_resolution_sptr_nitems_read", (PyCFunction)(void(*)(void))_wrap_infer_screen_resolution_sptr_nitems_read, METH_VARARGS|METH_KEYWORDS, "infer_screen_resolution_sptr_nitems_read(infer_screen_resolution_sptr self, unsigned int which_input) -> uint64_t"}, + { "infer_screen_resolution_sptr_nitems_written", (PyCFunction)(void(*)(void))_wrap_infer_screen_resolution_sptr_nitems_written, METH_VARARGS|METH_KEYWORDS, "infer_screen_resolution_sptr_nitems_written(infer_screen_resolution_sptr self, unsigned int which_output) -> uint64_t"}, + { "infer_screen_resolution_sptr_set_log_level", (PyCFunction)(void(*)(void))_wrap_infer_screen_resolution_sptr_set_log_level, METH_VARARGS|METH_KEYWORDS, "infer_screen_resolution_sptr_set_log_level(infer_screen_resolution_sptr self, std::string level)"}, + { "infer_screen_resolution_sptr_log_level", _wrap_infer_screen_resolution_sptr_log_level, METH_O, "infer_screen_resolution_sptr_log_level(infer_screen_resolution_sptr self) -> std::string"}, + { "infer_screen_resolution_sptr_max_noutput_items", _wrap_infer_screen_resolution_sptr_max_noutput_items, METH_O, "infer_screen_resolution_sptr_max_noutput_items(infer_screen_resolution_sptr self) -> int"}, + { "infer_screen_resolution_sptr_set_max_noutput_items", (PyCFunction)(void(*)(void))_wrap_infer_screen_resolution_sptr_set_max_noutput_items, METH_VARARGS|METH_KEYWORDS, "infer_screen_resolution_sptr_set_max_noutput_items(infer_screen_resolution_sptr self, int m)"}, + { "infer_screen_resolution_sptr_unset_max_noutput_items", _wrap_infer_screen_resolution_sptr_unset_max_noutput_items, METH_O, "infer_screen_resolution_sptr_unset_max_noutput_items(infer_screen_resolution_sptr self)"}, + { "infer_screen_resolution_sptr_is_set_max_noutput_items", _wrap_infer_screen_resolution_sptr_is_set_max_noutput_items, METH_O, "infer_screen_resolution_sptr_is_set_max_noutput_items(infer_screen_resolution_sptr self) -> bool"}, + { "infer_screen_resolution_sptr_set_min_noutput_items", (PyCFunction)(void(*)(void))_wrap_infer_screen_resolution_sptr_set_min_noutput_items, METH_VARARGS|METH_KEYWORDS, "infer_screen_resolution_sptr_set_min_noutput_items(infer_screen_resolution_sptr self, int m)"}, + { "infer_screen_resolution_sptr_min_noutput_items", _wrap_infer_screen_resolution_sptr_min_noutput_items, METH_O, "infer_screen_resolution_sptr_min_noutput_items(infer_screen_resolution_sptr self) -> int"}, + { "infer_screen_resolution_sptr_max_output_buffer", (PyCFunction)(void(*)(void))_wrap_infer_screen_resolution_sptr_max_output_buffer, METH_VARARGS|METH_KEYWORDS, "infer_screen_resolution_sptr_max_output_buffer(infer_screen_resolution_sptr self, int i) -> long"}, + { "infer_screen_resolution_sptr_set_max_output_buffer", _wrap_infer_screen_resolution_sptr_set_max_output_buffer, METH_VARARGS, "\n" + "infer_screen_resolution_sptr_set_max_output_buffer(infer_screen_resolution_sptr self, long max_output_buffer)\n" + "infer_screen_resolution_sptr_set_max_output_buffer(infer_screen_resolution_sptr self, int port, long max_output_buffer)\n" + ""}, + { "infer_screen_resolution_sptr_min_output_buffer", (PyCFunction)(void(*)(void))_wrap_infer_screen_resolution_sptr_min_output_buffer, METH_VARARGS|METH_KEYWORDS, "infer_screen_resolution_sptr_min_output_buffer(infer_screen_resolution_sptr self, int i) -> long"}, + { "infer_screen_resolution_sptr_set_min_output_buffer", _wrap_infer_screen_resolution_sptr_set_min_output_buffer, METH_VARARGS, "\n" + "infer_screen_resolution_sptr_set_min_output_buffer(infer_screen_resolution_sptr self, long min_output_buffer)\n" + "infer_screen_resolution_sptr_set_min_output_buffer(infer_screen_resolution_sptr self, int port, long min_output_buffer)\n" + ""}, + { "infer_screen_resolution_sptr_pc_noutput_items", _wrap_infer_screen_resolution_sptr_pc_noutput_items, METH_O, "infer_screen_resolution_sptr_pc_noutput_items(infer_screen_resolution_sptr self) -> float"}, + { "infer_screen_resolution_sptr_pc_noutput_items_avg", _wrap_infer_screen_resolution_sptr_pc_noutput_items_avg, METH_O, "infer_screen_resolution_sptr_pc_noutput_items_avg(infer_screen_resolution_sptr self) -> float"}, + { "infer_screen_resolution_sptr_pc_noutput_items_var", _wrap_infer_screen_resolution_sptr_pc_noutput_items_var, METH_O, "infer_screen_resolution_sptr_pc_noutput_items_var(infer_screen_resolution_sptr self) -> float"}, + { "infer_screen_resolution_sptr_pc_nproduced", _wrap_infer_screen_resolution_sptr_pc_nproduced, METH_O, "infer_screen_resolution_sptr_pc_nproduced(infer_screen_resolution_sptr self) -> float"}, + { "infer_screen_resolution_sptr_pc_nproduced_avg", _wrap_infer_screen_resolution_sptr_pc_nproduced_avg, METH_O, "infer_screen_resolution_sptr_pc_nproduced_avg(infer_screen_resolution_sptr self) -> float"}, + { "infer_screen_resolution_sptr_pc_nproduced_var", _wrap_infer_screen_resolution_sptr_pc_nproduced_var, METH_O, "infer_screen_resolution_sptr_pc_nproduced_var(infer_screen_resolution_sptr self) -> float"}, + { "infer_screen_resolution_sptr_pc_input_buffers_full", _wrap_infer_screen_resolution_sptr_pc_input_buffers_full, METH_VARARGS, "\n" + "infer_screen_resolution_sptr_pc_input_buffers_full(infer_screen_resolution_sptr self, int which) -> float\n" + "infer_screen_resolution_sptr_pc_input_buffers_full(infer_screen_resolution_sptr self) -> pmt_vector_float\n" + ""}, + { "infer_screen_resolution_sptr_pc_input_buffers_full_avg", _wrap_infer_screen_resolution_sptr_pc_input_buffers_full_avg, METH_VARARGS, "\n" + "infer_screen_resolution_sptr_pc_input_buffers_full_avg(infer_screen_resolution_sptr self, int which) -> float\n" + "infer_screen_resolution_sptr_pc_input_buffers_full_avg(infer_screen_resolution_sptr self) -> pmt_vector_float\n" + ""}, + { "infer_screen_resolution_sptr_pc_input_buffers_full_var", _wrap_infer_screen_resolution_sptr_pc_input_buffers_full_var, METH_VARARGS, "\n" + "infer_screen_resolution_sptr_pc_input_buffers_full_var(infer_screen_resolution_sptr self, int which) -> float\n" + "infer_screen_resolution_sptr_pc_input_buffers_full_var(infer_screen_resolution_sptr self) -> pmt_vector_float\n" + ""}, + { "infer_screen_resolution_sptr_pc_output_buffers_full", _wrap_infer_screen_resolution_sptr_pc_output_buffers_full, METH_VARARGS, "\n" + "infer_screen_resolution_sptr_pc_output_buffers_full(infer_screen_resolution_sptr self, int which) -> float\n" + "infer_screen_resolution_sptr_pc_output_buffers_full(infer_screen_resolution_sptr self) -> pmt_vector_float\n" + ""}, + { "infer_screen_resolution_sptr_pc_output_buffers_full_avg", _wrap_infer_screen_resolution_sptr_pc_output_buffers_full_avg, METH_VARARGS, "\n" + "infer_screen_resolution_sptr_pc_output_buffers_full_avg(infer_screen_resolution_sptr self, int which) -> float\n" + "infer_screen_resolution_sptr_pc_output_buffers_full_avg(infer_screen_resolution_sptr self) -> pmt_vector_float\n" + ""}, + { "infer_screen_resolution_sptr_pc_output_buffers_full_var", _wrap_infer_screen_resolution_sptr_pc_output_buffers_full_var, METH_VARARGS, "\n" + "infer_screen_resolution_sptr_pc_output_buffers_full_var(infer_screen_resolution_sptr self, int which) -> float\n" + "infer_screen_resolution_sptr_pc_output_buffers_full_var(infer_screen_resolution_sptr self) -> pmt_vector_float\n" + ""}, + { "infer_screen_resolution_sptr_pc_work_time", _wrap_infer_screen_resolution_sptr_pc_work_time, METH_O, "infer_screen_resolution_sptr_pc_work_time(infer_screen_resolution_sptr self) -> float"}, + { "infer_screen_resolution_sptr_pc_work_time_avg", _wrap_infer_screen_resolution_sptr_pc_work_time_avg, METH_O, "infer_screen_resolution_sptr_pc_work_time_avg(infer_screen_resolution_sptr self) -> float"}, + { "infer_screen_resolution_sptr_pc_work_time_var", _wrap_infer_screen_resolution_sptr_pc_work_time_var, METH_O, "infer_screen_resolution_sptr_pc_work_time_var(infer_screen_resolution_sptr self) -> float"}, + { "infer_screen_resolution_sptr_pc_work_time_total", _wrap_infer_screen_resolution_sptr_pc_work_time_total, METH_O, "infer_screen_resolution_sptr_pc_work_time_total(infer_screen_resolution_sptr self) -> float"}, + { "infer_screen_resolution_sptr_pc_throughput_avg", _wrap_infer_screen_resolution_sptr_pc_throughput_avg, METH_O, "infer_screen_resolution_sptr_pc_throughput_avg(infer_screen_resolution_sptr self) -> float"}, + { "infer_screen_resolution_sptr_set_processor_affinity", (PyCFunction)(void(*)(void))_wrap_infer_screen_resolution_sptr_set_processor_affinity, METH_VARARGS|METH_KEYWORDS, "infer_screen_resolution_sptr_set_processor_affinity(infer_screen_resolution_sptr self, std::vector< int,std::allocator< int > > const & mask)"}, + { "infer_screen_resolution_sptr_unset_processor_affinity", _wrap_infer_screen_resolution_sptr_unset_processor_affinity, METH_O, "infer_screen_resolution_sptr_unset_processor_affinity(infer_screen_resolution_sptr self)"}, + { "infer_screen_resolution_sptr_processor_affinity", _wrap_infer_screen_resolution_sptr_processor_affinity, METH_O, "infer_screen_resolution_sptr_processor_affinity(infer_screen_resolution_sptr self) -> std::vector< int,std::allocator< int > >"}, + { "infer_screen_resolution_sptr_active_thread_priority", _wrap_infer_screen_resolution_sptr_active_thread_priority, METH_O, "infer_screen_resolution_sptr_active_thread_priority(infer_screen_resolution_sptr self) -> int"}, + { "infer_screen_resolution_sptr_thread_priority", _wrap_infer_screen_resolution_sptr_thread_priority, METH_O, "infer_screen_resolution_sptr_thread_priority(infer_screen_resolution_sptr self) -> int"}, + { "infer_screen_resolution_sptr_set_thread_priority", (PyCFunction)(void(*)(void))_wrap_infer_screen_resolution_sptr_set_thread_priority, METH_VARARGS|METH_KEYWORDS, "infer_screen_resolution_sptr_set_thread_priority(infer_screen_resolution_sptr self, int priority) -> int"}, + { "infer_screen_resolution_sptr_name", _wrap_infer_screen_resolution_sptr_name, METH_O, "infer_screen_resolution_sptr_name(infer_screen_resolution_sptr self) -> std::string"}, + { "infer_screen_resolution_sptr_symbol_name", _wrap_infer_screen_resolution_sptr_symbol_name, METH_O, "infer_screen_resolution_sptr_symbol_name(infer_screen_resolution_sptr self) -> std::string"}, + { "infer_screen_resolution_sptr_input_signature", _wrap_infer_screen_resolution_sptr_input_signature, METH_O, "infer_screen_resolution_sptr_input_signature(infer_screen_resolution_sptr self) -> io_signature_sptr"}, + { "infer_screen_resolution_sptr_output_signature", _wrap_infer_screen_resolution_sptr_output_signature, METH_O, "infer_screen_resolution_sptr_output_signature(infer_screen_resolution_sptr self) -> io_signature_sptr"}, + { "infer_screen_resolution_sptr_unique_id", _wrap_infer_screen_resolution_sptr_unique_id, METH_O, "infer_screen_resolution_sptr_unique_id(infer_screen_resolution_sptr self) -> long"}, + { "infer_screen_resolution_sptr_to_basic_block", _wrap_infer_screen_resolution_sptr_to_basic_block, METH_O, "infer_screen_resolution_sptr_to_basic_block(infer_screen_resolution_sptr self) -> basic_block_sptr"}, + { "infer_screen_resolution_sptr_check_topology", (PyCFunction)(void(*)(void))_wrap_infer_screen_resolution_sptr_check_topology, METH_VARARGS|METH_KEYWORDS, "infer_screen_resolution_sptr_check_topology(infer_screen_resolution_sptr self, int ninputs, int noutputs) -> bool"}, + { "infer_screen_resolution_sptr_alias", _wrap_infer_screen_resolution_sptr_alias, METH_O, "infer_screen_resolution_sptr_alias(infer_screen_resolution_sptr self) -> std::string"}, + { "infer_screen_resolution_sptr_set_block_alias", (PyCFunction)(void(*)(void))_wrap_infer_screen_resolution_sptr_set_block_alias, METH_VARARGS|METH_KEYWORDS, "infer_screen_resolution_sptr_set_block_alias(infer_screen_resolution_sptr self, std::string name)"}, + { "infer_screen_resolution_sptr__post", (PyCFunction)(void(*)(void))_wrap_infer_screen_resolution_sptr__post, METH_VARARGS|METH_KEYWORDS, "infer_screen_resolution_sptr__post(infer_screen_resolution_sptr self, swig_pmt_ptr which_port, swig_pmt_ptr msg)"}, + { "infer_screen_resolution_sptr_message_ports_in", _wrap_infer_screen_resolution_sptr_message_ports_in, METH_O, "infer_screen_resolution_sptr_message_ports_in(infer_screen_resolution_sptr self) -> swig_pmt_ptr"}, + { "infer_screen_resolution_sptr_message_ports_out", _wrap_infer_screen_resolution_sptr_message_ports_out, METH_O, "infer_screen_resolution_sptr_message_ports_out(infer_screen_resolution_sptr self) -> swig_pmt_ptr"}, + { "infer_screen_resolution_sptr_message_subscribers", (PyCFunction)(void(*)(void))_wrap_infer_screen_resolution_sptr_message_subscribers, METH_VARARGS|METH_KEYWORDS, "infer_screen_resolution_sptr_message_subscribers(infer_screen_resolution_sptr self, swig_pmt_ptr which_port) -> swig_pmt_ptr"}, + { "infer_screen_resolution_sptr_swigregister", infer_screen_resolution_sptr_swigregister, METH_O, NULL}, + { "infer_screen_resolution_sptr_swiginit", infer_screen_resolution_sptr_swiginit, METH_VARARGS, NULL}, + { "ssamp_correction_make", (PyCFunction)(void(*)(void))_wrap_ssamp_correction_make, METH_VARARGS|METH_KEYWORDS, "ssamp_correction_make(int Htotal, int Vtotal, int correct_sampling, float max_deviation) -> ssamp_correction_sptr"}, + { "ssamp_correction_set_Htotal_Vtotal", (PyCFunction)(void(*)(void))_wrap_ssamp_correction_set_Htotal_Vtotal, METH_VARARGS|METH_KEYWORDS, "ssamp_correction_set_Htotal_Vtotal(ssamp_correction self, int Htotal, int Vtotal)"}, + { "delete_ssamp_correction", _wrap_delete_ssamp_correction, METH_O, "delete_ssamp_correction(ssamp_correction self)"}, + { "ssamp_correction_swigregister", ssamp_correction_swigregister, METH_O, NULL}, + { "new_ssamp_correction_sptr", _wrap_new_ssamp_correction_sptr, METH_VARARGS, "\n" + "ssamp_correction_sptr()\n" + "new_ssamp_correction_sptr(ssamp_correction p) -> ssamp_correction_sptr\n" + ""}, + { "ssamp_correction_sptr___deref__", _wrap_ssamp_correction_sptr___deref__, METH_O, "ssamp_correction_sptr___deref__(ssamp_correction_sptr self) -> ssamp_correction"}, + { "delete_ssamp_correction_sptr", _wrap_delete_ssamp_correction_sptr, METH_O, "delete_ssamp_correction_sptr(ssamp_correction_sptr self)"}, + { "ssamp_correction_sptr_make", (PyCFunction)(void(*)(void))_wrap_ssamp_correction_sptr_make, METH_VARARGS|METH_KEYWORDS, "ssamp_correction_sptr_make(ssamp_correction_sptr self, int Htotal, int Vtotal, int correct_sampling, float max_deviation) -> ssamp_correction_sptr"}, + { "ssamp_correction_sptr_set_Htotal_Vtotal", (PyCFunction)(void(*)(void))_wrap_ssamp_correction_sptr_set_Htotal_Vtotal, METH_VARARGS|METH_KEYWORDS, "ssamp_correction_sptr_set_Htotal_Vtotal(ssamp_correction_sptr self, int Htotal, int Vtotal)"}, + { "ssamp_correction_sptr_history", _wrap_ssamp_correction_sptr_history, METH_O, "ssamp_correction_sptr_history(ssamp_correction_sptr self) -> unsigned int"}, + { "ssamp_correction_sptr_declare_sample_delay", _wrap_ssamp_correction_sptr_declare_sample_delay, METH_VARARGS, "\n" + "ssamp_correction_sptr_declare_sample_delay(ssamp_correction_sptr self, int which, int delay)\n" + "ssamp_correction_sptr_declare_sample_delay(ssamp_correction_sptr self, unsigned int delay)\n" + ""}, + { "ssamp_correction_sptr_sample_delay", (PyCFunction)(void(*)(void))_wrap_ssamp_correction_sptr_sample_delay, METH_VARARGS|METH_KEYWORDS, "ssamp_correction_sptr_sample_delay(ssamp_correction_sptr self, int which) -> unsigned int"}, + { "ssamp_correction_sptr_set_output_multiple", (PyCFunction)(void(*)(void))_wrap_ssamp_correction_sptr_set_output_multiple, METH_VARARGS|METH_KEYWORDS, "ssamp_correction_sptr_set_output_multiple(ssamp_correction_sptr self, int multiple)"}, + { "ssamp_correction_sptr_output_multiple", _wrap_ssamp_correction_sptr_output_multiple, METH_O, "ssamp_correction_sptr_output_multiple(ssamp_correction_sptr self) -> int"}, + { "ssamp_correction_sptr_relative_rate", _wrap_ssamp_correction_sptr_relative_rate, METH_O, "ssamp_correction_sptr_relative_rate(ssamp_correction_sptr self) -> double"}, + { "ssamp_correction_sptr_relative_rate_i", _wrap_ssamp_correction_sptr_relative_rate_i, METH_O, "ssamp_correction_sptr_relative_rate_i(ssamp_correction_sptr self) -> uint64_t"}, + { "ssamp_correction_sptr_relative_rate_d", _wrap_ssamp_correction_sptr_relative_rate_d, METH_O, "ssamp_correction_sptr_relative_rate_d(ssamp_correction_sptr self) -> uint64_t"}, + { "ssamp_correction_sptr_start", _wrap_ssamp_correction_sptr_start, METH_O, "ssamp_correction_sptr_start(ssamp_correction_sptr self) -> bool"}, + { "ssamp_correction_sptr_stop", _wrap_ssamp_correction_sptr_stop, METH_O, "ssamp_correction_sptr_stop(ssamp_correction_sptr self) -> bool"}, + { "ssamp_correction_sptr_nitems_read", (PyCFunction)(void(*)(void))_wrap_ssamp_correction_sptr_nitems_read, METH_VARARGS|METH_KEYWORDS, "ssamp_correction_sptr_nitems_read(ssamp_correction_sptr self, unsigned int which_input) -> uint64_t"}, + { "ssamp_correction_sptr_nitems_written", (PyCFunction)(void(*)(void))_wrap_ssamp_correction_sptr_nitems_written, METH_VARARGS|METH_KEYWORDS, "ssamp_correction_sptr_nitems_written(ssamp_correction_sptr self, unsigned int which_output) -> uint64_t"}, + { "ssamp_correction_sptr_set_log_level", (PyCFunction)(void(*)(void))_wrap_ssamp_correction_sptr_set_log_level, METH_VARARGS|METH_KEYWORDS, "ssamp_correction_sptr_set_log_level(ssamp_correction_sptr self, std::string level)"}, + { "ssamp_correction_sptr_log_level", _wrap_ssamp_correction_sptr_log_level, METH_O, "ssamp_correction_sptr_log_level(ssamp_correction_sptr self) -> std::string"}, + { "ssamp_correction_sptr_max_noutput_items", _wrap_ssamp_correction_sptr_max_noutput_items, METH_O, "ssamp_correction_sptr_max_noutput_items(ssamp_correction_sptr self) -> int"}, + { "ssamp_correction_sptr_set_max_noutput_items", (PyCFunction)(void(*)(void))_wrap_ssamp_correction_sptr_set_max_noutput_items, METH_VARARGS|METH_KEYWORDS, "ssamp_correction_sptr_set_max_noutput_items(ssamp_correction_sptr self, int m)"}, + { "ssamp_correction_sptr_unset_max_noutput_items", _wrap_ssamp_correction_sptr_unset_max_noutput_items, METH_O, "ssamp_correction_sptr_unset_max_noutput_items(ssamp_correction_sptr self)"}, + { "ssamp_correction_sptr_is_set_max_noutput_items", _wrap_ssamp_correction_sptr_is_set_max_noutput_items, METH_O, "ssamp_correction_sptr_is_set_max_noutput_items(ssamp_correction_sptr self) -> bool"}, + { "ssamp_correction_sptr_set_min_noutput_items", (PyCFunction)(void(*)(void))_wrap_ssamp_correction_sptr_set_min_noutput_items, METH_VARARGS|METH_KEYWORDS, "ssamp_correction_sptr_set_min_noutput_items(ssamp_correction_sptr self, int m)"}, + { "ssamp_correction_sptr_min_noutput_items", _wrap_ssamp_correction_sptr_min_noutput_items, METH_O, "ssamp_correction_sptr_min_noutput_items(ssamp_correction_sptr self) -> int"}, + { "ssamp_correction_sptr_max_output_buffer", (PyCFunction)(void(*)(void))_wrap_ssamp_correction_sptr_max_output_buffer, METH_VARARGS|METH_KEYWORDS, "ssamp_correction_sptr_max_output_buffer(ssamp_correction_sptr self, int i) -> long"}, + { "ssamp_correction_sptr_set_max_output_buffer", _wrap_ssamp_correction_sptr_set_max_output_buffer, METH_VARARGS, "\n" + "ssamp_correction_sptr_set_max_output_buffer(ssamp_correction_sptr self, long max_output_buffer)\n" + "ssamp_correction_sptr_set_max_output_buffer(ssamp_correction_sptr self, int port, long max_output_buffer)\n" + ""}, + { "ssamp_correction_sptr_min_output_buffer", (PyCFunction)(void(*)(void))_wrap_ssamp_correction_sptr_min_output_buffer, METH_VARARGS|METH_KEYWORDS, "ssamp_correction_sptr_min_output_buffer(ssamp_correction_sptr self, int i) -> long"}, + { "ssamp_correction_sptr_set_min_output_buffer", _wrap_ssamp_correction_sptr_set_min_output_buffer, METH_VARARGS, "\n" + "ssamp_correction_sptr_set_min_output_buffer(ssamp_correction_sptr self, long min_output_buffer)\n" + "ssamp_correction_sptr_set_min_output_buffer(ssamp_correction_sptr self, int port, long min_output_buffer)\n" + ""}, + { "ssamp_correction_sptr_pc_noutput_items", _wrap_ssamp_correction_sptr_pc_noutput_items, METH_O, "ssamp_correction_sptr_pc_noutput_items(ssamp_correction_sptr self) -> float"}, + { "ssamp_correction_sptr_pc_noutput_items_avg", _wrap_ssamp_correction_sptr_pc_noutput_items_avg, METH_O, "ssamp_correction_sptr_pc_noutput_items_avg(ssamp_correction_sptr self) -> float"}, + { "ssamp_correction_sptr_pc_noutput_items_var", _wrap_ssamp_correction_sptr_pc_noutput_items_var, METH_O, "ssamp_correction_sptr_pc_noutput_items_var(ssamp_correction_sptr self) -> float"}, + { "ssamp_correction_sptr_pc_nproduced", _wrap_ssamp_correction_sptr_pc_nproduced, METH_O, "ssamp_correction_sptr_pc_nproduced(ssamp_correction_sptr self) -> float"}, + { "ssamp_correction_sptr_pc_nproduced_avg", _wrap_ssamp_correction_sptr_pc_nproduced_avg, METH_O, "ssamp_correction_sptr_pc_nproduced_avg(ssamp_correction_sptr self) -> float"}, + { "ssamp_correction_sptr_pc_nproduced_var", _wrap_ssamp_correction_sptr_pc_nproduced_var, METH_O, "ssamp_correction_sptr_pc_nproduced_var(ssamp_correction_sptr self) -> float"}, + { "ssamp_correction_sptr_pc_input_buffers_full", _wrap_ssamp_correction_sptr_pc_input_buffers_full, METH_VARARGS, "\n" + "ssamp_correction_sptr_pc_input_buffers_full(ssamp_correction_sptr self, int which) -> float\n" + "ssamp_correction_sptr_pc_input_buffers_full(ssamp_correction_sptr self) -> pmt_vector_float\n" + ""}, + { "ssamp_correction_sptr_pc_input_buffers_full_avg", _wrap_ssamp_correction_sptr_pc_input_buffers_full_avg, METH_VARARGS, "\n" + "ssamp_correction_sptr_pc_input_buffers_full_avg(ssamp_correction_sptr self, int which) -> float\n" + "ssamp_correction_sptr_pc_input_buffers_full_avg(ssamp_correction_sptr self) -> pmt_vector_float\n" + ""}, + { "ssamp_correction_sptr_pc_input_buffers_full_var", _wrap_ssamp_correction_sptr_pc_input_buffers_full_var, METH_VARARGS, "\n" + "ssamp_correction_sptr_pc_input_buffers_full_var(ssamp_correction_sptr self, int which) -> float\n" + "ssamp_correction_sptr_pc_input_buffers_full_var(ssamp_correction_sptr self) -> pmt_vector_float\n" + ""}, + { "ssamp_correction_sptr_pc_output_buffers_full", _wrap_ssamp_correction_sptr_pc_output_buffers_full, METH_VARARGS, "\n" + "ssamp_correction_sptr_pc_output_buffers_full(ssamp_correction_sptr self, int which) -> float\n" + "ssamp_correction_sptr_pc_output_buffers_full(ssamp_correction_sptr self) -> pmt_vector_float\n" + ""}, + { "ssamp_correction_sptr_pc_output_buffers_full_avg", _wrap_ssamp_correction_sptr_pc_output_buffers_full_avg, METH_VARARGS, "\n" + "ssamp_correction_sptr_pc_output_buffers_full_avg(ssamp_correction_sptr self, int which) -> float\n" + "ssamp_correction_sptr_pc_output_buffers_full_avg(ssamp_correction_sptr self) -> pmt_vector_float\n" + ""}, + { "ssamp_correction_sptr_pc_output_buffers_full_var", _wrap_ssamp_correction_sptr_pc_output_buffers_full_var, METH_VARARGS, "\n" + "ssamp_correction_sptr_pc_output_buffers_full_var(ssamp_correction_sptr self, int which) -> float\n" + "ssamp_correction_sptr_pc_output_buffers_full_var(ssamp_correction_sptr self) -> pmt_vector_float\n" + ""}, + { "ssamp_correction_sptr_pc_work_time", _wrap_ssamp_correction_sptr_pc_work_time, METH_O, "ssamp_correction_sptr_pc_work_time(ssamp_correction_sptr self) -> float"}, + { "ssamp_correction_sptr_pc_work_time_avg", _wrap_ssamp_correction_sptr_pc_work_time_avg, METH_O, "ssamp_correction_sptr_pc_work_time_avg(ssamp_correction_sptr self) -> float"}, + { "ssamp_correction_sptr_pc_work_time_var", _wrap_ssamp_correction_sptr_pc_work_time_var, METH_O, "ssamp_correction_sptr_pc_work_time_var(ssamp_correction_sptr self) -> float"}, + { "ssamp_correction_sptr_pc_work_time_total", _wrap_ssamp_correction_sptr_pc_work_time_total, METH_O, "ssamp_correction_sptr_pc_work_time_total(ssamp_correction_sptr self) -> float"}, + { "ssamp_correction_sptr_pc_throughput_avg", _wrap_ssamp_correction_sptr_pc_throughput_avg, METH_O, "ssamp_correction_sptr_pc_throughput_avg(ssamp_correction_sptr self) -> float"}, + { "ssamp_correction_sptr_set_processor_affinity", (PyCFunction)(void(*)(void))_wrap_ssamp_correction_sptr_set_processor_affinity, METH_VARARGS|METH_KEYWORDS, "ssamp_correction_sptr_set_processor_affinity(ssamp_correction_sptr self, std::vector< int,std::allocator< int > > const & mask)"}, + { "ssamp_correction_sptr_unset_processor_affinity", _wrap_ssamp_correction_sptr_unset_processor_affinity, METH_O, "ssamp_correction_sptr_unset_processor_affinity(ssamp_correction_sptr self)"}, + { "ssamp_correction_sptr_processor_affinity", _wrap_ssamp_correction_sptr_processor_affinity, METH_O, "ssamp_correction_sptr_processor_affinity(ssamp_correction_sptr self) -> std::vector< int,std::allocator< int > >"}, + { "ssamp_correction_sptr_active_thread_priority", _wrap_ssamp_correction_sptr_active_thread_priority, METH_O, "ssamp_correction_sptr_active_thread_priority(ssamp_correction_sptr self) -> int"}, + { "ssamp_correction_sptr_thread_priority", _wrap_ssamp_correction_sptr_thread_priority, METH_O, "ssamp_correction_sptr_thread_priority(ssamp_correction_sptr self) -> int"}, + { "ssamp_correction_sptr_set_thread_priority", (PyCFunction)(void(*)(void))_wrap_ssamp_correction_sptr_set_thread_priority, METH_VARARGS|METH_KEYWORDS, "ssamp_correction_sptr_set_thread_priority(ssamp_correction_sptr self, int priority) -> int"}, + { "ssamp_correction_sptr_name", _wrap_ssamp_correction_sptr_name, METH_O, "ssamp_correction_sptr_name(ssamp_correction_sptr self) -> std::string"}, + { "ssamp_correction_sptr_symbol_name", _wrap_ssamp_correction_sptr_symbol_name, METH_O, "ssamp_correction_sptr_symbol_name(ssamp_correction_sptr self) -> std::string"}, + { "ssamp_correction_sptr_input_signature", _wrap_ssamp_correction_sptr_input_signature, METH_O, "ssamp_correction_sptr_input_signature(ssamp_correction_sptr self) -> io_signature_sptr"}, + { "ssamp_correction_sptr_output_signature", _wrap_ssamp_correction_sptr_output_signature, METH_O, "ssamp_correction_sptr_output_signature(ssamp_correction_sptr self) -> io_signature_sptr"}, + { "ssamp_correction_sptr_unique_id", _wrap_ssamp_correction_sptr_unique_id, METH_O, "ssamp_correction_sptr_unique_id(ssamp_correction_sptr self) -> long"}, + { "ssamp_correction_sptr_to_basic_block", _wrap_ssamp_correction_sptr_to_basic_block, METH_O, "ssamp_correction_sptr_to_basic_block(ssamp_correction_sptr self) -> basic_block_sptr"}, + { "ssamp_correction_sptr_check_topology", (PyCFunction)(void(*)(void))_wrap_ssamp_correction_sptr_check_topology, METH_VARARGS|METH_KEYWORDS, "ssamp_correction_sptr_check_topology(ssamp_correction_sptr self, int ninputs, int noutputs) -> bool"}, + { "ssamp_correction_sptr_alias", _wrap_ssamp_correction_sptr_alias, METH_O, "ssamp_correction_sptr_alias(ssamp_correction_sptr self) -> std::string"}, + { "ssamp_correction_sptr_set_block_alias", (PyCFunction)(void(*)(void))_wrap_ssamp_correction_sptr_set_block_alias, METH_VARARGS|METH_KEYWORDS, "ssamp_correction_sptr_set_block_alias(ssamp_correction_sptr self, std::string name)"}, + { "ssamp_correction_sptr__post", (PyCFunction)(void(*)(void))_wrap_ssamp_correction_sptr__post, METH_VARARGS|METH_KEYWORDS, "ssamp_correction_sptr__post(ssamp_correction_sptr self, swig_pmt_ptr which_port, swig_pmt_ptr msg)"}, + { "ssamp_correction_sptr_message_ports_in", _wrap_ssamp_correction_sptr_message_ports_in, METH_O, "ssamp_correction_sptr_message_ports_in(ssamp_correction_sptr self) -> swig_pmt_ptr"}, + { "ssamp_correction_sptr_message_ports_out", _wrap_ssamp_correction_sptr_message_ports_out, METH_O, "ssamp_correction_sptr_message_ports_out(ssamp_correction_sptr self) -> swig_pmt_ptr"}, + { "ssamp_correction_sptr_message_subscribers", (PyCFunction)(void(*)(void))_wrap_ssamp_correction_sptr_message_subscribers, METH_VARARGS|METH_KEYWORDS, "ssamp_correction_sptr_message_subscribers(ssamp_correction_sptr self, swig_pmt_ptr which_port) -> swig_pmt_ptr"}, + { "ssamp_correction_sptr_swigregister", ssamp_correction_sptr_swigregister, METH_O, NULL}, + { "ssamp_correction_sptr_swiginit", ssamp_correction_sptr_swiginit, METH_VARARGS, NULL}, + { NULL, NULL, 0, NULL } +}; + +static PyMethodDef SwigMethods_proxydocs[] = { + { NULL, NULL, 0, NULL } +}; + + +/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */ + +static void *_p_gr__tagged_stream_blockTo_p_gr__block(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((gr::block *) ((gr::tagged_stream_block *) x)); +} +static void *_p_gr__sync_blockTo_p_gr__block(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((gr::block *) ((gr::sync_block *) x)); +} +static void *_p_gr__tempest__infer_screen_resolutionTo_p_gr__block(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((gr::block *) ((gr::tempest::infer_screen_resolution *) x)); +} +static void *_p_gr__tempest__ssamp_correctionTo_p_gr__block(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((gr::block *) ((gr::tempest::ssamp_correction *) x)); +} +static void *_p_gr__tempest__normalize_flowTo_p_gr__block(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((gr::block *) (gr::sync_block *) ((gr::tempest::normalize_flow *) x)); +} +static void *_p_gr__tempest__fft_peak_fine_sampling_syncTo_p_gr__block(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((gr::block *) ((gr::tempest::fft_peak_fine_sampling_sync *) x)); +} +static void *_p_gr__tempest__frame_dropTo_p_gr__block(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((gr::block *) ((gr::tempest::frame_drop *) x)); +} +static void *_p_gr__sync_interpolatorTo_p_gr__block(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((gr::block *) (gr::sync_block *) ((gr::sync_interpolator *) x)); +} +static void *_p_gr__block_gatewayTo_p_gr__block(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((gr::block *) ((gr::block_gateway *) x)); +} +static void *_p_gr__tempest__framingTo_p_gr__block(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((gr::block *) ((gr::tempest::framing *) x)); +} +static void *_p_gr__tempest__sync_detectorTo_p_gr__block(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((gr::block *) ((gr::tempest::sync_detector *) x)); +} +static void *_p_gr__tempest__HsyncTo_p_gr__block(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((gr::block *) ((gr::tempest::Hsync *) x)); +} +static void *_p_gr__tempest__fine_sampling_synchronizationTo_p_gr__block(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((gr::block *) ((gr::tempest::fine_sampling_synchronization *) x)); +} +static void *_p_gr__tempest__sampling_synchronizationTo_p_gr__block(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((gr::block *) ((gr::tempest::sampling_synchronization *) x)); +} +static void *_p_gr__sync_decimatorTo_p_gr__block(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((gr::block *) (gr::sync_block *) ((gr::sync_decimator *) x)); +} +static void *_p_gr__blockTo_p_gr__basic_block(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((gr::basic_block *) ((gr::block *) x)); +} +static void *_p_gr__tagged_stream_blockTo_p_gr__basic_block(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((gr::basic_block *) (gr::block *) ((gr::tagged_stream_block *) x)); +} +static void *_p_gr__sync_blockTo_p_gr__basic_block(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((gr::basic_block *) (gr::block *) ((gr::sync_block *) x)); +} +static void *_p_gr__tempest__infer_screen_resolutionTo_p_gr__basic_block(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((gr::basic_block *) (gr::block *) ((gr::tempest::infer_screen_resolution *) x)); +} +static void *_p_gr__tempest__ssamp_correctionTo_p_gr__basic_block(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((gr::basic_block *) (gr::block *) ((gr::tempest::ssamp_correction *) x)); +} +static void *_p_gr__tempest__normalize_flowTo_p_gr__basic_block(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((gr::basic_block *) (gr::block *)(gr::sync_block *) ((gr::tempest::normalize_flow *) x)); +} +static void *_p_gr__tempest__fft_peak_fine_sampling_syncTo_p_gr__basic_block(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((gr::basic_block *) (gr::block *) ((gr::tempest::fft_peak_fine_sampling_sync *) x)); +} +static void *_p_gr__hier_block2To_p_gr__basic_block(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((gr::basic_block *) ((gr::hier_block2 *) x)); +} +static void *_p_gr__tempest__frame_dropTo_p_gr__basic_block(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((gr::basic_block *) (gr::block *) ((gr::tempest::frame_drop *) x)); +} +static void *_p_gr__sync_interpolatorTo_p_gr__basic_block(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((gr::basic_block *) (gr::block *)(gr::sync_block *) ((gr::sync_interpolator *) x)); +} +static void *_p_gr__block_gatewayTo_p_gr__basic_block(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((gr::basic_block *) (gr::block *) ((gr::block_gateway *) x)); +} +static void *_p_gr__tempest__framingTo_p_gr__basic_block(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((gr::basic_block *) (gr::block *) ((gr::tempest::framing *) x)); +} +static void *_p_gr__tempest__sync_detectorTo_p_gr__basic_block(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((gr::basic_block *) (gr::block *) ((gr::tempest::sync_detector *) x)); +} +static void *_p_gr__top_blockTo_p_gr__basic_block(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((gr::basic_block *) (gr::hier_block2 *) ((gr::top_block *) x)); +} +static void *_p_gr__tempest__HsyncTo_p_gr__basic_block(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((gr::basic_block *) (gr::block *) ((gr::tempest::Hsync *) x)); +} +static void *_p_gr__tempest__fine_sampling_synchronizationTo_p_gr__basic_block(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((gr::basic_block *) (gr::block *) ((gr::tempest::fine_sampling_synchronization *) x)); +} +static void *_p_gr__tempest__sampling_synchronizationTo_p_gr__basic_block(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((gr::basic_block *) (gr::block *) ((gr::tempest::sampling_synchronization *) x)); +} +static void *_p_gr__sync_decimatorTo_p_gr__basic_block(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((gr::basic_block *) (gr::block *)(gr::sync_block *) ((gr::sync_decimator *) x)); +} +static void *_p_gr__sync_decimatorTo_p_gr__sync_block(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((gr::sync_block *) ((gr::sync_decimator *) x)); +} +static void *_p_gr__tempest__normalize_flowTo_p_gr__sync_block(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((gr::sync_block *) ((gr::tempest::normalize_flow *) x)); +} +static void *_p_gr__sync_interpolatorTo_p_gr__sync_block(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((gr::sync_block *) ((gr::sync_interpolator *) x)); +} +static swig_type_info _swigt__p_allocator_type = {"_p_allocator_type", "allocator_type *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_boost__shared_ptrT_gr__basic_block_t = {"_p_boost__shared_ptrT_gr__basic_block_t", "boost::shared_ptr< gr::basic_block > *|gr::basic_block_sptr *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_boost__shared_ptrT_gr__block_detail_t = {"_p_boost__shared_ptrT_gr__block_detail_t", "boost::shared_ptr< gr::block_detail > *|gr::block_detail_sptr *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_boost__shared_ptrT_gr__block_t = {"_p_boost__shared_ptrT_gr__block_t", "boost::shared_ptr< gr::block > *|gr::block_sptr *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_boost__shared_ptrT_gr__buffer_reader_t = {"_p_boost__shared_ptrT_gr__buffer_reader_t", "boost::shared_ptr< gr::buffer_reader > *|gr::buffer_reader_sptr *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_boost__shared_ptrT_gr__buffer_t = {"_p_boost__shared_ptrT_gr__buffer_t", "boost::shared_ptr< gr::buffer > *|gr::buffer_sptr *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_boost__shared_ptrT_gr__flat_flowgraph_t = {"_p_boost__shared_ptrT_gr__flat_flowgraph_t", "boost::shared_ptr< gr::flat_flowgraph > *|gr::flat_flowgraph_sptr *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_boost__shared_ptrT_gr__flowgraph_t = {"_p_boost__shared_ptrT_gr__flowgraph_t", "boost::shared_ptr< gr::flowgraph > *|gr::flowgraph_sptr *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_boost__shared_ptrT_gr__hier_block2_t = {"_p_boost__shared_ptrT_gr__hier_block2_t", "boost::shared_ptr< gr::hier_block2 > *|gr::hier_block2_sptr *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_boost__shared_ptrT_gr__io_signature_t = {"_p_boost__shared_ptrT_gr__io_signature_t", "gr::io_signature::sptr *|boost::shared_ptr< gr::io_signature > *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_boost__shared_ptrT_gr__tempest__Hsync_t = {"_p_boost__shared_ptrT_gr__tempest__Hsync_t", "gr::tempest::Hsync::sptr *|boost::shared_ptr< gr::tempest::Hsync > *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t = {"_p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t", "gr::tempest::fft_peak_fine_sampling_sync::sptr *|boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t = {"_p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t", "gr::tempest::fine_sampling_synchronization::sptr *|boost::shared_ptr< gr::tempest::fine_sampling_synchronization > *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_boost__shared_ptrT_gr__tempest__frame_drop_t = {"_p_boost__shared_ptrT_gr__tempest__frame_drop_t", "boost::shared_ptr< gr::tempest::frame_drop > *|gr::tempest::frame_drop::sptr *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_boost__shared_ptrT_gr__tempest__framing_t = {"_p_boost__shared_ptrT_gr__tempest__framing_t", "gr::tempest::framing::sptr *|boost::shared_ptr< gr::tempest::framing > *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t = {"_p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t", "gr::tempest::infer_screen_resolution::sptr *|boost::shared_ptr< gr::tempest::infer_screen_resolution > *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_boost__shared_ptrT_gr__tempest__normalize_flow_t = {"_p_boost__shared_ptrT_gr__tempest__normalize_flow_t", "boost::shared_ptr< gr::tempest::normalize_flow > *|gr::tempest::normalize_flow::sptr *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t = {"_p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t", "gr::tempest::sampling_synchronization::sptr *|boost::shared_ptr< gr::tempest::sampling_synchronization > *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_boost__shared_ptrT_gr__tempest__ssamp_correction_t = {"_p_boost__shared_ptrT_gr__tempest__ssamp_correction_t", "gr::tempest::ssamp_correction::sptr *|boost::shared_ptr< gr::tempest::ssamp_correction > *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_boost__shared_ptrT_gr__tempest__sync_detector_t = {"_p_boost__shared_ptrT_gr__tempest__sync_detector_t", "gr::tempest::sync_detector::sptr *|boost::shared_ptr< gr::tempest::sync_detector > *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_boost__shared_ptrT_gr__top_block_t = {"_p_boost__shared_ptrT_gr__top_block_t", "boost::shared_ptr< gr::top_block > *|gr::top_block_sptr *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_boost__shared_ptrT_pmt__pmt_base_t = {"_p_boost__shared_ptrT_pmt__pmt_base_t", "pmt::pmt_t *|boost::shared_ptr< pmt::pmt_base > *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_char = {"_p_char", "char *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_difference_type = {"_p_difference_type", "difference_type *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_gr__basic_block = {"_p_gr__basic_block", "gr::basic_block *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_gr__tagged_stream_block = {"_p_gr__tagged_stream_block", 0, 0, 0, 0, 0}; +static swig_type_info _swigt__p_gr__hier_block2 = {"_p_gr__hier_block2", 0, 0, 0, 0, 0}; +static swig_type_info _swigt__p_gr__sync_interpolator = {"_p_gr__sync_interpolator", 0, 0, 0, 0, 0}; +static swig_type_info _swigt__p_gr__block_gateway = {"_p_gr__block_gateway", 0, 0, 0, 0, 0}; +static swig_type_info _swigt__p_gr__top_block = {"_p_gr__top_block", 0, 0, 0, 0, 0}; +static swig_type_info _swigt__p_gr__sync_decimator = {"_p_gr__sync_decimator", 0, 0, 0, 0, 0}; +static swig_type_info _swigt__p_gr__block = {"_p_gr__block", "gr::block *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_gr__endianness_t = {"_p_gr__endianness_t", "enum gr::endianness_t *|gr::endianness_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_gr__rt_status_t = {"_p_gr__rt_status_t", "enum gr::rt_status_t *|gr::rt_status_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_gr__sync_block = {"_p_gr__sync_block", "gr::sync_block *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_gr__tempest__Hsync = {"_p_gr__tempest__Hsync", "gr::tempest::Hsync *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_gr__tempest__fft_peak_fine_sampling_sync = {"_p_gr__tempest__fft_peak_fine_sampling_sync", "gr::tempest::fft_peak_fine_sampling_sync *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_gr__tempest__fine_sampling_synchronization = {"_p_gr__tempest__fine_sampling_synchronization", "gr::tempest::fine_sampling_synchronization *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_gr__tempest__frame_drop = {"_p_gr__tempest__frame_drop", "gr::tempest::frame_drop *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_gr__tempest__framing = {"_p_gr__tempest__framing", "gr::tempest::framing *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_gr__tempest__infer_screen_resolution = {"_p_gr__tempest__infer_screen_resolution", "gr::tempest::infer_screen_resolution *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_gr__tempest__normalize_flow = {"_p_gr__tempest__normalize_flow", "gr::tempest::normalize_flow *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_gr__tempest__sampling_synchronization = {"_p_gr__tempest__sampling_synchronization", "gr::tempest::sampling_synchronization *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_gr__tempest__ssamp_correction = {"_p_gr__tempest__ssamp_correction", "gr::tempest::ssamp_correction *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_gr__tempest__sync_detector = {"_p_gr__tempest__sync_detector", "gr::tempest::sync_detector *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_int = {"_p_int", "intptr_t *|int *|int_least32_t *|int_fast32_t *|int32_t *|int_fast16_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_long_long = {"_p_long_long", "gr::high_res_timer_type *|int_least64_t *|int_fast64_t *|int64_t *|long long *|intmax_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_short = {"_p_short", "short *|int_least16_t *|int16_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_signed_char = {"_p_signed_char", "signed char *|int_least8_t *|int_fast8_t *|int8_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_size_type = {"_p_size_type", "size_type *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_sptr = {"_p_sptr", "sptr *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_std__complexT_double_t = {"_p_std__complexT_double_t", "gr_complexd *|std::complex< double > *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_std__complexT_float_t = {"_p_std__complexT_float_t", "std::complex< float > *|gr_complex *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_unsigned_char = {"_p_unsigned_char", "unsigned char *|uint_least8_t *|uint_fast8_t *|uint8_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_unsigned_int = {"_p_unsigned_int", "uintptr_t *|uint_least32_t *|uint_fast32_t *|uint32_t *|unsigned int *|uint_fast16_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_unsigned_long_long = {"_p_unsigned_long_long", "uint_least64_t *|uint_fast64_t *|uint64_t *|unsigned long long *|uintmax_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_unsigned_short = {"_p_unsigned_short", "unsigned short *|uint_least16_t *|uint16_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_value_type = {"_p_value_type", "value_type *", 0, 0, (void*)0, 0}; + +static swig_type_info *swig_type_initial[] = { + &_swigt__p_allocator_type, + &_swigt__p_boost__shared_ptrT_gr__basic_block_t, + &_swigt__p_boost__shared_ptrT_gr__block_detail_t, + &_swigt__p_boost__shared_ptrT_gr__block_t, + &_swigt__p_boost__shared_ptrT_gr__buffer_reader_t, + &_swigt__p_boost__shared_ptrT_gr__buffer_t, + &_swigt__p_boost__shared_ptrT_gr__flat_flowgraph_t, + &_swigt__p_boost__shared_ptrT_gr__flowgraph_t, + &_swigt__p_boost__shared_ptrT_gr__hier_block2_t, + &_swigt__p_boost__shared_ptrT_gr__io_signature_t, + &_swigt__p_boost__shared_ptrT_gr__tempest__Hsync_t, + &_swigt__p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, + &_swigt__p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, + &_swigt__p_boost__shared_ptrT_gr__tempest__frame_drop_t, + &_swigt__p_boost__shared_ptrT_gr__tempest__framing_t, + &_swigt__p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, + &_swigt__p_boost__shared_ptrT_gr__tempest__normalize_flow_t, + &_swigt__p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, + &_swigt__p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, + &_swigt__p_boost__shared_ptrT_gr__tempest__sync_detector_t, + &_swigt__p_boost__shared_ptrT_gr__top_block_t, + &_swigt__p_boost__shared_ptrT_pmt__pmt_base_t, + &_swigt__p_char, + &_swigt__p_difference_type, + &_swigt__p_gr__basic_block, + &_swigt__p_gr__block, + &_swigt__p_gr__block_gateway, + &_swigt__p_gr__endianness_t, + &_swigt__p_gr__hier_block2, + &_swigt__p_gr__rt_status_t, + &_swigt__p_gr__sync_block, + &_swigt__p_gr__sync_decimator, + &_swigt__p_gr__sync_interpolator, + &_swigt__p_gr__tagged_stream_block, + &_swigt__p_gr__tempest__Hsync, + &_swigt__p_gr__tempest__fft_peak_fine_sampling_sync, + &_swigt__p_gr__tempest__fine_sampling_synchronization, + &_swigt__p_gr__tempest__frame_drop, + &_swigt__p_gr__tempest__framing, + &_swigt__p_gr__tempest__infer_screen_resolution, + &_swigt__p_gr__tempest__normalize_flow, + &_swigt__p_gr__tempest__sampling_synchronization, + &_swigt__p_gr__tempest__ssamp_correction, + &_swigt__p_gr__tempest__sync_detector, + &_swigt__p_gr__top_block, + &_swigt__p_int, + &_swigt__p_long_long, + &_swigt__p_short, + &_swigt__p_signed_char, + &_swigt__p_size_type, + &_swigt__p_sptr, + &_swigt__p_std__complexT_double_t, + &_swigt__p_std__complexT_float_t, + &_swigt__p_unsigned_char, + &_swigt__p_unsigned_int, + &_swigt__p_unsigned_long_long, + &_swigt__p_unsigned_short, + &_swigt__p_value_type, +}; + +static swig_cast_info _swigc__p_allocator_type[] = { {&_swigt__p_allocator_type, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_boost__shared_ptrT_gr__basic_block_t[] = { {&_swigt__p_boost__shared_ptrT_gr__basic_block_t, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_boost__shared_ptrT_gr__block_detail_t[] = { {&_swigt__p_boost__shared_ptrT_gr__block_detail_t, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_boost__shared_ptrT_gr__block_t[] = { {&_swigt__p_boost__shared_ptrT_gr__block_t, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_boost__shared_ptrT_gr__buffer_reader_t[] = { {&_swigt__p_boost__shared_ptrT_gr__buffer_reader_t, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_boost__shared_ptrT_gr__buffer_t[] = { {&_swigt__p_boost__shared_ptrT_gr__buffer_t, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_boost__shared_ptrT_gr__flat_flowgraph_t[] = { {&_swigt__p_boost__shared_ptrT_gr__flat_flowgraph_t, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_boost__shared_ptrT_gr__flowgraph_t[] = { {&_swigt__p_boost__shared_ptrT_gr__flowgraph_t, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_boost__shared_ptrT_gr__hier_block2_t[] = { {&_swigt__p_boost__shared_ptrT_gr__hier_block2_t, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_boost__shared_ptrT_gr__io_signature_t[] = { {&_swigt__p_boost__shared_ptrT_gr__io_signature_t, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_boost__shared_ptrT_gr__tempest__Hsync_t[] = { {&_swigt__p_boost__shared_ptrT_gr__tempest__Hsync_t, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t[] = { {&_swigt__p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t[] = { {&_swigt__p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_boost__shared_ptrT_gr__tempest__frame_drop_t[] = { {&_swigt__p_boost__shared_ptrT_gr__tempest__frame_drop_t, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_boost__shared_ptrT_gr__tempest__framing_t[] = { {&_swigt__p_boost__shared_ptrT_gr__tempest__framing_t, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t[] = { {&_swigt__p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_boost__shared_ptrT_gr__tempest__normalize_flow_t[] = { {&_swigt__p_boost__shared_ptrT_gr__tempest__normalize_flow_t, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t[] = { {&_swigt__p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_boost__shared_ptrT_gr__tempest__ssamp_correction_t[] = { {&_swigt__p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_boost__shared_ptrT_gr__tempest__sync_detector_t[] = { {&_swigt__p_boost__shared_ptrT_gr__tempest__sync_detector_t, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_boost__shared_ptrT_gr__top_block_t[] = { {&_swigt__p_boost__shared_ptrT_gr__top_block_t, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_boost__shared_ptrT_pmt__pmt_base_t[] = { {&_swigt__p_boost__shared_ptrT_pmt__pmt_base_t, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_char[] = { {&_swigt__p_char, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_difference_type[] = { {&_swigt__p_difference_type, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_gr__tagged_stream_block[] = {{&_swigt__p_gr__tagged_stream_block, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_gr__hier_block2[] = {{&_swigt__p_gr__hier_block2, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_gr__sync_interpolator[] = {{&_swigt__p_gr__sync_interpolator, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_gr__block_gateway[] = {{&_swigt__p_gr__block_gateway, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_gr__top_block[] = {{&_swigt__p_gr__top_block, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_gr__sync_decimator[] = {{&_swigt__p_gr__sync_decimator, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_gr__basic_block[] = { {&_swigt__p_gr__tempest__ssamp_correction, _p_gr__tempest__ssamp_correctionTo_p_gr__basic_block, 0, 0}, {&_swigt__p_gr__block, _p_gr__blockTo_p_gr__basic_block, 0, 0}, {&_swigt__p_gr__tagged_stream_block, _p_gr__tagged_stream_blockTo_p_gr__basic_block, 0, 0}, {&_swigt__p_gr__sync_block, _p_gr__sync_blockTo_p_gr__basic_block, 0, 0}, {&_swigt__p_gr__basic_block, 0, 0, 0}, {&_swigt__p_gr__tempest__infer_screen_resolution, _p_gr__tempest__infer_screen_resolutionTo_p_gr__basic_block, 0, 0}, {&_swigt__p_gr__tempest__normalize_flow, _p_gr__tempest__normalize_flowTo_p_gr__basic_block, 0, 0}, {&_swigt__p_gr__tempest__fft_peak_fine_sampling_sync, _p_gr__tempest__fft_peak_fine_sampling_syncTo_p_gr__basic_block, 0, 0}, {&_swigt__p_gr__tempest__frame_drop, _p_gr__tempest__frame_dropTo_p_gr__basic_block, 0, 0}, {&_swigt__p_gr__hier_block2, _p_gr__hier_block2To_p_gr__basic_block, 0, 0}, {&_swigt__p_gr__sync_interpolator, _p_gr__sync_interpolatorTo_p_gr__basic_block, 0, 0}, {&_swigt__p_gr__block_gateway, _p_gr__block_gatewayTo_p_gr__basic_block, 0, 0}, {&_swigt__p_gr__tempest__framing, _p_gr__tempest__framingTo_p_gr__basic_block, 0, 0}, {&_swigt__p_gr__tempest__sync_detector, _p_gr__tempest__sync_detectorTo_p_gr__basic_block, 0, 0}, {&_swigt__p_gr__top_block, _p_gr__top_blockTo_p_gr__basic_block, 0, 0}, {&_swigt__p_gr__tempest__Hsync, _p_gr__tempest__HsyncTo_p_gr__basic_block, 0, 0}, {&_swigt__p_gr__tempest__fine_sampling_synchronization, _p_gr__tempest__fine_sampling_synchronizationTo_p_gr__basic_block, 0, 0}, {&_swigt__p_gr__tempest__sampling_synchronization, _p_gr__tempest__sampling_synchronizationTo_p_gr__basic_block, 0, 0}, {&_swigt__p_gr__sync_decimator, _p_gr__sync_decimatorTo_p_gr__basic_block, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_gr__block[] = { {&_swigt__p_gr__tempest__ssamp_correction, _p_gr__tempest__ssamp_correctionTo_p_gr__block, 0, 0}, {&_swigt__p_gr__tagged_stream_block, _p_gr__tagged_stream_blockTo_p_gr__block, 0, 0}, {&_swigt__p_gr__sync_block, _p_gr__sync_blockTo_p_gr__block, 0, 0}, {&_swigt__p_gr__block, 0, 0, 0}, {&_swigt__p_gr__tempest__infer_screen_resolution, _p_gr__tempest__infer_screen_resolutionTo_p_gr__block, 0, 0}, {&_swigt__p_gr__tempest__normalize_flow, _p_gr__tempest__normalize_flowTo_p_gr__block, 0, 0}, {&_swigt__p_gr__tempest__fft_peak_fine_sampling_sync, _p_gr__tempest__fft_peak_fine_sampling_syncTo_p_gr__block, 0, 0}, {&_swigt__p_gr__tempest__frame_drop, _p_gr__tempest__frame_dropTo_p_gr__block, 0, 0}, {&_swigt__p_gr__sync_interpolator, _p_gr__sync_interpolatorTo_p_gr__block, 0, 0}, {&_swigt__p_gr__block_gateway, _p_gr__block_gatewayTo_p_gr__block, 0, 0}, {&_swigt__p_gr__tempest__framing, _p_gr__tempest__framingTo_p_gr__block, 0, 0}, {&_swigt__p_gr__tempest__sync_detector, _p_gr__tempest__sync_detectorTo_p_gr__block, 0, 0}, {&_swigt__p_gr__tempest__Hsync, _p_gr__tempest__HsyncTo_p_gr__block, 0, 0}, {&_swigt__p_gr__tempest__fine_sampling_synchronization, _p_gr__tempest__fine_sampling_synchronizationTo_p_gr__block, 0, 0}, {&_swigt__p_gr__tempest__sampling_synchronization, _p_gr__tempest__sampling_synchronizationTo_p_gr__block, 0, 0}, {&_swigt__p_gr__sync_decimator, _p_gr__sync_decimatorTo_p_gr__block, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_gr__endianness_t[] = { {&_swigt__p_gr__endianness_t, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_gr__rt_status_t[] = { {&_swigt__p_gr__rt_status_t, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_gr__sync_block[] = { {&_swigt__p_gr__sync_decimator, _p_gr__sync_decimatorTo_p_gr__sync_block, 0, 0}, {&_swigt__p_gr__sync_block, 0, 0, 0}, {&_swigt__p_gr__tempest__normalize_flow, _p_gr__tempest__normalize_flowTo_p_gr__sync_block, 0, 0}, {&_swigt__p_gr__sync_interpolator, _p_gr__sync_interpolatorTo_p_gr__sync_block, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_gr__tempest__Hsync[] = { {&_swigt__p_gr__tempest__Hsync, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_gr__tempest__fft_peak_fine_sampling_sync[] = { {&_swigt__p_gr__tempest__fft_peak_fine_sampling_sync, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_gr__tempest__fine_sampling_synchronization[] = { {&_swigt__p_gr__tempest__fine_sampling_synchronization, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_gr__tempest__frame_drop[] = { {&_swigt__p_gr__tempest__frame_drop, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_gr__tempest__framing[] = { {&_swigt__p_gr__tempest__framing, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_gr__tempest__infer_screen_resolution[] = { {&_swigt__p_gr__tempest__infer_screen_resolution, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_gr__tempest__normalize_flow[] = { {&_swigt__p_gr__tempest__normalize_flow, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_gr__tempest__sampling_synchronization[] = { {&_swigt__p_gr__tempest__sampling_synchronization, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_gr__tempest__ssamp_correction[] = { {&_swigt__p_gr__tempest__ssamp_correction, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_gr__tempest__sync_detector[] = { {&_swigt__p_gr__tempest__sync_detector, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_int[] = { {&_swigt__p_int, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_long_long[] = { {&_swigt__p_long_long, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_short[] = { {&_swigt__p_short, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_signed_char[] = { {&_swigt__p_signed_char, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_size_type[] = { {&_swigt__p_size_type, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_sptr[] = { {&_swigt__p_sptr, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_std__complexT_double_t[] = { {&_swigt__p_std__complexT_double_t, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_std__complexT_float_t[] = { {&_swigt__p_std__complexT_float_t, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_unsigned_char[] = { {&_swigt__p_unsigned_char, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_unsigned_int[] = { {&_swigt__p_unsigned_int, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_unsigned_long_long[] = { {&_swigt__p_unsigned_long_long, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_unsigned_short[] = { {&_swigt__p_unsigned_short, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_value_type[] = { {&_swigt__p_value_type, 0, 0, 0},{0, 0, 0, 0}}; + +static swig_cast_info *swig_cast_initial[] = { + _swigc__p_allocator_type, + _swigc__p_boost__shared_ptrT_gr__basic_block_t, + _swigc__p_boost__shared_ptrT_gr__block_detail_t, + _swigc__p_boost__shared_ptrT_gr__block_t, + _swigc__p_boost__shared_ptrT_gr__buffer_reader_t, + _swigc__p_boost__shared_ptrT_gr__buffer_t, + _swigc__p_boost__shared_ptrT_gr__flat_flowgraph_t, + _swigc__p_boost__shared_ptrT_gr__flowgraph_t, + _swigc__p_boost__shared_ptrT_gr__hier_block2_t, + _swigc__p_boost__shared_ptrT_gr__io_signature_t, + _swigc__p_boost__shared_ptrT_gr__tempest__Hsync_t, + _swigc__p_boost__shared_ptrT_gr__tempest__fft_peak_fine_sampling_sync_t, + _swigc__p_boost__shared_ptrT_gr__tempest__fine_sampling_synchronization_t, + _swigc__p_boost__shared_ptrT_gr__tempest__frame_drop_t, + _swigc__p_boost__shared_ptrT_gr__tempest__framing_t, + _swigc__p_boost__shared_ptrT_gr__tempest__infer_screen_resolution_t, + _swigc__p_boost__shared_ptrT_gr__tempest__normalize_flow_t, + _swigc__p_boost__shared_ptrT_gr__tempest__sampling_synchronization_t, + _swigc__p_boost__shared_ptrT_gr__tempest__ssamp_correction_t, + _swigc__p_boost__shared_ptrT_gr__tempest__sync_detector_t, + _swigc__p_boost__shared_ptrT_gr__top_block_t, + _swigc__p_boost__shared_ptrT_pmt__pmt_base_t, + _swigc__p_char, + _swigc__p_difference_type, + _swigc__p_gr__basic_block, + _swigc__p_gr__block, + _swigc__p_gr__block_gateway, + _swigc__p_gr__endianness_t, + _swigc__p_gr__hier_block2, + _swigc__p_gr__rt_status_t, + _swigc__p_gr__sync_block, + _swigc__p_gr__sync_decimator, + _swigc__p_gr__sync_interpolator, + _swigc__p_gr__tagged_stream_block, + _swigc__p_gr__tempest__Hsync, + _swigc__p_gr__tempest__fft_peak_fine_sampling_sync, + _swigc__p_gr__tempest__fine_sampling_synchronization, + _swigc__p_gr__tempest__frame_drop, + _swigc__p_gr__tempest__framing, + _swigc__p_gr__tempest__infer_screen_resolution, + _swigc__p_gr__tempest__normalize_flow, + _swigc__p_gr__tempest__sampling_synchronization, + _swigc__p_gr__tempest__ssamp_correction, + _swigc__p_gr__tempest__sync_detector, + _swigc__p_gr__top_block, + _swigc__p_int, + _swigc__p_long_long, + _swigc__p_short, + _swigc__p_signed_char, + _swigc__p_size_type, + _swigc__p_sptr, + _swigc__p_std__complexT_double_t, + _swigc__p_std__complexT_float_t, + _swigc__p_unsigned_char, + _swigc__p_unsigned_int, + _swigc__p_unsigned_long_long, + _swigc__p_unsigned_short, + _swigc__p_value_type, +}; + + +/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (END) -------- */ + +static swig_const_info swig_const_table[] = { +{0, 0, 0, 0.0, 0, 0}}; + +#ifdef __cplusplus +} +#endif +/* ----------------------------------------------------------------------------- + * Type initialization: + * This problem is tough by the requirement that no dynamic + * memory is used. Also, since swig_type_info structures store pointers to + * swig_cast_info structures and swig_cast_info structures store pointers back + * to swig_type_info structures, we need some lookup code at initialization. + * The idea is that swig generates all the structures that are needed. + * The runtime then collects these partially filled structures. + * The SWIG_InitializeModule function takes these initial arrays out of + * swig_module, and does all the lookup, filling in the swig_module.types + * array with the correct data and linking the correct swig_cast_info + * structures together. + * + * The generated swig_type_info structures are assigned statically to an initial + * array. We just loop through that array, and handle each type individually. + * First we lookup if this type has been already loaded, and if so, use the + * loaded structure instead of the generated one. Then we have to fill in the + * cast linked list. The cast data is initially stored in something like a + * two-dimensional array. Each row corresponds to a type (there are the same + * number of rows as there are in the swig_type_initial array). Each entry in + * a column is one of the swig_cast_info structures for that type. + * The cast_initial array is actually an array of arrays, because each row has + * a variable number of columns. So to actually build the cast linked list, + * we find the array of casts associated with the type, and loop through it + * adding the casts to the list. The one last trick we need to do is making + * sure the type pointer in the swig_cast_info struct is correct. + * + * First off, we lookup the cast->type name to see if it is already loaded. + * There are three cases to handle: + * 1) If the cast->type has already been loaded AND the type we are adding + * casting info to has not been loaded (it is in this module), THEN we + * replace the cast->type pointer with the type pointer that has already + * been loaded. + * 2) If BOTH types (the one we are adding casting info to, and the + * cast->type) are loaded, THEN the cast info has already been loaded by + * the previous module so we just ignore it. + * 3) Finally, if cast->type has not already been loaded, then we add that + * swig_cast_info to the linked list (because the cast->type) pointer will + * be correct. + * ----------------------------------------------------------------------------- */ + +#ifdef __cplusplus +extern "C" { +#if 0 +} /* c-mode */ +#endif +#endif + +#if 0 +#define SWIGRUNTIME_DEBUG +#endif + + +SWIGRUNTIME void +SWIG_InitializeModule(void *clientdata) { + size_t i; + swig_module_info *module_head, *iter; + int init; + + /* check to see if the circular list has been setup, if not, set it up */ + if (swig_module.next==0) { + /* Initialize the swig_module */ + swig_module.type_initial = swig_type_initial; + swig_module.cast_initial = swig_cast_initial; + swig_module.next = &swig_module; + init = 1; + } else { + init = 0; + } + + /* Try and load any already created modules */ + module_head = SWIG_GetModule(clientdata); + if (!module_head) { + /* This is the first module loaded for this interpreter */ + /* so set the swig module into the interpreter */ + SWIG_SetModule(clientdata, &swig_module); + } else { + /* the interpreter has loaded a SWIG module, but has it loaded this one? */ + iter=module_head; + do { + if (iter==&swig_module) { + /* Our module is already in the list, so there's nothing more to do. */ + return; + } + iter=iter->next; + } while (iter!= module_head); + + /* otherwise we must add our module into the list */ + swig_module.next = module_head->next; + module_head->next = &swig_module; + } + + /* When multiple interpreters are used, a module could have already been initialized in + a different interpreter, but not yet have a pointer in this interpreter. + In this case, we do not want to continue adding types... everything should be + set up already */ + if (init == 0) return; + + /* Now work on filling in swig_module.types */ +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: size %lu\n", (unsigned long)swig_module.size); +#endif + for (i = 0; i < swig_module.size; ++i) { + swig_type_info *type = 0; + swig_type_info *ret; + swig_cast_info *cast; + +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: type %lu %s\n", (unsigned long)i, swig_module.type_initial[i]->name); +#endif + + /* if there is another module already loaded */ + if (swig_module.next != &swig_module) { + type = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, swig_module.type_initial[i]->name); + } + if (type) { + /* Overwrite clientdata field */ +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: found type %s\n", type->name); +#endif + if (swig_module.type_initial[i]->clientdata) { + type->clientdata = swig_module.type_initial[i]->clientdata; +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: found and overwrite type %s \n", type->name); +#endif + } + } else { + type = swig_module.type_initial[i]; + } + + /* Insert casting types */ + cast = swig_module.cast_initial[i]; + while (cast->type) { + /* Don't need to add information already in the list */ + ret = 0; +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: look cast %s\n", cast->type->name); +#endif + if (swig_module.next != &swig_module) { + ret = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, cast->type->name); +#ifdef SWIGRUNTIME_DEBUG + if (ret) printf("SWIG_InitializeModule: found cast %s\n", ret->name); +#endif + } + if (ret) { + if (type == swig_module.type_initial[i]) { +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: skip old type %s\n", ret->name); +#endif + cast->type = ret; + ret = 0; + } else { + /* Check for casting already in the list */ + swig_cast_info *ocast = SWIG_TypeCheck(ret->name, type); +#ifdef SWIGRUNTIME_DEBUG + if (ocast) printf("SWIG_InitializeModule: skip old cast %s\n", ret->name); +#endif + if (!ocast) ret = 0; + } + } + + if (!ret) { +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: adding cast %s\n", cast->type->name); +#endif + if (type->cast) { + type->cast->prev = cast; + cast->next = type->cast; + } + type->cast = cast; + } + cast++; + } + /* Set entry in modules->types array equal to the type */ + swig_module.types[i] = type; + } + swig_module.types[i] = 0; + +#ifdef SWIGRUNTIME_DEBUG + printf("**** SWIG_InitializeModule: Cast List ******\n"); + for (i = 0; i < swig_module.size; ++i) { + int j = 0; + swig_cast_info *cast = swig_module.cast_initial[i]; + printf("SWIG_InitializeModule: type %lu %s\n", (unsigned long)i, swig_module.type_initial[i]->name); + while (cast->type) { + printf("SWIG_InitializeModule: cast type %s\n", cast->type->name); + cast++; + ++j; + } + printf("---- Total casts: %d\n",j); + } + printf("**** SWIG_InitializeModule: Cast List ******\n"); +#endif +} + +/* This function will propagate the clientdata field of type to +* any new swig_type_info structures that have been added into the list +* of equivalent types. It is like calling +* SWIG_TypeClientData(type, clientdata) a second time. +*/ +SWIGRUNTIME void +SWIG_PropagateClientData(void) { + size_t i; + swig_cast_info *equiv; + static int init_run = 0; + + if (init_run) return; + init_run = 1; + + for (i = 0; i < swig_module.size; i++) { + if (swig_module.types[i]->clientdata) { + equiv = swig_module.types[i]->cast; + while (equiv) { + if (!equiv->converter) { + if (equiv->type && !equiv->type->clientdata) + SWIG_TypeClientData(equiv->type, swig_module.types[i]->clientdata); + } + equiv = equiv->next; + } + } + } +} + +#ifdef __cplusplus +#if 0 +{ + /* c-mode */ +#endif +} +#endif + + + +#ifdef __cplusplus +extern "C" { +#endif + + /* Python-specific SWIG API */ +#define SWIG_newvarlink() SWIG_Python_newvarlink() +#define SWIG_addvarlink(p, name, get_attr, set_attr) SWIG_Python_addvarlink(p, name, get_attr, set_attr) +#define SWIG_InstallConstants(d, constants) SWIG_Python_InstallConstants(d, constants) + + /* ----------------------------------------------------------------------------- + * global variable support code. + * ----------------------------------------------------------------------------- */ + + typedef struct swig_globalvar { + char *name; /* Name of global variable */ + PyObject *(*get_attr)(void); /* Return the current value */ + int (*set_attr)(PyObject *); /* Set the value */ + struct swig_globalvar *next; + } swig_globalvar; + + typedef struct swig_varlinkobject { + PyObject_HEAD + swig_globalvar *vars; + } swig_varlinkobject; + + SWIGINTERN PyObject * + swig_varlink_repr(swig_varlinkobject *SWIGUNUSEDPARM(v)) { +#if PY_VERSION_HEX >= 0x03000000 + return PyUnicode_InternFromString(""); +#else + return PyString_FromString(""); +#endif + } + + SWIGINTERN PyObject * + swig_varlink_str(swig_varlinkobject *v) { +#if PY_VERSION_HEX >= 0x03000000 + PyObject *str = PyUnicode_InternFromString("("); + PyObject *tail; + PyObject *joined; + swig_globalvar *var; + for (var = v->vars; var; var=var->next) { + tail = PyUnicode_FromString(var->name); + joined = PyUnicode_Concat(str, tail); + Py_DecRef(str); + Py_DecRef(tail); + str = joined; + if (var->next) { + tail = PyUnicode_InternFromString(", "); + joined = PyUnicode_Concat(str, tail); + Py_DecRef(str); + Py_DecRef(tail); + str = joined; + } + } + tail = PyUnicode_InternFromString(")"); + joined = PyUnicode_Concat(str, tail); + Py_DecRef(str); + Py_DecRef(tail); + str = joined; +#else + PyObject *str = PyString_FromString("("); + swig_globalvar *var; + for (var = v->vars; var; var=var->next) { + PyString_ConcatAndDel(&str,PyString_FromString(var->name)); + if (var->next) PyString_ConcatAndDel(&str,PyString_FromString(", ")); + } + PyString_ConcatAndDel(&str,PyString_FromString(")")); +#endif + return str; + } + + SWIGINTERN void + swig_varlink_dealloc(swig_varlinkobject *v) { + swig_globalvar *var = v->vars; + while (var) { + swig_globalvar *n = var->next; + free(var->name); + free(var); + var = n; + } + } + + SWIGINTERN PyObject * + swig_varlink_getattr(swig_varlinkobject *v, char *n) { + PyObject *res = NULL; + swig_globalvar *var = v->vars; + while (var) { + if (strcmp(var->name,n) == 0) { + res = (*var->get_attr)(); + break; + } + var = var->next; + } + if (res == NULL && !PyErr_Occurred()) { + PyErr_Format(PyExc_AttributeError, "Unknown C global variable '%s'", n); + } + return res; + } + + SWIGINTERN int + swig_varlink_setattr(swig_varlinkobject *v, char *n, PyObject *p) { + int res = 1; + swig_globalvar *var = v->vars; + while (var) { + if (strcmp(var->name,n) == 0) { + res = (*var->set_attr)(p); + break; + } + var = var->next; + } + if (res == 1 && !PyErr_Occurred()) { + PyErr_Format(PyExc_AttributeError, "Unknown C global variable '%s'", n); + } + return res; + } + + SWIGINTERN PyTypeObject* + swig_varlink_type(void) { + static char varlink__doc__[] = "Swig var link object"; + static PyTypeObject varlink_type; + static int type_init = 0; + if (!type_init) { + const PyTypeObject tmp = { +#if PY_VERSION_HEX >= 0x03000000 + PyVarObject_HEAD_INIT(NULL, 0) +#else + PyObject_HEAD_INIT(NULL) + 0, /* ob_size */ +#endif + "swigvarlink", /* tp_name */ + sizeof(swig_varlinkobject), /* tp_basicsize */ + 0, /* tp_itemsize */ + (destructor) swig_varlink_dealloc, /* tp_dealloc */ + 0, /* tp_print */ + (getattrfunc) swig_varlink_getattr, /* tp_getattr */ + (setattrfunc) swig_varlink_setattr, /* tp_setattr */ + 0, /* tp_compare */ + (reprfunc) swig_varlink_repr, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + (reprfunc) swig_varlink_str, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + 0, /* tp_flags */ + varlink__doc__, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* tp_iter -> tp_weaklist */ + 0, /* tp_del */ + 0, /* tp_version_tag */ +#if PY_VERSION_HEX >= 0x03040000 + 0, /* tp_finalize */ +#endif +#ifdef COUNT_ALLOCS + 0, /* tp_allocs */ + 0, /* tp_frees */ + 0, /* tp_maxalloc */ + 0, /* tp_prev */ + 0 /* tp_next */ +#endif + }; + varlink_type = tmp; + type_init = 1; + if (PyType_Ready(&varlink_type) < 0) + return NULL; + } + return &varlink_type; + } + + /* Create a variable linking object for use later */ + SWIGINTERN PyObject * + SWIG_Python_newvarlink(void) { + swig_varlinkobject *result = PyObject_NEW(swig_varlinkobject, swig_varlink_type()); + if (result) { + result->vars = 0; + } + return ((PyObject*) result); + } + + SWIGINTERN void + SWIG_Python_addvarlink(PyObject *p, const char *name, PyObject *(*get_attr)(void), int (*set_attr)(PyObject *p)) { + swig_varlinkobject *v = (swig_varlinkobject *) p; + swig_globalvar *gv = (swig_globalvar *) malloc(sizeof(swig_globalvar)); + if (gv) { + size_t size = strlen(name)+1; + gv->name = (char *)malloc(size); + if (gv->name) { + memcpy(gv->name, name, size); + gv->get_attr = get_attr; + gv->set_attr = set_attr; + gv->next = v->vars; + } + } + v->vars = gv; + } + + SWIGINTERN PyObject * + SWIG_globals(void) { + static PyObject *globals = 0; + if (!globals) { + globals = SWIG_newvarlink(); + } + return globals; + } + + /* ----------------------------------------------------------------------------- + * constants/methods manipulation + * ----------------------------------------------------------------------------- */ + + /* Install Constants */ + SWIGINTERN void + SWIG_Python_InstallConstants(PyObject *d, swig_const_info constants[]) { + PyObject *obj = 0; + size_t i; + for (i = 0; constants[i].type; ++i) { + switch(constants[i].type) { + case SWIG_PY_POINTER: + obj = SWIG_InternalNewPointerObj(constants[i].pvalue, *(constants[i]).ptype,0); + break; + case SWIG_PY_BINARY: + obj = SWIG_NewPackedObj(constants[i].pvalue, constants[i].lvalue, *(constants[i].ptype)); + break; + default: + obj = 0; + break; + } + if (obj) { + PyDict_SetItemString(d, constants[i].name, obj); + Py_DECREF(obj); + } + } + } + + /* -----------------------------------------------------------------------------*/ + /* Fix SwigMethods to carry the callback ptrs when needed */ + /* -----------------------------------------------------------------------------*/ + + SWIGINTERN void + SWIG_Python_FixMethods(PyMethodDef *methods, + swig_const_info *const_table, + swig_type_info **types, + swig_type_info **types_initial) { + size_t i; + for (i = 0; methods[i].ml_name; ++i) { + const char *c = methods[i].ml_doc; + if (!c) continue; + c = strstr(c, "swig_ptr: "); + if (c) { + int j; + swig_const_info *ci = 0; + const char *name = c + 10; + for (j = 0; const_table[j].type; ++j) { + if (strncmp(const_table[j].name, name, + strlen(const_table[j].name)) == 0) { + ci = &(const_table[j]); + break; + } + } + if (ci) { + void *ptr = (ci->type == SWIG_PY_POINTER) ? ci->pvalue : 0; + if (ptr) { + size_t shift = (ci->ptype) - types; + swig_type_info *ty = types_initial[shift]; + size_t ldoc = (c - methods[i].ml_doc); + size_t lptr = strlen(ty->name)+2*sizeof(void*)+2; + char *ndoc = (char*)malloc(ldoc + lptr + 10); + if (ndoc) { + char *buff = ndoc; + memcpy(buff, methods[i].ml_doc, ldoc); + buff += ldoc; + memcpy(buff, "swig_ptr: ", 10); + buff += 10; + SWIG_PackVoidPtr(buff, ptr, ty->name, lptr); + methods[i].ml_doc = ndoc; + } + } + } + } + } + } + + /* ----------------------------------------------------------------------------- + * Method creation and docstring support functions + * ----------------------------------------------------------------------------- */ + + /* ----------------------------------------------------------------------------- + * Function to find the method definition with the correct docstring for the + * proxy module as opposed to the low-level API + * ----------------------------------------------------------------------------- */ + + SWIGINTERN PyMethodDef *SWIG_PythonGetProxyDoc(const char *name) { + /* Find the function in the modified method table */ + size_t offset = 0; + int found = 0; + while (SwigMethods_proxydocs[offset].ml_meth != NULL) { + if (strcmp(SwigMethods_proxydocs[offset].ml_name, name) == 0) { + found = 1; + break; + } + offset++; + } + /* Use the copy with the modified docstring if available */ + return found ? &SwigMethods_proxydocs[offset] : NULL; + } + + /* ----------------------------------------------------------------------------- + * Wrapper of PyInstanceMethod_New() used in Python 3 + * It is exported to the generated module, used for -fastproxy + * ----------------------------------------------------------------------------- */ + + SWIGINTERN PyObject *SWIG_PyInstanceMethod_New(PyObject *SWIGUNUSEDPARM(self), PyObject *func) { + if (PyCFunction_Check(func)) { + PyCFunctionObject *funcobj = (PyCFunctionObject *)func; + PyMethodDef *ml = SWIG_PythonGetProxyDoc(funcobj->m_ml->ml_name); + if (ml) + func = PyCFunction_NewEx(ml, funcobj->m_self, funcobj->m_module); + } +#if PY_VERSION_HEX >= 0x03000000 + return PyInstanceMethod_New(func); +#else + return PyMethod_New(func, NULL, NULL); +#endif + } + + /* ----------------------------------------------------------------------------- + * Wrapper of PyStaticMethod_New() + * It is exported to the generated module, used for -fastproxy + * ----------------------------------------------------------------------------- */ + + SWIGINTERN PyObject *SWIG_PyStaticMethod_New(PyObject *SWIGUNUSEDPARM(self), PyObject *func) { + if (PyCFunction_Check(func)) { + PyCFunctionObject *funcobj = (PyCFunctionObject *)func; + PyMethodDef *ml = SWIG_PythonGetProxyDoc(funcobj->m_ml->ml_name); + if (ml) + func = PyCFunction_NewEx(ml, funcobj->m_self, funcobj->m_module); + } + return PyStaticMethod_New(func); + } + +#ifdef __cplusplus +} +#endif + +/* -----------------------------------------------------------------------------* + * Partial Init method + * -----------------------------------------------------------------------------*/ + +#ifdef __cplusplus +extern "C" +#endif + +SWIGEXPORT +#if PY_VERSION_HEX >= 0x03000000 +PyObject* +#else +void +#endif +SWIG_init(void) { + PyObject *m, *d, *md, *globals; + +#if PY_VERSION_HEX >= 0x03000000 + static struct PyModuleDef SWIG_module = { + PyModuleDef_HEAD_INIT, + SWIG_name, + NULL, + -1, + SwigMethods, + NULL, + NULL, + NULL, + NULL + }; +#endif + +#if defined(SWIGPYTHON_BUILTIN) + static SwigPyClientData SwigPyObject_clientdata = { + 0, 0, 0, 0, 0, 0, 0 + }; + static PyGetSetDef this_getset_def = { + (char *)"this", &SwigPyBuiltin_ThisClosure, NULL, NULL, NULL + }; + static SwigPyGetSet thisown_getset_closure = { + SwigPyObject_own, + SwigPyObject_own + }; + static PyGetSetDef thisown_getset_def = { + (char *)"thisown", SwigPyBuiltin_GetterClosure, SwigPyBuiltin_SetterClosure, NULL, &thisown_getset_closure + }; + PyTypeObject *builtin_pytype; + int builtin_base_count; + swig_type_info *builtin_basetype; + PyObject *tuple; + PyGetSetDescrObject *static_getset; + PyTypeObject *metatype; + PyTypeObject *swigpyobject; + SwigPyClientData *cd; + PyObject *public_interface, *public_symbol; + PyObject *this_descr; + PyObject *thisown_descr; + PyObject *self = 0; + int i; + + (void)builtin_pytype; + (void)builtin_base_count; + (void)builtin_basetype; + (void)tuple; + (void)static_getset; + (void)self; + + /* Metaclass is used to implement static member variables */ + metatype = SwigPyObjectType(); + assert(metatype); +#endif + + (void)globals; + + /* Create singletons now to avoid potential deadlocks with multi-threaded usage after module initialization */ + SWIG_This(); + SWIG_Python_TypeCache(); + SwigPyPacked_type(); +#ifndef SWIGPYTHON_BUILTIN + SwigPyObject_type(); +#endif + + /* Fix SwigMethods to carry the callback ptrs when needed */ + SWIG_Python_FixMethods(SwigMethods, swig_const_table, swig_types, swig_type_initial); + +#if PY_VERSION_HEX >= 0x03000000 + m = PyModule_Create(&SWIG_module); +#else + m = Py_InitModule(SWIG_name, SwigMethods); +#endif + + md = d = PyModule_GetDict(m); + (void)md; + + SWIG_InitializeModule(0); + +#ifdef SWIGPYTHON_BUILTIN + swigpyobject = SwigPyObject_TypeOnce(); + + SwigPyObject_stype = SWIG_MangledTypeQuery("_p_SwigPyObject"); + assert(SwigPyObject_stype); + cd = (SwigPyClientData*) SwigPyObject_stype->clientdata; + if (!cd) { + SwigPyObject_stype->clientdata = &SwigPyObject_clientdata; + SwigPyObject_clientdata.pytype = swigpyobject; + } else if (swigpyobject->tp_basicsize != cd->pytype->tp_basicsize) { + PyErr_SetString(PyExc_RuntimeError, "Import error: attempted to load two incompatible swig-generated modules."); +# if PY_VERSION_HEX >= 0x03000000 + return NULL; +# else + return; +# endif + } + + /* All objects have a 'this' attribute */ + this_descr = PyDescr_NewGetSet(SwigPyObject_type(), &this_getset_def); + (void)this_descr; + + /* All objects have a 'thisown' attribute */ + thisown_descr = PyDescr_NewGetSet(SwigPyObject_type(), &thisown_getset_def); + (void)thisown_descr; + + public_interface = PyList_New(0); + public_symbol = 0; + (void)public_symbol; + + PyDict_SetItemString(md, "__all__", public_interface); + Py_DECREF(public_interface); + for (i = 0; SwigMethods[i].ml_name != NULL; ++i) + SwigPyBuiltin_AddPublicSymbol(public_interface, SwigMethods[i].ml_name); + for (i = 0; swig_const_table[i].name != 0; ++i) + SwigPyBuiltin_AddPublicSymbol(public_interface, swig_const_table[i].name); +#endif + + SWIG_InstallConstants(d,swig_const_table); + +#if PY_VERSION_HEX >= 0x03000000 + return m; +#else + return; +#endif +} + diff --git a/build/swig/CMakeFiles/tempest_swig_swig_compilation.dir/CXX.includecache b/build/swig/CMakeFiles/tempest_swig_swig_compilation.dir/CXX.includecache new file mode 100644 index 0000000..c64fd4b --- /dev/null +++ b/build/swig/CMakeFiles/tempest_swig_swig_compilation.dir/CXX.includecache @@ -0,0 +1,54 @@ +#IncludeRegexLine: ^[ ]*[#%][ ]*(include|import)[ ]*[<"]([^">]+)([">]) + +#IncludeRegexScan: ^.*$ + +#IncludeRegexComplain: ^$ + +#IncludeRegexTransform: + +/home/emidan19/gr-tempest/swig/tempest_swig.i +gnuradio.i +/home/emidan19/gr-tempest/swig/gnuradio.i +tempest_swig_doc.i +/home/emidan19/gr-tempest/swig/tempest_swig_doc.i +tempest/sampling_synchronization.h +/home/emidan19/gr-tempest/swig/tempest/sampling_synchronization.h +tempest/framing.h +/home/emidan19/gr-tempest/swig/tempest/framing.h +tempest/Hsync.h +/home/emidan19/gr-tempest/swig/tempest/Hsync.h +tempest/normalize_flow.h +/home/emidan19/gr-tempest/swig/tempest/normalize_flow.h +tempest/fine_sampling_synchronization.h +/home/emidan19/gr-tempest/swig/tempest/fine_sampling_synchronization.h +tempest/sync_detector.h +/home/emidan19/gr-tempest/swig/tempest/sync_detector.h +tempest/frame_drop.h +/home/emidan19/gr-tempest/swig/tempest/frame_drop.h +tempest/fft_peak_fine_sampling_sync.h +/home/emidan19/gr-tempest/swig/tempest/fft_peak_fine_sampling_sync.h +tempest/infer_screen_resolution.h +/home/emidan19/gr-tempest/swig/tempest/infer_screen_resolution.h +tempest/ssamp_correction.h +/home/emidan19/gr-tempest/swig/tempest/ssamp_correction.h +tempest/sampling_synchronization.h +/home/emidan19/gr-tempest/swig/tempest/sampling_synchronization.h +tempest/framing.h +/home/emidan19/gr-tempest/swig/tempest/framing.h +tempest/Hsync.h +/home/emidan19/gr-tempest/swig/tempest/Hsync.h +tempest/normalize_flow.h +/home/emidan19/gr-tempest/swig/tempest/normalize_flow.h +tempest/fine_sampling_synchronization.h +/home/emidan19/gr-tempest/swig/tempest/fine_sampling_synchronization.h +tempest/sync_detector.h +/home/emidan19/gr-tempest/swig/tempest/sync_detector.h +tempest/frame_drop.h +/home/emidan19/gr-tempest/swig/tempest/frame_drop.h +tempest/fft_peak_fine_sampling_sync.h +/home/emidan19/gr-tempest/swig/tempest/fft_peak_fine_sampling_sync.h +tempest/infer_screen_resolution.h +/home/emidan19/gr-tempest/swig/tempest/infer_screen_resolution.h +tempest/ssamp_correction.h +/home/emidan19/gr-tempest/swig/tempest/ssamp_correction.h + diff --git a/build/swig/CMakeFiles/tempest_swig_swig_compilation.dir/DependInfo.cmake b/build/swig/CMakeFiles/tempest_swig_swig_compilation.dir/DependInfo.cmake new file mode 100644 index 0000000..79a4080 --- /dev/null +++ b/build/swig/CMakeFiles/tempest_swig_swig_compilation.dir/DependInfo.cmake @@ -0,0 +1,20 @@ +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + "CXX" + ) +# The set of files for implicit dependencies of each language: +set(CMAKE_DEPENDS_CHECK_CXX + "/home/emidan19/gr-tempest/swig/tempest_swig.i" "/home/emidan19/gr-tempest/build/swig/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON.stamp" + ) +set(CMAKE_CXX_COMPILER_ID "GNU") + +# The include file search paths: +set(CMAKE_CXX_TARGET_INCLUDE_PATH + ) + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/build/swig/CMakeFiles/tempest_swig_swig_compilation.dir/build.make b/build/swig/CMakeFiles/tempest_swig_swig_compilation.dir/build.make new file mode 100644 index 0000000..3b85b63 --- /dev/null +++ b/build/swig/CMakeFiles/tempest_swig_swig_compilation.dir/build.make @@ -0,0 +1,85 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.16 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E remove -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/emidan19/gr-tempest + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/emidan19/gr-tempest/build + +# Utility rule file for tempest_swig_swig_compilation. + +# Include the progress variables for this target. +include swig/CMakeFiles/tempest_swig_swig_compilation.dir/progress.make + +swig/CMakeFiles/tempest_swig_swig_compilation: swig/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON.stamp + + +swig/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON.stamp: /usr/lib/python3/dist-packages/gnuradio/gr/_runtime_swig.so +swig/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON.stamp: ../swig/tempest_swig.i +swig/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON.stamp: ../swig/tempest_swig.i + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --blue --bold --progress-dir=/home/emidan19/gr-tempest/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Swig source tempest_swig.i" + cd /home/emidan19/gr-tempest/build/swig && /usr/bin/cmake -E make_directory /home/emidan19/gr-tempest/build/swig /home/emidan19/gr-tempest/build/swig/CMakeFiles/tempest_swig.dir + cd /home/emidan19/gr-tempest/build/swig && /usr/bin/cmake -E touch /home/emidan19/gr-tempest/build/swig/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON.stamp + cd /home/emidan19/gr-tempest/build/swig && /usr/bin/cmake -E env SWIG_LIB=/usr/share/swig4.0 /usr/bin/swig4.0 -python -fvirtual -keyword -w511 -w314 -relativeimport -py3 -module tempest_swig -I/home/emidan19/gr-tempest/build/swig -I/home/emidan19/gr-tempest/swig -I/usr/include/gnuradio/swig -I/usr/include/python3.8 -I/usr/include -I/usr/include -I/usr/include -I/usr/include -I/usr/include -I/usr/include -I/usr/include -I/usr/include -I/usr/include -I/usr/include -I/usr/include -I/usr/include -I/usr/include -I/home/emidan19/gr-tempest/lib/../include -I/usr/include -I/usr/include -I/usr/include -I/usr/include -I/home/emidan19/gr-tempest/build/swig -I/home/emidan19/gr-tempest/swig -I/usr/include/gnuradio/swig -I/usr/include/python3.8 -I/usr/include -I/usr/include -I/usr/include -I/usr/include -I/usr/include -I/usr/include -I/usr/include -I/usr/include -I/usr/include -I/usr/include -I/usr/include -I/usr/include -I/usr/include -I/home/emidan19/gr-tempest/lib/../include -I/usr/include -I/usr/include -I/usr/include -I/usr/include -outdir /home/emidan19/gr-tempest/build/swig -c++ -o /home/emidan19/gr-tempest/build/swig/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx /home/emidan19/gr-tempest/swig/tempest_swig.i + +tempest_swig_swig_compilation: swig/CMakeFiles/tempest_swig_swig_compilation +tempest_swig_swig_compilation: swig/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON.stamp +tempest_swig_swig_compilation: swig/CMakeFiles/tempest_swig_swig_compilation.dir/build.make + +.PHONY : tempest_swig_swig_compilation + +# Rule to build all files generated by this target. +swig/CMakeFiles/tempest_swig_swig_compilation.dir/build: tempest_swig_swig_compilation + +.PHONY : swig/CMakeFiles/tempest_swig_swig_compilation.dir/build + +swig/CMakeFiles/tempest_swig_swig_compilation.dir/clean: + cd /home/emidan19/gr-tempest/build/swig && $(CMAKE_COMMAND) -P CMakeFiles/tempest_swig_swig_compilation.dir/cmake_clean.cmake +.PHONY : swig/CMakeFiles/tempest_swig_swig_compilation.dir/clean + +swig/CMakeFiles/tempest_swig_swig_compilation.dir/depend: + cd /home/emidan19/gr-tempest/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/emidan19/gr-tempest /home/emidan19/gr-tempest/swig /home/emidan19/gr-tempest/build /home/emidan19/gr-tempest/build/swig /home/emidan19/gr-tempest/build/swig/CMakeFiles/tempest_swig_swig_compilation.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : swig/CMakeFiles/tempest_swig_swig_compilation.dir/depend + diff --git a/build/swig/CMakeFiles/tempest_swig_swig_compilation.dir/cmake_clean.cmake b/build/swig/CMakeFiles/tempest_swig_swig_compilation.dir/cmake_clean.cmake new file mode 100644 index 0000000..f72178c --- /dev/null +++ b/build/swig/CMakeFiles/tempest_swig_swig_compilation.dir/cmake_clean.cmake @@ -0,0 +1,14 @@ +file(REMOVE_RECURSE + "CMakeFiles/tempest_swig.dir/tempest_swigPYTHON.stamp" + "CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx" + "tempest_swig.py" + "CMakeFiles/tempest_swig.dir/tempest_swigPYTHON.stamp" + "CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx" + "CMakeFiles/tempest_swig_swig_compilation" + "tempest_swig.py" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/tempest_swig_swig_compilation.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/build/swig/CMakeFiles/tempest_swig_swig_compilation.dir/depend.internal b/build/swig/CMakeFiles/tempest_swig_swig_compilation.dir/depend.internal new file mode 100644 index 0000000..0e9b2a5 --- /dev/null +++ b/build/swig/CMakeFiles/tempest_swig_swig_compilation.dir/depend.internal @@ -0,0 +1,5 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.16 + +swig/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON.stamp + /home/emidan19/gr-tempest/swig/tempest_swig.i diff --git a/build/swig/CMakeFiles/tempest_swig_swig_compilation.dir/depend.make b/build/swig/CMakeFiles/tempest_swig_swig_compilation.dir/depend.make new file mode 100644 index 0000000..7a84843 --- /dev/null +++ b/build/swig/CMakeFiles/tempest_swig_swig_compilation.dir/depend.make @@ -0,0 +1,5 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.16 + +swig/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON.stamp: ../swig/tempest_swig.i + diff --git a/build/swig/CMakeFiles/tempest_swig_swig_compilation.dir/progress.make b/build/swig/CMakeFiles/tempest_swig_swig_compilation.dir/progress.make new file mode 100644 index 0000000..e9ac291 --- /dev/null +++ b/build/swig/CMakeFiles/tempest_swig_swig_compilation.dir/progress.make @@ -0,0 +1,2 @@ +CMAKE_PROGRESS_1 = 18 + diff --git a/build/swig/CMakeFiles/tempest_swig_swig_doc.dir/DependInfo.cmake b/build/swig/CMakeFiles/tempest_swig_swig_doc.dir/DependInfo.cmake new file mode 100644 index 0000000..19fab21 --- /dev/null +++ b/build/swig/CMakeFiles/tempest_swig_swig_doc.dir/DependInfo.cmake @@ -0,0 +1,11 @@ +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) +# The set of files for implicit dependencies of each language: + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/build/swig/CMakeFiles/tempest_swig_swig_doc.dir/build.make b/build/swig/CMakeFiles/tempest_swig_swig_doc.dir/build.make new file mode 100644 index 0000000..0dd2970 --- /dev/null +++ b/build/swig/CMakeFiles/tempest_swig_swig_doc.dir/build.make @@ -0,0 +1,76 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.16 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E remove -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/emidan19/gr-tempest + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/emidan19/gr-tempest/build + +# Utility rule file for tempest_swig_swig_doc. + +# Include the progress variables for this target. +include swig/CMakeFiles/tempest_swig_swig_doc.dir/progress.make + +swig/CMakeFiles/tempest_swig_swig_doc: swig/tempest_swig_doc.i + + +tempest_swig_swig_doc: swig/CMakeFiles/tempest_swig_swig_doc +tempest_swig_swig_doc: swig/CMakeFiles/tempest_swig_swig_doc.dir/build.make + +.PHONY : tempest_swig_swig_doc + +# Rule to build all files generated by this target. +swig/CMakeFiles/tempest_swig_swig_doc.dir/build: tempest_swig_swig_doc + +.PHONY : swig/CMakeFiles/tempest_swig_swig_doc.dir/build + +swig/CMakeFiles/tempest_swig_swig_doc.dir/clean: + cd /home/emidan19/gr-tempest/build/swig && $(CMAKE_COMMAND) -P CMakeFiles/tempest_swig_swig_doc.dir/cmake_clean.cmake +.PHONY : swig/CMakeFiles/tempest_swig_swig_doc.dir/clean + +swig/CMakeFiles/tempest_swig_swig_doc.dir/depend: + cd /home/emidan19/gr-tempest/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/emidan19/gr-tempest /home/emidan19/gr-tempest/swig /home/emidan19/gr-tempest/build /home/emidan19/gr-tempest/build/swig /home/emidan19/gr-tempest/build/swig/CMakeFiles/tempest_swig_swig_doc.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : swig/CMakeFiles/tempest_swig_swig_doc.dir/depend + diff --git a/build/swig/CMakeFiles/tempest_swig_swig_doc.dir/cmake_clean.cmake b/build/swig/CMakeFiles/tempest_swig_swig_doc.dir/cmake_clean.cmake new file mode 100644 index 0000000..1d5eef0 --- /dev/null +++ b/build/swig/CMakeFiles/tempest_swig_swig_doc.dir/cmake_clean.cmake @@ -0,0 +1,11 @@ +file(REMOVE_RECURSE + "CMakeFiles/tempest_swig.dir/tempest_swigPYTHON.stamp" + "CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx" + "tempest_swig.py" + "CMakeFiles/tempest_swig_swig_doc" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/tempest_swig_swig_doc.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/build/swig/CMakeFiles/tempest_swig_swig_doc.dir/depend.internal b/build/swig/CMakeFiles/tempest_swig_swig_doc.dir/depend.internal new file mode 100644 index 0000000..f647855 --- /dev/null +++ b/build/swig/CMakeFiles/tempest_swig_swig_doc.dir/depend.internal @@ -0,0 +1,3 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.16 + diff --git a/build/swig/CMakeFiles/tempest_swig_swig_doc.dir/depend.make b/build/swig/CMakeFiles/tempest_swig_swig_doc.dir/depend.make new file mode 100644 index 0000000..f647855 --- /dev/null +++ b/build/swig/CMakeFiles/tempest_swig_swig_doc.dir/depend.make @@ -0,0 +1,3 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.16 + diff --git a/build/swig/CMakeFiles/tempest_swig_swig_doc.dir/progress.make b/build/swig/CMakeFiles/tempest_swig_swig_doc.dir/progress.make new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/build/swig/CMakeFiles/tempest_swig_swig_doc.dir/progress.make @@ -0,0 +1 @@ + diff --git a/build/swig/CTestTestfile.cmake b/build/swig/CTestTestfile.cmake new file mode 100644 index 0000000..7315998 --- /dev/null +++ b/build/swig/CTestTestfile.cmake @@ -0,0 +1,6 @@ +# CMake generated Testfile for +# Source directory: /home/emidan19/gr-tempest/swig +# Build directory: /home/emidan19/gr-tempest/build/swig +# +# This file includes the relevant testing commands required for +# testing this directory and lists subdirectories to be tested as well. diff --git a/build/swig/Makefile b/build/swig/Makefile new file mode 100644 index 0000000..60b98ed --- /dev/null +++ b/build/swig/Makefile @@ -0,0 +1,290 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.16 + +# Default target executed when no arguments are given to make. +default_target: all + +.PHONY : default_target + +# Allow only one "make -f Makefile2" at a time, but pass parallelism. +.NOTPARALLEL: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E remove -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/emidan19/gr-tempest + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/emidan19/gr-tempest/build + +#============================================================================= +# Targets provided globally by CMake. + +# Special rule for the target install/strip +install/strip: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip + +# Special rule for the target install/strip +install/strip/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip/fast + +# Special rule for the target install/local +install/local: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local + +# Special rule for the target install/local +install/local/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local/fast + +# Special rule for the target install +install: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install + +# Special rule for the target install +install/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install/fast + +# Special rule for the target list_install_components +list_install_components: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Available install components are: \"Unspecified\"" +.PHONY : list_install_components + +# Special rule for the target list_install_components +list_install_components/fast: list_install_components + +.PHONY : list_install_components/fast + +# Special rule for the target rebuild_cache +rebuild_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..." + /usr/bin/cmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : rebuild_cache + +# Special rule for the target rebuild_cache +rebuild_cache/fast: rebuild_cache + +.PHONY : rebuild_cache/fast + +# Special rule for the target edit_cache +edit_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "No interactive CMake dialog available..." + /usr/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available. +.PHONY : edit_cache + +# Special rule for the target edit_cache +edit_cache/fast: edit_cache + +.PHONY : edit_cache/fast + +# Special rule for the target test +test: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running tests..." + /usr/bin/ctest --force-new-ctest-process $(ARGS) +.PHONY : test + +# Special rule for the target test +test/fast: test + +.PHONY : test/fast + +# The main all target +all: cmake_check_build_system + cd /home/emidan19/gr-tempest/build && $(CMAKE_COMMAND) -E cmake_progress_start /home/emidan19/gr-tempest/build/CMakeFiles /home/emidan19/gr-tempest/build/swig/CMakeFiles/progress.marks + cd /home/emidan19/gr-tempest/build && $(MAKE) -f CMakeFiles/Makefile2 swig/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/emidan19/gr-tempest/build/CMakeFiles 0 +.PHONY : all + +# The main clean target +clean: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f CMakeFiles/Makefile2 swig/clean +.PHONY : clean + +# The main clean target +clean/fast: clean + +.PHONY : clean/fast + +# Prepare targets for installation. +preinstall: all + cd /home/emidan19/gr-tempest/build && $(MAKE) -f CMakeFiles/Makefile2 swig/preinstall +.PHONY : preinstall + +# Prepare targets for installation. +preinstall/fast: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f CMakeFiles/Makefile2 swig/preinstall +.PHONY : preinstall/fast + +# clear depends +depend: + cd /home/emidan19/gr-tempest/build && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 +.PHONY : depend + +# Convenience name for target. +swig/CMakeFiles/pygen_swig_8088c.dir/rule: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f CMakeFiles/Makefile2 swig/CMakeFiles/pygen_swig_8088c.dir/rule +.PHONY : swig/CMakeFiles/pygen_swig_8088c.dir/rule + +# Convenience name for target. +pygen_swig_8088c: swig/CMakeFiles/pygen_swig_8088c.dir/rule + +.PHONY : pygen_swig_8088c + +# fast build rule for target. +pygen_swig_8088c/fast: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f swig/CMakeFiles/pygen_swig_8088c.dir/build.make swig/CMakeFiles/pygen_swig_8088c.dir/build +.PHONY : pygen_swig_8088c/fast + +# Convenience name for target. +swig/CMakeFiles/tempest_swig_swig_compilation.dir/rule: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f CMakeFiles/Makefile2 swig/CMakeFiles/tempest_swig_swig_compilation.dir/rule +.PHONY : swig/CMakeFiles/tempest_swig_swig_compilation.dir/rule + +# Convenience name for target. +tempest_swig_swig_compilation: swig/CMakeFiles/tempest_swig_swig_compilation.dir/rule + +.PHONY : tempest_swig_swig_compilation + +# fast build rule for target. +tempest_swig_swig_compilation/fast: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f swig/CMakeFiles/tempest_swig_swig_compilation.dir/build.make swig/CMakeFiles/tempest_swig_swig_compilation.dir/build +.PHONY : tempest_swig_swig_compilation/fast + +# Convenience name for target. +swig/CMakeFiles/tempest_swig.dir/rule: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f CMakeFiles/Makefile2 swig/CMakeFiles/tempest_swig.dir/rule +.PHONY : swig/CMakeFiles/tempest_swig.dir/rule + +# Convenience name for target. +tempest_swig: swig/CMakeFiles/tempest_swig.dir/rule + +.PHONY : tempest_swig + +# fast build rule for target. +tempest_swig/fast: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f swig/CMakeFiles/tempest_swig.dir/build.make swig/CMakeFiles/tempest_swig.dir/build +.PHONY : tempest_swig/fast + +# Convenience name for target. +swig/CMakeFiles/tempest_swig_swig_doc.dir/rule: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f CMakeFiles/Makefile2 swig/CMakeFiles/tempest_swig_swig_doc.dir/rule +.PHONY : swig/CMakeFiles/tempest_swig_swig_doc.dir/rule + +# Convenience name for target. +tempest_swig_swig_doc: swig/CMakeFiles/tempest_swig_swig_doc.dir/rule + +.PHONY : tempest_swig_swig_doc + +# fast build rule for target. +tempest_swig_swig_doc/fast: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f swig/CMakeFiles/tempest_swig_swig_doc.dir/build.make swig/CMakeFiles/tempest_swig_swig_doc.dir/build +.PHONY : tempest_swig_swig_doc/fast + +CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.o: CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o + +.PHONY : CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.o + +# target to build an object file +CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f swig/CMakeFiles/tempest_swig.dir/build.make swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o +.PHONY : CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.o + +CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.i: CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.i + +.PHONY : CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.i + +# target to preprocess a source file +CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.i: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f swig/CMakeFiles/tempest_swig.dir/build.make swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.i +.PHONY : CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.i + +CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.s: CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.s + +.PHONY : CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.s + +# target to generate assembly for a file +CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.s: + cd /home/emidan19/gr-tempest/build && $(MAKE) -f swig/CMakeFiles/tempest_swig.dir/build.make swig/CMakeFiles/tempest_swig.dir/CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.s +.PHONY : CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.cxx.s + +# Help Target +help: + @echo "The following are some of the valid targets for this Makefile:" + @echo "... all (the default if no target is provided)" + @echo "... clean" + @echo "... depend" + @echo "... install/strip" + @echo "... install/local" + @echo "... install" + @echo "... list_install_components" + @echo "... rebuild_cache" + @echo "... edit_cache" + @echo "... test" + @echo "... pygen_swig_8088c" + @echo "... tempest_swig_swig_compilation" + @echo "... tempest_swig" + @echo "... tempest_swig_swig_doc" + @echo "... CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.o" + @echo "... CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.i" + @echo "... CMakeFiles/tempest_swig.dir/tempest_swigPYTHON_wrap.s" +.PHONY : help + + + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + cd /home/emidan19/gr-tempest/build && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/build/swig/_tempest_swig.so b/build/swig/_tempest_swig.so new file mode 100755 index 0000000000000000000000000000000000000000..cfbc9e36d83d558f65f523d4ae51df48b1ed4232 GIT binary patch literal 1295136 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 WI+s_v)ikgB_>x|6EgsJgkT8>-r` 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�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

?z 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 z%0D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�e@N(eD#|$@`QYs(e<*GaJy3^8AU~N6_`6Uxao} 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" % (self.__class__.__module__, self.__class__.__name__, strthis,) + + +def _swig_setattr_nondynamic_instance_variable(set): + def set_instance_attr(self, name, value): + if name == "thisown": + self.this.own(value) + elif name == "this": + set(self, name, value) + elif hasattr(self, name) and isinstance(getattr(type(self), name), property): + set(self, name, value) + else: + raise AttributeError("You cannot add instance attributes to %s" % self) + return set_instance_attr + + +def _swig_setattr_nondynamic_class_variable(set): + def set_class_attr(cls, name, value): + if hasattr(cls, name) and not isinstance(getattr(cls, name), property): + set(cls, name, value) + else: + raise AttributeError("You cannot add class attributes to %s" % cls) + return set_class_attr + + +def _swig_add_metaclass(metaclass): + """Class decorator for adding a metaclass to a SWIG wrapped class - a slimmed down version of six.add_metaclass""" + def wrapper(cls): + return metaclass(cls.__name__, cls.__bases__, cls.__dict__.copy()) + return wrapper + + +class _SwigNonDynamicMeta(type): + """Meta class to enforce nondynamic attributes (no new attributes) for a class""" + __setattr__ = _swig_setattr_nondynamic_class_variable(type.__setattr__) + + + +def high_res_timer_now() -> "gr::high_res_timer_type": + r"""high_res_timer_now() -> gr::high_res_timer_type""" + return _tempest_swig.high_res_timer_now() + +def high_res_timer_now_perfmon() -> "gr::high_res_timer_type": + r"""high_res_timer_now_perfmon() -> gr::high_res_timer_type""" + return _tempest_swig.high_res_timer_now_perfmon() + +def high_res_timer_tps() -> "gr::high_res_timer_type": + r"""high_res_timer_tps() -> gr::high_res_timer_type""" + return _tempest_swig.high_res_timer_tps() + +def high_res_timer_epoch() -> "gr::high_res_timer_type": + r"""high_res_timer_epoch() -> gr::high_res_timer_type""" + return _tempest_swig.high_res_timer_epoch() +class sampling_synchronization(object): + r"""Proxy of C++ gr::tempest::sampling_synchronization class.""" + + thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag") + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + + @staticmethod + def make(Htotal: "int", manual_correction: "double") -> "gr::tempest::sampling_synchronization::sptr": + r"""make(int Htotal, double manual_correction) -> sampling_synchronization_sptr""" + return _tempest_swig.sampling_synchronization_make(Htotal, manual_correction) + + def set_Htotal(self, Htotal: "int") -> "void": + r"""set_Htotal(sampling_synchronization self, int Htotal)""" + return _tempest_swig.sampling_synchronization_set_Htotal(self, Htotal) + + def set_manual_correction(self, correction: "double") -> "void": + r"""set_manual_correction(sampling_synchronization self, double correction)""" + return _tempest_swig.sampling_synchronization_set_manual_correction(self, correction) + __swig_destroy__ = _tempest_swig.delete_sampling_synchronization + +# Register sampling_synchronization in _tempest_swig: +_tempest_swig.sampling_synchronization_swigregister(sampling_synchronization) + +def sampling_synchronization_make(Htotal: "int", manual_correction: "double") -> "gr::tempest::sampling_synchronization::sptr": + r"""sampling_synchronization_make(int Htotal, double manual_correction) -> sampling_synchronization_sptr""" + return _tempest_swig.sampling_synchronization_make(Htotal, manual_correction) + +class sampling_synchronization_sptr(object): + r"""Proxy of C++ boost::shared_ptr< gr::tempest::sampling_synchronization > class.""" + + thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag") + __repr__ = _swig_repr + + def __init__(self, *args): + r""" + __init__(sampling_synchronization_sptr self) -> sampling_synchronization_sptr + __init__(sampling_synchronization_sptr self, sampling_synchronization p) -> sampling_synchronization_sptr + """ + _tempest_swig.sampling_synchronization_sptr_swiginit(self, _tempest_swig.new_sampling_synchronization_sptr(*args)) + + def __deref__(self) -> "gr::tempest::sampling_synchronization *": + r"""__deref__(sampling_synchronization_sptr self) -> sampling_synchronization""" + return _tempest_swig.sampling_synchronization_sptr___deref__(self) + __swig_destroy__ = _tempest_swig.delete_sampling_synchronization_sptr + + def make(self, Htotal: "int", manual_correction: "double") -> "gr::tempest::sampling_synchronization::sptr": + r"""make(sampling_synchronization_sptr self, int Htotal, double manual_correction) -> sampling_synchronization_sptr""" + return _tempest_swig.sampling_synchronization_sptr_make(self, Htotal, manual_correction) + + def set_Htotal(self, Htotal: "int") -> "void": + r"""set_Htotal(sampling_synchronization_sptr self, int Htotal)""" + return _tempest_swig.sampling_synchronization_sptr_set_Htotal(self, Htotal) + + def set_manual_correction(self, correction: "double") -> "void": + r"""set_manual_correction(sampling_synchronization_sptr self, double correction)""" + return _tempest_swig.sampling_synchronization_sptr_set_manual_correction(self, correction) + + def history(self) -> "unsigned int": + r"""history(sampling_synchronization_sptr self) -> unsigned int""" + return _tempest_swig.sampling_synchronization_sptr_history(self) + + def declare_sample_delay(self, *args) -> "void": + r""" + declare_sample_delay(sampling_synchronization_sptr self, int which, int delay) + declare_sample_delay(sampling_synchronization_sptr self, unsigned int delay) + """ + return _tempest_swig.sampling_synchronization_sptr_declare_sample_delay(self, *args) + + def sample_delay(self, which: "int") -> "unsigned int": + r"""sample_delay(sampling_synchronization_sptr self, int which) -> unsigned int""" + return _tempest_swig.sampling_synchronization_sptr_sample_delay(self, which) + + def set_output_multiple(self, multiple: "int") -> "void": + r"""set_output_multiple(sampling_synchronization_sptr self, int multiple)""" + return _tempest_swig.sampling_synchronization_sptr_set_output_multiple(self, multiple) + + def output_multiple(self) -> "int": + r"""output_multiple(sampling_synchronization_sptr self) -> int""" + return _tempest_swig.sampling_synchronization_sptr_output_multiple(self) + + def relative_rate(self) -> "double": + r"""relative_rate(sampling_synchronization_sptr self) -> double""" + return _tempest_swig.sampling_synchronization_sptr_relative_rate(self) + + def relative_rate_i(self) -> "uint64_t": + r"""relative_rate_i(sampling_synchronization_sptr self) -> uint64_t""" + return _tempest_swig.sampling_synchronization_sptr_relative_rate_i(self) + + def relative_rate_d(self) -> "uint64_t": + r"""relative_rate_d(sampling_synchronization_sptr self) -> uint64_t""" + return _tempest_swig.sampling_synchronization_sptr_relative_rate_d(self) + + def start(self) -> "bool": + r"""start(sampling_synchronization_sptr self) -> bool""" + return _tempest_swig.sampling_synchronization_sptr_start(self) + + def stop(self) -> "bool": + r"""stop(sampling_synchronization_sptr self) -> bool""" + return _tempest_swig.sampling_synchronization_sptr_stop(self) + + def nitems_read(self, which_input: "unsigned int") -> "uint64_t": + r"""nitems_read(sampling_synchronization_sptr self, unsigned int which_input) -> uint64_t""" + return _tempest_swig.sampling_synchronization_sptr_nitems_read(self, which_input) + + def nitems_written(self, which_output: "unsigned int") -> "uint64_t": + r"""nitems_written(sampling_synchronization_sptr self, unsigned int which_output) -> uint64_t""" + return _tempest_swig.sampling_synchronization_sptr_nitems_written(self, which_output) + + def set_log_level(self, level: "std::string") -> "void": + r"""set_log_level(sampling_synchronization_sptr self, std::string level)""" + return _tempest_swig.sampling_synchronization_sptr_set_log_level(self, level) + + def log_level(self) -> "std::string": + r"""log_level(sampling_synchronization_sptr self) -> std::string""" + return _tempest_swig.sampling_synchronization_sptr_log_level(self) + + def max_noutput_items(self) -> "int": + r"""max_noutput_items(sampling_synchronization_sptr self) -> int""" + return _tempest_swig.sampling_synchronization_sptr_max_noutput_items(self) + + def set_max_noutput_items(self, m: "int") -> "void": + r"""set_max_noutput_items(sampling_synchronization_sptr self, int m)""" + return _tempest_swig.sampling_synchronization_sptr_set_max_noutput_items(self, m) + + def unset_max_noutput_items(self) -> "void": + r"""unset_max_noutput_items(sampling_synchronization_sptr self)""" + return _tempest_swig.sampling_synchronization_sptr_unset_max_noutput_items(self) + + def is_set_max_noutput_items(self) -> "bool": + r"""is_set_max_noutput_items(sampling_synchronization_sptr self) -> bool""" + return _tempest_swig.sampling_synchronization_sptr_is_set_max_noutput_items(self) + + def set_min_noutput_items(self, m: "int") -> "void": + r"""set_min_noutput_items(sampling_synchronization_sptr self, int m)""" + return _tempest_swig.sampling_synchronization_sptr_set_min_noutput_items(self, m) + + def min_noutput_items(self) -> "int": + r"""min_noutput_items(sampling_synchronization_sptr self) -> int""" + return _tempest_swig.sampling_synchronization_sptr_min_noutput_items(self) + + def max_output_buffer(self, i: "int") -> "long": + r"""max_output_buffer(sampling_synchronization_sptr self, int i) -> long""" + return _tempest_swig.sampling_synchronization_sptr_max_output_buffer(self, i) + + def set_max_output_buffer(self, *args) -> "void": + r""" + set_max_output_buffer(sampling_synchronization_sptr self, long max_output_buffer) + set_max_output_buffer(sampling_synchronization_sptr self, int port, long max_output_buffer) + """ + return _tempest_swig.sampling_synchronization_sptr_set_max_output_buffer(self, *args) + + def min_output_buffer(self, i: "int") -> "long": + r"""min_output_buffer(sampling_synchronization_sptr self, int i) -> long""" + return _tempest_swig.sampling_synchronization_sptr_min_output_buffer(self, i) + + def set_min_output_buffer(self, *args) -> "void": + r""" + set_min_output_buffer(sampling_synchronization_sptr self, long min_output_buffer) + set_min_output_buffer(sampling_synchronization_sptr self, int port, long min_output_buffer) + """ + return _tempest_swig.sampling_synchronization_sptr_set_min_output_buffer(self, *args) + + def pc_noutput_items(self) -> "float": + r"""pc_noutput_items(sampling_synchronization_sptr self) -> float""" + return _tempest_swig.sampling_synchronization_sptr_pc_noutput_items(self) + + def pc_noutput_items_avg(self) -> "float": + r"""pc_noutput_items_avg(sampling_synchronization_sptr self) -> float""" + return _tempest_swig.sampling_synchronization_sptr_pc_noutput_items_avg(self) + + def pc_noutput_items_var(self) -> "float": + r"""pc_noutput_items_var(sampling_synchronization_sptr self) -> float""" + return _tempest_swig.sampling_synchronization_sptr_pc_noutput_items_var(self) + + def pc_nproduced(self) -> "float": + r"""pc_nproduced(sampling_synchronization_sptr self) -> float""" + return _tempest_swig.sampling_synchronization_sptr_pc_nproduced(self) + + def pc_nproduced_avg(self) -> "float": + r"""pc_nproduced_avg(sampling_synchronization_sptr self) -> float""" + return _tempest_swig.sampling_synchronization_sptr_pc_nproduced_avg(self) + + def pc_nproduced_var(self) -> "float": + r"""pc_nproduced_var(sampling_synchronization_sptr self) -> float""" + return _tempest_swig.sampling_synchronization_sptr_pc_nproduced_var(self) + + def pc_input_buffers_full(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_input_buffers_full(sampling_synchronization_sptr self, int which) -> float + pc_input_buffers_full(sampling_synchronization_sptr self) -> pmt_vector_float + """ + return _tempest_swig.sampling_synchronization_sptr_pc_input_buffers_full(self, *args) + + def pc_input_buffers_full_avg(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_input_buffers_full_avg(sampling_synchronization_sptr self, int which) -> float + pc_input_buffers_full_avg(sampling_synchronization_sptr self) -> pmt_vector_float + """ + return _tempest_swig.sampling_synchronization_sptr_pc_input_buffers_full_avg(self, *args) + + def pc_input_buffers_full_var(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_input_buffers_full_var(sampling_synchronization_sptr self, int which) -> float + pc_input_buffers_full_var(sampling_synchronization_sptr self) -> pmt_vector_float + """ + return _tempest_swig.sampling_synchronization_sptr_pc_input_buffers_full_var(self, *args) + + def pc_output_buffers_full(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_output_buffers_full(sampling_synchronization_sptr self, int which) -> float + pc_output_buffers_full(sampling_synchronization_sptr self) -> pmt_vector_float + """ + return _tempest_swig.sampling_synchronization_sptr_pc_output_buffers_full(self, *args) + + def pc_output_buffers_full_avg(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_output_buffers_full_avg(sampling_synchronization_sptr self, int which) -> float + pc_output_buffers_full_avg(sampling_synchronization_sptr self) -> pmt_vector_float + """ + return _tempest_swig.sampling_synchronization_sptr_pc_output_buffers_full_avg(self, *args) + + def pc_output_buffers_full_var(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_output_buffers_full_var(sampling_synchronization_sptr self, int which) -> float + pc_output_buffers_full_var(sampling_synchronization_sptr self) -> pmt_vector_float + """ + return _tempest_swig.sampling_synchronization_sptr_pc_output_buffers_full_var(self, *args) + + def pc_work_time(self) -> "float": + r"""pc_work_time(sampling_synchronization_sptr self) -> float""" + return _tempest_swig.sampling_synchronization_sptr_pc_work_time(self) + + def pc_work_time_avg(self) -> "float": + r"""pc_work_time_avg(sampling_synchronization_sptr self) -> float""" + return _tempest_swig.sampling_synchronization_sptr_pc_work_time_avg(self) + + def pc_work_time_var(self) -> "float": + r"""pc_work_time_var(sampling_synchronization_sptr self) -> float""" + return _tempest_swig.sampling_synchronization_sptr_pc_work_time_var(self) + + def pc_work_time_total(self) -> "float": + r"""pc_work_time_total(sampling_synchronization_sptr self) -> float""" + return _tempest_swig.sampling_synchronization_sptr_pc_work_time_total(self) + + def pc_throughput_avg(self) -> "float": + r"""pc_throughput_avg(sampling_synchronization_sptr self) -> float""" + return _tempest_swig.sampling_synchronization_sptr_pc_throughput_avg(self) + + def set_processor_affinity(self, mask: "std::vector< int,std::allocator< int > > const &") -> "void": + r"""set_processor_affinity(sampling_synchronization_sptr self, std::vector< int,std::allocator< int > > const & mask)""" + return _tempest_swig.sampling_synchronization_sptr_set_processor_affinity(self, mask) + + def unset_processor_affinity(self) -> "void": + r"""unset_processor_affinity(sampling_synchronization_sptr self)""" + return _tempest_swig.sampling_synchronization_sptr_unset_processor_affinity(self) + + def processor_affinity(self) -> "std::vector< int,std::allocator< int > >": + r"""processor_affinity(sampling_synchronization_sptr self) -> std::vector< int,std::allocator< int > >""" + return _tempest_swig.sampling_synchronization_sptr_processor_affinity(self) + + def active_thread_priority(self) -> "int": + r"""active_thread_priority(sampling_synchronization_sptr self) -> int""" + return _tempest_swig.sampling_synchronization_sptr_active_thread_priority(self) + + def thread_priority(self) -> "int": + r"""thread_priority(sampling_synchronization_sptr self) -> int""" + return _tempest_swig.sampling_synchronization_sptr_thread_priority(self) + + def set_thread_priority(self, priority: "int") -> "int": + r"""set_thread_priority(sampling_synchronization_sptr self, int priority) -> int""" + return _tempest_swig.sampling_synchronization_sptr_set_thread_priority(self, priority) + + def name(self) -> "std::string": + r"""name(sampling_synchronization_sptr self) -> std::string""" + return _tempest_swig.sampling_synchronization_sptr_name(self) + + def symbol_name(self) -> "std::string": + r"""symbol_name(sampling_synchronization_sptr self) -> std::string""" + return _tempest_swig.sampling_synchronization_sptr_symbol_name(self) + + def input_signature(self) -> "gr::io_signature::sptr": + r"""input_signature(sampling_synchronization_sptr self) -> io_signature_sptr""" + return _tempest_swig.sampling_synchronization_sptr_input_signature(self) + + def output_signature(self) -> "gr::io_signature::sptr": + r"""output_signature(sampling_synchronization_sptr self) -> io_signature_sptr""" + return _tempest_swig.sampling_synchronization_sptr_output_signature(self) + + def unique_id(self) -> "long": + r"""unique_id(sampling_synchronization_sptr self) -> long""" + return _tempest_swig.sampling_synchronization_sptr_unique_id(self) + + def to_basic_block(self) -> "gr::basic_block_sptr": + r"""to_basic_block(sampling_synchronization_sptr self) -> basic_block_sptr""" + return _tempest_swig.sampling_synchronization_sptr_to_basic_block(self) + + def check_topology(self, ninputs: "int", noutputs: "int") -> "bool": + r"""check_topology(sampling_synchronization_sptr self, int ninputs, int noutputs) -> bool""" + return _tempest_swig.sampling_synchronization_sptr_check_topology(self, ninputs, noutputs) + + def alias(self) -> "std::string": + r"""alias(sampling_synchronization_sptr self) -> std::string""" + return _tempest_swig.sampling_synchronization_sptr_alias(self) + + def set_block_alias(self, name: "std::string") -> "void": + r"""set_block_alias(sampling_synchronization_sptr self, std::string name)""" + return _tempest_swig.sampling_synchronization_sptr_set_block_alias(self, name) + + def _post(self, which_port: "swig_pmt_ptr", msg: "swig_pmt_ptr") -> "void": + r"""_post(sampling_synchronization_sptr self, swig_pmt_ptr which_port, swig_pmt_ptr msg)""" + return _tempest_swig.sampling_synchronization_sptr__post(self, which_port, msg) + + def message_ports_in(self) -> "pmt::pmt_t": + r"""message_ports_in(sampling_synchronization_sptr self) -> swig_pmt_ptr""" + return _tempest_swig.sampling_synchronization_sptr_message_ports_in(self) + + def message_ports_out(self) -> "pmt::pmt_t": + r"""message_ports_out(sampling_synchronization_sptr self) -> swig_pmt_ptr""" + return _tempest_swig.sampling_synchronization_sptr_message_ports_out(self) + + def message_subscribers(self, which_port: "swig_pmt_ptr") -> "pmt::pmt_t": + r"""message_subscribers(sampling_synchronization_sptr self, swig_pmt_ptr which_port) -> swig_pmt_ptr""" + return _tempest_swig.sampling_synchronization_sptr_message_subscribers(self, which_port) + +# Register sampling_synchronization_sptr in _tempest_swig: +_tempest_swig.sampling_synchronization_sptr_swigregister(sampling_synchronization_sptr) + + +sampling_synchronization_sptr.__repr__ = lambda self: "" % (self.name(), self.unique_id()) +sampling_synchronization = sampling_synchronization.make; + +class framing(object): + r"""Proxy of C++ gr::tempest::framing class.""" + + thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag") + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + + @staticmethod + def make(Htotal: "int", Vtotal: "int", Hdisplay: "int", Vdisplay: "int") -> "gr::tempest::framing::sptr": + r"""make(int Htotal, int Vtotal, int Hdisplay, int Vdisplay) -> framing_sptr""" + return _tempest_swig.framing_make(Htotal, Vtotal, Hdisplay, Vdisplay) + + def set_Htotal_and_Vtotal(self, Htotal: "int", Vtotal: "int") -> "void": + r"""set_Htotal_and_Vtotal(framing self, int Htotal, int Vtotal)""" + return _tempest_swig.framing_set_Htotal_and_Vtotal(self, Htotal, Vtotal) + __swig_destroy__ = _tempest_swig.delete_framing + +# Register framing in _tempest_swig: +_tempest_swig.framing_swigregister(framing) + +def framing_make(Htotal: "int", Vtotal: "int", Hdisplay: "int", Vdisplay: "int") -> "gr::tempest::framing::sptr": + r"""framing_make(int Htotal, int Vtotal, int Hdisplay, int Vdisplay) -> framing_sptr""" + return _tempest_swig.framing_make(Htotal, Vtotal, Hdisplay, Vdisplay) + +class framing_sptr(object): + r"""Proxy of C++ boost::shared_ptr< gr::tempest::framing > class.""" + + thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag") + __repr__ = _swig_repr + + def __init__(self, *args): + r""" + __init__(framing_sptr self) -> framing_sptr + __init__(framing_sptr self, framing p) -> framing_sptr + """ + _tempest_swig.framing_sptr_swiginit(self, _tempest_swig.new_framing_sptr(*args)) + + def __deref__(self) -> "gr::tempest::framing *": + r"""__deref__(framing_sptr self) -> framing""" + return _tempest_swig.framing_sptr___deref__(self) + __swig_destroy__ = _tempest_swig.delete_framing_sptr + + def make(self, Htotal: "int", Vtotal: "int", Hdisplay: "int", Vdisplay: "int") -> "gr::tempest::framing::sptr": + r"""make(framing_sptr self, int Htotal, int Vtotal, int Hdisplay, int Vdisplay) -> framing_sptr""" + return _tempest_swig.framing_sptr_make(self, Htotal, Vtotal, Hdisplay, Vdisplay) + + def set_Htotal_and_Vtotal(self, Htotal: "int", Vtotal: "int") -> "void": + r"""set_Htotal_and_Vtotal(framing_sptr self, int Htotal, int Vtotal)""" + return _tempest_swig.framing_sptr_set_Htotal_and_Vtotal(self, Htotal, Vtotal) + + def history(self) -> "unsigned int": + r"""history(framing_sptr self) -> unsigned int""" + return _tempest_swig.framing_sptr_history(self) + + def declare_sample_delay(self, *args) -> "void": + r""" + declare_sample_delay(framing_sptr self, int which, int delay) + declare_sample_delay(framing_sptr self, unsigned int delay) + """ + return _tempest_swig.framing_sptr_declare_sample_delay(self, *args) + + def sample_delay(self, which: "int") -> "unsigned int": + r"""sample_delay(framing_sptr self, int which) -> unsigned int""" + return _tempest_swig.framing_sptr_sample_delay(self, which) + + def set_output_multiple(self, multiple: "int") -> "void": + r"""set_output_multiple(framing_sptr self, int multiple)""" + return _tempest_swig.framing_sptr_set_output_multiple(self, multiple) + + def output_multiple(self) -> "int": + r"""output_multiple(framing_sptr self) -> int""" + return _tempest_swig.framing_sptr_output_multiple(self) + + def relative_rate(self) -> "double": + r"""relative_rate(framing_sptr self) -> double""" + return _tempest_swig.framing_sptr_relative_rate(self) + + def relative_rate_i(self) -> "uint64_t": + r"""relative_rate_i(framing_sptr self) -> uint64_t""" + return _tempest_swig.framing_sptr_relative_rate_i(self) + + def relative_rate_d(self) -> "uint64_t": + r"""relative_rate_d(framing_sptr self) -> uint64_t""" + return _tempest_swig.framing_sptr_relative_rate_d(self) + + def start(self) -> "bool": + r"""start(framing_sptr self) -> bool""" + return _tempest_swig.framing_sptr_start(self) + + def stop(self) -> "bool": + r"""stop(framing_sptr self) -> bool""" + return _tempest_swig.framing_sptr_stop(self) + + def nitems_read(self, which_input: "unsigned int") -> "uint64_t": + r"""nitems_read(framing_sptr self, unsigned int which_input) -> uint64_t""" + return _tempest_swig.framing_sptr_nitems_read(self, which_input) + + def nitems_written(self, which_output: "unsigned int") -> "uint64_t": + r"""nitems_written(framing_sptr self, unsigned int which_output) -> uint64_t""" + return _tempest_swig.framing_sptr_nitems_written(self, which_output) + + def set_log_level(self, level: "std::string") -> "void": + r"""set_log_level(framing_sptr self, std::string level)""" + return _tempest_swig.framing_sptr_set_log_level(self, level) + + def log_level(self) -> "std::string": + r"""log_level(framing_sptr self) -> std::string""" + return _tempest_swig.framing_sptr_log_level(self) + + def max_noutput_items(self) -> "int": + r"""max_noutput_items(framing_sptr self) -> int""" + return _tempest_swig.framing_sptr_max_noutput_items(self) + + def set_max_noutput_items(self, m: "int") -> "void": + r"""set_max_noutput_items(framing_sptr self, int m)""" + return _tempest_swig.framing_sptr_set_max_noutput_items(self, m) + + def unset_max_noutput_items(self) -> "void": + r"""unset_max_noutput_items(framing_sptr self)""" + return _tempest_swig.framing_sptr_unset_max_noutput_items(self) + + def is_set_max_noutput_items(self) -> "bool": + r"""is_set_max_noutput_items(framing_sptr self) -> bool""" + return _tempest_swig.framing_sptr_is_set_max_noutput_items(self) + + def set_min_noutput_items(self, m: "int") -> "void": + r"""set_min_noutput_items(framing_sptr self, int m)""" + return _tempest_swig.framing_sptr_set_min_noutput_items(self, m) + + def min_noutput_items(self) -> "int": + r"""min_noutput_items(framing_sptr self) -> int""" + return _tempest_swig.framing_sptr_min_noutput_items(self) + + def max_output_buffer(self, i: "int") -> "long": + r"""max_output_buffer(framing_sptr self, int i) -> long""" + return _tempest_swig.framing_sptr_max_output_buffer(self, i) + + def set_max_output_buffer(self, *args) -> "void": + r""" + set_max_output_buffer(framing_sptr self, long max_output_buffer) + set_max_output_buffer(framing_sptr self, int port, long max_output_buffer) + """ + return _tempest_swig.framing_sptr_set_max_output_buffer(self, *args) + + def min_output_buffer(self, i: "int") -> "long": + r"""min_output_buffer(framing_sptr self, int i) -> long""" + return _tempest_swig.framing_sptr_min_output_buffer(self, i) + + def set_min_output_buffer(self, *args) -> "void": + r""" + set_min_output_buffer(framing_sptr self, long min_output_buffer) + set_min_output_buffer(framing_sptr self, int port, long min_output_buffer) + """ + return _tempest_swig.framing_sptr_set_min_output_buffer(self, *args) + + def pc_noutput_items(self) -> "float": + r"""pc_noutput_items(framing_sptr self) -> float""" + return _tempest_swig.framing_sptr_pc_noutput_items(self) + + def pc_noutput_items_avg(self) -> "float": + r"""pc_noutput_items_avg(framing_sptr self) -> float""" + return _tempest_swig.framing_sptr_pc_noutput_items_avg(self) + + def pc_noutput_items_var(self) -> "float": + r"""pc_noutput_items_var(framing_sptr self) -> float""" + return _tempest_swig.framing_sptr_pc_noutput_items_var(self) + + def pc_nproduced(self) -> "float": + r"""pc_nproduced(framing_sptr self) -> float""" + return _tempest_swig.framing_sptr_pc_nproduced(self) + + def pc_nproduced_avg(self) -> "float": + r"""pc_nproduced_avg(framing_sptr self) -> float""" + return _tempest_swig.framing_sptr_pc_nproduced_avg(self) + + def pc_nproduced_var(self) -> "float": + r"""pc_nproduced_var(framing_sptr self) -> float""" + return _tempest_swig.framing_sptr_pc_nproduced_var(self) + + def pc_input_buffers_full(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_input_buffers_full(framing_sptr self, int which) -> float + pc_input_buffers_full(framing_sptr self) -> pmt_vector_float + """ + return _tempest_swig.framing_sptr_pc_input_buffers_full(self, *args) + + def pc_input_buffers_full_avg(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_input_buffers_full_avg(framing_sptr self, int which) -> float + pc_input_buffers_full_avg(framing_sptr self) -> pmt_vector_float + """ + return _tempest_swig.framing_sptr_pc_input_buffers_full_avg(self, *args) + + def pc_input_buffers_full_var(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_input_buffers_full_var(framing_sptr self, int which) -> float + pc_input_buffers_full_var(framing_sptr self) -> pmt_vector_float + """ + return _tempest_swig.framing_sptr_pc_input_buffers_full_var(self, *args) + + def pc_output_buffers_full(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_output_buffers_full(framing_sptr self, int which) -> float + pc_output_buffers_full(framing_sptr self) -> pmt_vector_float + """ + return _tempest_swig.framing_sptr_pc_output_buffers_full(self, *args) + + def pc_output_buffers_full_avg(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_output_buffers_full_avg(framing_sptr self, int which) -> float + pc_output_buffers_full_avg(framing_sptr self) -> pmt_vector_float + """ + return _tempest_swig.framing_sptr_pc_output_buffers_full_avg(self, *args) + + def pc_output_buffers_full_var(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_output_buffers_full_var(framing_sptr self, int which) -> float + pc_output_buffers_full_var(framing_sptr self) -> pmt_vector_float + """ + return _tempest_swig.framing_sptr_pc_output_buffers_full_var(self, *args) + + def pc_work_time(self) -> "float": + r"""pc_work_time(framing_sptr self) -> float""" + return _tempest_swig.framing_sptr_pc_work_time(self) + + def pc_work_time_avg(self) -> "float": + r"""pc_work_time_avg(framing_sptr self) -> float""" + return _tempest_swig.framing_sptr_pc_work_time_avg(self) + + def pc_work_time_var(self) -> "float": + r"""pc_work_time_var(framing_sptr self) -> float""" + return _tempest_swig.framing_sptr_pc_work_time_var(self) + + def pc_work_time_total(self) -> "float": + r"""pc_work_time_total(framing_sptr self) -> float""" + return _tempest_swig.framing_sptr_pc_work_time_total(self) + + def pc_throughput_avg(self) -> "float": + r"""pc_throughput_avg(framing_sptr self) -> float""" + return _tempest_swig.framing_sptr_pc_throughput_avg(self) + + def set_processor_affinity(self, mask: "std::vector< int,std::allocator< int > > const &") -> "void": + r"""set_processor_affinity(framing_sptr self, std::vector< int,std::allocator< int > > const & mask)""" + return _tempest_swig.framing_sptr_set_processor_affinity(self, mask) + + def unset_processor_affinity(self) -> "void": + r"""unset_processor_affinity(framing_sptr self)""" + return _tempest_swig.framing_sptr_unset_processor_affinity(self) + + def processor_affinity(self) -> "std::vector< int,std::allocator< int > >": + r"""processor_affinity(framing_sptr self) -> std::vector< int,std::allocator< int > >""" + return _tempest_swig.framing_sptr_processor_affinity(self) + + def active_thread_priority(self) -> "int": + r"""active_thread_priority(framing_sptr self) -> int""" + return _tempest_swig.framing_sptr_active_thread_priority(self) + + def thread_priority(self) -> "int": + r"""thread_priority(framing_sptr self) -> int""" + return _tempest_swig.framing_sptr_thread_priority(self) + + def set_thread_priority(self, priority: "int") -> "int": + r"""set_thread_priority(framing_sptr self, int priority) -> int""" + return _tempest_swig.framing_sptr_set_thread_priority(self, priority) + + def name(self) -> "std::string": + r"""name(framing_sptr self) -> std::string""" + return _tempest_swig.framing_sptr_name(self) + + def symbol_name(self) -> "std::string": + r"""symbol_name(framing_sptr self) -> std::string""" + return _tempest_swig.framing_sptr_symbol_name(self) + + def input_signature(self) -> "gr::io_signature::sptr": + r"""input_signature(framing_sptr self) -> io_signature_sptr""" + return _tempest_swig.framing_sptr_input_signature(self) + + def output_signature(self) -> "gr::io_signature::sptr": + r"""output_signature(framing_sptr self) -> io_signature_sptr""" + return _tempest_swig.framing_sptr_output_signature(self) + + def unique_id(self) -> "long": + r"""unique_id(framing_sptr self) -> long""" + return _tempest_swig.framing_sptr_unique_id(self) + + def to_basic_block(self) -> "gr::basic_block_sptr": + r"""to_basic_block(framing_sptr self) -> basic_block_sptr""" + return _tempest_swig.framing_sptr_to_basic_block(self) + + def check_topology(self, ninputs: "int", noutputs: "int") -> "bool": + r"""check_topology(framing_sptr self, int ninputs, int noutputs) -> bool""" + return _tempest_swig.framing_sptr_check_topology(self, ninputs, noutputs) + + def alias(self) -> "std::string": + r"""alias(framing_sptr self) -> std::string""" + return _tempest_swig.framing_sptr_alias(self) + + def set_block_alias(self, name: "std::string") -> "void": + r"""set_block_alias(framing_sptr self, std::string name)""" + return _tempest_swig.framing_sptr_set_block_alias(self, name) + + def _post(self, which_port: "swig_pmt_ptr", msg: "swig_pmt_ptr") -> "void": + r"""_post(framing_sptr self, swig_pmt_ptr which_port, swig_pmt_ptr msg)""" + return _tempest_swig.framing_sptr__post(self, which_port, msg) + + def message_ports_in(self) -> "pmt::pmt_t": + r"""message_ports_in(framing_sptr self) -> swig_pmt_ptr""" + return _tempest_swig.framing_sptr_message_ports_in(self) + + def message_ports_out(self) -> "pmt::pmt_t": + r"""message_ports_out(framing_sptr self) -> swig_pmt_ptr""" + return _tempest_swig.framing_sptr_message_ports_out(self) + + def message_subscribers(self, which_port: "swig_pmt_ptr") -> "pmt::pmt_t": + r"""message_subscribers(framing_sptr self, swig_pmt_ptr which_port) -> swig_pmt_ptr""" + return _tempest_swig.framing_sptr_message_subscribers(self, which_port) + +# Register framing_sptr in _tempest_swig: +_tempest_swig.framing_sptr_swigregister(framing_sptr) + + +framing_sptr.__repr__ = lambda self: "" % (self.name(), self.unique_id()) +framing = framing.make; + +class Hsync(object): + r"""Proxy of C++ gr::tempest::Hsync class.""" + + thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag") + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + + @staticmethod + def make(Htotal: "int", delay: "int") -> "gr::tempest::Hsync::sptr": + r"""make(int Htotal, int delay) -> Hsync_sptr""" + return _tempest_swig.Hsync_make(Htotal, delay) + + def set_Htotal_and_delay(self, Htotal: "int", delay: "int") -> "void": + r"""set_Htotal_and_delay(Hsync self, int Htotal, int delay)""" + return _tempest_swig.Hsync_set_Htotal_and_delay(self, Htotal, delay) + __swig_destroy__ = _tempest_swig.delete_Hsync + +# Register Hsync in _tempest_swig: +_tempest_swig.Hsync_swigregister(Hsync) + +def Hsync_make(Htotal: "int", delay: "int") -> "gr::tempest::Hsync::sptr": + r"""Hsync_make(int Htotal, int delay) -> Hsync_sptr""" + return _tempest_swig.Hsync_make(Htotal, delay) + +class Hsync_sptr(object): + r"""Proxy of C++ boost::shared_ptr< gr::tempest::Hsync > class.""" + + thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag") + __repr__ = _swig_repr + + def __init__(self, *args): + r""" + __init__(Hsync_sptr self) -> Hsync_sptr + __init__(Hsync_sptr self, Hsync p) -> Hsync_sptr + """ + _tempest_swig.Hsync_sptr_swiginit(self, _tempest_swig.new_Hsync_sptr(*args)) + + def __deref__(self) -> "gr::tempest::Hsync *": + r"""__deref__(Hsync_sptr self) -> Hsync""" + return _tempest_swig.Hsync_sptr___deref__(self) + __swig_destroy__ = _tempest_swig.delete_Hsync_sptr + + def make(self, Htotal: "int", delay: "int") -> "gr::tempest::Hsync::sptr": + r"""make(Hsync_sptr self, int Htotal, int delay) -> Hsync_sptr""" + return _tempest_swig.Hsync_sptr_make(self, Htotal, delay) + + def set_Htotal_and_delay(self, Htotal: "int", delay: "int") -> "void": + r"""set_Htotal_and_delay(Hsync_sptr self, int Htotal, int delay)""" + return _tempest_swig.Hsync_sptr_set_Htotal_and_delay(self, Htotal, delay) + + def history(self) -> "unsigned int": + r"""history(Hsync_sptr self) -> unsigned int""" + return _tempest_swig.Hsync_sptr_history(self) + + def declare_sample_delay(self, *args) -> "void": + r""" + declare_sample_delay(Hsync_sptr self, int which, int delay) + declare_sample_delay(Hsync_sptr self, unsigned int delay) + """ + return _tempest_swig.Hsync_sptr_declare_sample_delay(self, *args) + + def sample_delay(self, which: "int") -> "unsigned int": + r"""sample_delay(Hsync_sptr self, int which) -> unsigned int""" + return _tempest_swig.Hsync_sptr_sample_delay(self, which) + + def set_output_multiple(self, multiple: "int") -> "void": + r"""set_output_multiple(Hsync_sptr self, int multiple)""" + return _tempest_swig.Hsync_sptr_set_output_multiple(self, multiple) + + def output_multiple(self) -> "int": + r"""output_multiple(Hsync_sptr self) -> int""" + return _tempest_swig.Hsync_sptr_output_multiple(self) + + def relative_rate(self) -> "double": + r"""relative_rate(Hsync_sptr self) -> double""" + return _tempest_swig.Hsync_sptr_relative_rate(self) + + def relative_rate_i(self) -> "uint64_t": + r"""relative_rate_i(Hsync_sptr self) -> uint64_t""" + return _tempest_swig.Hsync_sptr_relative_rate_i(self) + + def relative_rate_d(self) -> "uint64_t": + r"""relative_rate_d(Hsync_sptr self) -> uint64_t""" + return _tempest_swig.Hsync_sptr_relative_rate_d(self) + + def start(self) -> "bool": + r"""start(Hsync_sptr self) -> bool""" + return _tempest_swig.Hsync_sptr_start(self) + + def stop(self) -> "bool": + r"""stop(Hsync_sptr self) -> bool""" + return _tempest_swig.Hsync_sptr_stop(self) + + def nitems_read(self, which_input: "unsigned int") -> "uint64_t": + r"""nitems_read(Hsync_sptr self, unsigned int which_input) -> uint64_t""" + return _tempest_swig.Hsync_sptr_nitems_read(self, which_input) + + def nitems_written(self, which_output: "unsigned int") -> "uint64_t": + r"""nitems_written(Hsync_sptr self, unsigned int which_output) -> uint64_t""" + return _tempest_swig.Hsync_sptr_nitems_written(self, which_output) + + def set_log_level(self, level: "std::string") -> "void": + r"""set_log_level(Hsync_sptr self, std::string level)""" + return _tempest_swig.Hsync_sptr_set_log_level(self, level) + + def log_level(self) -> "std::string": + r"""log_level(Hsync_sptr self) -> std::string""" + return _tempest_swig.Hsync_sptr_log_level(self) + + def max_noutput_items(self) -> "int": + r"""max_noutput_items(Hsync_sptr self) -> int""" + return _tempest_swig.Hsync_sptr_max_noutput_items(self) + + def set_max_noutput_items(self, m: "int") -> "void": + r"""set_max_noutput_items(Hsync_sptr self, int m)""" + return _tempest_swig.Hsync_sptr_set_max_noutput_items(self, m) + + def unset_max_noutput_items(self) -> "void": + r"""unset_max_noutput_items(Hsync_sptr self)""" + return _tempest_swig.Hsync_sptr_unset_max_noutput_items(self) + + def is_set_max_noutput_items(self) -> "bool": + r"""is_set_max_noutput_items(Hsync_sptr self) -> bool""" + return _tempest_swig.Hsync_sptr_is_set_max_noutput_items(self) + + def set_min_noutput_items(self, m: "int") -> "void": + r"""set_min_noutput_items(Hsync_sptr self, int m)""" + return _tempest_swig.Hsync_sptr_set_min_noutput_items(self, m) + + def min_noutput_items(self) -> "int": + r"""min_noutput_items(Hsync_sptr self) -> int""" + return _tempest_swig.Hsync_sptr_min_noutput_items(self) + + def max_output_buffer(self, i: "int") -> "long": + r"""max_output_buffer(Hsync_sptr self, int i) -> long""" + return _tempest_swig.Hsync_sptr_max_output_buffer(self, i) + + def set_max_output_buffer(self, *args) -> "void": + r""" + set_max_output_buffer(Hsync_sptr self, long max_output_buffer) + set_max_output_buffer(Hsync_sptr self, int port, long max_output_buffer) + """ + return _tempest_swig.Hsync_sptr_set_max_output_buffer(self, *args) + + def min_output_buffer(self, i: "int") -> "long": + r"""min_output_buffer(Hsync_sptr self, int i) -> long""" + return _tempest_swig.Hsync_sptr_min_output_buffer(self, i) + + def set_min_output_buffer(self, *args) -> "void": + r""" + set_min_output_buffer(Hsync_sptr self, long min_output_buffer) + set_min_output_buffer(Hsync_sptr self, int port, long min_output_buffer) + """ + return _tempest_swig.Hsync_sptr_set_min_output_buffer(self, *args) + + def pc_noutput_items(self) -> "float": + r"""pc_noutput_items(Hsync_sptr self) -> float""" + return _tempest_swig.Hsync_sptr_pc_noutput_items(self) + + def pc_noutput_items_avg(self) -> "float": + r"""pc_noutput_items_avg(Hsync_sptr self) -> float""" + return _tempest_swig.Hsync_sptr_pc_noutput_items_avg(self) + + def pc_noutput_items_var(self) -> "float": + r"""pc_noutput_items_var(Hsync_sptr self) -> float""" + return _tempest_swig.Hsync_sptr_pc_noutput_items_var(self) + + def pc_nproduced(self) -> "float": + r"""pc_nproduced(Hsync_sptr self) -> float""" + return _tempest_swig.Hsync_sptr_pc_nproduced(self) + + def pc_nproduced_avg(self) -> "float": + r"""pc_nproduced_avg(Hsync_sptr self) -> float""" + return _tempest_swig.Hsync_sptr_pc_nproduced_avg(self) + + def pc_nproduced_var(self) -> "float": + r"""pc_nproduced_var(Hsync_sptr self) -> float""" + return _tempest_swig.Hsync_sptr_pc_nproduced_var(self) + + def pc_input_buffers_full(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_input_buffers_full(Hsync_sptr self, int which) -> float + pc_input_buffers_full(Hsync_sptr self) -> pmt_vector_float + """ + return _tempest_swig.Hsync_sptr_pc_input_buffers_full(self, *args) + + def pc_input_buffers_full_avg(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_input_buffers_full_avg(Hsync_sptr self, int which) -> float + pc_input_buffers_full_avg(Hsync_sptr self) -> pmt_vector_float + """ + return _tempest_swig.Hsync_sptr_pc_input_buffers_full_avg(self, *args) + + def pc_input_buffers_full_var(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_input_buffers_full_var(Hsync_sptr self, int which) -> float + pc_input_buffers_full_var(Hsync_sptr self) -> pmt_vector_float + """ + return _tempest_swig.Hsync_sptr_pc_input_buffers_full_var(self, *args) + + def pc_output_buffers_full(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_output_buffers_full(Hsync_sptr self, int which) -> float + pc_output_buffers_full(Hsync_sptr self) -> pmt_vector_float + """ + return _tempest_swig.Hsync_sptr_pc_output_buffers_full(self, *args) + + def pc_output_buffers_full_avg(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_output_buffers_full_avg(Hsync_sptr self, int which) -> float + pc_output_buffers_full_avg(Hsync_sptr self) -> pmt_vector_float + """ + return _tempest_swig.Hsync_sptr_pc_output_buffers_full_avg(self, *args) + + def pc_output_buffers_full_var(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_output_buffers_full_var(Hsync_sptr self, int which) -> float + pc_output_buffers_full_var(Hsync_sptr self) -> pmt_vector_float + """ + return _tempest_swig.Hsync_sptr_pc_output_buffers_full_var(self, *args) + + def pc_work_time(self) -> "float": + r"""pc_work_time(Hsync_sptr self) -> float""" + return _tempest_swig.Hsync_sptr_pc_work_time(self) + + def pc_work_time_avg(self) -> "float": + r"""pc_work_time_avg(Hsync_sptr self) -> float""" + return _tempest_swig.Hsync_sptr_pc_work_time_avg(self) + + def pc_work_time_var(self) -> "float": + r"""pc_work_time_var(Hsync_sptr self) -> float""" + return _tempest_swig.Hsync_sptr_pc_work_time_var(self) + + def pc_work_time_total(self) -> "float": + r"""pc_work_time_total(Hsync_sptr self) -> float""" + return _tempest_swig.Hsync_sptr_pc_work_time_total(self) + + def pc_throughput_avg(self) -> "float": + r"""pc_throughput_avg(Hsync_sptr self) -> float""" + return _tempest_swig.Hsync_sptr_pc_throughput_avg(self) + + def set_processor_affinity(self, mask: "std::vector< int,std::allocator< int > > const &") -> "void": + r"""set_processor_affinity(Hsync_sptr self, std::vector< int,std::allocator< int > > const & mask)""" + return _tempest_swig.Hsync_sptr_set_processor_affinity(self, mask) + + def unset_processor_affinity(self) -> "void": + r"""unset_processor_affinity(Hsync_sptr self)""" + return _tempest_swig.Hsync_sptr_unset_processor_affinity(self) + + def processor_affinity(self) -> "std::vector< int,std::allocator< int > >": + r"""processor_affinity(Hsync_sptr self) -> std::vector< int,std::allocator< int > >""" + return _tempest_swig.Hsync_sptr_processor_affinity(self) + + def active_thread_priority(self) -> "int": + r"""active_thread_priority(Hsync_sptr self) -> int""" + return _tempest_swig.Hsync_sptr_active_thread_priority(self) + + def thread_priority(self) -> "int": + r"""thread_priority(Hsync_sptr self) -> int""" + return _tempest_swig.Hsync_sptr_thread_priority(self) + + def set_thread_priority(self, priority: "int") -> "int": + r"""set_thread_priority(Hsync_sptr self, int priority) -> int""" + return _tempest_swig.Hsync_sptr_set_thread_priority(self, priority) + + def name(self) -> "std::string": + r"""name(Hsync_sptr self) -> std::string""" + return _tempest_swig.Hsync_sptr_name(self) + + def symbol_name(self) -> "std::string": + r"""symbol_name(Hsync_sptr self) -> std::string""" + return _tempest_swig.Hsync_sptr_symbol_name(self) + + def input_signature(self) -> "gr::io_signature::sptr": + r"""input_signature(Hsync_sptr self) -> io_signature_sptr""" + return _tempest_swig.Hsync_sptr_input_signature(self) + + def output_signature(self) -> "gr::io_signature::sptr": + r"""output_signature(Hsync_sptr self) -> io_signature_sptr""" + return _tempest_swig.Hsync_sptr_output_signature(self) + + def unique_id(self) -> "long": + r"""unique_id(Hsync_sptr self) -> long""" + return _tempest_swig.Hsync_sptr_unique_id(self) + + def to_basic_block(self) -> "gr::basic_block_sptr": + r"""to_basic_block(Hsync_sptr self) -> basic_block_sptr""" + return _tempest_swig.Hsync_sptr_to_basic_block(self) + + def check_topology(self, ninputs: "int", noutputs: "int") -> "bool": + r"""check_topology(Hsync_sptr self, int ninputs, int noutputs) -> bool""" + return _tempest_swig.Hsync_sptr_check_topology(self, ninputs, noutputs) + + def alias(self) -> "std::string": + r"""alias(Hsync_sptr self) -> std::string""" + return _tempest_swig.Hsync_sptr_alias(self) + + def set_block_alias(self, name: "std::string") -> "void": + r"""set_block_alias(Hsync_sptr self, std::string name)""" + return _tempest_swig.Hsync_sptr_set_block_alias(self, name) + + def _post(self, which_port: "swig_pmt_ptr", msg: "swig_pmt_ptr") -> "void": + r"""_post(Hsync_sptr self, swig_pmt_ptr which_port, swig_pmt_ptr msg)""" + return _tempest_swig.Hsync_sptr__post(self, which_port, msg) + + def message_ports_in(self) -> "pmt::pmt_t": + r"""message_ports_in(Hsync_sptr self) -> swig_pmt_ptr""" + return _tempest_swig.Hsync_sptr_message_ports_in(self) + + def message_ports_out(self) -> "pmt::pmt_t": + r"""message_ports_out(Hsync_sptr self) -> swig_pmt_ptr""" + return _tempest_swig.Hsync_sptr_message_ports_out(self) + + def message_subscribers(self, which_port: "swig_pmt_ptr") -> "pmt::pmt_t": + r"""message_subscribers(Hsync_sptr self, swig_pmt_ptr which_port) -> swig_pmt_ptr""" + return _tempest_swig.Hsync_sptr_message_subscribers(self, which_port) + +# Register Hsync_sptr in _tempest_swig: +_tempest_swig.Hsync_sptr_swigregister(Hsync_sptr) + + +Hsync_sptr.__repr__ = lambda self: "" % (self.name(), self.unique_id()) +Hsync = Hsync.make; + +class normalize_flow(object): + r"""Proxy of C++ gr::tempest::normalize_flow class.""" + + thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag") + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + + @staticmethod + def make(min: "float", max: "float", window: "int", alpha_avg: "float", update_proba: "float") -> "gr::tempest::normalize_flow::sptr": + r"""make(float min, float max, int window, float alpha_avg, float update_proba) -> normalize_flow_sptr""" + return _tempest_swig.normalize_flow_make(min, max, window, alpha_avg, update_proba) + + def set_min_max(self, min: "float", max: "float") -> "void": + r"""set_min_max(normalize_flow self, float min, float max)""" + return _tempest_swig.normalize_flow_set_min_max(self, min, max) + __swig_destroy__ = _tempest_swig.delete_normalize_flow + +# Register normalize_flow in _tempest_swig: +_tempest_swig.normalize_flow_swigregister(normalize_flow) + +def normalize_flow_make(min: "float", max: "float", window: "int", alpha_avg: "float", update_proba: "float") -> "gr::tempest::normalize_flow::sptr": + r"""normalize_flow_make(float min, float max, int window, float alpha_avg, float update_proba) -> normalize_flow_sptr""" + return _tempest_swig.normalize_flow_make(min, max, window, alpha_avg, update_proba) + +class normalize_flow_sptr(object): + r"""Proxy of C++ boost::shared_ptr< gr::tempest::normalize_flow > class.""" + + thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag") + __repr__ = _swig_repr + + def __init__(self, *args): + r""" + __init__(normalize_flow_sptr self) -> normalize_flow_sptr + __init__(normalize_flow_sptr self, normalize_flow p) -> normalize_flow_sptr + """ + _tempest_swig.normalize_flow_sptr_swiginit(self, _tempest_swig.new_normalize_flow_sptr(*args)) + + def __deref__(self) -> "gr::tempest::normalize_flow *": + r"""__deref__(normalize_flow_sptr self) -> normalize_flow""" + return _tempest_swig.normalize_flow_sptr___deref__(self) + __swig_destroy__ = _tempest_swig.delete_normalize_flow_sptr + + def make(self, min: "float", max: "float", window: "int", alpha_avg: "float", update_proba: "float") -> "gr::tempest::normalize_flow::sptr": + r"""make(normalize_flow_sptr self, float min, float max, int window, float alpha_avg, float update_proba) -> normalize_flow_sptr""" + return _tempest_swig.normalize_flow_sptr_make(self, min, max, window, alpha_avg, update_proba) + + def set_min_max(self, min: "float", max: "float") -> "void": + r"""set_min_max(normalize_flow_sptr self, float min, float max)""" + return _tempest_swig.normalize_flow_sptr_set_min_max(self, min, max) + + def history(self) -> "unsigned int": + r"""history(normalize_flow_sptr self) -> unsigned int""" + return _tempest_swig.normalize_flow_sptr_history(self) + + def declare_sample_delay(self, *args) -> "void": + r""" + declare_sample_delay(normalize_flow_sptr self, int which, int delay) + declare_sample_delay(normalize_flow_sptr self, unsigned int delay) + """ + return _tempest_swig.normalize_flow_sptr_declare_sample_delay(self, *args) + + def sample_delay(self, which: "int") -> "unsigned int": + r"""sample_delay(normalize_flow_sptr self, int which) -> unsigned int""" + return _tempest_swig.normalize_flow_sptr_sample_delay(self, which) + + def set_output_multiple(self, multiple: "int") -> "void": + r"""set_output_multiple(normalize_flow_sptr self, int multiple)""" + return _tempest_swig.normalize_flow_sptr_set_output_multiple(self, multiple) + + def output_multiple(self) -> "int": + r"""output_multiple(normalize_flow_sptr self) -> int""" + return _tempest_swig.normalize_flow_sptr_output_multiple(self) + + def relative_rate(self) -> "double": + r"""relative_rate(normalize_flow_sptr self) -> double""" + return _tempest_swig.normalize_flow_sptr_relative_rate(self) + + def relative_rate_i(self) -> "uint64_t": + r"""relative_rate_i(normalize_flow_sptr self) -> uint64_t""" + return _tempest_swig.normalize_flow_sptr_relative_rate_i(self) + + def relative_rate_d(self) -> "uint64_t": + r"""relative_rate_d(normalize_flow_sptr self) -> uint64_t""" + return _tempest_swig.normalize_flow_sptr_relative_rate_d(self) + + def start(self) -> "bool": + r"""start(normalize_flow_sptr self) -> bool""" + return _tempest_swig.normalize_flow_sptr_start(self) + + def stop(self) -> "bool": + r"""stop(normalize_flow_sptr self) -> bool""" + return _tempest_swig.normalize_flow_sptr_stop(self) + + def nitems_read(self, which_input: "unsigned int") -> "uint64_t": + r"""nitems_read(normalize_flow_sptr self, unsigned int which_input) -> uint64_t""" + return _tempest_swig.normalize_flow_sptr_nitems_read(self, which_input) + + def nitems_written(self, which_output: "unsigned int") -> "uint64_t": + r"""nitems_written(normalize_flow_sptr self, unsigned int which_output) -> uint64_t""" + return _tempest_swig.normalize_flow_sptr_nitems_written(self, which_output) + + def set_log_level(self, level: "std::string") -> "void": + r"""set_log_level(normalize_flow_sptr self, std::string level)""" + return _tempest_swig.normalize_flow_sptr_set_log_level(self, level) + + def log_level(self) -> "std::string": + r"""log_level(normalize_flow_sptr self) -> std::string""" + return _tempest_swig.normalize_flow_sptr_log_level(self) + + def max_noutput_items(self) -> "int": + r"""max_noutput_items(normalize_flow_sptr self) -> int""" + return _tempest_swig.normalize_flow_sptr_max_noutput_items(self) + + def set_max_noutput_items(self, m: "int") -> "void": + r"""set_max_noutput_items(normalize_flow_sptr self, int m)""" + return _tempest_swig.normalize_flow_sptr_set_max_noutput_items(self, m) + + def unset_max_noutput_items(self) -> "void": + r"""unset_max_noutput_items(normalize_flow_sptr self)""" + return _tempest_swig.normalize_flow_sptr_unset_max_noutput_items(self) + + def is_set_max_noutput_items(self) -> "bool": + r"""is_set_max_noutput_items(normalize_flow_sptr self) -> bool""" + return _tempest_swig.normalize_flow_sptr_is_set_max_noutput_items(self) + + def set_min_noutput_items(self, m: "int") -> "void": + r"""set_min_noutput_items(normalize_flow_sptr self, int m)""" + return _tempest_swig.normalize_flow_sptr_set_min_noutput_items(self, m) + + def min_noutput_items(self) -> "int": + r"""min_noutput_items(normalize_flow_sptr self) -> int""" + return _tempest_swig.normalize_flow_sptr_min_noutput_items(self) + + def max_output_buffer(self, i: "int") -> "long": + r"""max_output_buffer(normalize_flow_sptr self, int i) -> long""" + return _tempest_swig.normalize_flow_sptr_max_output_buffer(self, i) + + def set_max_output_buffer(self, *args) -> "void": + r""" + set_max_output_buffer(normalize_flow_sptr self, long max_output_buffer) + set_max_output_buffer(normalize_flow_sptr self, int port, long max_output_buffer) + """ + return _tempest_swig.normalize_flow_sptr_set_max_output_buffer(self, *args) + + def min_output_buffer(self, i: "int") -> "long": + r"""min_output_buffer(normalize_flow_sptr self, int i) -> long""" + return _tempest_swig.normalize_flow_sptr_min_output_buffer(self, i) + + def set_min_output_buffer(self, *args) -> "void": + r""" + set_min_output_buffer(normalize_flow_sptr self, long min_output_buffer) + set_min_output_buffer(normalize_flow_sptr self, int port, long min_output_buffer) + """ + return _tempest_swig.normalize_flow_sptr_set_min_output_buffer(self, *args) + + def pc_noutput_items(self) -> "float": + r"""pc_noutput_items(normalize_flow_sptr self) -> float""" + return _tempest_swig.normalize_flow_sptr_pc_noutput_items(self) + + def pc_noutput_items_avg(self) -> "float": + r"""pc_noutput_items_avg(normalize_flow_sptr self) -> float""" + return _tempest_swig.normalize_flow_sptr_pc_noutput_items_avg(self) + + def pc_noutput_items_var(self) -> "float": + r"""pc_noutput_items_var(normalize_flow_sptr self) -> float""" + return _tempest_swig.normalize_flow_sptr_pc_noutput_items_var(self) + + def pc_nproduced(self) -> "float": + r"""pc_nproduced(normalize_flow_sptr self) -> float""" + return _tempest_swig.normalize_flow_sptr_pc_nproduced(self) + + def pc_nproduced_avg(self) -> "float": + r"""pc_nproduced_avg(normalize_flow_sptr self) -> float""" + return _tempest_swig.normalize_flow_sptr_pc_nproduced_avg(self) + + def pc_nproduced_var(self) -> "float": + r"""pc_nproduced_var(normalize_flow_sptr self) -> float""" + return _tempest_swig.normalize_flow_sptr_pc_nproduced_var(self) + + def pc_input_buffers_full(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_input_buffers_full(normalize_flow_sptr self, int which) -> float + pc_input_buffers_full(normalize_flow_sptr self) -> pmt_vector_float + """ + return _tempest_swig.normalize_flow_sptr_pc_input_buffers_full(self, *args) + + def pc_input_buffers_full_avg(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_input_buffers_full_avg(normalize_flow_sptr self, int which) -> float + pc_input_buffers_full_avg(normalize_flow_sptr self) -> pmt_vector_float + """ + return _tempest_swig.normalize_flow_sptr_pc_input_buffers_full_avg(self, *args) + + def pc_input_buffers_full_var(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_input_buffers_full_var(normalize_flow_sptr self, int which) -> float + pc_input_buffers_full_var(normalize_flow_sptr self) -> pmt_vector_float + """ + return _tempest_swig.normalize_flow_sptr_pc_input_buffers_full_var(self, *args) + + def pc_output_buffers_full(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_output_buffers_full(normalize_flow_sptr self, int which) -> float + pc_output_buffers_full(normalize_flow_sptr self) -> pmt_vector_float + """ + return _tempest_swig.normalize_flow_sptr_pc_output_buffers_full(self, *args) + + def pc_output_buffers_full_avg(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_output_buffers_full_avg(normalize_flow_sptr self, int which) -> float + pc_output_buffers_full_avg(normalize_flow_sptr self) -> pmt_vector_float + """ + return _tempest_swig.normalize_flow_sptr_pc_output_buffers_full_avg(self, *args) + + def pc_output_buffers_full_var(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_output_buffers_full_var(normalize_flow_sptr self, int which) -> float + pc_output_buffers_full_var(normalize_flow_sptr self) -> pmt_vector_float + """ + return _tempest_swig.normalize_flow_sptr_pc_output_buffers_full_var(self, *args) + + def pc_work_time(self) -> "float": + r"""pc_work_time(normalize_flow_sptr self) -> float""" + return _tempest_swig.normalize_flow_sptr_pc_work_time(self) + + def pc_work_time_avg(self) -> "float": + r"""pc_work_time_avg(normalize_flow_sptr self) -> float""" + return _tempest_swig.normalize_flow_sptr_pc_work_time_avg(self) + + def pc_work_time_var(self) -> "float": + r"""pc_work_time_var(normalize_flow_sptr self) -> float""" + return _tempest_swig.normalize_flow_sptr_pc_work_time_var(self) + + def pc_work_time_total(self) -> "float": + r"""pc_work_time_total(normalize_flow_sptr self) -> float""" + return _tempest_swig.normalize_flow_sptr_pc_work_time_total(self) + + def pc_throughput_avg(self) -> "float": + r"""pc_throughput_avg(normalize_flow_sptr self) -> float""" + return _tempest_swig.normalize_flow_sptr_pc_throughput_avg(self) + + def set_processor_affinity(self, mask: "std::vector< int,std::allocator< int > > const &") -> "void": + r"""set_processor_affinity(normalize_flow_sptr self, std::vector< int,std::allocator< int > > const & mask)""" + return _tempest_swig.normalize_flow_sptr_set_processor_affinity(self, mask) + + def unset_processor_affinity(self) -> "void": + r"""unset_processor_affinity(normalize_flow_sptr self)""" + return _tempest_swig.normalize_flow_sptr_unset_processor_affinity(self) + + def processor_affinity(self) -> "std::vector< int,std::allocator< int > >": + r"""processor_affinity(normalize_flow_sptr self) -> std::vector< int,std::allocator< int > >""" + return _tempest_swig.normalize_flow_sptr_processor_affinity(self) + + def active_thread_priority(self) -> "int": + r"""active_thread_priority(normalize_flow_sptr self) -> int""" + return _tempest_swig.normalize_flow_sptr_active_thread_priority(self) + + def thread_priority(self) -> "int": + r"""thread_priority(normalize_flow_sptr self) -> int""" + return _tempest_swig.normalize_flow_sptr_thread_priority(self) + + def set_thread_priority(self, priority: "int") -> "int": + r"""set_thread_priority(normalize_flow_sptr self, int priority) -> int""" + return _tempest_swig.normalize_flow_sptr_set_thread_priority(self, priority) + + def name(self) -> "std::string": + r"""name(normalize_flow_sptr self) -> std::string""" + return _tempest_swig.normalize_flow_sptr_name(self) + + def symbol_name(self) -> "std::string": + r"""symbol_name(normalize_flow_sptr self) -> std::string""" + return _tempest_swig.normalize_flow_sptr_symbol_name(self) + + def input_signature(self) -> "gr::io_signature::sptr": + r"""input_signature(normalize_flow_sptr self) -> io_signature_sptr""" + return _tempest_swig.normalize_flow_sptr_input_signature(self) + + def output_signature(self) -> "gr::io_signature::sptr": + r"""output_signature(normalize_flow_sptr self) -> io_signature_sptr""" + return _tempest_swig.normalize_flow_sptr_output_signature(self) + + def unique_id(self) -> "long": + r"""unique_id(normalize_flow_sptr self) -> long""" + return _tempest_swig.normalize_flow_sptr_unique_id(self) + + def to_basic_block(self) -> "gr::basic_block_sptr": + r"""to_basic_block(normalize_flow_sptr self) -> basic_block_sptr""" + return _tempest_swig.normalize_flow_sptr_to_basic_block(self) + + def check_topology(self, ninputs: "int", noutputs: "int") -> "bool": + r"""check_topology(normalize_flow_sptr self, int ninputs, int noutputs) -> bool""" + return _tempest_swig.normalize_flow_sptr_check_topology(self, ninputs, noutputs) + + def alias(self) -> "std::string": + r"""alias(normalize_flow_sptr self) -> std::string""" + return _tempest_swig.normalize_flow_sptr_alias(self) + + def set_block_alias(self, name: "std::string") -> "void": + r"""set_block_alias(normalize_flow_sptr self, std::string name)""" + return _tempest_swig.normalize_flow_sptr_set_block_alias(self, name) + + def _post(self, which_port: "swig_pmt_ptr", msg: "swig_pmt_ptr") -> "void": + r"""_post(normalize_flow_sptr self, swig_pmt_ptr which_port, swig_pmt_ptr msg)""" + return _tempest_swig.normalize_flow_sptr__post(self, which_port, msg) + + def message_ports_in(self) -> "pmt::pmt_t": + r"""message_ports_in(normalize_flow_sptr self) -> swig_pmt_ptr""" + return _tempest_swig.normalize_flow_sptr_message_ports_in(self) + + def message_ports_out(self) -> "pmt::pmt_t": + r"""message_ports_out(normalize_flow_sptr self) -> swig_pmt_ptr""" + return _tempest_swig.normalize_flow_sptr_message_ports_out(self) + + def message_subscribers(self, which_port: "swig_pmt_ptr") -> "pmt::pmt_t": + r"""message_subscribers(normalize_flow_sptr self, swig_pmt_ptr which_port) -> swig_pmt_ptr""" + return _tempest_swig.normalize_flow_sptr_message_subscribers(self, which_port) + +# Register normalize_flow_sptr in _tempest_swig: +_tempest_swig.normalize_flow_sptr_swigregister(normalize_flow_sptr) + + +normalize_flow_sptr.__repr__ = lambda self: "" % (self.name(), self.unique_id()) +normalize_flow = normalize_flow.make; + +class fine_sampling_synchronization(object): + r"""Proxy of C++ gr::tempest::fine_sampling_synchronization class.""" + + thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag") + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + + @staticmethod + def make(Htotal: "int", Vtotal: "int", correct_sampling: "int", max_deviation: "float", update_proba: "float") -> "gr::tempest::fine_sampling_synchronization::sptr": + r"""make(int Htotal, int Vtotal, int correct_sampling, float max_deviation, float update_proba) -> fine_sampling_synchronization_sptr""" + return _tempest_swig.fine_sampling_synchronization_make(Htotal, Vtotal, correct_sampling, max_deviation, update_proba) + + def set_Htotal_Vtotal(self, Htotal: "int", Vtotal: "int") -> "void": + r"""set_Htotal_Vtotal(fine_sampling_synchronization self, int Htotal, int Vtotal)""" + return _tempest_swig.fine_sampling_synchronization_set_Htotal_Vtotal(self, Htotal, Vtotal) + __swig_destroy__ = _tempest_swig.delete_fine_sampling_synchronization + +# Register fine_sampling_synchronization in _tempest_swig: +_tempest_swig.fine_sampling_synchronization_swigregister(fine_sampling_synchronization) + +def fine_sampling_synchronization_make(Htotal: "int", Vtotal: "int", correct_sampling: "int", max_deviation: "float", update_proba: "float") -> "gr::tempest::fine_sampling_synchronization::sptr": + r"""fine_sampling_synchronization_make(int Htotal, int Vtotal, int correct_sampling, float max_deviation, float update_proba) -> fine_sampling_synchronization_sptr""" + return _tempest_swig.fine_sampling_synchronization_make(Htotal, Vtotal, correct_sampling, max_deviation, update_proba) + +class fine_sampling_synchronization_sptr(object): + r"""Proxy of C++ boost::shared_ptr< gr::tempest::fine_sampling_synchronization > class.""" + + thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag") + __repr__ = _swig_repr + + def __init__(self, *args): + r""" + __init__(fine_sampling_synchronization_sptr self) -> fine_sampling_synchronization_sptr + __init__(fine_sampling_synchronization_sptr self, fine_sampling_synchronization p) -> fine_sampling_synchronization_sptr + """ + _tempest_swig.fine_sampling_synchronization_sptr_swiginit(self, _tempest_swig.new_fine_sampling_synchronization_sptr(*args)) + + def __deref__(self) -> "gr::tempest::fine_sampling_synchronization *": + r"""__deref__(fine_sampling_synchronization_sptr self) -> fine_sampling_synchronization""" + return _tempest_swig.fine_sampling_synchronization_sptr___deref__(self) + __swig_destroy__ = _tempest_swig.delete_fine_sampling_synchronization_sptr + + def make(self, Htotal: "int", Vtotal: "int", correct_sampling: "int", max_deviation: "float", update_proba: "float") -> "gr::tempest::fine_sampling_synchronization::sptr": + r"""make(fine_sampling_synchronization_sptr self, int Htotal, int Vtotal, int correct_sampling, float max_deviation, float update_proba) -> fine_sampling_synchronization_sptr""" + return _tempest_swig.fine_sampling_synchronization_sptr_make(self, Htotal, Vtotal, correct_sampling, max_deviation, update_proba) + + def set_Htotal_Vtotal(self, Htotal: "int", Vtotal: "int") -> "void": + r"""set_Htotal_Vtotal(fine_sampling_synchronization_sptr self, int Htotal, int Vtotal)""" + return _tempest_swig.fine_sampling_synchronization_sptr_set_Htotal_Vtotal(self, Htotal, Vtotal) + + def history(self) -> "unsigned int": + r"""history(fine_sampling_synchronization_sptr self) -> unsigned int""" + return _tempest_swig.fine_sampling_synchronization_sptr_history(self) + + def declare_sample_delay(self, *args) -> "void": + r""" + declare_sample_delay(fine_sampling_synchronization_sptr self, int which, int delay) + declare_sample_delay(fine_sampling_synchronization_sptr self, unsigned int delay) + """ + return _tempest_swig.fine_sampling_synchronization_sptr_declare_sample_delay(self, *args) + + def sample_delay(self, which: "int") -> "unsigned int": + r"""sample_delay(fine_sampling_synchronization_sptr self, int which) -> unsigned int""" + return _tempest_swig.fine_sampling_synchronization_sptr_sample_delay(self, which) + + def set_output_multiple(self, multiple: "int") -> "void": + r"""set_output_multiple(fine_sampling_synchronization_sptr self, int multiple)""" + return _tempest_swig.fine_sampling_synchronization_sptr_set_output_multiple(self, multiple) + + def output_multiple(self) -> "int": + r"""output_multiple(fine_sampling_synchronization_sptr self) -> int""" + return _tempest_swig.fine_sampling_synchronization_sptr_output_multiple(self) + + def relative_rate(self) -> "double": + r"""relative_rate(fine_sampling_synchronization_sptr self) -> double""" + return _tempest_swig.fine_sampling_synchronization_sptr_relative_rate(self) + + def relative_rate_i(self) -> "uint64_t": + r"""relative_rate_i(fine_sampling_synchronization_sptr self) -> uint64_t""" + return _tempest_swig.fine_sampling_synchronization_sptr_relative_rate_i(self) + + def relative_rate_d(self) -> "uint64_t": + r"""relative_rate_d(fine_sampling_synchronization_sptr self) -> uint64_t""" + return _tempest_swig.fine_sampling_synchronization_sptr_relative_rate_d(self) + + def start(self) -> "bool": + r"""start(fine_sampling_synchronization_sptr self) -> bool""" + return _tempest_swig.fine_sampling_synchronization_sptr_start(self) + + def stop(self) -> "bool": + r"""stop(fine_sampling_synchronization_sptr self) -> bool""" + return _tempest_swig.fine_sampling_synchronization_sptr_stop(self) + + def nitems_read(self, which_input: "unsigned int") -> "uint64_t": + r"""nitems_read(fine_sampling_synchronization_sptr self, unsigned int which_input) -> uint64_t""" + return _tempest_swig.fine_sampling_synchronization_sptr_nitems_read(self, which_input) + + def nitems_written(self, which_output: "unsigned int") -> "uint64_t": + r"""nitems_written(fine_sampling_synchronization_sptr self, unsigned int which_output) -> uint64_t""" + return _tempest_swig.fine_sampling_synchronization_sptr_nitems_written(self, which_output) + + def set_log_level(self, level: "std::string") -> "void": + r"""set_log_level(fine_sampling_synchronization_sptr self, std::string level)""" + return _tempest_swig.fine_sampling_synchronization_sptr_set_log_level(self, level) + + def log_level(self) -> "std::string": + r"""log_level(fine_sampling_synchronization_sptr self) -> std::string""" + return _tempest_swig.fine_sampling_synchronization_sptr_log_level(self) + + def max_noutput_items(self) -> "int": + r"""max_noutput_items(fine_sampling_synchronization_sptr self) -> int""" + return _tempest_swig.fine_sampling_synchronization_sptr_max_noutput_items(self) + + def set_max_noutput_items(self, m: "int") -> "void": + r"""set_max_noutput_items(fine_sampling_synchronization_sptr self, int m)""" + return _tempest_swig.fine_sampling_synchronization_sptr_set_max_noutput_items(self, m) + + def unset_max_noutput_items(self) -> "void": + r"""unset_max_noutput_items(fine_sampling_synchronization_sptr self)""" + return _tempest_swig.fine_sampling_synchronization_sptr_unset_max_noutput_items(self) + + def is_set_max_noutput_items(self) -> "bool": + r"""is_set_max_noutput_items(fine_sampling_synchronization_sptr self) -> bool""" + return _tempest_swig.fine_sampling_synchronization_sptr_is_set_max_noutput_items(self) + + def set_min_noutput_items(self, m: "int") -> "void": + r"""set_min_noutput_items(fine_sampling_synchronization_sptr self, int m)""" + return _tempest_swig.fine_sampling_synchronization_sptr_set_min_noutput_items(self, m) + + def min_noutput_items(self) -> "int": + r"""min_noutput_items(fine_sampling_synchronization_sptr self) -> int""" + return _tempest_swig.fine_sampling_synchronization_sptr_min_noutput_items(self) + + def max_output_buffer(self, i: "int") -> "long": + r"""max_output_buffer(fine_sampling_synchronization_sptr self, int i) -> long""" + return _tempest_swig.fine_sampling_synchronization_sptr_max_output_buffer(self, i) + + def set_max_output_buffer(self, *args) -> "void": + r""" + set_max_output_buffer(fine_sampling_synchronization_sptr self, long max_output_buffer) + set_max_output_buffer(fine_sampling_synchronization_sptr self, int port, long max_output_buffer) + """ + return _tempest_swig.fine_sampling_synchronization_sptr_set_max_output_buffer(self, *args) + + def min_output_buffer(self, i: "int") -> "long": + r"""min_output_buffer(fine_sampling_synchronization_sptr self, int i) -> long""" + return _tempest_swig.fine_sampling_synchronization_sptr_min_output_buffer(self, i) + + def set_min_output_buffer(self, *args) -> "void": + r""" + set_min_output_buffer(fine_sampling_synchronization_sptr self, long min_output_buffer) + set_min_output_buffer(fine_sampling_synchronization_sptr self, int port, long min_output_buffer) + """ + return _tempest_swig.fine_sampling_synchronization_sptr_set_min_output_buffer(self, *args) + + def pc_noutput_items(self) -> "float": + r"""pc_noutput_items(fine_sampling_synchronization_sptr self) -> float""" + return _tempest_swig.fine_sampling_synchronization_sptr_pc_noutput_items(self) + + def pc_noutput_items_avg(self) -> "float": + r"""pc_noutput_items_avg(fine_sampling_synchronization_sptr self) -> float""" + return _tempest_swig.fine_sampling_synchronization_sptr_pc_noutput_items_avg(self) + + def pc_noutput_items_var(self) -> "float": + r"""pc_noutput_items_var(fine_sampling_synchronization_sptr self) -> float""" + return _tempest_swig.fine_sampling_synchronization_sptr_pc_noutput_items_var(self) + + def pc_nproduced(self) -> "float": + r"""pc_nproduced(fine_sampling_synchronization_sptr self) -> float""" + return _tempest_swig.fine_sampling_synchronization_sptr_pc_nproduced(self) + + def pc_nproduced_avg(self) -> "float": + r"""pc_nproduced_avg(fine_sampling_synchronization_sptr self) -> float""" + return _tempest_swig.fine_sampling_synchronization_sptr_pc_nproduced_avg(self) + + def pc_nproduced_var(self) -> "float": + r"""pc_nproduced_var(fine_sampling_synchronization_sptr self) -> float""" + return _tempest_swig.fine_sampling_synchronization_sptr_pc_nproduced_var(self) + + def pc_input_buffers_full(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_input_buffers_full(fine_sampling_synchronization_sptr self, int which) -> float + pc_input_buffers_full(fine_sampling_synchronization_sptr self) -> pmt_vector_float + """ + return _tempest_swig.fine_sampling_synchronization_sptr_pc_input_buffers_full(self, *args) + + def pc_input_buffers_full_avg(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_input_buffers_full_avg(fine_sampling_synchronization_sptr self, int which) -> float + pc_input_buffers_full_avg(fine_sampling_synchronization_sptr self) -> pmt_vector_float + """ + return _tempest_swig.fine_sampling_synchronization_sptr_pc_input_buffers_full_avg(self, *args) + + def pc_input_buffers_full_var(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_input_buffers_full_var(fine_sampling_synchronization_sptr self, int which) -> float + pc_input_buffers_full_var(fine_sampling_synchronization_sptr self) -> pmt_vector_float + """ + return _tempest_swig.fine_sampling_synchronization_sptr_pc_input_buffers_full_var(self, *args) + + def pc_output_buffers_full(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_output_buffers_full(fine_sampling_synchronization_sptr self, int which) -> float + pc_output_buffers_full(fine_sampling_synchronization_sptr self) -> pmt_vector_float + """ + return _tempest_swig.fine_sampling_synchronization_sptr_pc_output_buffers_full(self, *args) + + def pc_output_buffers_full_avg(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_output_buffers_full_avg(fine_sampling_synchronization_sptr self, int which) -> float + pc_output_buffers_full_avg(fine_sampling_synchronization_sptr self) -> pmt_vector_float + """ + return _tempest_swig.fine_sampling_synchronization_sptr_pc_output_buffers_full_avg(self, *args) + + def pc_output_buffers_full_var(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_output_buffers_full_var(fine_sampling_synchronization_sptr self, int which) -> float + pc_output_buffers_full_var(fine_sampling_synchronization_sptr self) -> pmt_vector_float + """ + return _tempest_swig.fine_sampling_synchronization_sptr_pc_output_buffers_full_var(self, *args) + + def pc_work_time(self) -> "float": + r"""pc_work_time(fine_sampling_synchronization_sptr self) -> float""" + return _tempest_swig.fine_sampling_synchronization_sptr_pc_work_time(self) + + def pc_work_time_avg(self) -> "float": + r"""pc_work_time_avg(fine_sampling_synchronization_sptr self) -> float""" + return _tempest_swig.fine_sampling_synchronization_sptr_pc_work_time_avg(self) + + def pc_work_time_var(self) -> "float": + r"""pc_work_time_var(fine_sampling_synchronization_sptr self) -> float""" + return _tempest_swig.fine_sampling_synchronization_sptr_pc_work_time_var(self) + + def pc_work_time_total(self) -> "float": + r"""pc_work_time_total(fine_sampling_synchronization_sptr self) -> float""" + return _tempest_swig.fine_sampling_synchronization_sptr_pc_work_time_total(self) + + def pc_throughput_avg(self) -> "float": + r"""pc_throughput_avg(fine_sampling_synchronization_sptr self) -> float""" + return _tempest_swig.fine_sampling_synchronization_sptr_pc_throughput_avg(self) + + def set_processor_affinity(self, mask: "std::vector< int,std::allocator< int > > const &") -> "void": + r"""set_processor_affinity(fine_sampling_synchronization_sptr self, std::vector< int,std::allocator< int > > const & mask)""" + return _tempest_swig.fine_sampling_synchronization_sptr_set_processor_affinity(self, mask) + + def unset_processor_affinity(self) -> "void": + r"""unset_processor_affinity(fine_sampling_synchronization_sptr self)""" + return _tempest_swig.fine_sampling_synchronization_sptr_unset_processor_affinity(self) + + def processor_affinity(self) -> "std::vector< int,std::allocator< int > >": + r"""processor_affinity(fine_sampling_synchronization_sptr self) -> std::vector< int,std::allocator< int > >""" + return _tempest_swig.fine_sampling_synchronization_sptr_processor_affinity(self) + + def active_thread_priority(self) -> "int": + r"""active_thread_priority(fine_sampling_synchronization_sptr self) -> int""" + return _tempest_swig.fine_sampling_synchronization_sptr_active_thread_priority(self) + + def thread_priority(self) -> "int": + r"""thread_priority(fine_sampling_synchronization_sptr self) -> int""" + return _tempest_swig.fine_sampling_synchronization_sptr_thread_priority(self) + + def set_thread_priority(self, priority: "int") -> "int": + r"""set_thread_priority(fine_sampling_synchronization_sptr self, int priority) -> int""" + return _tempest_swig.fine_sampling_synchronization_sptr_set_thread_priority(self, priority) + + def name(self) -> "std::string": + r"""name(fine_sampling_synchronization_sptr self) -> std::string""" + return _tempest_swig.fine_sampling_synchronization_sptr_name(self) + + def symbol_name(self) -> "std::string": + r"""symbol_name(fine_sampling_synchronization_sptr self) -> std::string""" + return _tempest_swig.fine_sampling_synchronization_sptr_symbol_name(self) + + def input_signature(self) -> "gr::io_signature::sptr": + r"""input_signature(fine_sampling_synchronization_sptr self) -> io_signature_sptr""" + return _tempest_swig.fine_sampling_synchronization_sptr_input_signature(self) + + def output_signature(self) -> "gr::io_signature::sptr": + r"""output_signature(fine_sampling_synchronization_sptr self) -> io_signature_sptr""" + return _tempest_swig.fine_sampling_synchronization_sptr_output_signature(self) + + def unique_id(self) -> "long": + r"""unique_id(fine_sampling_synchronization_sptr self) -> long""" + return _tempest_swig.fine_sampling_synchronization_sptr_unique_id(self) + + def to_basic_block(self) -> "gr::basic_block_sptr": + r"""to_basic_block(fine_sampling_synchronization_sptr self) -> basic_block_sptr""" + return _tempest_swig.fine_sampling_synchronization_sptr_to_basic_block(self) + + def check_topology(self, ninputs: "int", noutputs: "int") -> "bool": + r"""check_topology(fine_sampling_synchronization_sptr self, int ninputs, int noutputs) -> bool""" + return _tempest_swig.fine_sampling_synchronization_sptr_check_topology(self, ninputs, noutputs) + + def alias(self) -> "std::string": + r"""alias(fine_sampling_synchronization_sptr self) -> std::string""" + return _tempest_swig.fine_sampling_synchronization_sptr_alias(self) + + def set_block_alias(self, name: "std::string") -> "void": + r"""set_block_alias(fine_sampling_synchronization_sptr self, std::string name)""" + return _tempest_swig.fine_sampling_synchronization_sptr_set_block_alias(self, name) + + def _post(self, which_port: "swig_pmt_ptr", msg: "swig_pmt_ptr") -> "void": + r"""_post(fine_sampling_synchronization_sptr self, swig_pmt_ptr which_port, swig_pmt_ptr msg)""" + return _tempest_swig.fine_sampling_synchronization_sptr__post(self, which_port, msg) + + def message_ports_in(self) -> "pmt::pmt_t": + r"""message_ports_in(fine_sampling_synchronization_sptr self) -> swig_pmt_ptr""" + return _tempest_swig.fine_sampling_synchronization_sptr_message_ports_in(self) + + def message_ports_out(self) -> "pmt::pmt_t": + r"""message_ports_out(fine_sampling_synchronization_sptr self) -> swig_pmt_ptr""" + return _tempest_swig.fine_sampling_synchronization_sptr_message_ports_out(self) + + def message_subscribers(self, which_port: "swig_pmt_ptr") -> "pmt::pmt_t": + r"""message_subscribers(fine_sampling_synchronization_sptr self, swig_pmt_ptr which_port) -> swig_pmt_ptr""" + return _tempest_swig.fine_sampling_synchronization_sptr_message_subscribers(self, which_port) + +# Register fine_sampling_synchronization_sptr in _tempest_swig: +_tempest_swig.fine_sampling_synchronization_sptr_swigregister(fine_sampling_synchronization_sptr) + + +fine_sampling_synchronization_sptr.__repr__ = lambda self: "" % (self.name(), self.unique_id()) +fine_sampling_synchronization = fine_sampling_synchronization.make; + +class sync_detector(object): + r"""Proxy of C++ gr::tempest::sync_detector class.""" + + thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag") + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined") + __repr__ = _swig_repr + + @staticmethod + def make(hscreen: "int", vscreen: "int", hblanking: "int", vblanking: "int") -> "gr::tempest::sync_detector::sptr": + r"""make(int hscreen, int vscreen, int hblanking, int vblanking) -> sync_detector_sptr""" + return _tempest_swig.sync_detector_make(hscreen, vscreen, hblanking, vblanking) + __swig_destroy__ = _tempest_swig.delete_sync_detector + +# Register sync_detector in _tempest_swig: +_tempest_swig.sync_detector_swigregister(sync_detector) + +def sync_detector_make(hscreen: "int", vscreen: "int", hblanking: "int", vblanking: "int") -> "gr::tempest::sync_detector::sptr": + r"""sync_detector_make(int hscreen, int vscreen, int hblanking, int vblanking) -> sync_detector_sptr""" + return _tempest_swig.sync_detector_make(hscreen, vscreen, hblanking, vblanking) + +class sync_detector_sptr(object): + r"""Proxy of C++ boost::shared_ptr< gr::tempest::sync_detector > class.""" + + thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag") + __repr__ = _swig_repr + + def __init__(self, *args): + r""" + __init__(sync_detector_sptr self) -> sync_detector_sptr + __init__(sync_detector_sptr self, sync_detector p) -> sync_detector_sptr + """ + _tempest_swig.sync_detector_sptr_swiginit(self, _tempest_swig.new_sync_detector_sptr(*args)) + + def __deref__(self) -> "gr::tempest::sync_detector *": + r"""__deref__(sync_detector_sptr self) -> sync_detector""" + return _tempest_swig.sync_detector_sptr___deref__(self) + __swig_destroy__ = _tempest_swig.delete_sync_detector_sptr + + def make(self, hscreen: "int", vscreen: "int", hblanking: "int", vblanking: "int") -> "gr::tempest::sync_detector::sptr": + r"""make(sync_detector_sptr self, int hscreen, int vscreen, int hblanking, int vblanking) -> sync_detector_sptr""" + return _tempest_swig.sync_detector_sptr_make(self, hscreen, vscreen, hblanking, vblanking) + + def history(self) -> "unsigned int": + r"""history(sync_detector_sptr self) -> unsigned int""" + return _tempest_swig.sync_detector_sptr_history(self) + + def declare_sample_delay(self, *args) -> "void": + r""" + declare_sample_delay(sync_detector_sptr self, int which, int delay) + declare_sample_delay(sync_detector_sptr self, unsigned int delay) + """ + return _tempest_swig.sync_detector_sptr_declare_sample_delay(self, *args) + + def sample_delay(self, which: "int") -> "unsigned int": + r"""sample_delay(sync_detector_sptr self, int which) -> unsigned int""" + return _tempest_swig.sync_detector_sptr_sample_delay(self, which) + + def set_output_multiple(self, multiple: "int") -> "void": + r"""set_output_multiple(sync_detector_sptr self, int multiple)""" + return _tempest_swig.sync_detector_sptr_set_output_multiple(self, multiple) + + def output_multiple(self) -> "int": + r"""output_multiple(sync_detector_sptr self) -> int""" + return _tempest_swig.sync_detector_sptr_output_multiple(self) + + def relative_rate(self) -> "double": + r"""relative_rate(sync_detector_sptr self) -> double""" + return _tempest_swig.sync_detector_sptr_relative_rate(self) + + def relative_rate_i(self) -> "uint64_t": + r"""relative_rate_i(sync_detector_sptr self) -> uint64_t""" + return _tempest_swig.sync_detector_sptr_relative_rate_i(self) + + def relative_rate_d(self) -> "uint64_t": + r"""relative_rate_d(sync_detector_sptr self) -> uint64_t""" + return _tempest_swig.sync_detector_sptr_relative_rate_d(self) + + def start(self) -> "bool": + r"""start(sync_detector_sptr self) -> bool""" + return _tempest_swig.sync_detector_sptr_start(self) + + def stop(self) -> "bool": + r"""stop(sync_detector_sptr self) -> bool""" + return _tempest_swig.sync_detector_sptr_stop(self) + + def nitems_read(self, which_input: "unsigned int") -> "uint64_t": + r"""nitems_read(sync_detector_sptr self, unsigned int which_input) -> uint64_t""" + return _tempest_swig.sync_detector_sptr_nitems_read(self, which_input) + + def nitems_written(self, which_output: "unsigned int") -> "uint64_t": + r"""nitems_written(sync_detector_sptr self, unsigned int which_output) -> uint64_t""" + return _tempest_swig.sync_detector_sptr_nitems_written(self, which_output) + + def set_log_level(self, level: "std::string") -> "void": + r"""set_log_level(sync_detector_sptr self, std::string level)""" + return _tempest_swig.sync_detector_sptr_set_log_level(self, level) + + def log_level(self) -> "std::string": + r"""log_level(sync_detector_sptr self) -> std::string""" + return _tempest_swig.sync_detector_sptr_log_level(self) + + def max_noutput_items(self) -> "int": + r"""max_noutput_items(sync_detector_sptr self) -> int""" + return _tempest_swig.sync_detector_sptr_max_noutput_items(self) + + def set_max_noutput_items(self, m: "int") -> "void": + r"""set_max_noutput_items(sync_detector_sptr self, int m)""" + return _tempest_swig.sync_detector_sptr_set_max_noutput_items(self, m) + + def unset_max_noutput_items(self) -> "void": + r"""unset_max_noutput_items(sync_detector_sptr self)""" + return _tempest_swig.sync_detector_sptr_unset_max_noutput_items(self) + + def is_set_max_noutput_items(self) -> "bool": + r"""is_set_max_noutput_items(sync_detector_sptr self) -> bool""" + return _tempest_swig.sync_detector_sptr_is_set_max_noutput_items(self) + + def set_min_noutput_items(self, m: "int") -> "void": + r"""set_min_noutput_items(sync_detector_sptr self, int m)""" + return _tempest_swig.sync_detector_sptr_set_min_noutput_items(self, m) + + def min_noutput_items(self) -> "int": + r"""min_noutput_items(sync_detector_sptr self) -> int""" + return _tempest_swig.sync_detector_sptr_min_noutput_items(self) + + def max_output_buffer(self, i: "int") -> "long": + r"""max_output_buffer(sync_detector_sptr self, int i) -> long""" + return _tempest_swig.sync_detector_sptr_max_output_buffer(self, i) + + def set_max_output_buffer(self, *args) -> "void": + r""" + set_max_output_buffer(sync_detector_sptr self, long max_output_buffer) + set_max_output_buffer(sync_detector_sptr self, int port, long max_output_buffer) + """ + return _tempest_swig.sync_detector_sptr_set_max_output_buffer(self, *args) + + def min_output_buffer(self, i: "int") -> "long": + r"""min_output_buffer(sync_detector_sptr self, int i) -> long""" + return _tempest_swig.sync_detector_sptr_min_output_buffer(self, i) + + def set_min_output_buffer(self, *args) -> "void": + r""" + set_min_output_buffer(sync_detector_sptr self, long min_output_buffer) + set_min_output_buffer(sync_detector_sptr self, int port, long min_output_buffer) + """ + return _tempest_swig.sync_detector_sptr_set_min_output_buffer(self, *args) + + def pc_noutput_items(self) -> "float": + r"""pc_noutput_items(sync_detector_sptr self) -> float""" + return _tempest_swig.sync_detector_sptr_pc_noutput_items(self) + + def pc_noutput_items_avg(self) -> "float": + r"""pc_noutput_items_avg(sync_detector_sptr self) -> float""" + return _tempest_swig.sync_detector_sptr_pc_noutput_items_avg(self) + + def pc_noutput_items_var(self) -> "float": + r"""pc_noutput_items_var(sync_detector_sptr self) -> float""" + return _tempest_swig.sync_detector_sptr_pc_noutput_items_var(self) + + def pc_nproduced(self) -> "float": + r"""pc_nproduced(sync_detector_sptr self) -> float""" + return _tempest_swig.sync_detector_sptr_pc_nproduced(self) + + def pc_nproduced_avg(self) -> "float": + r"""pc_nproduced_avg(sync_detector_sptr self) -> float""" + return _tempest_swig.sync_detector_sptr_pc_nproduced_avg(self) + + def pc_nproduced_var(self) -> "float": + r"""pc_nproduced_var(sync_detector_sptr self) -> float""" + return _tempest_swig.sync_detector_sptr_pc_nproduced_var(self) + + def pc_input_buffers_full(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_input_buffers_full(sync_detector_sptr self, int which) -> float + pc_input_buffers_full(sync_detector_sptr self) -> pmt_vector_float + """ + return _tempest_swig.sync_detector_sptr_pc_input_buffers_full(self, *args) + + def pc_input_buffers_full_avg(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_input_buffers_full_avg(sync_detector_sptr self, int which) -> float + pc_input_buffers_full_avg(sync_detector_sptr self) -> pmt_vector_float + """ + return _tempest_swig.sync_detector_sptr_pc_input_buffers_full_avg(self, *args) + + def pc_input_buffers_full_var(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_input_buffers_full_var(sync_detector_sptr self, int which) -> float + pc_input_buffers_full_var(sync_detector_sptr self) -> pmt_vector_float + """ + return _tempest_swig.sync_detector_sptr_pc_input_buffers_full_var(self, *args) + + def pc_output_buffers_full(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_output_buffers_full(sync_detector_sptr self, int which) -> float + pc_output_buffers_full(sync_detector_sptr self) -> pmt_vector_float + """ + return _tempest_swig.sync_detector_sptr_pc_output_buffers_full(self, *args) + + def pc_output_buffers_full_avg(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_output_buffers_full_avg(sync_detector_sptr self, int which) -> float + pc_output_buffers_full_avg(sync_detector_sptr self) -> pmt_vector_float + """ + return _tempest_swig.sync_detector_sptr_pc_output_buffers_full_avg(self, *args) + + def pc_output_buffers_full_var(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_output_buffers_full_var(sync_detector_sptr self, int which) -> float + pc_output_buffers_full_var(sync_detector_sptr self) -> pmt_vector_float + """ + return _tempest_swig.sync_detector_sptr_pc_output_buffers_full_var(self, *args) + + def pc_work_time(self) -> "float": + r"""pc_work_time(sync_detector_sptr self) -> float""" + return _tempest_swig.sync_detector_sptr_pc_work_time(self) + + def pc_work_time_avg(self) -> "float": + r"""pc_work_time_avg(sync_detector_sptr self) -> float""" + return _tempest_swig.sync_detector_sptr_pc_work_time_avg(self) + + def pc_work_time_var(self) -> "float": + r"""pc_work_time_var(sync_detector_sptr self) -> float""" + return _tempest_swig.sync_detector_sptr_pc_work_time_var(self) + + def pc_work_time_total(self) -> "float": + r"""pc_work_time_total(sync_detector_sptr self) -> float""" + return _tempest_swig.sync_detector_sptr_pc_work_time_total(self) + + def pc_throughput_avg(self) -> "float": + r"""pc_throughput_avg(sync_detector_sptr self) -> float""" + return _tempest_swig.sync_detector_sptr_pc_throughput_avg(self) + + def set_processor_affinity(self, mask: "std::vector< int,std::allocator< int > > const &") -> "void": + r"""set_processor_affinity(sync_detector_sptr self, std::vector< int,std::allocator< int > > const & mask)""" + return _tempest_swig.sync_detector_sptr_set_processor_affinity(self, mask) + + def unset_processor_affinity(self) -> "void": + r"""unset_processor_affinity(sync_detector_sptr self)""" + return _tempest_swig.sync_detector_sptr_unset_processor_affinity(self) + + def processor_affinity(self) -> "std::vector< int,std::allocator< int > >": + r"""processor_affinity(sync_detector_sptr self) -> std::vector< int,std::allocator< int > >""" + return _tempest_swig.sync_detector_sptr_processor_affinity(self) + + def active_thread_priority(self) -> "int": + r"""active_thread_priority(sync_detector_sptr self) -> int""" + return _tempest_swig.sync_detector_sptr_active_thread_priority(self) + + def thread_priority(self) -> "int": + r"""thread_priority(sync_detector_sptr self) -> int""" + return _tempest_swig.sync_detector_sptr_thread_priority(self) + + def set_thread_priority(self, priority: "int") -> "int": + r"""set_thread_priority(sync_detector_sptr self, int priority) -> int""" + return _tempest_swig.sync_detector_sptr_set_thread_priority(self, priority) + + def name(self) -> "std::string": + r"""name(sync_detector_sptr self) -> std::string""" + return _tempest_swig.sync_detector_sptr_name(self) + + def symbol_name(self) -> "std::string": + r"""symbol_name(sync_detector_sptr self) -> std::string""" + return _tempest_swig.sync_detector_sptr_symbol_name(self) + + def input_signature(self) -> "gr::io_signature::sptr": + r"""input_signature(sync_detector_sptr self) -> io_signature_sptr""" + return _tempest_swig.sync_detector_sptr_input_signature(self) + + def output_signature(self) -> "gr::io_signature::sptr": + r"""output_signature(sync_detector_sptr self) -> io_signature_sptr""" + return _tempest_swig.sync_detector_sptr_output_signature(self) + + def unique_id(self) -> "long": + r"""unique_id(sync_detector_sptr self) -> long""" + return _tempest_swig.sync_detector_sptr_unique_id(self) + + def to_basic_block(self) -> "gr::basic_block_sptr": + r"""to_basic_block(sync_detector_sptr self) -> basic_block_sptr""" + return _tempest_swig.sync_detector_sptr_to_basic_block(self) + + def check_topology(self, ninputs: "int", noutputs: "int") -> "bool": + r"""check_topology(sync_detector_sptr self, int ninputs, int noutputs) -> bool""" + return _tempest_swig.sync_detector_sptr_check_topology(self, ninputs, noutputs) + + def alias(self) -> "std::string": + r"""alias(sync_detector_sptr self) -> std::string""" + return _tempest_swig.sync_detector_sptr_alias(self) + + def set_block_alias(self, name: "std::string") -> "void": + r"""set_block_alias(sync_detector_sptr self, std::string name)""" + return _tempest_swig.sync_detector_sptr_set_block_alias(self, name) + + def _post(self, which_port: "swig_pmt_ptr", msg: "swig_pmt_ptr") -> "void": + r"""_post(sync_detector_sptr self, swig_pmt_ptr which_port, swig_pmt_ptr msg)""" + return _tempest_swig.sync_detector_sptr__post(self, which_port, msg) + + def message_ports_in(self) -> "pmt::pmt_t": + r"""message_ports_in(sync_detector_sptr self) -> swig_pmt_ptr""" + return _tempest_swig.sync_detector_sptr_message_ports_in(self) + + def message_ports_out(self) -> "pmt::pmt_t": + r"""message_ports_out(sync_detector_sptr self) -> swig_pmt_ptr""" + return _tempest_swig.sync_detector_sptr_message_ports_out(self) + + def message_subscribers(self, which_port: "swig_pmt_ptr") -> "pmt::pmt_t": + r"""message_subscribers(sync_detector_sptr self, swig_pmt_ptr which_port) -> swig_pmt_ptr""" + return _tempest_swig.sync_detector_sptr_message_subscribers(self, which_port) + +# Register sync_detector_sptr in _tempest_swig: +_tempest_swig.sync_detector_sptr_swigregister(sync_detector_sptr) + + +sync_detector_sptr.__repr__ = lambda self: "" % (self.name(), self.unique_id()) +sync_detector = sync_detector.make; + +class frame_drop(object): + r"""Proxy of C++ gr::tempest::frame_drop class.""" + + thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag") + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined") + __repr__ = _swig_repr + + @staticmethod + def make(Htotal: "int", Vtotal: "int", correct_sampling: "int", max_deviation: "float", update_proba: "float", actual_samp_rate: "double") -> "gr::tempest::frame_drop::sptr": + r"""make(int Htotal, int Vtotal, int correct_sampling, float max_deviation, float update_proba, double actual_samp_rate) -> frame_drop_sptr""" + return _tempest_swig.frame_drop_make(Htotal, Vtotal, correct_sampling, max_deviation, update_proba, actual_samp_rate) + __swig_destroy__ = _tempest_swig.delete_frame_drop + +# Register frame_drop in _tempest_swig: +_tempest_swig.frame_drop_swigregister(frame_drop) + +def frame_drop_make(Htotal: "int", Vtotal: "int", correct_sampling: "int", max_deviation: "float", update_proba: "float", actual_samp_rate: "double") -> "gr::tempest::frame_drop::sptr": + r"""frame_drop_make(int Htotal, int Vtotal, int correct_sampling, float max_deviation, float update_proba, double actual_samp_rate) -> frame_drop_sptr""" + return _tempest_swig.frame_drop_make(Htotal, Vtotal, correct_sampling, max_deviation, update_proba, actual_samp_rate) + +class frame_drop_sptr(object): + r"""Proxy of C++ boost::shared_ptr< gr::tempest::frame_drop > class.""" + + thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag") + __repr__ = _swig_repr + + def __init__(self, *args): + r""" + __init__(frame_drop_sptr self) -> frame_drop_sptr + __init__(frame_drop_sptr self, frame_drop p) -> frame_drop_sptr + """ + _tempest_swig.frame_drop_sptr_swiginit(self, _tempest_swig.new_frame_drop_sptr(*args)) + + def __deref__(self) -> "gr::tempest::frame_drop *": + r"""__deref__(frame_drop_sptr self) -> frame_drop""" + return _tempest_swig.frame_drop_sptr___deref__(self) + __swig_destroy__ = _tempest_swig.delete_frame_drop_sptr + + def make(self, Htotal: "int", Vtotal: "int", correct_sampling: "int", max_deviation: "float", update_proba: "float", actual_samp_rate: "double") -> "gr::tempest::frame_drop::sptr": + r"""make(frame_drop_sptr self, int Htotal, int Vtotal, int correct_sampling, float max_deviation, float update_proba, double actual_samp_rate) -> frame_drop_sptr""" + return _tempest_swig.frame_drop_sptr_make(self, Htotal, Vtotal, correct_sampling, max_deviation, update_proba, actual_samp_rate) + + def history(self) -> "unsigned int": + r"""history(frame_drop_sptr self) -> unsigned int""" + return _tempest_swig.frame_drop_sptr_history(self) + + def declare_sample_delay(self, *args) -> "void": + r""" + declare_sample_delay(frame_drop_sptr self, int which, int delay) + declare_sample_delay(frame_drop_sptr self, unsigned int delay) + """ + return _tempest_swig.frame_drop_sptr_declare_sample_delay(self, *args) + + def sample_delay(self, which: "int") -> "unsigned int": + r"""sample_delay(frame_drop_sptr self, int which) -> unsigned int""" + return _tempest_swig.frame_drop_sptr_sample_delay(self, which) + + def set_output_multiple(self, multiple: "int") -> "void": + r"""set_output_multiple(frame_drop_sptr self, int multiple)""" + return _tempest_swig.frame_drop_sptr_set_output_multiple(self, multiple) + + def output_multiple(self) -> "int": + r"""output_multiple(frame_drop_sptr self) -> int""" + return _tempest_swig.frame_drop_sptr_output_multiple(self) + + def relative_rate(self) -> "double": + r"""relative_rate(frame_drop_sptr self) -> double""" + return _tempest_swig.frame_drop_sptr_relative_rate(self) + + def relative_rate_i(self) -> "uint64_t": + r"""relative_rate_i(frame_drop_sptr self) -> uint64_t""" + return _tempest_swig.frame_drop_sptr_relative_rate_i(self) + + def relative_rate_d(self) -> "uint64_t": + r"""relative_rate_d(frame_drop_sptr self) -> uint64_t""" + return _tempest_swig.frame_drop_sptr_relative_rate_d(self) + + def start(self) -> "bool": + r"""start(frame_drop_sptr self) -> bool""" + return _tempest_swig.frame_drop_sptr_start(self) + + def stop(self) -> "bool": + r"""stop(frame_drop_sptr self) -> bool""" + return _tempest_swig.frame_drop_sptr_stop(self) + + def nitems_read(self, which_input: "unsigned int") -> "uint64_t": + r"""nitems_read(frame_drop_sptr self, unsigned int which_input) -> uint64_t""" + return _tempest_swig.frame_drop_sptr_nitems_read(self, which_input) + + def nitems_written(self, which_output: "unsigned int") -> "uint64_t": + r"""nitems_written(frame_drop_sptr self, unsigned int which_output) -> uint64_t""" + return _tempest_swig.frame_drop_sptr_nitems_written(self, which_output) + + def set_log_level(self, level: "std::string") -> "void": + r"""set_log_level(frame_drop_sptr self, std::string level)""" + return _tempest_swig.frame_drop_sptr_set_log_level(self, level) + + def log_level(self) -> "std::string": + r"""log_level(frame_drop_sptr self) -> std::string""" + return _tempest_swig.frame_drop_sptr_log_level(self) + + def max_noutput_items(self) -> "int": + r"""max_noutput_items(frame_drop_sptr self) -> int""" + return _tempest_swig.frame_drop_sptr_max_noutput_items(self) + + def set_max_noutput_items(self, m: "int") -> "void": + r"""set_max_noutput_items(frame_drop_sptr self, int m)""" + return _tempest_swig.frame_drop_sptr_set_max_noutput_items(self, m) + + def unset_max_noutput_items(self) -> "void": + r"""unset_max_noutput_items(frame_drop_sptr self)""" + return _tempest_swig.frame_drop_sptr_unset_max_noutput_items(self) + + def is_set_max_noutput_items(self) -> "bool": + r"""is_set_max_noutput_items(frame_drop_sptr self) -> bool""" + return _tempest_swig.frame_drop_sptr_is_set_max_noutput_items(self) + + def set_min_noutput_items(self, m: "int") -> "void": + r"""set_min_noutput_items(frame_drop_sptr self, int m)""" + return _tempest_swig.frame_drop_sptr_set_min_noutput_items(self, m) + + def min_noutput_items(self) -> "int": + r"""min_noutput_items(frame_drop_sptr self) -> int""" + return _tempest_swig.frame_drop_sptr_min_noutput_items(self) + + def max_output_buffer(self, i: "int") -> "long": + r"""max_output_buffer(frame_drop_sptr self, int i) -> long""" + return _tempest_swig.frame_drop_sptr_max_output_buffer(self, i) + + def set_max_output_buffer(self, *args) -> "void": + r""" + set_max_output_buffer(frame_drop_sptr self, long max_output_buffer) + set_max_output_buffer(frame_drop_sptr self, int port, long max_output_buffer) + """ + return _tempest_swig.frame_drop_sptr_set_max_output_buffer(self, *args) + + def min_output_buffer(self, i: "int") -> "long": + r"""min_output_buffer(frame_drop_sptr self, int i) -> long""" + return _tempest_swig.frame_drop_sptr_min_output_buffer(self, i) + + def set_min_output_buffer(self, *args) -> "void": + r""" + set_min_output_buffer(frame_drop_sptr self, long min_output_buffer) + set_min_output_buffer(frame_drop_sptr self, int port, long min_output_buffer) + """ + return _tempest_swig.frame_drop_sptr_set_min_output_buffer(self, *args) + + def pc_noutput_items(self) -> "float": + r"""pc_noutput_items(frame_drop_sptr self) -> float""" + return _tempest_swig.frame_drop_sptr_pc_noutput_items(self) + + def pc_noutput_items_avg(self) -> "float": + r"""pc_noutput_items_avg(frame_drop_sptr self) -> float""" + return _tempest_swig.frame_drop_sptr_pc_noutput_items_avg(self) + + def pc_noutput_items_var(self) -> "float": + r"""pc_noutput_items_var(frame_drop_sptr self) -> float""" + return _tempest_swig.frame_drop_sptr_pc_noutput_items_var(self) + + def pc_nproduced(self) -> "float": + r"""pc_nproduced(frame_drop_sptr self) -> float""" + return _tempest_swig.frame_drop_sptr_pc_nproduced(self) + + def pc_nproduced_avg(self) -> "float": + r"""pc_nproduced_avg(frame_drop_sptr self) -> float""" + return _tempest_swig.frame_drop_sptr_pc_nproduced_avg(self) + + def pc_nproduced_var(self) -> "float": + r"""pc_nproduced_var(frame_drop_sptr self) -> float""" + return _tempest_swig.frame_drop_sptr_pc_nproduced_var(self) + + def pc_input_buffers_full(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_input_buffers_full(frame_drop_sptr self, int which) -> float + pc_input_buffers_full(frame_drop_sptr self) -> pmt_vector_float + """ + return _tempest_swig.frame_drop_sptr_pc_input_buffers_full(self, *args) + + def pc_input_buffers_full_avg(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_input_buffers_full_avg(frame_drop_sptr self, int which) -> float + pc_input_buffers_full_avg(frame_drop_sptr self) -> pmt_vector_float + """ + return _tempest_swig.frame_drop_sptr_pc_input_buffers_full_avg(self, *args) + + def pc_input_buffers_full_var(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_input_buffers_full_var(frame_drop_sptr self, int which) -> float + pc_input_buffers_full_var(frame_drop_sptr self) -> pmt_vector_float + """ + return _tempest_swig.frame_drop_sptr_pc_input_buffers_full_var(self, *args) + + def pc_output_buffers_full(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_output_buffers_full(frame_drop_sptr self, int which) -> float + pc_output_buffers_full(frame_drop_sptr self) -> pmt_vector_float + """ + return _tempest_swig.frame_drop_sptr_pc_output_buffers_full(self, *args) + + def pc_output_buffers_full_avg(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_output_buffers_full_avg(frame_drop_sptr self, int which) -> float + pc_output_buffers_full_avg(frame_drop_sptr self) -> pmt_vector_float + """ + return _tempest_swig.frame_drop_sptr_pc_output_buffers_full_avg(self, *args) + + def pc_output_buffers_full_var(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_output_buffers_full_var(frame_drop_sptr self, int which) -> float + pc_output_buffers_full_var(frame_drop_sptr self) -> pmt_vector_float + """ + return _tempest_swig.frame_drop_sptr_pc_output_buffers_full_var(self, *args) + + def pc_work_time(self) -> "float": + r"""pc_work_time(frame_drop_sptr self) -> float""" + return _tempest_swig.frame_drop_sptr_pc_work_time(self) + + def pc_work_time_avg(self) -> "float": + r"""pc_work_time_avg(frame_drop_sptr self) -> float""" + return _tempest_swig.frame_drop_sptr_pc_work_time_avg(self) + + def pc_work_time_var(self) -> "float": + r"""pc_work_time_var(frame_drop_sptr self) -> float""" + return _tempest_swig.frame_drop_sptr_pc_work_time_var(self) + + def pc_work_time_total(self) -> "float": + r"""pc_work_time_total(frame_drop_sptr self) -> float""" + return _tempest_swig.frame_drop_sptr_pc_work_time_total(self) + + def pc_throughput_avg(self) -> "float": + r"""pc_throughput_avg(frame_drop_sptr self) -> float""" + return _tempest_swig.frame_drop_sptr_pc_throughput_avg(self) + + def set_processor_affinity(self, mask: "std::vector< int,std::allocator< int > > const &") -> "void": + r"""set_processor_affinity(frame_drop_sptr self, std::vector< int,std::allocator< int > > const & mask)""" + return _tempest_swig.frame_drop_sptr_set_processor_affinity(self, mask) + + def unset_processor_affinity(self) -> "void": + r"""unset_processor_affinity(frame_drop_sptr self)""" + return _tempest_swig.frame_drop_sptr_unset_processor_affinity(self) + + def processor_affinity(self) -> "std::vector< int,std::allocator< int > >": + r"""processor_affinity(frame_drop_sptr self) -> std::vector< int,std::allocator< int > >""" + return _tempest_swig.frame_drop_sptr_processor_affinity(self) + + def active_thread_priority(self) -> "int": + r"""active_thread_priority(frame_drop_sptr self) -> int""" + return _tempest_swig.frame_drop_sptr_active_thread_priority(self) + + def thread_priority(self) -> "int": + r"""thread_priority(frame_drop_sptr self) -> int""" + return _tempest_swig.frame_drop_sptr_thread_priority(self) + + def set_thread_priority(self, priority: "int") -> "int": + r"""set_thread_priority(frame_drop_sptr self, int priority) -> int""" + return _tempest_swig.frame_drop_sptr_set_thread_priority(self, priority) + + def name(self) -> "std::string": + r"""name(frame_drop_sptr self) -> std::string""" + return _tempest_swig.frame_drop_sptr_name(self) + + def symbol_name(self) -> "std::string": + r"""symbol_name(frame_drop_sptr self) -> std::string""" + return _tempest_swig.frame_drop_sptr_symbol_name(self) + + def input_signature(self) -> "gr::io_signature::sptr": + r"""input_signature(frame_drop_sptr self) -> io_signature_sptr""" + return _tempest_swig.frame_drop_sptr_input_signature(self) + + def output_signature(self) -> "gr::io_signature::sptr": + r"""output_signature(frame_drop_sptr self) -> io_signature_sptr""" + return _tempest_swig.frame_drop_sptr_output_signature(self) + + def unique_id(self) -> "long": + r"""unique_id(frame_drop_sptr self) -> long""" + return _tempest_swig.frame_drop_sptr_unique_id(self) + + def to_basic_block(self) -> "gr::basic_block_sptr": + r"""to_basic_block(frame_drop_sptr self) -> basic_block_sptr""" + return _tempest_swig.frame_drop_sptr_to_basic_block(self) + + def check_topology(self, ninputs: "int", noutputs: "int") -> "bool": + r"""check_topology(frame_drop_sptr self, int ninputs, int noutputs) -> bool""" + return _tempest_swig.frame_drop_sptr_check_topology(self, ninputs, noutputs) + + def alias(self) -> "std::string": + r"""alias(frame_drop_sptr self) -> std::string""" + return _tempest_swig.frame_drop_sptr_alias(self) + + def set_block_alias(self, name: "std::string") -> "void": + r"""set_block_alias(frame_drop_sptr self, std::string name)""" + return _tempest_swig.frame_drop_sptr_set_block_alias(self, name) + + def _post(self, which_port: "swig_pmt_ptr", msg: "swig_pmt_ptr") -> "void": + r"""_post(frame_drop_sptr self, swig_pmt_ptr which_port, swig_pmt_ptr msg)""" + return _tempest_swig.frame_drop_sptr__post(self, which_port, msg) + + def message_ports_in(self) -> "pmt::pmt_t": + r"""message_ports_in(frame_drop_sptr self) -> swig_pmt_ptr""" + return _tempest_swig.frame_drop_sptr_message_ports_in(self) + + def message_ports_out(self) -> "pmt::pmt_t": + r"""message_ports_out(frame_drop_sptr self) -> swig_pmt_ptr""" + return _tempest_swig.frame_drop_sptr_message_ports_out(self) + + def message_subscribers(self, which_port: "swig_pmt_ptr") -> "pmt::pmt_t": + r"""message_subscribers(frame_drop_sptr self, swig_pmt_ptr which_port) -> swig_pmt_ptr""" + return _tempest_swig.frame_drop_sptr_message_subscribers(self, which_port) + +# Register frame_drop_sptr in _tempest_swig: +_tempest_swig.frame_drop_sptr_swigregister(frame_drop_sptr) + + +frame_drop_sptr.__repr__ = lambda self: "" % (self.name(), self.unique_id()) +frame_drop = frame_drop.make; + +class fft_peak_fine_sampling_sync(object): + r"""Proxy of C++ gr::tempest::fft_peak_fine_sampling_sync class.""" + + thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag") + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined") + __repr__ = _swig_repr + + @staticmethod + def make(sample_rate: "int", size: "int", refresh_rate: "int", Vvisible: "int", Hvisible: "int", automatic_mode: "bool") -> "gr::tempest::fft_peak_fine_sampling_sync::sptr": + r"""make(int sample_rate, int size, int refresh_rate, int Vvisible, int Hvisible, bool automatic_mode) -> fft_peak_fine_sampling_sync_sptr""" + return _tempest_swig.fft_peak_fine_sampling_sync_make(sample_rate, size, refresh_rate, Vvisible, Hvisible, automatic_mode) + __swig_destroy__ = _tempest_swig.delete_fft_peak_fine_sampling_sync + +# Register fft_peak_fine_sampling_sync in _tempest_swig: +_tempest_swig.fft_peak_fine_sampling_sync_swigregister(fft_peak_fine_sampling_sync) + +def fft_peak_fine_sampling_sync_make(sample_rate: "int", size: "int", refresh_rate: "int", Vvisible: "int", Hvisible: "int", automatic_mode: "bool") -> "gr::tempest::fft_peak_fine_sampling_sync::sptr": + r"""fft_peak_fine_sampling_sync_make(int sample_rate, int size, int refresh_rate, int Vvisible, int Hvisible, bool automatic_mode) -> fft_peak_fine_sampling_sync_sptr""" + return _tempest_swig.fft_peak_fine_sampling_sync_make(sample_rate, size, refresh_rate, Vvisible, Hvisible, automatic_mode) + +class fft_peak_fine_sampling_sync_sptr(object): + r"""Proxy of C++ boost::shared_ptr< gr::tempest::fft_peak_fine_sampling_sync > class.""" + + thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag") + __repr__ = _swig_repr + + def __init__(self, *args): + r""" + __init__(fft_peak_fine_sampling_sync_sptr self) -> fft_peak_fine_sampling_sync_sptr + __init__(fft_peak_fine_sampling_sync_sptr self, fft_peak_fine_sampling_sync p) -> fft_peak_fine_sampling_sync_sptr + """ + _tempest_swig.fft_peak_fine_sampling_sync_sptr_swiginit(self, _tempest_swig.new_fft_peak_fine_sampling_sync_sptr(*args)) + + def __deref__(self) -> "gr::tempest::fft_peak_fine_sampling_sync *": + r"""__deref__(fft_peak_fine_sampling_sync_sptr self) -> fft_peak_fine_sampling_sync""" + return _tempest_swig.fft_peak_fine_sampling_sync_sptr___deref__(self) + __swig_destroy__ = _tempest_swig.delete_fft_peak_fine_sampling_sync_sptr + + def make(self, sample_rate: "int", size: "int", refresh_rate: "int", Vvisible: "int", Hvisible: "int", automatic_mode: "bool") -> "gr::tempest::fft_peak_fine_sampling_sync::sptr": + r"""make(fft_peak_fine_sampling_sync_sptr self, int sample_rate, int size, int refresh_rate, int Vvisible, int Hvisible, bool automatic_mode) -> fft_peak_fine_sampling_sync_sptr""" + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_make(self, sample_rate, size, refresh_rate, Vvisible, Hvisible, automatic_mode) + + def history(self) -> "unsigned int": + r"""history(fft_peak_fine_sampling_sync_sptr self) -> unsigned int""" + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_history(self) + + def declare_sample_delay(self, *args) -> "void": + r""" + declare_sample_delay(fft_peak_fine_sampling_sync_sptr self, int which, int delay) + declare_sample_delay(fft_peak_fine_sampling_sync_sptr self, unsigned int delay) + """ + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_declare_sample_delay(self, *args) + + def sample_delay(self, which: "int") -> "unsigned int": + r"""sample_delay(fft_peak_fine_sampling_sync_sptr self, int which) -> unsigned int""" + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_sample_delay(self, which) + + def set_output_multiple(self, multiple: "int") -> "void": + r"""set_output_multiple(fft_peak_fine_sampling_sync_sptr self, int multiple)""" + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_set_output_multiple(self, multiple) + + def output_multiple(self) -> "int": + r"""output_multiple(fft_peak_fine_sampling_sync_sptr self) -> int""" + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_output_multiple(self) + + def relative_rate(self) -> "double": + r"""relative_rate(fft_peak_fine_sampling_sync_sptr self) -> double""" + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_relative_rate(self) + + def relative_rate_i(self) -> "uint64_t": + r"""relative_rate_i(fft_peak_fine_sampling_sync_sptr self) -> uint64_t""" + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_relative_rate_i(self) + + def relative_rate_d(self) -> "uint64_t": + r"""relative_rate_d(fft_peak_fine_sampling_sync_sptr self) -> uint64_t""" + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_relative_rate_d(self) + + def start(self) -> "bool": + r"""start(fft_peak_fine_sampling_sync_sptr self) -> bool""" + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_start(self) + + def stop(self) -> "bool": + r"""stop(fft_peak_fine_sampling_sync_sptr self) -> bool""" + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_stop(self) + + def nitems_read(self, which_input: "unsigned int") -> "uint64_t": + r"""nitems_read(fft_peak_fine_sampling_sync_sptr self, unsigned int which_input) -> uint64_t""" + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_nitems_read(self, which_input) + + def nitems_written(self, which_output: "unsigned int") -> "uint64_t": + r"""nitems_written(fft_peak_fine_sampling_sync_sptr self, unsigned int which_output) -> uint64_t""" + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_nitems_written(self, which_output) + + def set_log_level(self, level: "std::string") -> "void": + r"""set_log_level(fft_peak_fine_sampling_sync_sptr self, std::string level)""" + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_set_log_level(self, level) + + def log_level(self) -> "std::string": + r"""log_level(fft_peak_fine_sampling_sync_sptr self) -> std::string""" + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_log_level(self) + + def max_noutput_items(self) -> "int": + r"""max_noutput_items(fft_peak_fine_sampling_sync_sptr self) -> int""" + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_max_noutput_items(self) + + def set_max_noutput_items(self, m: "int") -> "void": + r"""set_max_noutput_items(fft_peak_fine_sampling_sync_sptr self, int m)""" + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_set_max_noutput_items(self, m) + + def unset_max_noutput_items(self) -> "void": + r"""unset_max_noutput_items(fft_peak_fine_sampling_sync_sptr self)""" + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_unset_max_noutput_items(self) + + def is_set_max_noutput_items(self) -> "bool": + r"""is_set_max_noutput_items(fft_peak_fine_sampling_sync_sptr self) -> bool""" + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_is_set_max_noutput_items(self) + + def set_min_noutput_items(self, m: "int") -> "void": + r"""set_min_noutput_items(fft_peak_fine_sampling_sync_sptr self, int m)""" + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_set_min_noutput_items(self, m) + + def min_noutput_items(self) -> "int": + r"""min_noutput_items(fft_peak_fine_sampling_sync_sptr self) -> int""" + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_min_noutput_items(self) + + def max_output_buffer(self, i: "int") -> "long": + r"""max_output_buffer(fft_peak_fine_sampling_sync_sptr self, int i) -> long""" + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_max_output_buffer(self, i) + + def set_max_output_buffer(self, *args) -> "void": + r""" + set_max_output_buffer(fft_peak_fine_sampling_sync_sptr self, long max_output_buffer) + set_max_output_buffer(fft_peak_fine_sampling_sync_sptr self, int port, long max_output_buffer) + """ + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_set_max_output_buffer(self, *args) + + def min_output_buffer(self, i: "int") -> "long": + r"""min_output_buffer(fft_peak_fine_sampling_sync_sptr self, int i) -> long""" + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_min_output_buffer(self, i) + + def set_min_output_buffer(self, *args) -> "void": + r""" + set_min_output_buffer(fft_peak_fine_sampling_sync_sptr self, long min_output_buffer) + set_min_output_buffer(fft_peak_fine_sampling_sync_sptr self, int port, long min_output_buffer) + """ + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_set_min_output_buffer(self, *args) + + def pc_noutput_items(self) -> "float": + r"""pc_noutput_items(fft_peak_fine_sampling_sync_sptr self) -> float""" + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_pc_noutput_items(self) + + def pc_noutput_items_avg(self) -> "float": + r"""pc_noutput_items_avg(fft_peak_fine_sampling_sync_sptr self) -> float""" + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_pc_noutput_items_avg(self) + + def pc_noutput_items_var(self) -> "float": + r"""pc_noutput_items_var(fft_peak_fine_sampling_sync_sptr self) -> float""" + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_pc_noutput_items_var(self) + + def pc_nproduced(self) -> "float": + r"""pc_nproduced(fft_peak_fine_sampling_sync_sptr self) -> float""" + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_pc_nproduced(self) + + def pc_nproduced_avg(self) -> "float": + r"""pc_nproduced_avg(fft_peak_fine_sampling_sync_sptr self) -> float""" + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_pc_nproduced_avg(self) + + def pc_nproduced_var(self) -> "float": + r"""pc_nproduced_var(fft_peak_fine_sampling_sync_sptr self) -> float""" + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_pc_nproduced_var(self) + + def pc_input_buffers_full(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_input_buffers_full(fft_peak_fine_sampling_sync_sptr self, int which) -> float + pc_input_buffers_full(fft_peak_fine_sampling_sync_sptr self) -> pmt_vector_float + """ + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_pc_input_buffers_full(self, *args) + + def pc_input_buffers_full_avg(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_input_buffers_full_avg(fft_peak_fine_sampling_sync_sptr self, int which) -> float + pc_input_buffers_full_avg(fft_peak_fine_sampling_sync_sptr self) -> pmt_vector_float + """ + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_pc_input_buffers_full_avg(self, *args) + + def pc_input_buffers_full_var(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_input_buffers_full_var(fft_peak_fine_sampling_sync_sptr self, int which) -> float + pc_input_buffers_full_var(fft_peak_fine_sampling_sync_sptr self) -> pmt_vector_float + """ + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_pc_input_buffers_full_var(self, *args) + + def pc_output_buffers_full(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_output_buffers_full(fft_peak_fine_sampling_sync_sptr self, int which) -> float + pc_output_buffers_full(fft_peak_fine_sampling_sync_sptr self) -> pmt_vector_float + """ + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_pc_output_buffers_full(self, *args) + + def pc_output_buffers_full_avg(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_output_buffers_full_avg(fft_peak_fine_sampling_sync_sptr self, int which) -> float + pc_output_buffers_full_avg(fft_peak_fine_sampling_sync_sptr self) -> pmt_vector_float + """ + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_pc_output_buffers_full_avg(self, *args) + + def pc_output_buffers_full_var(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_output_buffers_full_var(fft_peak_fine_sampling_sync_sptr self, int which) -> float + pc_output_buffers_full_var(fft_peak_fine_sampling_sync_sptr self) -> pmt_vector_float + """ + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_pc_output_buffers_full_var(self, *args) + + def pc_work_time(self) -> "float": + r"""pc_work_time(fft_peak_fine_sampling_sync_sptr self) -> float""" + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_pc_work_time(self) + + def pc_work_time_avg(self) -> "float": + r"""pc_work_time_avg(fft_peak_fine_sampling_sync_sptr self) -> float""" + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_pc_work_time_avg(self) + + def pc_work_time_var(self) -> "float": + r"""pc_work_time_var(fft_peak_fine_sampling_sync_sptr self) -> float""" + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_pc_work_time_var(self) + + def pc_work_time_total(self) -> "float": + r"""pc_work_time_total(fft_peak_fine_sampling_sync_sptr self) -> float""" + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_pc_work_time_total(self) + + def pc_throughput_avg(self) -> "float": + r"""pc_throughput_avg(fft_peak_fine_sampling_sync_sptr self) -> float""" + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_pc_throughput_avg(self) + + def set_processor_affinity(self, mask: "std::vector< int,std::allocator< int > > const &") -> "void": + r"""set_processor_affinity(fft_peak_fine_sampling_sync_sptr self, std::vector< int,std::allocator< int > > const & mask)""" + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_set_processor_affinity(self, mask) + + def unset_processor_affinity(self) -> "void": + r"""unset_processor_affinity(fft_peak_fine_sampling_sync_sptr self)""" + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_unset_processor_affinity(self) + + def processor_affinity(self) -> "std::vector< int,std::allocator< int > >": + r"""processor_affinity(fft_peak_fine_sampling_sync_sptr self) -> std::vector< int,std::allocator< int > >""" + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_processor_affinity(self) + + def active_thread_priority(self) -> "int": + r"""active_thread_priority(fft_peak_fine_sampling_sync_sptr self) -> int""" + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_active_thread_priority(self) + + def thread_priority(self) -> "int": + r"""thread_priority(fft_peak_fine_sampling_sync_sptr self) -> int""" + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_thread_priority(self) + + def set_thread_priority(self, priority: "int") -> "int": + r"""set_thread_priority(fft_peak_fine_sampling_sync_sptr self, int priority) -> int""" + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_set_thread_priority(self, priority) + + def name(self) -> "std::string": + r"""name(fft_peak_fine_sampling_sync_sptr self) -> std::string""" + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_name(self) + + def symbol_name(self) -> "std::string": + r"""symbol_name(fft_peak_fine_sampling_sync_sptr self) -> std::string""" + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_symbol_name(self) + + def input_signature(self) -> "gr::io_signature::sptr": + r"""input_signature(fft_peak_fine_sampling_sync_sptr self) -> io_signature_sptr""" + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_input_signature(self) + + def output_signature(self) -> "gr::io_signature::sptr": + r"""output_signature(fft_peak_fine_sampling_sync_sptr self) -> io_signature_sptr""" + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_output_signature(self) + + def unique_id(self) -> "long": + r"""unique_id(fft_peak_fine_sampling_sync_sptr self) -> long""" + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_unique_id(self) + + def to_basic_block(self) -> "gr::basic_block_sptr": + r"""to_basic_block(fft_peak_fine_sampling_sync_sptr self) -> basic_block_sptr""" + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_to_basic_block(self) + + def check_topology(self, ninputs: "int", noutputs: "int") -> "bool": + r"""check_topology(fft_peak_fine_sampling_sync_sptr self, int ninputs, int noutputs) -> bool""" + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_check_topology(self, ninputs, noutputs) + + def alias(self) -> "std::string": + r"""alias(fft_peak_fine_sampling_sync_sptr self) -> std::string""" + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_alias(self) + + def set_block_alias(self, name: "std::string") -> "void": + r"""set_block_alias(fft_peak_fine_sampling_sync_sptr self, std::string name)""" + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_set_block_alias(self, name) + + def _post(self, which_port: "swig_pmt_ptr", msg: "swig_pmt_ptr") -> "void": + r"""_post(fft_peak_fine_sampling_sync_sptr self, swig_pmt_ptr which_port, swig_pmt_ptr msg)""" + return _tempest_swig.fft_peak_fine_sampling_sync_sptr__post(self, which_port, msg) + + def message_ports_in(self) -> "pmt::pmt_t": + r"""message_ports_in(fft_peak_fine_sampling_sync_sptr self) -> swig_pmt_ptr""" + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_message_ports_in(self) + + def message_ports_out(self) -> "pmt::pmt_t": + r"""message_ports_out(fft_peak_fine_sampling_sync_sptr self) -> swig_pmt_ptr""" + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_message_ports_out(self) + + def message_subscribers(self, which_port: "swig_pmt_ptr") -> "pmt::pmt_t": + r"""message_subscribers(fft_peak_fine_sampling_sync_sptr self, swig_pmt_ptr which_port) -> swig_pmt_ptr""" + return _tempest_swig.fft_peak_fine_sampling_sync_sptr_message_subscribers(self, which_port) + +# Register fft_peak_fine_sampling_sync_sptr in _tempest_swig: +_tempest_swig.fft_peak_fine_sampling_sync_sptr_swigregister(fft_peak_fine_sampling_sync_sptr) + + +fft_peak_fine_sampling_sync_sptr.__repr__ = lambda self: "" % (self.name(), self.unique_id()) +fft_peak_fine_sampling_sync = fft_peak_fine_sampling_sync.make; + +class infer_screen_resolution(object): + r"""Proxy of C++ gr::tempest::infer_screen_resolution class.""" + + thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag") + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + + def set_refresh_rate(self, refresh_rate: "float") -> "void": + r"""set_refresh_rate(infer_screen_resolution self, float refresh_rate)""" + return _tempest_swig.infer_screen_resolution_set_refresh_rate(self, refresh_rate) + + @staticmethod + def make(sample_rate: "int", fft_size: "int", refresh_rate: "float", automatic_mode: "bool") -> "gr::tempest::infer_screen_resolution::sptr": + r"""make(int sample_rate, int fft_size, float refresh_rate, bool automatic_mode) -> infer_screen_resolution_sptr""" + return _tempest_swig.infer_screen_resolution_make(sample_rate, fft_size, refresh_rate, automatic_mode) + __swig_destroy__ = _tempest_swig.delete_infer_screen_resolution + +# Register infer_screen_resolution in _tempest_swig: +_tempest_swig.infer_screen_resolution_swigregister(infer_screen_resolution) + +def infer_screen_resolution_make(sample_rate: "int", fft_size: "int", refresh_rate: "float", automatic_mode: "bool") -> "gr::tempest::infer_screen_resolution::sptr": + r"""infer_screen_resolution_make(int sample_rate, int fft_size, float refresh_rate, bool automatic_mode) -> infer_screen_resolution_sptr""" + return _tempest_swig.infer_screen_resolution_make(sample_rate, fft_size, refresh_rate, automatic_mode) + +class infer_screen_resolution_sptr(object): + r"""Proxy of C++ boost::shared_ptr< gr::tempest::infer_screen_resolution > class.""" + + thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag") + __repr__ = _swig_repr + + def __init__(self, *args): + r""" + __init__(infer_screen_resolution_sptr self) -> infer_screen_resolution_sptr + __init__(infer_screen_resolution_sptr self, infer_screen_resolution p) -> infer_screen_resolution_sptr + """ + _tempest_swig.infer_screen_resolution_sptr_swiginit(self, _tempest_swig.new_infer_screen_resolution_sptr(*args)) + + def __deref__(self) -> "gr::tempest::infer_screen_resolution *": + r"""__deref__(infer_screen_resolution_sptr self) -> infer_screen_resolution""" + return _tempest_swig.infer_screen_resolution_sptr___deref__(self) + __swig_destroy__ = _tempest_swig.delete_infer_screen_resolution_sptr + + def set_refresh_rate(self, refresh_rate: "float") -> "void": + r"""set_refresh_rate(infer_screen_resolution_sptr self, float refresh_rate)""" + return _tempest_swig.infer_screen_resolution_sptr_set_refresh_rate(self, refresh_rate) + + def make(self, sample_rate: "int", fft_size: "int", refresh_rate: "float", automatic_mode: "bool") -> "gr::tempest::infer_screen_resolution::sptr": + r"""make(infer_screen_resolution_sptr self, int sample_rate, int fft_size, float refresh_rate, bool automatic_mode) -> infer_screen_resolution_sptr""" + return _tempest_swig.infer_screen_resolution_sptr_make(self, sample_rate, fft_size, refresh_rate, automatic_mode) + + def history(self) -> "unsigned int": + r"""history(infer_screen_resolution_sptr self) -> unsigned int""" + return _tempest_swig.infer_screen_resolution_sptr_history(self) + + def declare_sample_delay(self, *args) -> "void": + r""" + declare_sample_delay(infer_screen_resolution_sptr self, int which, int delay) + declare_sample_delay(infer_screen_resolution_sptr self, unsigned int delay) + """ + return _tempest_swig.infer_screen_resolution_sptr_declare_sample_delay(self, *args) + + def sample_delay(self, which: "int") -> "unsigned int": + r"""sample_delay(infer_screen_resolution_sptr self, int which) -> unsigned int""" + return _tempest_swig.infer_screen_resolution_sptr_sample_delay(self, which) + + def set_output_multiple(self, multiple: "int") -> "void": + r"""set_output_multiple(infer_screen_resolution_sptr self, int multiple)""" + return _tempest_swig.infer_screen_resolution_sptr_set_output_multiple(self, multiple) + + def output_multiple(self) -> "int": + r"""output_multiple(infer_screen_resolution_sptr self) -> int""" + return _tempest_swig.infer_screen_resolution_sptr_output_multiple(self) + + def relative_rate(self) -> "double": + r"""relative_rate(infer_screen_resolution_sptr self) -> double""" + return _tempest_swig.infer_screen_resolution_sptr_relative_rate(self) + + def relative_rate_i(self) -> "uint64_t": + r"""relative_rate_i(infer_screen_resolution_sptr self) -> uint64_t""" + return _tempest_swig.infer_screen_resolution_sptr_relative_rate_i(self) + + def relative_rate_d(self) -> "uint64_t": + r"""relative_rate_d(infer_screen_resolution_sptr self) -> uint64_t""" + return _tempest_swig.infer_screen_resolution_sptr_relative_rate_d(self) + + def start(self) -> "bool": + r"""start(infer_screen_resolution_sptr self) -> bool""" + return _tempest_swig.infer_screen_resolution_sptr_start(self) + + def stop(self) -> "bool": + r"""stop(infer_screen_resolution_sptr self) -> bool""" + return _tempest_swig.infer_screen_resolution_sptr_stop(self) + + def nitems_read(self, which_input: "unsigned int") -> "uint64_t": + r"""nitems_read(infer_screen_resolution_sptr self, unsigned int which_input) -> uint64_t""" + return _tempest_swig.infer_screen_resolution_sptr_nitems_read(self, which_input) + + def nitems_written(self, which_output: "unsigned int") -> "uint64_t": + r"""nitems_written(infer_screen_resolution_sptr self, unsigned int which_output) -> uint64_t""" + return _tempest_swig.infer_screen_resolution_sptr_nitems_written(self, which_output) + + def set_log_level(self, level: "std::string") -> "void": + r"""set_log_level(infer_screen_resolution_sptr self, std::string level)""" + return _tempest_swig.infer_screen_resolution_sptr_set_log_level(self, level) + + def log_level(self) -> "std::string": + r"""log_level(infer_screen_resolution_sptr self) -> std::string""" + return _tempest_swig.infer_screen_resolution_sptr_log_level(self) + + def max_noutput_items(self) -> "int": + r"""max_noutput_items(infer_screen_resolution_sptr self) -> int""" + return _tempest_swig.infer_screen_resolution_sptr_max_noutput_items(self) + + def set_max_noutput_items(self, m: "int") -> "void": + r"""set_max_noutput_items(infer_screen_resolution_sptr self, int m)""" + return _tempest_swig.infer_screen_resolution_sptr_set_max_noutput_items(self, m) + + def unset_max_noutput_items(self) -> "void": + r"""unset_max_noutput_items(infer_screen_resolution_sptr self)""" + return _tempest_swig.infer_screen_resolution_sptr_unset_max_noutput_items(self) + + def is_set_max_noutput_items(self) -> "bool": + r"""is_set_max_noutput_items(infer_screen_resolution_sptr self) -> bool""" + return _tempest_swig.infer_screen_resolution_sptr_is_set_max_noutput_items(self) + + def set_min_noutput_items(self, m: "int") -> "void": + r"""set_min_noutput_items(infer_screen_resolution_sptr self, int m)""" + return _tempest_swig.infer_screen_resolution_sptr_set_min_noutput_items(self, m) + + def min_noutput_items(self) -> "int": + r"""min_noutput_items(infer_screen_resolution_sptr self) -> int""" + return _tempest_swig.infer_screen_resolution_sptr_min_noutput_items(self) + + def max_output_buffer(self, i: "int") -> "long": + r"""max_output_buffer(infer_screen_resolution_sptr self, int i) -> long""" + return _tempest_swig.infer_screen_resolution_sptr_max_output_buffer(self, i) + + def set_max_output_buffer(self, *args) -> "void": + r""" + set_max_output_buffer(infer_screen_resolution_sptr self, long max_output_buffer) + set_max_output_buffer(infer_screen_resolution_sptr self, int port, long max_output_buffer) + """ + return _tempest_swig.infer_screen_resolution_sptr_set_max_output_buffer(self, *args) + + def min_output_buffer(self, i: "int") -> "long": + r"""min_output_buffer(infer_screen_resolution_sptr self, int i) -> long""" + return _tempest_swig.infer_screen_resolution_sptr_min_output_buffer(self, i) + + def set_min_output_buffer(self, *args) -> "void": + r""" + set_min_output_buffer(infer_screen_resolution_sptr self, long min_output_buffer) + set_min_output_buffer(infer_screen_resolution_sptr self, int port, long min_output_buffer) + """ + return _tempest_swig.infer_screen_resolution_sptr_set_min_output_buffer(self, *args) + + def pc_noutput_items(self) -> "float": + r"""pc_noutput_items(infer_screen_resolution_sptr self) -> float""" + return _tempest_swig.infer_screen_resolution_sptr_pc_noutput_items(self) + + def pc_noutput_items_avg(self) -> "float": + r"""pc_noutput_items_avg(infer_screen_resolution_sptr self) -> float""" + return _tempest_swig.infer_screen_resolution_sptr_pc_noutput_items_avg(self) + + def pc_noutput_items_var(self) -> "float": + r"""pc_noutput_items_var(infer_screen_resolution_sptr self) -> float""" + return _tempest_swig.infer_screen_resolution_sptr_pc_noutput_items_var(self) + + def pc_nproduced(self) -> "float": + r"""pc_nproduced(infer_screen_resolution_sptr self) -> float""" + return _tempest_swig.infer_screen_resolution_sptr_pc_nproduced(self) + + def pc_nproduced_avg(self) -> "float": + r"""pc_nproduced_avg(infer_screen_resolution_sptr self) -> float""" + return _tempest_swig.infer_screen_resolution_sptr_pc_nproduced_avg(self) + + def pc_nproduced_var(self) -> "float": + r"""pc_nproduced_var(infer_screen_resolution_sptr self) -> float""" + return _tempest_swig.infer_screen_resolution_sptr_pc_nproduced_var(self) + + def pc_input_buffers_full(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_input_buffers_full(infer_screen_resolution_sptr self, int which) -> float + pc_input_buffers_full(infer_screen_resolution_sptr self) -> pmt_vector_float + """ + return _tempest_swig.infer_screen_resolution_sptr_pc_input_buffers_full(self, *args) + + def pc_input_buffers_full_avg(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_input_buffers_full_avg(infer_screen_resolution_sptr self, int which) -> float + pc_input_buffers_full_avg(infer_screen_resolution_sptr self) -> pmt_vector_float + """ + return _tempest_swig.infer_screen_resolution_sptr_pc_input_buffers_full_avg(self, *args) + + def pc_input_buffers_full_var(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_input_buffers_full_var(infer_screen_resolution_sptr self, int which) -> float + pc_input_buffers_full_var(infer_screen_resolution_sptr self) -> pmt_vector_float + """ + return _tempest_swig.infer_screen_resolution_sptr_pc_input_buffers_full_var(self, *args) + + def pc_output_buffers_full(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_output_buffers_full(infer_screen_resolution_sptr self, int which) -> float + pc_output_buffers_full(infer_screen_resolution_sptr self) -> pmt_vector_float + """ + return _tempest_swig.infer_screen_resolution_sptr_pc_output_buffers_full(self, *args) + + def pc_output_buffers_full_avg(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_output_buffers_full_avg(infer_screen_resolution_sptr self, int which) -> float + pc_output_buffers_full_avg(infer_screen_resolution_sptr self) -> pmt_vector_float + """ + return _tempest_swig.infer_screen_resolution_sptr_pc_output_buffers_full_avg(self, *args) + + def pc_output_buffers_full_var(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_output_buffers_full_var(infer_screen_resolution_sptr self, int which) -> float + pc_output_buffers_full_var(infer_screen_resolution_sptr self) -> pmt_vector_float + """ + return _tempest_swig.infer_screen_resolution_sptr_pc_output_buffers_full_var(self, *args) + + def pc_work_time(self) -> "float": + r"""pc_work_time(infer_screen_resolution_sptr self) -> float""" + return _tempest_swig.infer_screen_resolution_sptr_pc_work_time(self) + + def pc_work_time_avg(self) -> "float": + r"""pc_work_time_avg(infer_screen_resolution_sptr self) -> float""" + return _tempest_swig.infer_screen_resolution_sptr_pc_work_time_avg(self) + + def pc_work_time_var(self) -> "float": + r"""pc_work_time_var(infer_screen_resolution_sptr self) -> float""" + return _tempest_swig.infer_screen_resolution_sptr_pc_work_time_var(self) + + def pc_work_time_total(self) -> "float": + r"""pc_work_time_total(infer_screen_resolution_sptr self) -> float""" + return _tempest_swig.infer_screen_resolution_sptr_pc_work_time_total(self) + + def pc_throughput_avg(self) -> "float": + r"""pc_throughput_avg(infer_screen_resolution_sptr self) -> float""" + return _tempest_swig.infer_screen_resolution_sptr_pc_throughput_avg(self) + + def set_processor_affinity(self, mask: "std::vector< int,std::allocator< int > > const &") -> "void": + r"""set_processor_affinity(infer_screen_resolution_sptr self, std::vector< int,std::allocator< int > > const & mask)""" + return _tempest_swig.infer_screen_resolution_sptr_set_processor_affinity(self, mask) + + def unset_processor_affinity(self) -> "void": + r"""unset_processor_affinity(infer_screen_resolution_sptr self)""" + return _tempest_swig.infer_screen_resolution_sptr_unset_processor_affinity(self) + + def processor_affinity(self) -> "std::vector< int,std::allocator< int > >": + r"""processor_affinity(infer_screen_resolution_sptr self) -> std::vector< int,std::allocator< int > >""" + return _tempest_swig.infer_screen_resolution_sptr_processor_affinity(self) + + def active_thread_priority(self) -> "int": + r"""active_thread_priority(infer_screen_resolution_sptr self) -> int""" + return _tempest_swig.infer_screen_resolution_sptr_active_thread_priority(self) + + def thread_priority(self) -> "int": + r"""thread_priority(infer_screen_resolution_sptr self) -> int""" + return _tempest_swig.infer_screen_resolution_sptr_thread_priority(self) + + def set_thread_priority(self, priority: "int") -> "int": + r"""set_thread_priority(infer_screen_resolution_sptr self, int priority) -> int""" + return _tempest_swig.infer_screen_resolution_sptr_set_thread_priority(self, priority) + + def name(self) -> "std::string": + r"""name(infer_screen_resolution_sptr self) -> std::string""" + return _tempest_swig.infer_screen_resolution_sptr_name(self) + + def symbol_name(self) -> "std::string": + r"""symbol_name(infer_screen_resolution_sptr self) -> std::string""" + return _tempest_swig.infer_screen_resolution_sptr_symbol_name(self) + + def input_signature(self) -> "gr::io_signature::sptr": + r"""input_signature(infer_screen_resolution_sptr self) -> io_signature_sptr""" + return _tempest_swig.infer_screen_resolution_sptr_input_signature(self) + + def output_signature(self) -> "gr::io_signature::sptr": + r"""output_signature(infer_screen_resolution_sptr self) -> io_signature_sptr""" + return _tempest_swig.infer_screen_resolution_sptr_output_signature(self) + + def unique_id(self) -> "long": + r"""unique_id(infer_screen_resolution_sptr self) -> long""" + return _tempest_swig.infer_screen_resolution_sptr_unique_id(self) + + def to_basic_block(self) -> "gr::basic_block_sptr": + r"""to_basic_block(infer_screen_resolution_sptr self) -> basic_block_sptr""" + return _tempest_swig.infer_screen_resolution_sptr_to_basic_block(self) + + def check_topology(self, ninputs: "int", noutputs: "int") -> "bool": + r"""check_topology(infer_screen_resolution_sptr self, int ninputs, int noutputs) -> bool""" + return _tempest_swig.infer_screen_resolution_sptr_check_topology(self, ninputs, noutputs) + + def alias(self) -> "std::string": + r"""alias(infer_screen_resolution_sptr self) -> std::string""" + return _tempest_swig.infer_screen_resolution_sptr_alias(self) + + def set_block_alias(self, name: "std::string") -> "void": + r"""set_block_alias(infer_screen_resolution_sptr self, std::string name)""" + return _tempest_swig.infer_screen_resolution_sptr_set_block_alias(self, name) + + def _post(self, which_port: "swig_pmt_ptr", msg: "swig_pmt_ptr") -> "void": + r"""_post(infer_screen_resolution_sptr self, swig_pmt_ptr which_port, swig_pmt_ptr msg)""" + return _tempest_swig.infer_screen_resolution_sptr__post(self, which_port, msg) + + def message_ports_in(self) -> "pmt::pmt_t": + r"""message_ports_in(infer_screen_resolution_sptr self) -> swig_pmt_ptr""" + return _tempest_swig.infer_screen_resolution_sptr_message_ports_in(self) + + def message_ports_out(self) -> "pmt::pmt_t": + r"""message_ports_out(infer_screen_resolution_sptr self) -> swig_pmt_ptr""" + return _tempest_swig.infer_screen_resolution_sptr_message_ports_out(self) + + def message_subscribers(self, which_port: "swig_pmt_ptr") -> "pmt::pmt_t": + r"""message_subscribers(infer_screen_resolution_sptr self, swig_pmt_ptr which_port) -> swig_pmt_ptr""" + return _tempest_swig.infer_screen_resolution_sptr_message_subscribers(self, which_port) + +# Register infer_screen_resolution_sptr in _tempest_swig: +_tempest_swig.infer_screen_resolution_sptr_swigregister(infer_screen_resolution_sptr) + + +infer_screen_resolution_sptr.__repr__ = lambda self: "" % (self.name(), self.unique_id()) +infer_screen_resolution = infer_screen_resolution.make; + +class ssamp_correction(object): + r"""Proxy of C++ gr::tempest::ssamp_correction class.""" + + thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag") + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + + @staticmethod + def make(Htotal: "int", Vtotal: "int", correct_sampling: "int", max_deviation: "float") -> "gr::tempest::ssamp_correction::sptr": + r"""make(int Htotal, int Vtotal, int correct_sampling, float max_deviation) -> ssamp_correction_sptr""" + return _tempest_swig.ssamp_correction_make(Htotal, Vtotal, correct_sampling, max_deviation) + + def set_Htotal_Vtotal(self, Htotal: "int", Vtotal: "int") -> "void": + r"""set_Htotal_Vtotal(ssamp_correction self, int Htotal, int Vtotal)""" + return _tempest_swig.ssamp_correction_set_Htotal_Vtotal(self, Htotal, Vtotal) + __swig_destroy__ = _tempest_swig.delete_ssamp_correction + +# Register ssamp_correction in _tempest_swig: +_tempest_swig.ssamp_correction_swigregister(ssamp_correction) + +def ssamp_correction_make(Htotal: "int", Vtotal: "int", correct_sampling: "int", max_deviation: "float") -> "gr::tempest::ssamp_correction::sptr": + r"""ssamp_correction_make(int Htotal, int Vtotal, int correct_sampling, float max_deviation) -> ssamp_correction_sptr""" + return _tempest_swig.ssamp_correction_make(Htotal, Vtotal, correct_sampling, max_deviation) + +class ssamp_correction_sptr(object): + r"""Proxy of C++ boost::shared_ptr< gr::tempest::ssamp_correction > class.""" + + thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag") + __repr__ = _swig_repr + + def __init__(self, *args): + r""" + __init__(ssamp_correction_sptr self) -> ssamp_correction_sptr + __init__(ssamp_correction_sptr self, ssamp_correction p) -> ssamp_correction_sptr + """ + _tempest_swig.ssamp_correction_sptr_swiginit(self, _tempest_swig.new_ssamp_correction_sptr(*args)) + + def __deref__(self) -> "gr::tempest::ssamp_correction *": + r"""__deref__(ssamp_correction_sptr self) -> ssamp_correction""" + return _tempest_swig.ssamp_correction_sptr___deref__(self) + __swig_destroy__ = _tempest_swig.delete_ssamp_correction_sptr + + def make(self, Htotal: "int", Vtotal: "int", correct_sampling: "int", max_deviation: "float") -> "gr::tempest::ssamp_correction::sptr": + r"""make(ssamp_correction_sptr self, int Htotal, int Vtotal, int correct_sampling, float max_deviation) -> ssamp_correction_sptr""" + return _tempest_swig.ssamp_correction_sptr_make(self, Htotal, Vtotal, correct_sampling, max_deviation) + + def set_Htotal_Vtotal(self, Htotal: "int", Vtotal: "int") -> "void": + r"""set_Htotal_Vtotal(ssamp_correction_sptr self, int Htotal, int Vtotal)""" + return _tempest_swig.ssamp_correction_sptr_set_Htotal_Vtotal(self, Htotal, Vtotal) + + def history(self) -> "unsigned int": + r"""history(ssamp_correction_sptr self) -> unsigned int""" + return _tempest_swig.ssamp_correction_sptr_history(self) + + def declare_sample_delay(self, *args) -> "void": + r""" + declare_sample_delay(ssamp_correction_sptr self, int which, int delay) + declare_sample_delay(ssamp_correction_sptr self, unsigned int delay) + """ + return _tempest_swig.ssamp_correction_sptr_declare_sample_delay(self, *args) + + def sample_delay(self, which: "int") -> "unsigned int": + r"""sample_delay(ssamp_correction_sptr self, int which) -> unsigned int""" + return _tempest_swig.ssamp_correction_sptr_sample_delay(self, which) + + def set_output_multiple(self, multiple: "int") -> "void": + r"""set_output_multiple(ssamp_correction_sptr self, int multiple)""" + return _tempest_swig.ssamp_correction_sptr_set_output_multiple(self, multiple) + + def output_multiple(self) -> "int": + r"""output_multiple(ssamp_correction_sptr self) -> int""" + return _tempest_swig.ssamp_correction_sptr_output_multiple(self) + + def relative_rate(self) -> "double": + r"""relative_rate(ssamp_correction_sptr self) -> double""" + return _tempest_swig.ssamp_correction_sptr_relative_rate(self) + + def relative_rate_i(self) -> "uint64_t": + r"""relative_rate_i(ssamp_correction_sptr self) -> uint64_t""" + return _tempest_swig.ssamp_correction_sptr_relative_rate_i(self) + + def relative_rate_d(self) -> "uint64_t": + r"""relative_rate_d(ssamp_correction_sptr self) -> uint64_t""" + return _tempest_swig.ssamp_correction_sptr_relative_rate_d(self) + + def start(self) -> "bool": + r"""start(ssamp_correction_sptr self) -> bool""" + return _tempest_swig.ssamp_correction_sptr_start(self) + + def stop(self) -> "bool": + r"""stop(ssamp_correction_sptr self) -> bool""" + return _tempest_swig.ssamp_correction_sptr_stop(self) + + def nitems_read(self, which_input: "unsigned int") -> "uint64_t": + r"""nitems_read(ssamp_correction_sptr self, unsigned int which_input) -> uint64_t""" + return _tempest_swig.ssamp_correction_sptr_nitems_read(self, which_input) + + def nitems_written(self, which_output: "unsigned int") -> "uint64_t": + r"""nitems_written(ssamp_correction_sptr self, unsigned int which_output) -> uint64_t""" + return _tempest_swig.ssamp_correction_sptr_nitems_written(self, which_output) + + def set_log_level(self, level: "std::string") -> "void": + r"""set_log_level(ssamp_correction_sptr self, std::string level)""" + return _tempest_swig.ssamp_correction_sptr_set_log_level(self, level) + + def log_level(self) -> "std::string": + r"""log_level(ssamp_correction_sptr self) -> std::string""" + return _tempest_swig.ssamp_correction_sptr_log_level(self) + + def max_noutput_items(self) -> "int": + r"""max_noutput_items(ssamp_correction_sptr self) -> int""" + return _tempest_swig.ssamp_correction_sptr_max_noutput_items(self) + + def set_max_noutput_items(self, m: "int") -> "void": + r"""set_max_noutput_items(ssamp_correction_sptr self, int m)""" + return _tempest_swig.ssamp_correction_sptr_set_max_noutput_items(self, m) + + def unset_max_noutput_items(self) -> "void": + r"""unset_max_noutput_items(ssamp_correction_sptr self)""" + return _tempest_swig.ssamp_correction_sptr_unset_max_noutput_items(self) + + def is_set_max_noutput_items(self) -> "bool": + r"""is_set_max_noutput_items(ssamp_correction_sptr self) -> bool""" + return _tempest_swig.ssamp_correction_sptr_is_set_max_noutput_items(self) + + def set_min_noutput_items(self, m: "int") -> "void": + r"""set_min_noutput_items(ssamp_correction_sptr self, int m)""" + return _tempest_swig.ssamp_correction_sptr_set_min_noutput_items(self, m) + + def min_noutput_items(self) -> "int": + r"""min_noutput_items(ssamp_correction_sptr self) -> int""" + return _tempest_swig.ssamp_correction_sptr_min_noutput_items(self) + + def max_output_buffer(self, i: "int") -> "long": + r"""max_output_buffer(ssamp_correction_sptr self, int i) -> long""" + return _tempest_swig.ssamp_correction_sptr_max_output_buffer(self, i) + + def set_max_output_buffer(self, *args) -> "void": + r""" + set_max_output_buffer(ssamp_correction_sptr self, long max_output_buffer) + set_max_output_buffer(ssamp_correction_sptr self, int port, long max_output_buffer) + """ + return _tempest_swig.ssamp_correction_sptr_set_max_output_buffer(self, *args) + + def min_output_buffer(self, i: "int") -> "long": + r"""min_output_buffer(ssamp_correction_sptr self, int i) -> long""" + return _tempest_swig.ssamp_correction_sptr_min_output_buffer(self, i) + + def set_min_output_buffer(self, *args) -> "void": + r""" + set_min_output_buffer(ssamp_correction_sptr self, long min_output_buffer) + set_min_output_buffer(ssamp_correction_sptr self, int port, long min_output_buffer) + """ + return _tempest_swig.ssamp_correction_sptr_set_min_output_buffer(self, *args) + + def pc_noutput_items(self) -> "float": + r"""pc_noutput_items(ssamp_correction_sptr self) -> float""" + return _tempest_swig.ssamp_correction_sptr_pc_noutput_items(self) + + def pc_noutput_items_avg(self) -> "float": + r"""pc_noutput_items_avg(ssamp_correction_sptr self) -> float""" + return _tempest_swig.ssamp_correction_sptr_pc_noutput_items_avg(self) + + def pc_noutput_items_var(self) -> "float": + r"""pc_noutput_items_var(ssamp_correction_sptr self) -> float""" + return _tempest_swig.ssamp_correction_sptr_pc_noutput_items_var(self) + + def pc_nproduced(self) -> "float": + r"""pc_nproduced(ssamp_correction_sptr self) -> float""" + return _tempest_swig.ssamp_correction_sptr_pc_nproduced(self) + + def pc_nproduced_avg(self) -> "float": + r"""pc_nproduced_avg(ssamp_correction_sptr self) -> float""" + return _tempest_swig.ssamp_correction_sptr_pc_nproduced_avg(self) + + def pc_nproduced_var(self) -> "float": + r"""pc_nproduced_var(ssamp_correction_sptr self) -> float""" + return _tempest_swig.ssamp_correction_sptr_pc_nproduced_var(self) + + def pc_input_buffers_full(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_input_buffers_full(ssamp_correction_sptr self, int which) -> float + pc_input_buffers_full(ssamp_correction_sptr self) -> pmt_vector_float + """ + return _tempest_swig.ssamp_correction_sptr_pc_input_buffers_full(self, *args) + + def pc_input_buffers_full_avg(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_input_buffers_full_avg(ssamp_correction_sptr self, int which) -> float + pc_input_buffers_full_avg(ssamp_correction_sptr self) -> pmt_vector_float + """ + return _tempest_swig.ssamp_correction_sptr_pc_input_buffers_full_avg(self, *args) + + def pc_input_buffers_full_var(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_input_buffers_full_var(ssamp_correction_sptr self, int which) -> float + pc_input_buffers_full_var(ssamp_correction_sptr self) -> pmt_vector_float + """ + return _tempest_swig.ssamp_correction_sptr_pc_input_buffers_full_var(self, *args) + + def pc_output_buffers_full(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_output_buffers_full(ssamp_correction_sptr self, int which) -> float + pc_output_buffers_full(ssamp_correction_sptr self) -> pmt_vector_float + """ + return _tempest_swig.ssamp_correction_sptr_pc_output_buffers_full(self, *args) + + def pc_output_buffers_full_avg(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_output_buffers_full_avg(ssamp_correction_sptr self, int which) -> float + pc_output_buffers_full_avg(ssamp_correction_sptr self) -> pmt_vector_float + """ + return _tempest_swig.ssamp_correction_sptr_pc_output_buffers_full_avg(self, *args) + + def pc_output_buffers_full_var(self, *args) -> "std::vector< float,std::allocator< float > >": + r""" + pc_output_buffers_full_var(ssamp_correction_sptr self, int which) -> float + pc_output_buffers_full_var(ssamp_correction_sptr self) -> pmt_vector_float + """ + return _tempest_swig.ssamp_correction_sptr_pc_output_buffers_full_var(self, *args) + + def pc_work_time(self) -> "float": + r"""pc_work_time(ssamp_correction_sptr self) -> float""" + return _tempest_swig.ssamp_correction_sptr_pc_work_time(self) + + def pc_work_time_avg(self) -> "float": + r"""pc_work_time_avg(ssamp_correction_sptr self) -> float""" + return _tempest_swig.ssamp_correction_sptr_pc_work_time_avg(self) + + def pc_work_time_var(self) -> "float": + r"""pc_work_time_var(ssamp_correction_sptr self) -> float""" + return _tempest_swig.ssamp_correction_sptr_pc_work_time_var(self) + + def pc_work_time_total(self) -> "float": + r"""pc_work_time_total(ssamp_correction_sptr self) -> float""" + return _tempest_swig.ssamp_correction_sptr_pc_work_time_total(self) + + def pc_throughput_avg(self) -> "float": + r"""pc_throughput_avg(ssamp_correction_sptr self) -> float""" + return _tempest_swig.ssamp_correction_sptr_pc_throughput_avg(self) + + def set_processor_affinity(self, mask: "std::vector< int,std::allocator< int > > const &") -> "void": + r"""set_processor_affinity(ssamp_correction_sptr self, std::vector< int,std::allocator< int > > const & mask)""" + return _tempest_swig.ssamp_correction_sptr_set_processor_affinity(self, mask) + + def unset_processor_affinity(self) -> "void": + r"""unset_processor_affinity(ssamp_correction_sptr self)""" + return _tempest_swig.ssamp_correction_sptr_unset_processor_affinity(self) + + def processor_affinity(self) -> "std::vector< int,std::allocator< int > >": + r"""processor_affinity(ssamp_correction_sptr self) -> std::vector< int,std::allocator< int > >""" + return _tempest_swig.ssamp_correction_sptr_processor_affinity(self) + + def active_thread_priority(self) -> "int": + r"""active_thread_priority(ssamp_correction_sptr self) -> int""" + return _tempest_swig.ssamp_correction_sptr_active_thread_priority(self) + + def thread_priority(self) -> "int": + r"""thread_priority(ssamp_correction_sptr self) -> int""" + return _tempest_swig.ssamp_correction_sptr_thread_priority(self) + + def set_thread_priority(self, priority: "int") -> "int": + r"""set_thread_priority(ssamp_correction_sptr self, int priority) -> int""" + return _tempest_swig.ssamp_correction_sptr_set_thread_priority(self, priority) + + def name(self) -> "std::string": + r"""name(ssamp_correction_sptr self) -> std::string""" + return _tempest_swig.ssamp_correction_sptr_name(self) + + def symbol_name(self) -> "std::string": + r"""symbol_name(ssamp_correction_sptr self) -> std::string""" + return _tempest_swig.ssamp_correction_sptr_symbol_name(self) + + def input_signature(self) -> "gr::io_signature::sptr": + r"""input_signature(ssamp_correction_sptr self) -> io_signature_sptr""" + return _tempest_swig.ssamp_correction_sptr_input_signature(self) + + def output_signature(self) -> "gr::io_signature::sptr": + r"""output_signature(ssamp_correction_sptr self) -> io_signature_sptr""" + return _tempest_swig.ssamp_correction_sptr_output_signature(self) + + def unique_id(self) -> "long": + r"""unique_id(ssamp_correction_sptr self) -> long""" + return _tempest_swig.ssamp_correction_sptr_unique_id(self) + + def to_basic_block(self) -> "gr::basic_block_sptr": + r"""to_basic_block(ssamp_correction_sptr self) -> basic_block_sptr""" + return _tempest_swig.ssamp_correction_sptr_to_basic_block(self) + + def check_topology(self, ninputs: "int", noutputs: "int") -> "bool": + r"""check_topology(ssamp_correction_sptr self, int ninputs, int noutputs) -> bool""" + return _tempest_swig.ssamp_correction_sptr_check_topology(self, ninputs, noutputs) + + def alias(self) -> "std::string": + r"""alias(ssamp_correction_sptr self) -> std::string""" + return _tempest_swig.ssamp_correction_sptr_alias(self) + + def set_block_alias(self, name: "std::string") -> "void": + r"""set_block_alias(ssamp_correction_sptr self, std::string name)""" + return _tempest_swig.ssamp_correction_sptr_set_block_alias(self, name) + + def _post(self, which_port: "swig_pmt_ptr", msg: "swig_pmt_ptr") -> "void": + r"""_post(ssamp_correction_sptr self, swig_pmt_ptr which_port, swig_pmt_ptr msg)""" + return _tempest_swig.ssamp_correction_sptr__post(self, which_port, msg) + + def message_ports_in(self) -> "pmt::pmt_t": + r"""message_ports_in(ssamp_correction_sptr self) -> swig_pmt_ptr""" + return _tempest_swig.ssamp_correction_sptr_message_ports_in(self) + + def message_ports_out(self) -> "pmt::pmt_t": + r"""message_ports_out(ssamp_correction_sptr self) -> swig_pmt_ptr""" + return _tempest_swig.ssamp_correction_sptr_message_ports_out(self) + + def message_subscribers(self, which_port: "swig_pmt_ptr") -> "pmt::pmt_t": + r"""message_subscribers(ssamp_correction_sptr self, swig_pmt_ptr which_port) -> swig_pmt_ptr""" + return _tempest_swig.ssamp_correction_sptr_message_subscribers(self, which_port) + +# Register ssamp_correction_sptr in _tempest_swig: +_tempest_swig.ssamp_correction_sptr_swigregister(ssamp_correction_sptr) + + +ssamp_correction_sptr.__repr__ = lambda self: "" % (self.name(), self.unique_id()) +ssamp_correction = ssamp_correction.make; + + + diff --git a/build/swig/tempest_swig.pyc b/build/swig/tempest_swig.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0167566a380a53246b0411ddf4a367d19df0c9c9 GIT binary patch literal 202310 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 literal 0 HcmV?d00001 diff --git a/build/swig/tempest_swig.pyo b/build/swig/tempest_swig.pyo new file mode 100644 index 0000000000000000000000000000000000000000..0167566a380a53246b0411ddf4a367d19df0c9c9 GIT binary patch literal 202310 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 literal 0 HcmV?d00001 diff --git a/build/swig/tempest_swig_doc.i b/build/swig/tempest_swig_doc.i new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/build/swig/tempest_swig_doc.i @@ -0,0 +1 @@ + diff --git a/cmake/Modules/CMakeParseArgumentsCopy.cmake b/cmake/Modules/CMakeParseArgumentsCopy.cmake new file mode 100644 index 0000000..66016cb --- /dev/null +++ b/cmake/Modules/CMakeParseArgumentsCopy.cmake @@ -0,0 +1,138 @@ +# CMAKE_PARSE_ARGUMENTS( args...) +# +# CMAKE_PARSE_ARGUMENTS() is intended to be used in macros or functions for +# parsing the arguments given to that macro or function. +# It processes the arguments and defines a set of variables which hold the +# values of the respective options. +# +# The argument contains all options for the respective macro, +# i.e. keywords which can be used when calling the macro without any value +# following, like e.g. the OPTIONAL keyword of the install() command. +# +# The argument contains all keywords for this macro +# which are followed by one value, like e.g. DESTINATION keyword of the +# install() command. +# +# The argument contains all keywords for this macro +# which can be followed by more than one value, like e.g. the TARGETS or +# FILES keywords of the install() command. +# +# When done, CMAKE_PARSE_ARGUMENTS() will have defined for each of the +# keywords listed in , and +# a variable composed of the given +# followed by "_" and the name of the respective keyword. +# These variables will then hold the respective value from the argument list. +# For the keywords this will be TRUE or FALSE. +# +# All remaining arguments are collected in a variable +# _UNPARSED_ARGUMENTS, this can be checked afterwards to see whether +# your macro was called with unrecognized parameters. +# +# As an example here a my_install() macro, which takes similar arguments as the +# real install() command: +# +# function(MY_INSTALL) +# set(options OPTIONAL FAST) +# set(oneValueArgs DESTINATION RENAME) +# set(multiValueArgs TARGETS CONFIGURATIONS) +# cmake_parse_arguments(MY_INSTALL "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} ) +# ... +# +# Assume my_install() has been called like this: +# my_install(TARGETS foo bar DESTINATION bin OPTIONAL blub) +# +# After the cmake_parse_arguments() call the macro will have set the following +# variables: +# MY_INSTALL_OPTIONAL = TRUE +# MY_INSTALL_FAST = FALSE (this option was not used when calling my_install() +# MY_INSTALL_DESTINATION = "bin" +# MY_INSTALL_RENAME = "" (was not used) +# MY_INSTALL_TARGETS = "foo;bar" +# MY_INSTALL_CONFIGURATIONS = "" (was not used) +# MY_INSTALL_UNPARSED_ARGUMENTS = "blub" (no value expected after "OPTIONAL" +# +# You can the continue and process these variables. +# +# Keywords terminate lists of values, e.g. if directly after a one_value_keyword +# another recognized keyword follows, this is interpreted as the beginning of +# the new option. +# E.g. my_install(TARGETS foo DESTINATION OPTIONAL) would result in +# MY_INSTALL_DESTINATION set to "OPTIONAL", but MY_INSTALL_DESTINATION would +# be empty and MY_INSTALL_OPTIONAL would be set to TRUE therefore. + +#============================================================================= +# Copyright 2010 Alexander Neundorf +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distribute this file outside of CMake, substitute the full +# License text for the above reference.) + + +if(__CMAKE_PARSE_ARGUMENTS_INCLUDED) + return() +endif() +set(__CMAKE_PARSE_ARGUMENTS_INCLUDED TRUE) + + +function(CMAKE_PARSE_ARGUMENTS prefix _optionNames _singleArgNames _multiArgNames) + # first set all result variables to empty/FALSE + foreach(arg_name ${_singleArgNames} ${_multiArgNames}) + set(${prefix}_${arg_name}) + endforeach(arg_name) + + foreach(option ${_optionNames}) + set(${prefix}_${option} FALSE) + endforeach(option) + + set(${prefix}_UNPARSED_ARGUMENTS) + + set(insideValues FALSE) + set(currentArgName) + + # now iterate over all arguments and fill the result variables + foreach(currentArg ${ARGN}) + list(FIND _optionNames "${currentArg}" optionIndex) # ... then this marks the end of the arguments belonging to this keyword + list(FIND _singleArgNames "${currentArg}" singleArgIndex) # ... then this marks the end of the arguments belonging to this keyword + list(FIND _multiArgNames "${currentArg}" multiArgIndex) # ... then this marks the end of the arguments belonging to this keyword + + if(${optionIndex} EQUAL -1 AND ${singleArgIndex} EQUAL -1 AND ${multiArgIndex} EQUAL -1) + if(insideValues) + if("${insideValues}" STREQUAL "SINGLE") + set(${prefix}_${currentArgName} ${currentArg}) + set(insideValues FALSE) + elseif("${insideValues}" STREQUAL "MULTI") + list(APPEND ${prefix}_${currentArgName} ${currentArg}) + endif() + else(insideValues) + list(APPEND ${prefix}_UNPARSED_ARGUMENTS ${currentArg}) + endif(insideValues) + else() + if(NOT ${optionIndex} EQUAL -1) + set(${prefix}_${currentArg} TRUE) + set(insideValues FALSE) + elseif(NOT ${singleArgIndex} EQUAL -1) + set(currentArgName ${currentArg}) + set(${prefix}_${currentArgName}) + set(insideValues "SINGLE") + elseif(NOT ${multiArgIndex} EQUAL -1) + set(currentArgName ${currentArg}) + set(${prefix}_${currentArgName}) + set(insideValues "MULTI") + endif() + endif() + + endforeach(currentArg) + + # propagate the result variables to the caller: + foreach(arg_name ${_singleArgNames} ${_multiArgNames} ${_optionNames}) + set(${prefix}_${arg_name} ${${prefix}_${arg_name}} PARENT_SCOPE) + endforeach(arg_name) + set(${prefix}_UNPARSED_ARGUMENTS ${${prefix}_UNPARSED_ARGUMENTS} PARENT_SCOPE) + +endfunction(CMAKE_PARSE_ARGUMENTS _options _singleArgs _multiArgs) diff --git a/cmake/Modules/targetConfig.cmake.in b/cmake/Modules/targetConfig.cmake.in new file mode 100644 index 0000000..79e4a28 --- /dev/null +++ b/cmake/Modules/targetConfig.cmake.in @@ -0,0 +1,26 @@ +# Copyright 2018 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(CMakeFindDependencyMacro) + +set(target_deps "@TARGET_DEPENDENCIES@") +foreach(dep IN LISTS target_deps) + find_dependency(${dep}) +endforeach() +include("${CMAKE_CURRENT_LIST_DIR}/@TARGET@Targets.cmake") diff --git a/cmake/Modules/tempestConfig.cmake b/cmake/Modules/tempestConfig.cmake new file mode 100644 index 0000000..f5d2b49 --- /dev/null +++ b/cmake/Modules/tempestConfig.cmake @@ -0,0 +1,31 @@ +INCLUDE(FindPkgConfig) +PKG_CHECK_MODULES(PC_TEMPEST tempest) + +FIND_PATH( + TEMPEST_INCLUDE_DIRS + NAMES tempest/api.h + HINTS $ENV{TEMPEST_DIR}/include + ${PC_TEMPEST_INCLUDEDIR} + PATHS ${CMAKE_INSTALL_PREFIX}/include + /usr/local/include + /usr/include +) + +FIND_LIBRARY( + TEMPEST_LIBRARIES + NAMES gnuradio-tempest + HINTS $ENV{TEMPEST_DIR}/lib + ${PC_TEMPEST_LIBDIR} + PATHS ${CMAKE_INSTALL_PREFIX}/lib + ${CMAKE_INSTALL_PREFIX}/lib64 + /usr/local/lib + /usr/local/lib64 + /usr/lib + /usr/lib64 + ) + +include("${CMAKE_CURRENT_LIST_DIR}/tempestTarget.cmake") + +INCLUDE(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(TEMPEST DEFAULT_MSG TEMPEST_LIBRARIES TEMPEST_INCLUDE_DIRS) +MARK_AS_ADVANCED(TEMPEST_LIBRARIES TEMPEST_INCLUDE_DIRS) diff --git a/cmake/cmake_uninstall.cmake.in b/cmake/cmake_uninstall.cmake.in new file mode 100644 index 0000000..9ae1ae4 --- /dev/null +++ b/cmake/cmake_uninstall.cmake.in @@ -0,0 +1,32 @@ +# http://www.vtk.org/Wiki/CMake_FAQ#Can_I_do_.22make_uninstall.22_with_CMake.3F + +IF(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") + MESSAGE(FATAL_ERROR "Cannot find install manifest: \"@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt\"") +ENDIF(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") + +FILE(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files) +STRING(REGEX REPLACE "\n" ";" files "${files}") +FOREACH(file ${files}) + MESSAGE(STATUS "Uninstalling \"$ENV{DESTDIR}${file}\"") + IF(EXISTS "$ENV{DESTDIR}${file}") + EXEC_PROGRAM( + "@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\"" + OUTPUT_VARIABLE rm_out + RETURN_VALUE rm_retval + ) + IF(NOT "${rm_retval}" STREQUAL 0) + MESSAGE(FATAL_ERROR "Problem when removing \"$ENV{DESTDIR}${file}\"") + ENDIF(NOT "${rm_retval}" STREQUAL 0) + ELSEIF(IS_SYMLINK "$ENV{DESTDIR}${file}") + EXEC_PROGRAM( + "@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\"" + OUTPUT_VARIABLE rm_out + RETURN_VALUE rm_retval + ) + IF(NOT "${rm_retval}" STREQUAL 0) + MESSAGE(FATAL_ERROR "Problem when removing \"$ENV{DESTDIR}${file}\"") + ENDIF(NOT "${rm_retval}" STREQUAL 0) + ELSE(EXISTS "$ENV{DESTDIR}${file}") + MESSAGE(STATUS "File \"$ENV{DESTDIR}${file}\" does not exist.") + ENDIF(EXISTS "$ENV{DESTDIR}${file}") +ENDFOREACH(file) diff --git a/docs/CMakeLists.txt b/docs/CMakeLists.txt new file mode 100644 index 0000000..4bedb70 --- /dev/null +++ b/docs/CMakeLists.txt @@ -0,0 +1,36 @@ +# Copyright 2011 Free Software Foundation, Inc. +# +# This file was generated by gr_modtool, a tool from the GNU Radio framework +# This file is a part of gr-tempest +# +# 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 dependencies +######################################################################## +find_package(Doxygen) + +######################################################################## +# Begin conditional configuration +######################################################################## +if(ENABLE_DOXYGEN) + +######################################################################## +# Add subdirectories +######################################################################## +add_subdirectory(doxygen) + +endif(ENABLE_DOXYGEN) diff --git a/docs/README.tempest b/docs/README.tempest new file mode 100644 index 0000000..6595ebc --- /dev/null +++ b/docs/README.tempest @@ -0,0 +1,11 @@ +This is the tempest-write-a-block package meant as a guide to building +out-of-tree packages. To use the tempest blocks, the Python namespaces +is in 'tempest', which is imported as: + + import tempest + +See the Doxygen documentation for details about the blocks available +in this package. A quick listing of the details can be found in Python +after importing by using: + + help(tempest) diff --git a/docs/doxygen/CMakeLists.txt b/docs/doxygen/CMakeLists.txt new file mode 100644 index 0000000..e64b36f --- /dev/null +++ b/docs/doxygen/CMakeLists.txt @@ -0,0 +1,53 @@ +# Copyright 2011 Free Software Foundation, Inc. +# +# This file was generated by gr_modtool, a tool from the GNU Radio framework +# This file is a part of gr-tempest +# +# 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. + +######################################################################## +# Create the doxygen configuration file +######################################################################## +file(TO_NATIVE_PATH ${CMAKE_SOURCE_DIR} top_srcdir) +file(TO_NATIVE_PATH ${CMAKE_BINARY_DIR} top_builddir) +file(TO_NATIVE_PATH ${CMAKE_SOURCE_DIR} abs_top_srcdir) +file(TO_NATIVE_PATH ${CMAKE_BINARY_DIR} abs_top_builddir) + +set(HAVE_DOT ${DOXYGEN_DOT_FOUND}) +set(enable_html_docs YES) +set(enable_latex_docs NO) +set(enable_xml_docs YES) + +configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in + ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile +@ONLY) + +set(BUILT_DIRS ${CMAKE_CURRENT_BINARY_DIR}/xml ${CMAKE_CURRENT_BINARY_DIR}/html) + +######################################################################## +# Make and install doxygen docs +######################################################################## +add_custom_command( + OUTPUT ${BUILT_DIRS} + COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMENT "Generating documentation with doxygen" +) + +add_custom_target(doxygen_target ALL DEPENDS ${BUILT_DIRS}) + +install(DIRECTORY ${BUILT_DIRS} DESTINATION ${GR_PKG_DOC_DIR}) diff --git a/docs/doxygen/Doxyfile.in b/docs/doxygen/Doxyfile.in new file mode 100644 index 0000000..fb84114 --- /dev/null +++ b/docs/doxygen/Doxyfile.in @@ -0,0 +1,1910 @@ +# Doxyfile 1.8.4 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project. +# +# All text after a double hash (##) is considered a comment and is placed +# in front of the TAG it is preceding . +# All text after a hash (#) is considered a comment and will be ignored. +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" "). + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file +# that follow. The default is UTF-8 which is also the encoding used for all +# text before the first occurrence of this tag. Doxygen uses libiconv (or the +# iconv built into libc) for the transcoding. See +# http://www.gnu.org/software/libiconv for the list of possible encodings. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or sequence of words) that should +# identify the project. Note that if you do not use Doxywizard you need +# to put quotes around the project name if it contains spaces. + +PROJECT_NAME = "GNU Radio's TEMPEST Package" + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = + +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewer +# a quick idea about the purpose of the project. Keep the description short. + +PROJECT_BRIEF = + +# With the PROJECT_LOGO tag one can specify an logo or icon that is +# included in the documentation. The maximum height of the logo should not +# exceed 55 pixels and the maximum width should not exceed 200 pixels. +# Doxygen will copy the logo to the output directory. + +PROJECT_LOGO = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = + +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create +# 4096 sub-directories (in 2 levels) under the output directory of each output +# format and will distribute the generated files over these directories. +# Enabling this option can be useful when feeding doxygen a huge amount of +# source files, where putting all generated files in the same directory would +# otherwise cause performance problems for the file system. + +CREATE_SUBDIRS = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, +# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, +# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English +# messages), Korean, Korean-en, Latvian, Lithuanian, Norwegian, Macedonian, +# Persian, Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, +# Slovak, Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator +# that is used to form the text in various listings. Each string +# in this list, if found as the leading text of the brief description, will be +# stripped from the text and the result after processing the whole list, is +# used as the annotated text. Otherwise, the brief description is used as-is. +# If left blank, the following values are used ("$name" is automatically +# replaced with the name of the entity): "The $name class" "The $name widget" +# "The $name file" "is" "provides" "specifies" "contains" +# "represents" "a" "an" "the" + +ABBREVIATE_BRIEF = + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = YES + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = NO + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user-defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the +# path to strip. Note that you specify absolute paths here, but also +# relative paths, which will be relative from the directory where doxygen is +# started. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of +# the path mentioned in the documentation of a class, which tells +# the reader which header file to include in order to use a class. +# If left blank only the name of the header file containing the class +# definition is used. Otherwise one should specify the include paths that +# are normally passed to the compiler using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful if your file system +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like regular Qt-style comments +# (thus requiring an explicit @brief command for a brief description.) + +JAVADOC_AUTOBRIEF = NO + +# If the QT_AUTOBRIEF tag is set to YES then Doxygen will +# interpret the first line (until the first dot) of a Qt-style +# comment as the brief description. If set to NO, the comments +# will behave just like regular Qt-style comments (thus requiring +# an explicit \brief command for a brief description.) + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +# treat a multi-line C++ special comment block (i.e. a block of //! or /// +# comments) as a brief description. This used to be the default behaviour. +# The new default is to treat a multi-line C++ comment block as a detailed +# description. Set this tag to YES if you prefer the old behaviour instead. + +MULTILINE_CPP_IS_BRIEF = YES + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# re-implements. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce +# a new page for each member. If set to NO, the documentation of a member will +# be part of the file/class/namespace that contains it. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 8 + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user-defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = + +# This tag can be used to specify a number of word-keyword mappings (TCL only). +# A mapping has the form "name=value". For example adding +# "class=itcl::class" will allow you to use the command class in the +# itcl::class meaning. + +TCL_SUBST = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C +# sources only. Doxygen will then generate output that is more tailored for C. +# For instance, some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java +# sources only. Doxygen will then generate output that is more tailored for +# Java. For instance, namespaces will be presented as packages, qualified +# scopes will look different, etc. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources only. Doxygen will then generate output that is more tailored for +# Fortran. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for +# VHDL. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given +# extension. Doxygen has a built-in mapping, but you can override or extend it +# using this tag. The format is ext=language, where ext is a file extension, +# and language is one of the parsers supported by doxygen: IDL, Java, +# Javascript, CSharp, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, +# C++. For instance to make doxygen treat .inc files as Fortran files (default +# is PHP), and .f files as C (default is Fortran), use: inc=Fortran f=C. Note +# that for custom extensions you also need to set FILE_PATTERNS otherwise the +# files are not read by doxygen. + +EXTENSION_MAPPING = + +# If MARKDOWN_SUPPORT is enabled (the default) then doxygen pre-processes all +# comments according to the Markdown format, which allows for more readable +# documentation. See http://daringfireball.net/projects/markdown/ for details. +# The output of markdown processing is further processed by doxygen, so you +# can mix doxygen, HTML, and XML commands with Markdown formatting. +# Disable only in case of backward compatibilities issues. + +MARKDOWN_SUPPORT = YES + +# When enabled doxygen tries to link words that correspond to documented +# classes, or namespaces to their corresponding documentation. Such a link can +# be prevented in individual cases by by putting a % sign in front of the word +# or globally by setting AUTOLINK_SUPPORT to NO. + +AUTOLINK_SUPPORT = YES + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should +# set this tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. +# func(std::string) {}). This also makes the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. + +BUILTIN_STL_SUPPORT = YES + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. +# Doxygen will parse them like normal C++ but will assume all classes use public +# instead of private inheritance when no explicit protection keyword is present. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate +# getter and setter methods for a property. Setting this option to YES (the +# default) will make doxygen replace the get and set methods by a property in +# the documentation. This will only work if the methods are indeed getting or +# setting a simple type. If this is not the case, or you want to show the +# methods anyway, you should set this option to NO. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of +# the same type (for instance a group of public functions) to be put as a +# subgroup of that type (e.g. under the Public Functions section). Set it to +# NO to prevent subgrouping. Alternatively, this can be done per class using +# the \nosubgrouping command. + +SUBGROUPING = YES + +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and +# unions are shown inside the group in which they are included (e.g. using +# @ingroup) instead of on a separate page (for HTML and Man pages) or +# section (for LaTeX and RTF). + +INLINE_GROUPED_CLASSES = NO + +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and +# unions with only public data fields or simple typedef fields will be shown +# inline in the documentation of the scope in which they are defined (i.e. file, +# namespace, or group documentation), provided this scope is documented. If set +# to NO (the default), structs, classes, and unions are shown on a separate +# page (for HTML and Man pages) or section (for LaTeX and RTF). + +INLINE_SIMPLE_STRUCTS = NO + +# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum +# is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically +# be useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. + +TYPEDEF_HIDES_STRUCT = NO + +# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This +# cache is used to resolve symbols given their name and scope. Since this can +# be an expensive process and often the same symbol appear multiple times in +# the code, doxygen keeps a cache of pre-resolved symbols. If the cache is too +# small doxygen will become slower. If the cache is too large, memory is wasted. +# The cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid +# range is 0..9, the default is 0, corresponding to a cache size of 2^16 = 65536 +# symbols. + +LOOKUP_CACHE_SIZE = 0 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = YES + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal +# scope will be included in the documentation. + +EXTRACT_PACKAGE = NO + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = YES + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. When set to YES local +# methods, which are defined in the implementation section but not in +# the interface are included in the documentation. +# If set to NO (the default) only methods in the interface are included. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base +# name of the file that contains the anonymous namespace. By default +# anonymous namespaces are hidden. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these classes will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the +# documentation. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. +# If set to NO (the default) these blocks will be appended to the +# function's detailed documentation block. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = NO + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put a list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen +# will list include files with double quotes in the documentation +# rather than with sharp brackets. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the +# brief documentation of file, namespace and class members alphabetically +# by member name. If set to NO (the default) the members will appear in +# declaration order. + +SORT_BRIEF_DOCS = NO + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen +# will sort the (brief and detailed) documentation of class members so that +# constructors and destructors are listed first. If set to NO (the default) +# the constructors will appear in the respective orders defined by +# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. +# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO +# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the +# hierarchy of group names into alphabetical order. If set to NO (the default) +# the group names will appear in their defined order. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be +# sorted by fully-qualified names, including namespaces. If set to +# NO (the default), the class list will be sorted only by class name, +# not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the +# alphabetical list. + +SORT_BY_SCOPE_NAME = NO + +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to +# do proper type resolution of all parameters of a function it will reject a +# match between the prototype and the implementation of a member function even +# if there is only one candidate or it is obvious which candidate to choose +# by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen +# will still accept a match between prototype and implementation in such cases. + +STRICT_PROTO_MATCHING = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = NO + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = NO + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = NO + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting +# \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= NO + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if section-label ... \endif +# and \cond section-label ... \endcond blocks. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or macro consists of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and macros in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = YES + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. +# This will remove the Files entry from the Quick Index and from the +# Folder Tree View (if specified). The default is YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the +# Namespaces page. +# This will remove the Namespaces entry from the Quick Index +# and from the Folder Tree View (if specified). The default is YES. + +SHOW_NAMESPACES = NO + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command , where is the value of +# the FILE_VERSION_FILTER tag, and is the name of an input file +# provided by doxygen. Whatever the program writes to standard output +# is used as the file version. See the manual for examples. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. To create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. +# You can optionally specify a file name after the option, if omitted +# DoxygenLayout.xml will be used as the name of the layout file. + +LAYOUT_FILE = + +# The CITE_BIB_FILES tag can be used to specify one or more bib files +# containing the references data. This must be a list of .bib files. The +# .bib extension is automatically appended if omitted. Using this command +# requires the bibtex tool to be installed. See also +# http://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style +# of the bibliography can be controlled using LATEX_BIB_STYLE. To use this +# feature you need bibtex and perl available in the search path. Do not use +# file names with spaces, bibtex cannot handle them. + +CITE_BIB_FILES = + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = YES + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some +# parameters in a documented function, or documenting parameters that +# don't exist or using markup commands wrongly. + +WARN_IF_DOC_ERROR = YES + +# The WARN_NO_PARAMDOC option can be enabled to get warnings for +# functions that are documented, but have no documentation for their parameters +# or return value. If set to NO (the default) doxygen will only warn about +# wrong or incomplete parameter documentation, but not about the absence of +# documentation. + +WARN_NO_PARAMDOC = NO + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. Optionally the format may contain +# $version, which will be replaced by the version of the file (if it could +# be obtained via FILE_VERSION_FILTER) + +WARN_FORMAT = "$file:$line: $text " + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = "@top_srcdir@" \ + "@top_builddir@" + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is +# also the default input encoding. Doxygen uses libiconv (or the iconv built +# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for +# the list of possible encodings. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh +# *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py +# *.f90 *.f *.for *.vhd *.vhdl + +FILE_PATTERNS = *.h \ + *.dox + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should be +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. +# Note that relative paths are relative to the directory from which doxygen is +# run. + +EXCLUDE = @abs_top_builddir@/docs/doxygen/html \ + @abs_top_builddir@/docs/doxygen/xml \ + @abs_top_builddir@/docs/doxygen/other/doxypy.py \ + @abs_top_builddir@/_CPack_Packages \ + @abs_top_srcdir@/cmake + +# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or +# directories that are symbolic links (a Unix file system feature) are excluded +# from the input. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. Note that the wildcards are matched +# against the file with absolute path, so to exclude all test directories +# for example use the pattern */test/* + +EXCLUDE_PATTERNS = */.deps/* \ + */.libs/* \ + */.svn/* \ + */CVS/* \ + */__init__.py \ + */qa_*.cc \ + */qa_*.h \ + */qa_*.py + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test + +EXCLUDE_SYMBOLS = ad9862 \ + numpy \ + *swig* \ + *Swig* \ + *my_top_block* \ + *my_graph* \ + *app_top_block* \ + *am_rx_graph* \ + *_queue_watcher_thread* \ + *parse* \ + *MyFrame* \ + *MyApp* \ + *PyObject* \ + *wfm_rx_block* \ + *_sptr* \ + *debug* \ + *wfm_rx_sca_block* \ + *tv_rx_block* \ + *wxapt_rx_block* \ + *example_signal* + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. +# If FILTER_PATTERNS is specified, this tag will be ignored. +# Note that the filter must not add or remove lines; it is applied before the +# code is scanned, but not when the output code is generated. If lines are added +# or removed, the anchors will not be placed correctly. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. +# Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. +# The filters are a list of the form: +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further +# info on how filters are used. If FILTER_PATTERNS is empty or if +# non of the patterns match the file name, INPUT_FILTER is applied. + +FILTER_PATTERNS = *.py="@top_srcdir@"/doc/doxygen/other/doxypy.py + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = NO + +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) +# and it is also possible to disable source filtering for a specific pattern +# using *.ext= (so without naming a filter). This option only has effect when +# FILTER_SOURCE_FILES is enabled. + +FILTER_SOURCE_PATTERNS = + +# If the USE_MD_FILE_AS_MAINPAGE tag refers to the name of a markdown file that +# is part of the input, its contents will be placed on the main page +# (index.html). This can be useful if you have a project on for instance GitHub +# and want reuse the introduction page also for the doxygen output. + +USE_MDFILE_AS_MAINPAGE = + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. +# Note: To get rid of all source code in the generated output, make sure also +# VERBATIM_HEADERS is set to NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C, C++ and Fortran comments will always remain visible. + +STRIP_CODE_COMMENTS = NO + +# If the REFERENCED_BY_RELATION tag is set to YES +# then for each documented function all documented +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = YES + +# If the REFERENCES_RELATION tag is set to YES +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = YES + +# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) +# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from +# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will +# link to the source code. +# Otherwise they will link to the documentation. + +REFERENCES_LINK_SOURCE = YES + +# If the USE_HTAGS tag is set to YES then the references to source code +# will point to the HTML generated by the htags(1) tool instead of doxygen +# built-in source browser. The htags tool is part of GNU's global source +# tagging system (see http://www.gnu.org/software/global/global.html). You +# will need version 4.8.6 or higher. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = YES + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = @enable_html_docs@ + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. Note that when using a custom header you are responsible +# for the proper inclusion of any scripts and style sheets that doxygen +# needs, which is dependent on the configuration options used. +# It is advised to generate a default header using "doxygen -w html +# header.html footer.html stylesheet.css YourConfigFile" and then modify +# that header. Note that the header is subject to change so you typically +# have to redo this when upgrading to a newer version of doxygen or when +# changing the value of configuration settings such as GENERATE_TREEVIEW! + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If left blank doxygen will +# generate a default style sheet. Note that it is recommended to use +# HTML_EXTRA_STYLESHEET instead of this one, as it is more robust and this +# tag will in the future become obsolete. + +HTML_STYLESHEET = + +# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional +# user-defined cascading style sheet that is included after the standard +# style sheets created by doxygen. Using this option one can overrule +# certain style aspects. This is preferred over using HTML_STYLESHEET +# since it does not replace the standard style sheet and is therefore more +# robust against future updates. Doxygen will copy the style sheet file to +# the output directory. + +HTML_EXTRA_STYLESHEET = + +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the HTML output directory. Note +# that these files will be copied to the base HTML output directory. Use the +# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that +# the files will be copied as-is; there are no commands or markers available. + +HTML_EXTRA_FILES = + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. +# Doxygen will adjust the colors in the style sheet and background images +# according to this color. Hue is specified as an angle on a colorwheel, +# see http://en.wikipedia.org/wiki/Hue for more information. +# For instance the value 0 represents red, 60 is yellow, 120 is green, +# 180 is cyan, 240 is blue, 300 purple, and 360 is red again. +# The allowed range is 0 to 359. + +HTML_COLORSTYLE_HUE = 220 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of +# the colors in the HTML output. For a value of 0 the output will use +# grayscales only. A value of 255 will produce the most vivid colors. + +HTML_COLORSTYLE_SAT = 100 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to +# the luminance component of the colors in the HTML output. Values below +# 100 gradually make the output lighter, whereas values above 100 make +# the output darker. The value divided by 100 is the actual gamma applied, +# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2, +# and 100 does not change the gamma. + +HTML_COLORSTYLE_GAMMA = 80 + +# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML +# page will contain the date and time when the page was generated. Setting +# this to NO can help when comparing the output of multiple runs. + +HTML_TIMESTAMP = NO + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. + +HTML_DYNAMIC_SECTIONS = NO + +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of +# entries shown in the various tree structured indices initially; the user +# can expand and collapse entries dynamically later on. Doxygen will expand +# the tree to such a level that at most the specified number of entries are +# visible (unless a fully collapsed tree already exceeds this amount). +# So setting the number of entries 1 will produce a full collapsed tree by +# default. 0 is a special value representing an infinite number of entries +# and will result in a full expanded tree by default. + +HTML_INDEX_NUM_ENTRIES = 100 + +# If the GENERATE_DOCSET tag is set to YES, additional index files +# will be generated that can be used as input for Apple's Xcode 3 +# integrated development environment, introduced with OSX 10.5 (Leopard). +# To create a documentation set, doxygen will generate a Makefile in the +# HTML output directory. Running make will produce the docset in that +# directory and running "make install" will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find +# it at startup. +# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html +# for more information. + +GENERATE_DOCSET = NO + +# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the +# feed. A documentation feed provides an umbrella under which multiple +# documentation sets from a single provider (such as a company or product suite) +# can be grouped. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that +# should uniquely identify the documentation set bundle. This should be a +# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen +# will append .docset to the name. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely +# identify the documentation publisher. This should be a reverse domain-name +# style string, e.g. com.mycompany.MyDocSet.documentation. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher. + +DOCSET_PUBLISHER_NAME = Publisher + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be +# written to the html output directory. + +CHM_FILE = + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run +# the HTML help compiler on the generated index.hhp. + +HHC_LOCATION = + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING +# is used to encode HtmlHelp index (hhk), content (hhc) and project file +# content. + +CHM_INDEX_ENCODING = + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the HTML help documentation and to the tree view. + +TOC_EXPAND = YES + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated +# that can be used as input for Qt's qhelpgenerator to generate a +# Qt Compressed Help (.qch) of the generated HTML documentation. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can +# be used to specify the file name of the resulting .qch file. +# The path specified is relative to the HTML output folder. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating +# Qt Help Project output. For more information please see +# http://doc.trolltech.com/qthelpproject.html#namespace + +QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating +# Qt Help Project output. For more information please see +# http://doc.trolltech.com/qthelpproject.html#virtual-folders + +QHP_VIRTUAL_FOLDER = doc + +# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to +# add. For more information please see +# http://doc.trolltech.com/qthelpproject.html#custom-filters + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see +# +# Qt Help Project / Custom Filters. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's +# filter section matches. +# +# Qt Help Project / Filter Attributes. + +QHP_SECT_FILTER_ATTRS = + +# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can +# be used to specify the location of Qt's qhelpgenerator. +# If non-empty doxygen will try to run qhelpgenerator on the generated +# .qhp file. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files +# will be generated, which together with the HTML files, form an Eclipse help +# plugin. To install this plugin and make it available under the help contents +# menu in Eclipse, the contents of the directory containing the HTML and XML +# files needs to be copied into the plugins directory of eclipse. The name of +# the directory within the plugins directory should be the same as +# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before +# the help appears. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have +# this name. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) +# at top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. Since the tabs have the same information as the +# navigation tree you can set this option to NO if you already set +# GENERATE_TREEVIEW to YES. + +DISABLE_INDEX = YES + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. +# If the tag value is set to YES, a side panel will be generated +# containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). +# Windows users are probably better off using the HTML help feature. +# Since the tree basically has the same information as the tab index you +# could consider to set DISABLE_INDEX to NO when enabling this option. + +GENERATE_TREEVIEW = YES + +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values +# (range [0,1..20]) that doxygen will group on one line in the generated HTML +# documentation. Note that a value of 0 will completely suppress the enum +# values from appearing in the overview section. + +ENUM_VALUES_PER_LINE = 4 + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 180 + +# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open +# links to external symbols imported via tag files in a separate window. + +EXT_LINKS_IN_WINDOW = NO + +# Use this tag to change the font size of Latex formulas included +# as images in the HTML documentation. The default is 10. Note that +# when you change the font size after a successful doxygen run you need +# to manually remove any form_*.png images from the HTML output directory +# to force them to be regenerated. + +FORMULA_FONTSIZE = 10 + +# Use the FORMULA_TRANPARENT tag to determine whether or not the images +# generated for formulas are transparent PNGs. Transparent PNGs are +# not supported properly for IE 6.0, but are supported on all modern browsers. +# Note that when changing this option you need to delete any form_*.png files +# in the HTML output before the changes have effect. + +FORMULA_TRANSPARENT = YES + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax +# (see http://www.mathjax.org) which uses client side Javascript for the +# rendering instead of using prerendered bitmaps. Use this if you do not +# have LaTeX installed or if you want to formulas look prettier in the HTML +# output. When enabled you may also need to install MathJax separately and +# configure the path to it using the MATHJAX_RELPATH option. + +USE_MATHJAX = NO + +# When MathJax is enabled you can set the default output format to be used for +# the MathJax output. Supported types are HTML-CSS, NativeMML (i.e. MathML) and +# SVG. The default value is HTML-CSS, which is slower, but has the best +# compatibility. + +MATHJAX_FORMAT = HTML-CSS + +# When MathJax is enabled you need to specify the location relative to the +# HTML output directory using the MATHJAX_RELPATH option. The destination +# directory should contain the MathJax.js script. For instance, if the mathjax +# directory is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to +# the MathJax Content Delivery Network so you can quickly see the result without +# installing MathJax. +# However, it is strongly recommended to install a local +# copy of MathJax from http://www.mathjax.org before deployment. + +MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest + +# The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension +# names that should be enabled during MathJax rendering. + +MATHJAX_EXTENSIONS = + +# The MATHJAX_CODEFILE tag can be used to specify a file with javascript +# pieces of code that will be used on startup of the MathJax code. + +MATHJAX_CODEFILE = + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box +# for the HTML output. The underlying search engine uses javascript +# and DHTML and should work on any modern browser. Note that when using +# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets +# (GENERATE_DOCSET) there is already a search function so this one should +# typically be disabled. For large projects the javascript based search engine +# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution. + +SEARCHENGINE = NO + +# When the SERVER_BASED_SEARCH tag is enabled the search engine will be +# implemented using a web server instead of a web client using Javascript. +# There are two flavours of web server based search depending on the +# EXTERNAL_SEARCH setting. When disabled, doxygen will generate a PHP script for +# searching and an index file used by the script. When EXTERNAL_SEARCH is +# enabled the indexing and searching needs to be provided by external tools. +# See the manual for details. + +SERVER_BASED_SEARCH = NO + +# When EXTERNAL_SEARCH is enabled doxygen will no longer generate the PHP +# script for searching. Instead the search results are written to an XML file +# which needs to be processed by an external indexer. Doxygen will invoke an +# external search engine pointed to by the SEARCHENGINE_URL option to obtain +# the search results. Doxygen ships with an example indexer (doxyindexer) and +# search engine (doxysearch.cgi) which are based on the open source search +# engine library Xapian. See the manual for configuration details. + +EXTERNAL_SEARCH = NO + +# The SEARCHENGINE_URL should point to a search engine hosted by a web server +# which will returned the search results when EXTERNAL_SEARCH is enabled. +# Doxygen ships with an example search engine (doxysearch) which is based on +# the open source search engine library Xapian. See the manual for configuration +# details. + +SEARCHENGINE_URL = + +# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed +# search data is written to a file for indexing by an external tool. With the +# SEARCHDATA_FILE tag the name of this file can be specified. + +SEARCHDATA_FILE = searchdata.xml + +# When SERVER_BASED_SEARCH AND EXTERNAL_SEARCH are both enabled the +# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is +# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple +# projects and redirect the results back to the right project. + +EXTERNAL_SEARCH_ID = + +# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen +# projects other than the one defined by this configuration file, but that are +# all added to the same external search index. Each project needs to have a +# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id +# of to a relative location where the documentation can be found. +# The format is: EXTRA_SEARCH_MAPPINGS = id1=loc1 id2=loc2 ... + +EXTRA_SEARCH_MAPPINGS = + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = @enable_latex_docs@ + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. If left blank `latex' will be used as the default command name. +# Note that when enabling USE_PDFLATEX this option is only used for +# generating bitmaps for formulas in the HTML output, but not in the +# Makefile that is written to the output directory. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, letter, legal and +# executive. If left blank a4 will be used. + +PAPER_TYPE = letter + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for +# the generated latex document. The footer should contain everything after +# the last chapter. If it is left blank doxygen will generate a +# standard footer. Notice: only use this tag if you know what you are doing! + +LATEX_FOOTER = + +# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images +# or other source files which should be copied to the LaTeX output directory. +# Note that the files will be copied as-is; there are no commands or markers +# available. + +LATEX_EXTRA_FILES = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = YES + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = NO + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) +# in the output. + +LATEX_HIDE_INDICES = NO + +# If LATEX_SOURCE_CODE is set to YES then doxygen will include +# source code with syntax highlighting in the LaTeX output. +# Note that which sources are shown also depends on other settings +# such as SOURCE_BROWSER. + +LATEX_SOURCE_CODE = NO + +# The LATEX_BIB_STYLE tag can be used to specify the style to use for the +# bibliography, e.g. plainnat, or ieeetr. The default style is "plain". See +# http://en.wikipedia.org/wiki/BibTeX for more info. + +LATEX_BIB_STYLE = plain + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimized for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load style sheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assignments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. + +GENERATE_XML = @enable_xml_docs@ + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `xml' will be used as the default path. + +XML_OUTPUT = xml + +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will +# dump the program listings (including syntax highlighting +# and cross-referencing information) to the XML output. Note that +# enabling this will significantly increase the size of the XML output. + +XML_PROGRAMLISTING = NO + +#--------------------------------------------------------------------------- +# configuration options related to the DOCBOOK output +#--------------------------------------------------------------------------- + +# If the GENERATE_DOCBOOK tag is set to YES Doxygen will generate DOCBOOK files +# that can be used to generate PDF. + +GENERATE_DOCBOOK = NO + +# The DOCBOOK_OUTPUT tag is used to specify where the DOCBOOK pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in +# front of it. If left blank docbook will be used as the default path. + +DOCBOOK_OUTPUT = docbook + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES Doxygen will +# generate a Perl module file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate +# the necessary Makefile rules, Perl scripts and LaTeX code to be able +# to generate PDF and DVI output from the Perl module output. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +# nicely formatted so it can be parsed by a human reader. +# This is useful +# if you want to understand what is going on. +# On the other hand, if this +# tag is set to NO the size of the Perl module output will be much smaller +# and Perl will parse it just the same. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +# This is useful so different doxyrules.make files included by the same +# Makefile don't overwrite each other's variables. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = NO + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_DEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# pointed to by INCLUDE_PATH will be searched when a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. To prevent a macro definition from being +# undefined via #undef or recursively expanded use the := operator +# instead of the = operator. + +PREDEFINED = + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition that +# overrules the definition found in the source code. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all references to function-like macros +# that are alone on a line, have an all uppercase name, and do not end with a +# semicolon, because these will confuse the parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES option can be used to specify one or more tagfiles. For each +# tag file the location of the external documentation should be added. The +# format of a tag file without this location is as follows: +# +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths +# or URLs. Note that each tag file must have a unique name (where the name does +# NOT include the path). If a tag file is not located in the directory in which +# doxygen is run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# If the EXTERNAL_PAGES tag is set to YES all external pages will be listed +# in the related pages index. If set to NO, only the current project's +# pages will be listed. + +EXTERNAL_PAGES = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base +# or super classes. Setting the tag to NO turns the diagrams off. Note that +# this option also works with HAVE_DOT disabled, but it is recommended to +# install and use dot, since it yields more powerful graphs. + +CLASS_DIAGRAMS = YES + +# You can define message sequence charts within doxygen comments using the \msc +# command. Doxygen will then run the mscgen tool (see +# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the +# documentation. The MSCGEN_PATH tag allows you to specify the directory where +# the mscgen tool resides. If left empty the tool is assumed to be found in the +# default search path. + +MSCGEN_PATH = + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = @HAVE_DOT@ + +# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is +# allowed to run in parallel. When set to 0 (the default) doxygen will +# base this on the number of processors available in the system. You can set it +# explicitly to a value larger than 0 to get control over the balance +# between CPU load and processing speed. + +DOT_NUM_THREADS = 0 + +# By default doxygen will use the Helvetica font for all dot files that +# doxygen generates. When you want a differently looking font you can specify +# the font name using DOT_FONTNAME. You need to make sure dot is able to find +# the font, which can be done by putting it in a standard location or by setting +# the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the +# directory containing the font. + +DOT_FONTNAME = Helvetica + +# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. +# The default size is 10pt. + +DOT_FONTSIZE = 10 + +# By default doxygen will tell dot to use the Helvetica font. +# If you specify a different font using DOT_FONTNAME you can use DOT_FONTPATH to +# set the path where dot can find it. + +DOT_FONTPATH = + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = NO + +# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for groups, showing the direct groups dependencies + +GROUP_GRAPHS = YES + +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. + +UML_LOOK = NO + +# If the UML_LOOK tag is enabled, the fields and methods are shown inside +# the class node. If there are many fields or methods and many nodes the +# graph may become too big to be useful. The UML_LIMIT_NUM_FIELDS +# threshold limits the number of items for each type to make the size more +# manageable. Set this to 0 for no limit. Note that the threshold may be +# exceeded by 50% before the limit is enforced. + +UML_LIMIT_NUM_FIELDS = 10 + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = NO + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH and HAVE_DOT options are set to YES then +# doxygen will generate a call dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable call graphs +# for selected functions only using the \callgraph command. + +CALL_GRAPH = NO + +# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then +# doxygen will generate a caller dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable caller +# graphs for selected functions only using the \callergraph command. + +CALLER_GRAPH = NO + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will generate a graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# If the DIRECTORY_GRAPH and HAVE_DOT tags are set to YES +# then doxygen will show the dependencies a directory has on other directories +# in a graphical way. The dependency relations are determined by the #include +# relations between the files in the directories. + +DIRECTORY_GRAPH = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are svg, png, jpg, or gif. +# If left blank png will be used. If you choose svg you need to set +# HTML_FILE_EXTENSION to xhtml in order to make the SVG files +# visible in IE 9+ (other browsers do not have this requirement). + +DOT_IMAGE_FORMAT = png + +# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to +# enable generation of interactive SVG images that allow zooming and panning. +# Note that this requires a modern browser other than Internet Explorer. +# Tested and working are Firefox, Chrome, Safari, and Opera. For IE 9+ you +# need to set HTML_FILE_EXTENSION to xhtml in order to make the SVG files +# visible. Older versions of IE do not have SVG support. + +INTERACTIVE_SVG = NO + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found in the path. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = + +# The MSCFILE_DIRS tag can be used to specify one or more directories that +# contain msc files that are included in the documentation (see the +# \mscfile command). + +MSCFILE_DIRS = + +# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of +# nodes that will be shown in the graph. If the number of nodes in a graph +# becomes larger than this value, doxygen will truncate the graph, which is +# visualized by representing a node as a red box. Note that doxygen if the +# number of direct children of the root node in a graph is already larger than +# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note +# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. + +DOT_GRAPH_MAX_NODES = 50 + +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the +# graphs generated by dot. A depth value of 3 means that only nodes reachable +# from the root by following a path via at most 3 edges will be shown. Nodes +# that lay further from the root node will be omitted. Note that setting this +# option to 1 or 2 may greatly reduce the computation time needed for large +# code bases. Also note that the size of a graph can be further restricted by +# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. + +MAX_DOT_GRAPH_DEPTH = 0 + +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent +# background. This is disabled by default, because dot on Windows does not +# seem to support this out of the box. Warning: Depending on the platform used, +# enabling this option may lead to badly anti-aliased labels on the edges of +# a graph (i.e. they become hard to read). + +DOT_TRANSPARENT = NO + +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) +# support this, this feature is disabled by default. + +DOT_MULTI_TARGETS = YES + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermediate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES diff --git a/docs/doxygen/Doxyfile.swig_doc.in b/docs/doxygen/Doxyfile.swig_doc.in new file mode 100644 index 0000000..cbe06d6 --- /dev/null +++ b/docs/doxygen/Doxyfile.swig_doc.in @@ -0,0 +1,1878 @@ +# Doxyfile 1.8.4 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project. +# +# All text after a double hash (##) is considered a comment and is placed +# in front of the TAG it is preceding . +# All text after a hash (#) is considered a comment and will be ignored. +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" "). + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file +# that follow. The default is UTF-8 which is also the encoding used for all +# text before the first occurrence of this tag. Doxygen uses libiconv (or the +# iconv built into libc) for the transcoding. See +# http://www.gnu.org/software/libiconv for the list of possible encodings. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or sequence of words) that should +# identify the project. Note that if you do not use Doxywizard you need +# to put quotes around the project name if it contains spaces. + +PROJECT_NAME = @CPACK_PACKAGE_NAME@ + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = @CPACK_PACKAGE_VERSION@ + +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewer +# a quick idea about the purpose of the project. Keep the description short. + +PROJECT_BRIEF = + +# With the PROJECT_LOGO tag one can specify an logo or icon that is +# included in the documentation. The maximum height of the logo should not +# exceed 55 pixels and the maximum width should not exceed 200 pixels. +# Doxygen will copy the logo to the output directory. + +PROJECT_LOGO = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = "@OUTPUT_DIRECTORY@" + +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create +# 4096 sub-directories (in 2 levels) under the output directory of each output +# format and will distribute the generated files over these directories. +# Enabling this option can be useful when feeding doxygen a huge amount of +# source files, where putting all generated files in the same directory would +# otherwise cause performance problems for the file system. + +CREATE_SUBDIRS = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, +# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, +# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English +# messages), Korean, Korean-en, Latvian, Lithuanian, Norwegian, Macedonian, +# Persian, Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, +# Slovak, Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator +# that is used to form the text in various listings. Each string +# in this list, if found as the leading text of the brief description, will be +# stripped from the text and the result after processing the whole list, is +# used as the annotated text. Otherwise, the brief description is used as-is. +# If left blank, the following values are used ("$name" is automatically +# replaced with the name of the entity): "The $name class" "The $name widget" +# "The $name file" "is" "provides" "specifies" "contains" +# "represents" "a" "an" "the" + +ABBREVIATE_BRIEF = + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = NO + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user-defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the +# path to strip. Note that you specify absolute paths here, but also +# relative paths, which will be relative from the directory where doxygen is +# started. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of +# the path mentioned in the documentation of a class, which tells +# the reader which header file to include in order to use a class. +# If left blank only the name of the header file containing the class +# definition is used. Otherwise one should specify the include paths that +# are normally passed to the compiler using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful if your file system +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like regular Qt-style comments +# (thus requiring an explicit @brief command for a brief description.) + +JAVADOC_AUTOBRIEF = NO + +# If the QT_AUTOBRIEF tag is set to YES then Doxygen will +# interpret the first line (until the first dot) of a Qt-style +# comment as the brief description. If set to NO, the comments +# will behave just like regular Qt-style comments (thus requiring +# an explicit \brief command for a brief description.) + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +# treat a multi-line C++ special comment block (i.e. a block of //! or /// +# comments) as a brief description. This used to be the default behaviour. +# The new default is to treat a multi-line C++ comment block as a detailed +# description. Set this tag to YES if you prefer the old behaviour instead. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# re-implements. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce +# a new page for each member. If set to NO, the documentation of a member will +# be part of the file/class/namespace that contains it. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 8 + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user-defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = + +# This tag can be used to specify a number of word-keyword mappings (TCL only). +# A mapping has the form "name=value". For example adding +# "class=itcl::class" will allow you to use the command class in the +# itcl::class meaning. + +TCL_SUBST = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C +# sources only. Doxygen will then generate output that is more tailored for C. +# For instance, some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java +# sources only. Doxygen will then generate output that is more tailored for +# Java. For instance, namespaces will be presented as packages, qualified +# scopes will look different, etc. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources only. Doxygen will then generate output that is more tailored for +# Fortran. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for +# VHDL. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given +# extension. Doxygen has a built-in mapping, but you can override or extend it +# using this tag. The format is ext=language, where ext is a file extension, +# and language is one of the parsers supported by doxygen: IDL, Java, +# Javascript, CSharp, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, +# C++. For instance to make doxygen treat .inc files as Fortran files (default +# is PHP), and .f files as C (default is Fortran), use: inc=Fortran f=C. Note +# that for custom extensions you also need to set FILE_PATTERNS otherwise the +# files are not read by doxygen. + +EXTENSION_MAPPING = + +# If MARKDOWN_SUPPORT is enabled (the default) then doxygen pre-processes all +# comments according to the Markdown format, which allows for more readable +# documentation. See http://daringfireball.net/projects/markdown/ for details. +# The output of markdown processing is further processed by doxygen, so you +# can mix doxygen, HTML, and XML commands with Markdown formatting. +# Disable only in case of backward compatibilities issues. + +MARKDOWN_SUPPORT = YES + +# When enabled doxygen tries to link words that correspond to documented +# classes, or namespaces to their corresponding documentation. Such a link can +# be prevented in individual cases by by putting a % sign in front of the word +# or globally by setting AUTOLINK_SUPPORT to NO. + +AUTOLINK_SUPPORT = YES + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should +# set this tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. +# func(std::string) {}). This also makes the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. + +BUILTIN_STL_SUPPORT = YES + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. +# Doxygen will parse them like normal C++ but will assume all classes use public +# instead of private inheritance when no explicit protection keyword is present. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate +# getter and setter methods for a property. Setting this option to YES (the +# default) will make doxygen replace the get and set methods by a property in +# the documentation. This will only work if the methods are indeed getting or +# setting a simple type. If this is not the case, or you want to show the +# methods anyway, you should set this option to NO. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of +# the same type (for instance a group of public functions) to be put as a +# subgroup of that type (e.g. under the Public Functions section). Set it to +# NO to prevent subgrouping. Alternatively, this can be done per class using +# the \nosubgrouping command. + +SUBGROUPING = YES + +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and +# unions are shown inside the group in which they are included (e.g. using +# @ingroup) instead of on a separate page (for HTML and Man pages) or +# section (for LaTeX and RTF). + +INLINE_GROUPED_CLASSES = NO + +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and +# unions with only public data fields or simple typedef fields will be shown +# inline in the documentation of the scope in which they are defined (i.e. file, +# namespace, or group documentation), provided this scope is documented. If set +# to NO (the default), structs, classes, and unions are shown on a separate +# page (for HTML and Man pages) or section (for LaTeX and RTF). + +INLINE_SIMPLE_STRUCTS = NO + +# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum +# is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically +# be useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. + +TYPEDEF_HIDES_STRUCT = NO + +# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This +# cache is used to resolve symbols given their name and scope. Since this can +# be an expensive process and often the same symbol appear multiple times in +# the code, doxygen keeps a cache of pre-resolved symbols. If the cache is too +# small doxygen will become slower. If the cache is too large, memory is wasted. +# The cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid +# range is 0..9, the default is 0, corresponding to a cache size of 2^16 = 65536 +# symbols. + +LOOKUP_CACHE_SIZE = 0 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = YES + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal +# scope will be included in the documentation. + +EXTRACT_PACKAGE = NO + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. When set to YES local +# methods, which are defined in the implementation section but not in +# the interface are included in the documentation. +# If set to NO (the default) only methods in the interface are included. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base +# name of the file that contains the anonymous namespace. By default +# anonymous namespaces are hidden. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these classes will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the +# documentation. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. +# If set to NO (the default) these blocks will be appended to the +# function's detailed documentation block. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = NO + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put a list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen +# will list include files with double quotes in the documentation +# rather than with sharp brackets. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the +# brief documentation of file, namespace and class members alphabetically +# by member name. If set to NO (the default) the members will appear in +# declaration order. + +SORT_BRIEF_DOCS = NO + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen +# will sort the (brief and detailed) documentation of class members so that +# constructors and destructors are listed first. If set to NO (the default) +# the constructors will appear in the respective orders defined by +# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. +# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO +# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the +# hierarchy of group names into alphabetical order. If set to NO (the default) +# the group names will appear in their defined order. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be +# sorted by fully-qualified names, including namespaces. If set to +# NO (the default), the class list will be sorted only by class name, +# not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the +# alphabetical list. + +SORT_BY_SCOPE_NAME = NO + +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to +# do proper type resolution of all parameters of a function it will reject a +# match between the prototype and the implementation of a member function even +# if there is only one candidate or it is obvious which candidate to choose +# by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen +# will still accept a match between prototype and implementation in such cases. + +STRICT_PROTO_MATCHING = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting +# \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if section-label ... \endif +# and \cond section-label ... \endcond blocks. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or macro consists of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and macros in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = YES + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. +# This will remove the Files entry from the Quick Index and from the +# Folder Tree View (if specified). The default is YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the +# Namespaces page. +# This will remove the Namespaces entry from the Quick Index +# and from the Folder Tree View (if specified). The default is YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command , where is the value of +# the FILE_VERSION_FILTER tag, and is the name of an input file +# provided by doxygen. Whatever the program writes to standard output +# is used as the file version. See the manual for examples. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. To create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. +# You can optionally specify a file name after the option, if omitted +# DoxygenLayout.xml will be used as the name of the layout file. + +LAYOUT_FILE = + +# The CITE_BIB_FILES tag can be used to specify one or more bib files +# containing the references data. This must be a list of .bib files. The +# .bib extension is automatically appended if omitted. Using this command +# requires the bibtex tool to be installed. See also +# http://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style +# of the bibliography can be controlled using LATEX_BIB_STYLE. To use this +# feature you need bibtex and perl available in the search path. Do not use +# file names with spaces, bibtex cannot handle them. + +CITE_BIB_FILES = + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = YES + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some +# parameters in a documented function, or documenting parameters that +# don't exist or using markup commands wrongly. + +WARN_IF_DOC_ERROR = YES + +# The WARN_NO_PARAMDOC option can be enabled to get warnings for +# functions that are documented, but have no documentation for their parameters +# or return value. If set to NO (the default) doxygen will only warn about +# wrong or incomplete parameter documentation, but not about the absence of +# documentation. + +WARN_NO_PARAMDOC = NO + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. Optionally the format may contain +# $version, which will be replaced by the version of the file (if it could +# be obtained via FILE_VERSION_FILTER) + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = @INPUT_PATHS@ + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is +# also the default input encoding. Doxygen uses libiconv (or the iconv built +# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for +# the list of possible encodings. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh +# *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py +# *.f90 *.f *.for *.vhd *.vhdl + +FILE_PATTERNS = *.h + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should be +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. +# Note that relative paths are relative to the directory from which doxygen is +# run. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or +# directories that are symbolic links (a Unix file system feature) are excluded +# from the input. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. Note that the wildcards are matched +# against the file with absolute path, so to exclude all test directories +# for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. +# If FILTER_PATTERNS is specified, this tag will be ignored. +# Note that the filter must not add or remove lines; it is applied before the +# code is scanned, but not when the output code is generated. If lines are added +# or removed, the anchors will not be placed correctly. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. +# Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. +# The filters are a list of the form: +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further +# info on how filters are used. If FILTER_PATTERNS is empty or if +# non of the patterns match the file name, INPUT_FILTER is applied. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = NO + +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) +# and it is also possible to disable source filtering for a specific pattern +# using *.ext= (so without naming a filter). This option only has effect when +# FILTER_SOURCE_FILES is enabled. + +FILTER_SOURCE_PATTERNS = + +# If the USE_MD_FILE_AS_MAINPAGE tag refers to the name of a markdown file that +# is part of the input, its contents will be placed on the main page +# (index.html). This can be useful if you have a project on for instance GitHub +# and want reuse the introduction page also for the doxygen output. + +USE_MDFILE_AS_MAINPAGE = + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. +# Note: To get rid of all source code in the generated output, make sure also +# VERBATIM_HEADERS is set to NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C, C++ and Fortran comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES +# then for each documented function all documented +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = NO + +# If the REFERENCES_RELATION tag is set to YES +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = NO + +# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) +# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from +# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will +# link to the source code. +# Otherwise they will link to the documentation. + +REFERENCES_LINK_SOURCE = YES + +# If the USE_HTAGS tag is set to YES then the references to source code +# will point to the HTML generated by the htags(1) tool instead of doxygen +# built-in source browser. The htags tool is part of GNU's global source +# tagging system (see http://www.gnu.org/software/global/global.html). You +# will need version 4.8.6 or higher. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = NO + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = NO + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. Note that when using a custom header you are responsible +# for the proper inclusion of any scripts and style sheets that doxygen +# needs, which is dependent on the configuration options used. +# It is advised to generate a default header using "doxygen -w html +# header.html footer.html stylesheet.css YourConfigFile" and then modify +# that header. Note that the header is subject to change so you typically +# have to redo this when upgrading to a newer version of doxygen or when +# changing the value of configuration settings such as GENERATE_TREEVIEW! + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If left blank doxygen will +# generate a default style sheet. Note that it is recommended to use +# HTML_EXTRA_STYLESHEET instead of this one, as it is more robust and this +# tag will in the future become obsolete. + +HTML_STYLESHEET = + +# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional +# user-defined cascading style sheet that is included after the standard +# style sheets created by doxygen. Using this option one can overrule +# certain style aspects. This is preferred over using HTML_STYLESHEET +# since it does not replace the standard style sheet and is therefore more +# robust against future updates. Doxygen will copy the style sheet file to +# the output directory. + +HTML_EXTRA_STYLESHEET = + +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the HTML output directory. Note +# that these files will be copied to the base HTML output directory. Use the +# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that +# the files will be copied as-is; there are no commands or markers available. + +HTML_EXTRA_FILES = + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. +# Doxygen will adjust the colors in the style sheet and background images +# according to this color. Hue is specified as an angle on a colorwheel, +# see http://en.wikipedia.org/wiki/Hue for more information. +# For instance the value 0 represents red, 60 is yellow, 120 is green, +# 180 is cyan, 240 is blue, 300 purple, and 360 is red again. +# The allowed range is 0 to 359. + +HTML_COLORSTYLE_HUE = 220 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of +# the colors in the HTML output. For a value of 0 the output will use +# grayscales only. A value of 255 will produce the most vivid colors. + +HTML_COLORSTYLE_SAT = 100 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to +# the luminance component of the colors in the HTML output. Values below +# 100 gradually make the output lighter, whereas values above 100 make +# the output darker. The value divided by 100 is the actual gamma applied, +# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2, +# and 100 does not change the gamma. + +HTML_COLORSTYLE_GAMMA = 80 + +# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML +# page will contain the date and time when the page was generated. Setting +# this to NO can help when comparing the output of multiple runs. + +HTML_TIMESTAMP = NO + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. + +HTML_DYNAMIC_SECTIONS = NO + +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of +# entries shown in the various tree structured indices initially; the user +# can expand and collapse entries dynamically later on. Doxygen will expand +# the tree to such a level that at most the specified number of entries are +# visible (unless a fully collapsed tree already exceeds this amount). +# So setting the number of entries 1 will produce a full collapsed tree by +# default. 0 is a special value representing an infinite number of entries +# and will result in a full expanded tree by default. + +HTML_INDEX_NUM_ENTRIES = 100 + +# If the GENERATE_DOCSET tag is set to YES, additional index files +# will be generated that can be used as input for Apple's Xcode 3 +# integrated development environment, introduced with OSX 10.5 (Leopard). +# To create a documentation set, doxygen will generate a Makefile in the +# HTML output directory. Running make will produce the docset in that +# directory and running "make install" will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find +# it at startup. +# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html +# for more information. + +GENERATE_DOCSET = NO + +# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the +# feed. A documentation feed provides an umbrella under which multiple +# documentation sets from a single provider (such as a company or product suite) +# can be grouped. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that +# should uniquely identify the documentation set bundle. This should be a +# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen +# will append .docset to the name. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely +# identify the documentation publisher. This should be a reverse domain-name +# style string, e.g. com.mycompany.MyDocSet.documentation. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher. + +DOCSET_PUBLISHER_NAME = Publisher + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be +# written to the html output directory. + +CHM_FILE = + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run +# the HTML help compiler on the generated index.hhp. + +HHC_LOCATION = + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING +# is used to encode HtmlHelp index (hhk), content (hhc) and project file +# content. + +CHM_INDEX_ENCODING = + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the HTML help documentation and to the tree view. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated +# that can be used as input for Qt's qhelpgenerator to generate a +# Qt Compressed Help (.qch) of the generated HTML documentation. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can +# be used to specify the file name of the resulting .qch file. +# The path specified is relative to the HTML output folder. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating +# Qt Help Project output. For more information please see +# http://doc.trolltech.com/qthelpproject.html#namespace + +QHP_NAMESPACE = + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating +# Qt Help Project output. For more information please see +# http://doc.trolltech.com/qthelpproject.html#virtual-folders + +QHP_VIRTUAL_FOLDER = doc + +# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to +# add. For more information please see +# http://doc.trolltech.com/qthelpproject.html#custom-filters + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see +# +# Qt Help Project / Custom Filters. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's +# filter section matches. +# +# Qt Help Project / Filter Attributes. + +QHP_SECT_FILTER_ATTRS = + +# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can +# be used to specify the location of Qt's qhelpgenerator. +# If non-empty doxygen will try to run qhelpgenerator on the generated +# .qhp file. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files +# will be generated, which together with the HTML files, form an Eclipse help +# plugin. To install this plugin and make it available under the help contents +# menu in Eclipse, the contents of the directory containing the HTML and XML +# files needs to be copied into the plugins directory of eclipse. The name of +# the directory within the plugins directory should be the same as +# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before +# the help appears. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have +# this name. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) +# at top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. Since the tabs have the same information as the +# navigation tree you can set this option to NO if you already set +# GENERATE_TREEVIEW to YES. + +DISABLE_INDEX = NO + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. +# If the tag value is set to YES, a side panel will be generated +# containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). +# Windows users are probably better off using the HTML help feature. +# Since the tree basically has the same information as the tab index you +# could consider to set DISABLE_INDEX to NO when enabling this option. + +GENERATE_TREEVIEW = NO + +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values +# (range [0,1..20]) that doxygen will group on one line in the generated HTML +# documentation. Note that a value of 0 will completely suppress the enum +# values from appearing in the overview section. + +ENUM_VALUES_PER_LINE = 4 + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open +# links to external symbols imported via tag files in a separate window. + +EXT_LINKS_IN_WINDOW = NO + +# Use this tag to change the font size of Latex formulas included +# as images in the HTML documentation. The default is 10. Note that +# when you change the font size after a successful doxygen run you need +# to manually remove any form_*.png images from the HTML output directory +# to force them to be regenerated. + +FORMULA_FONTSIZE = 10 + +# Use the FORMULA_TRANPARENT tag to determine whether or not the images +# generated for formulas are transparent PNGs. Transparent PNGs are +# not supported properly for IE 6.0, but are supported on all modern browsers. +# Note that when changing this option you need to delete any form_*.png files +# in the HTML output before the changes have effect. + +FORMULA_TRANSPARENT = YES + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax +# (see http://www.mathjax.org) which uses client side Javascript for the +# rendering instead of using prerendered bitmaps. Use this if you do not +# have LaTeX installed or if you want to formulas look prettier in the HTML +# output. When enabled you may also need to install MathJax separately and +# configure the path to it using the MATHJAX_RELPATH option. + +USE_MATHJAX = NO + +# When MathJax is enabled you can set the default output format to be used for +# the MathJax output. Supported types are HTML-CSS, NativeMML (i.e. MathML) and +# SVG. The default value is HTML-CSS, which is slower, but has the best +# compatibility. + +MATHJAX_FORMAT = HTML-CSS + +# When MathJax is enabled you need to specify the location relative to the +# HTML output directory using the MATHJAX_RELPATH option. The destination +# directory should contain the MathJax.js script. For instance, if the mathjax +# directory is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to +# the MathJax Content Delivery Network so you can quickly see the result without +# installing MathJax. +# However, it is strongly recommended to install a local +# copy of MathJax from http://www.mathjax.org before deployment. + +MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest + +# The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension +# names that should be enabled during MathJax rendering. + +MATHJAX_EXTENSIONS = + +# The MATHJAX_CODEFILE tag can be used to specify a file with javascript +# pieces of code that will be used on startup of the MathJax code. + +MATHJAX_CODEFILE = + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box +# for the HTML output. The underlying search engine uses javascript +# and DHTML and should work on any modern browser. Note that when using +# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets +# (GENERATE_DOCSET) there is already a search function so this one should +# typically be disabled. For large projects the javascript based search engine +# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution. + +SEARCHENGINE = YES + +# When the SERVER_BASED_SEARCH tag is enabled the search engine will be +# implemented using a web server instead of a web client using Javascript. +# There are two flavours of web server based search depending on the +# EXTERNAL_SEARCH setting. When disabled, doxygen will generate a PHP script for +# searching and an index file used by the script. When EXTERNAL_SEARCH is +# enabled the indexing and searching needs to be provided by external tools. +# See the manual for details. + +SERVER_BASED_SEARCH = NO + +# When EXTERNAL_SEARCH is enabled doxygen will no longer generate the PHP +# script for searching. Instead the search results are written to an XML file +# which needs to be processed by an external indexer. Doxygen will invoke an +# external search engine pointed to by the SEARCHENGINE_URL option to obtain +# the search results. Doxygen ships with an example indexer (doxyindexer) and +# search engine (doxysearch.cgi) which are based on the open source search +# engine library Xapian. See the manual for configuration details. + +EXTERNAL_SEARCH = NO + +# The SEARCHENGINE_URL should point to a search engine hosted by a web server +# which will returned the search results when EXTERNAL_SEARCH is enabled. +# Doxygen ships with an example search engine (doxysearch) which is based on +# the open source search engine library Xapian. See the manual for configuration +# details. + +SEARCHENGINE_URL = + +# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed +# search data is written to a file for indexing by an external tool. With the +# SEARCHDATA_FILE tag the name of this file can be specified. + +SEARCHDATA_FILE = searchdata.xml + +# When SERVER_BASED_SEARCH AND EXTERNAL_SEARCH are both enabled the +# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is +# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple +# projects and redirect the results back to the right project. + +EXTERNAL_SEARCH_ID = + +# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen +# projects other than the one defined by this configuration file, but that are +# all added to the same external search index. Each project needs to have a +# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id +# of to a relative location where the documentation can be found. +# The format is: EXTRA_SEARCH_MAPPINGS = id1=loc1 id2=loc2 ... + +EXTRA_SEARCH_MAPPINGS = + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = NO + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. If left blank `latex' will be used as the default command name. +# Note that when enabling USE_PDFLATEX this option is only used for +# generating bitmaps for formulas in the HTML output, but not in the +# Makefile that is written to the output directory. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, letter, legal and +# executive. If left blank a4 will be used. + +PAPER_TYPE = a4wide + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for +# the generated latex document. The footer should contain everything after +# the last chapter. If it is left blank doxygen will generate a +# standard footer. Notice: only use this tag if you know what you are doing! + +LATEX_FOOTER = + +# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images +# or other source files which should be copied to the LaTeX output directory. +# Note that the files will be copied as-is; there are no commands or markers +# available. + +LATEX_EXTRA_FILES = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = YES + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = YES + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) +# in the output. + +LATEX_HIDE_INDICES = NO + +# If LATEX_SOURCE_CODE is set to YES then doxygen will include +# source code with syntax highlighting in the LaTeX output. +# Note that which sources are shown also depends on other settings +# such as SOURCE_BROWSER. + +LATEX_SOURCE_CODE = NO + +# The LATEX_BIB_STYLE tag can be used to specify the style to use for the +# bibliography, e.g. plainnat, or ieeetr. The default style is "plain". See +# http://en.wikipedia.org/wiki/BibTeX for more info. + +LATEX_BIB_STYLE = plain + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimized for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load style sheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assignments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. + +GENERATE_XML = YES + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `xml' will be used as the default path. + +XML_OUTPUT = xml + +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will +# dump the program listings (including syntax highlighting +# and cross-referencing information) to the XML output. Note that +# enabling this will significantly increase the size of the XML output. + +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# configuration options related to the DOCBOOK output +#--------------------------------------------------------------------------- + +# If the GENERATE_DOCBOOK tag is set to YES Doxygen will generate DOCBOOK files +# that can be used to generate PDF. + +GENERATE_DOCBOOK = NO + +# The DOCBOOK_OUTPUT tag is used to specify where the DOCBOOK pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in +# front of it. If left blank docbook will be used as the default path. + +DOCBOOK_OUTPUT = docbook + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES Doxygen will +# generate a Perl module file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate +# the necessary Makefile rules, Perl scripts and LaTeX code to be able +# to generate PDF and DVI output from the Perl module output. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +# nicely formatted so it can be parsed by a human reader. +# This is useful +# if you want to understand what is going on. +# On the other hand, if this +# tag is set to NO the size of the Perl module output will be much smaller +# and Perl will parse it just the same. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +# This is useful so different doxyrules.make files included by the same +# Makefile don't overwrite each other's variables. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = YES + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_DEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# pointed to by INCLUDE_PATH will be searched when a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. To prevent a macro definition from being +# undefined via #undef or recursively expanded use the := operator +# instead of the = operator. + +PREDEFINED = + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition that +# overrules the definition found in the source code. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all references to function-like macros +# that are alone on a line, have an all uppercase name, and do not end with a +# semicolon, because these will confuse the parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES option can be used to specify one or more tagfiles. For each +# tag file the location of the external documentation should be added. The +# format of a tag file without this location is as follows: +# +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths +# or URLs. Note that each tag file must have a unique name (where the name does +# NOT include the path). If a tag file is not located in the directory in which +# doxygen is run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# If the EXTERNAL_PAGES tag is set to YES all external pages will be listed +# in the related pages index. If set to NO, only the current project's +# pages will be listed. + +EXTERNAL_PAGES = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base +# or super classes. Setting the tag to NO turns the diagrams off. Note that +# this option also works with HAVE_DOT disabled, but it is recommended to +# install and use dot, since it yields more powerful graphs. + +CLASS_DIAGRAMS = YES + +# You can define message sequence charts within doxygen comments using the \msc +# command. Doxygen will then run the mscgen tool (see +# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the +# documentation. The MSCGEN_PATH tag allows you to specify the directory where +# the mscgen tool resides. If left empty the tool is assumed to be found in the +# default search path. + +MSCGEN_PATH = + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = NO + +# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is +# allowed to run in parallel. When set to 0 (the default) doxygen will +# base this on the number of processors available in the system. You can set it +# explicitly to a value larger than 0 to get control over the balance +# between CPU load and processing speed. + +DOT_NUM_THREADS = 0 + +# By default doxygen will use the Helvetica font for all dot files that +# doxygen generates. When you want a differently looking font you can specify +# the font name using DOT_FONTNAME. You need to make sure dot is able to find +# the font, which can be done by putting it in a standard location or by setting +# the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the +# directory containing the font. + +DOT_FONTNAME = Helvetica + +# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. +# The default size is 10pt. + +DOT_FONTSIZE = 10 + +# By default doxygen will tell dot to use the Helvetica font. +# If you specify a different font using DOT_FONTNAME you can use DOT_FONTPATH to +# set the path where dot can find it. + +DOT_FONTPATH = + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for groups, showing the direct groups dependencies + +GROUP_GRAPHS = YES + +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. + +UML_LOOK = NO + +# If the UML_LOOK tag is enabled, the fields and methods are shown inside +# the class node. If there are many fields or methods and many nodes the +# graph may become too big to be useful. The UML_LIMIT_NUM_FIELDS +# threshold limits the number of items for each type to make the size more +# manageable. Set this to 0 for no limit. Note that the threshold may be +# exceeded by 50% before the limit is enforced. + +UML_LIMIT_NUM_FIELDS = 10 + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = NO + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH and HAVE_DOT options are set to YES then +# doxygen will generate a call dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable call graphs +# for selected functions only using the \callgraph command. + +CALL_GRAPH = NO + +# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then +# doxygen will generate a caller dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable caller +# graphs for selected functions only using the \callergraph command. + +CALLER_GRAPH = NO + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will generate a graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# If the DIRECTORY_GRAPH and HAVE_DOT tags are set to YES +# then doxygen will show the dependencies a directory has on other directories +# in a graphical way. The dependency relations are determined by the #include +# relations between the files in the directories. + +DIRECTORY_GRAPH = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are svg, png, jpg, or gif. +# If left blank png will be used. If you choose svg you need to set +# HTML_FILE_EXTENSION to xhtml in order to make the SVG files +# visible in IE 9+ (other browsers do not have this requirement). + +DOT_IMAGE_FORMAT = png + +# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to +# enable generation of interactive SVG images that allow zooming and panning. +# Note that this requires a modern browser other than Internet Explorer. +# Tested and working are Firefox, Chrome, Safari, and Opera. For IE 9+ you +# need to set HTML_FILE_EXTENSION to xhtml in order to make the SVG files +# visible. Older versions of IE do not have SVG support. + +INTERACTIVE_SVG = NO + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found in the path. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = + +# The MSCFILE_DIRS tag can be used to specify one or more directories that +# contain msc files that are included in the documentation (see the +# \mscfile command). + +MSCFILE_DIRS = + +# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of +# nodes that will be shown in the graph. If the number of nodes in a graph +# becomes larger than this value, doxygen will truncate the graph, which is +# visualized by representing a node as a red box. Note that doxygen if the +# number of direct children of the root node in a graph is already larger than +# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note +# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. + +DOT_GRAPH_MAX_NODES = 50 + +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the +# graphs generated by dot. A depth value of 3 means that only nodes reachable +# from the root by following a path via at most 3 edges will be shown. Nodes +# that lay further from the root node will be omitted. Note that setting this +# option to 1 or 2 may greatly reduce the computation time needed for large +# code bases. Also note that the size of a graph can be further restricted by +# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. + +MAX_DOT_GRAPH_DEPTH = 0 + +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent +# background. This is disabled by default, because dot on Windows does not +# seem to support this out of the box. Warning: Depending on the platform used, +# enabling this option may lead to badly anti-aliased labels on the edges of +# a graph (i.e. they become hard to read). + +DOT_TRANSPARENT = NO + +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) +# support this, this feature is disabled by default. + +DOT_MULTI_TARGETS = YES + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermediate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES diff --git a/docs/doxygen/doxyxml/__init__.py b/docs/doxygen/doxyxml/__init__.py new file mode 100644 index 0000000..c315086 --- /dev/null +++ b/docs/doxygen/doxyxml/__init__.py @@ -0,0 +1,84 @@ +# +# Copyright 2010 Free Software Foundation, Inc. +# +# This file was generated by gr_modtool, a tool from the GNU Radio framework +# This file is a part of gr-tempest +# +# 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. +# +""" +Python interface to contents of doxygen xml documentation. + +Example use: +See the contents of the example folder for the C++ and +doxygen-generated xml used in this example. + +>>> # Parse the doxygen docs. +>>> import os +>>> this_dir = os.path.dirname(globals()['__file__']) +>>> xml_path = this_dir + "/example/xml/" +>>> di = DoxyIndex(xml_path) + +Get a list of all top-level objects. + +>>> print([mem.name() for mem in di.members()]) +[u'Aadvark', u'aadvarky_enough', u'main'] + +Get all functions. + +>>> print([mem.name() for mem in di.in_category(DoxyFunction)]) +[u'aadvarky_enough', u'main'] + +Check if an object is present. + +>>> di.has_member(u'Aadvark') +True +>>> di.has_member(u'Fish') +False + +Get an item by name and check its properties. + +>>> aad = di.get_member(u'Aadvark') +>>> print(aad.brief_description) +Models the mammal Aadvark. +>>> print(aad.detailed_description) +Sadly the model is incomplete and cannot capture all aspects of an aadvark yet. + +This line is uninformative and is only to test line breaks in the comments. +>>> [mem.name() for mem in aad.members()] +[u'aadvarkness', u'print', u'Aadvark', u'get_aadvarkness'] +>>> aad.get_member(u'print').brief_description +u'Outputs the vital aadvark statistics.' + +""" +from __future__ import unicode_literals + +from .doxyindex import DoxyIndex, DoxyFunction, DoxyParam, DoxyClass, DoxyFile, DoxyNamespace, DoxyGroup, DoxyFriend, DoxyOther + +def _test(): + import os + this_dir = os.path.dirname(globals()['__file__']) + xml_path = this_dir + "/example/xml/" + di = DoxyIndex(xml_path) + # Get the Aadvark class + aad = di.get_member('Aadvark') + aad.brief_description + import doctest + return doctest.testmod() + +if __name__ == "__main__": + _test() + diff --git a/docs/doxygen/doxyxml/base.py b/docs/doxygen/doxyxml/base.py new file mode 100644 index 0000000..8cb14fd --- /dev/null +++ b/docs/doxygen/doxyxml/base.py @@ -0,0 +1,222 @@ +# +# Copyright 2010 Free Software Foundation, Inc. +# +# This file was generated by gr_modtool, a tool from the GNU Radio framework +# This file is a part of gr-tempest +# +# 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. +# +""" +A base class is created. + +Classes based upon this are used to make more user-friendly interfaces +to the doxygen xml docs than the generated classes provide. +""" +from __future__ import print_function +from __future__ import unicode_literals + +import os +import pdb + +from xml.parsers.expat import ExpatError + +from .generated import compound + + +class Base(object): + + class Duplicate(Exception): + pass + + class NoSuchMember(Exception): + pass + + class ParsingError(Exception): + pass + + def __init__(self, parse_data, top=None): + self._parsed = False + self._error = False + self._parse_data = parse_data + self._members = [] + self._dict_members = {} + self._in_category = {} + self._data = {} + if top is not None: + self._xml_path = top._xml_path + # Set up holder of references + else: + top = self + self._refs = {} + self._xml_path = parse_data + self.top = top + + @classmethod + def from_refid(cls, refid, top=None): + """ Instantiate class from a refid rather than parsing object. """ + # First check to see if its already been instantiated. + if top is not None and refid in top._refs: + return top._refs[refid] + # Otherwise create a new instance and set refid. + inst = cls(None, top=top) + inst.refid = refid + inst.add_ref(inst) + return inst + + @classmethod + def from_parse_data(cls, parse_data, top=None): + refid = getattr(parse_data, 'refid', None) + if refid is not None and top is not None and refid in top._refs: + return top._refs[refid] + inst = cls(parse_data, top=top) + if refid is not None: + inst.refid = refid + inst.add_ref(inst) + return inst + + def add_ref(self, obj): + if hasattr(obj, 'refid'): + self.top._refs[obj.refid] = obj + + mem_classes = [] + + def get_cls(self, mem): + for cls in self.mem_classes: + if cls.can_parse(mem): + return cls + raise Exception(("Did not find a class for object '%s'." \ + % (mem.get_name()))) + + def convert_mem(self, mem): + try: + cls = self.get_cls(mem) + converted = cls.from_parse_data(mem, self.top) + if converted is None: + raise Exception('No class matched this object.') + self.add_ref(converted) + return converted + except Exception as e: + print(e) + + @classmethod + def includes(cls, inst): + return isinstance(inst, cls) + + @classmethod + def can_parse(cls, obj): + return False + + def _parse(self): + self._parsed = True + + def _get_dict_members(self, cat=None): + """ + For given category a dictionary is returned mapping member names to + members of that category. For names that are duplicated the name is + mapped to None. + """ + self.confirm_no_error() + if cat not in self._dict_members: + new_dict = {} + for mem in self.in_category(cat): + if mem.name() not in new_dict: + new_dict[mem.name()] = mem + else: + new_dict[mem.name()] = self.Duplicate + self._dict_members[cat] = new_dict + return self._dict_members[cat] + + def in_category(self, cat): + self.confirm_no_error() + if cat is None: + return self._members + if cat not in self._in_category: + self._in_category[cat] = [mem for mem in self._members + if cat.includes(mem)] + return self._in_category[cat] + + def get_member(self, name, cat=None): + self.confirm_no_error() + # Check if it's in a namespace or class. + bits = name.split('::') + first = bits[0] + rest = '::'.join(bits[1:]) + member = self._get_dict_members(cat).get(first, self.NoSuchMember) + # Raise any errors that are returned. + if member in set([self.NoSuchMember, self.Duplicate]): + raise member() + if rest: + return member.get_member(rest, cat=cat) + return member + + def has_member(self, name, cat=None): + try: + mem = self.get_member(name, cat=cat) + return True + except self.NoSuchMember: + return False + + def data(self): + self.confirm_no_error() + return self._data + + def members(self): + self.confirm_no_error() + return self._members + + def process_memberdefs(self): + mdtss = [] + for sec in self._retrieved_data.compounddef.sectiondef: + mdtss += sec.memberdef + # At the moment we lose all information associated with sections. + # Sometimes a memberdef is in several sectiondef. + # We make sure we don't get duplicates here. + uniques = set([]) + for mem in mdtss: + converted = self.convert_mem(mem) + pair = (mem.name, mem.__class__) + if pair not in uniques: + uniques.add(pair) + self._members.append(converted) + + def retrieve_data(self): + filename = os.path.join(self._xml_path, self.refid + '.xml') + try: + self._retrieved_data = compound.parse(filename) + except ExpatError: + print('Error in xml in file %s' % filename) + self._error = True + self._retrieved_data = None + + def check_parsed(self): + if not self._parsed: + self._parse() + + def confirm_no_error(self): + self.check_parsed() + if self._error: + raise self.ParsingError() + + def error(self): + self.check_parsed() + return self._error + + def name(self): + # first see if we can do it without processing. + if self._parse_data is not None: + return self._parse_data.name + self.check_parsed() + return self._retrieved_data.compounddef.name diff --git a/docs/doxygen/doxyxml/doxyindex.py b/docs/doxygen/doxyxml/doxyindex.py new file mode 100644 index 0000000..591c921 --- /dev/null +++ b/docs/doxygen/doxyxml/doxyindex.py @@ -0,0 +1,304 @@ +# +# Copyright 2010 Free Software Foundation, Inc. +# +# This file was generated by gr_modtool, a tool from the GNU Radio framework +# This file is a part of gr-tempest +# +# 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. +# +""" +Classes providing more user-friendly interfaces to the doxygen xml +docs than the generated classes provide. +""" +from __future__ import absolute_import +from __future__ import unicode_literals + +import os + +from .generated import index +from .base import Base +from .text import description + +class DoxyIndex(Base): + """ + Parses a doxygen xml directory. + """ + + __module__ = "gnuradio.utils.doxyxml" + + def _parse(self): + if self._parsed: + return + super(DoxyIndex, self)._parse() + self._root = index.parse(os.path.join(self._xml_path, 'index.xml')) + for mem in self._root.compound: + converted = self.convert_mem(mem) + # For files and namespaces we want the contents to be + # accessible directly from the parent rather than having + # to go through the file object. + if self.get_cls(mem) == DoxyFile: + if mem.name.endswith('.h'): + self._members += converted.members() + self._members.append(converted) + elif self.get_cls(mem) == DoxyNamespace: + self._members += converted.members() + self._members.append(converted) + else: + self._members.append(converted) + + +def generate_swig_doc_i(self): + """ + %feature("docstring") gr_make_align_on_samplenumbers_ss::align_state " + Wraps the C++: gr_align_on_samplenumbers_ss::align_state"; + """ + pass + + +class DoxyCompMem(Base): + + + kind = None + + def __init__(self, *args, **kwargs): + super(DoxyCompMem, self).__init__(*args, **kwargs) + + @classmethod + def can_parse(cls, obj): + return obj.kind == cls.kind + + def set_descriptions(self, parse_data): + bd = description(getattr(parse_data, 'briefdescription', None)) + dd = description(getattr(parse_data, 'detaileddescription', None)) + self._data['brief_description'] = bd + self._data['detailed_description'] = dd + + def set_parameters(self, data): + vs = [ddc.value for ddc in data.detaileddescription.content_] + pls = [] + for v in vs: + if hasattr(v, 'parameterlist'): + pls += v.parameterlist + pis = [] + for pl in pls: + pis += pl.parameteritem + dpis = [] + for pi in pis: + dpi = DoxyParameterItem(pi) + dpi._parse() + dpis.append(dpi) + self._data['params'] = dpis + + +class DoxyCompound(DoxyCompMem): + pass + +class DoxyMember(DoxyCompMem): + pass + +class DoxyFunction(DoxyMember): + + __module__ = "gnuradio.utils.doxyxml" + + kind = 'function' + + def _parse(self): + if self._parsed: + return + super(DoxyFunction, self)._parse() + self.set_descriptions(self._parse_data) + self.set_parameters(self._parse_data) + if not self._data['params']: + # If the params weren't set by a comment then just grab the names. + self._data['params'] = [] + prms = self._parse_data.param + for prm in prms: + self._data['params'].append(DoxyParam(prm)) + + brief_description = property(lambda self: self.data()['brief_description']) + detailed_description = property(lambda self: self.data()['detailed_description']) + params = property(lambda self: self.data()['params']) + +Base.mem_classes.append(DoxyFunction) + + +class DoxyParam(DoxyMember): + + __module__ = "gnuradio.utils.doxyxml" + + def _parse(self): + if self._parsed: + return + super(DoxyParam, self)._parse() + self.set_descriptions(self._parse_data) + self._data['declname'] = self._parse_data.declname + + @property + def description(self): + descriptions = [] + if self.brief_description: + descriptions.append(self.brief_description) + if self.detailed_description: + descriptions.append(self.detailed_description) + return '\n\n'.join(descriptions) + + brief_description = property(lambda self: self.data()['brief_description']) + detailed_description = property(lambda self: self.data()['detailed_description']) + name = property(lambda self: self.data()['declname']) + +class DoxyParameterItem(DoxyMember): + """A different representation of a parameter in Doxygen.""" + + def _parse(self): + if self._parsed: + return + super(DoxyParameterItem, self)._parse() + names = [] + for nl in self._parse_data.parameternamelist: + for pn in nl.parametername: + names.append(description(pn)) + # Just take first name + self._data['name'] = names[0] + # Get description + pd = description(self._parse_data.get_parameterdescription()) + self._data['description'] = pd + + description = property(lambda self: self.data()['description']) + name = property(lambda self: self.data()['name']) + + +class DoxyClass(DoxyCompound): + + __module__ = "gnuradio.utils.doxyxml" + + kind = 'class' + + def _parse(self): + if self._parsed: + return + super(DoxyClass, self)._parse() + self.retrieve_data() + if self._error: + return + self.set_descriptions(self._retrieved_data.compounddef) + self.set_parameters(self._retrieved_data.compounddef) + # Sectiondef.kind tells about whether private or public. + # We just ignore this for now. + self.process_memberdefs() + + brief_description = property(lambda self: self.data()['brief_description']) + detailed_description = property(lambda self: self.data()['detailed_description']) + params = property(lambda self: self.data()['params']) + +Base.mem_classes.append(DoxyClass) + + +class DoxyFile(DoxyCompound): + + __module__ = "gnuradio.utils.doxyxml" + + kind = 'file' + + def _parse(self): + if self._parsed: + return + super(DoxyFile, self)._parse() + self.retrieve_data() + self.set_descriptions(self._retrieved_data.compounddef) + if self._error: + return + self.process_memberdefs() + + brief_description = property(lambda self: self.data()['brief_description']) + detailed_description = property(lambda self: self.data()['detailed_description']) + +Base.mem_classes.append(DoxyFile) + + +class DoxyNamespace(DoxyCompound): + + __module__ = "gnuradio.utils.doxyxml" + + kind = 'namespace' + + def _parse(self): + if self._parsed: + return + super(DoxyNamespace, self)._parse() + self.retrieve_data() + self.set_descriptions(self._retrieved_data.compounddef) + if self._error: + return + self.process_memberdefs() + +Base.mem_classes.append(DoxyNamespace) + + +class DoxyGroup(DoxyCompound): + + __module__ = "gnuradio.utils.doxyxml" + + kind = 'group' + + def _parse(self): + if self._parsed: + return + super(DoxyGroup, self)._parse() + self.retrieve_data() + if self._error: + return + cdef = self._retrieved_data.compounddef + self._data['title'] = description(cdef.title) + # Process inner groups + grps = cdef.innergroup + for grp in grps: + converted = DoxyGroup.from_refid(grp.refid, top=self.top) + self._members.append(converted) + # Process inner classes + klasses = cdef.innerclass + for kls in klasses: + converted = DoxyClass.from_refid(kls.refid, top=self.top) + self._members.append(converted) + # Process normal members + self.process_memberdefs() + + title = property(lambda self: self.data()['title']) + + +Base.mem_classes.append(DoxyGroup) + + +class DoxyFriend(DoxyMember): + + __module__ = "gnuradio.utils.doxyxml" + + kind = 'friend' + +Base.mem_classes.append(DoxyFriend) + + +class DoxyOther(Base): + + __module__ = "gnuradio.utils.doxyxml" + + kinds = set(['variable', 'struct', 'union', 'define', 'typedef', 'enum', + 'dir', 'page', 'signal', 'slot', 'property']) + + @classmethod + def can_parse(cls, obj): + return obj.kind in cls.kinds + +Base.mem_classes.append(DoxyOther) diff --git a/docs/doxygen/doxyxml/generated/__init__.py b/docs/doxygen/doxyxml/generated/__init__.py new file mode 100644 index 0000000..23095c1 --- /dev/null +++ b/docs/doxygen/doxyxml/generated/__init__.py @@ -0,0 +1,8 @@ +""" +Contains generated files produced by generateDS.py. + +These do the real work of parsing the doxygen xml files but the +resultant classes are not very friendly to navigate so the rest of the +doxyxml module processes them further. +""" +from __future__ import unicode_literals diff --git a/docs/doxygen/doxyxml/generated/compound.py b/docs/doxygen/doxyxml/generated/compound.py new file mode 100644 index 0000000..acfa0dd --- /dev/null +++ b/docs/doxygen/doxyxml/generated/compound.py @@ -0,0 +1,505 @@ +#!/usr/bin/env python + +""" +Generated Mon Feb 9 19:08:05 2009 by generateDS.py. +""" +from __future__ import absolute_import +from __future__ import unicode_literals + + +from xml.dom import minidom +from xml.dom import Node + +import sys + +from . import compoundsuper as supermod +from .compoundsuper import MixedContainer + + +class DoxygenTypeSub(supermod.DoxygenType): + def __init__(self, version=None, compounddef=None): + supermod.DoxygenType.__init__(self, version, compounddef) + + def find(self, details): + + return self.compounddef.find(details) + +supermod.DoxygenType.subclass = DoxygenTypeSub +# end class DoxygenTypeSub + + +class compounddefTypeSub(supermod.compounddefType): + def __init__(self, kind=None, prot=None, id=None, compoundname='', title='', basecompoundref=None, derivedcompoundref=None, includes=None, includedby=None, incdepgraph=None, invincdepgraph=None, innerdir=None, innerfile=None, innerclass=None, innernamespace=None, innerpage=None, innergroup=None, templateparamlist=None, sectiondef=None, briefdescription=None, detaileddescription=None, inheritancegraph=None, collaborationgraph=None, programlisting=None, location=None, listofallmembers=None): + supermod.compounddefType.__init__(self, kind, prot, id, compoundname, title, basecompoundref, derivedcompoundref, includes, includedby, incdepgraph, invincdepgraph, innerdir, innerfile, innerclass, innernamespace, innerpage, innergroup, templateparamlist, sectiondef, briefdescription, detaileddescription, inheritancegraph, collaborationgraph, programlisting, location, listofallmembers) + + def find(self, details): + + if self.id == details.refid: + return self + + for sectiondef in self.sectiondef: + result = sectiondef.find(details) + if result: + return result + + +supermod.compounddefType.subclass = compounddefTypeSub +# end class compounddefTypeSub + + +class listofallmembersTypeSub(supermod.listofallmembersType): + def __init__(self, member=None): + supermod.listofallmembersType.__init__(self, member) +supermod.listofallmembersType.subclass = listofallmembersTypeSub +# end class listofallmembersTypeSub + + +class memberRefTypeSub(supermod.memberRefType): + def __init__(self, virt=None, prot=None, refid=None, ambiguityscope=None, scope='', name=''): + supermod.memberRefType.__init__(self, virt, prot, refid, ambiguityscope, scope, name) +supermod.memberRefType.subclass = memberRefTypeSub +# end class memberRefTypeSub + + +class compoundRefTypeSub(supermod.compoundRefType): + def __init__(self, virt=None, prot=None, refid=None, valueOf_='', mixedclass_=None, content_=None): + supermod.compoundRefType.__init__(self, mixedclass_, content_) +supermod.compoundRefType.subclass = compoundRefTypeSub +# end class compoundRefTypeSub + + +class reimplementTypeSub(supermod.reimplementType): + def __init__(self, refid=None, valueOf_='', mixedclass_=None, content_=None): + supermod.reimplementType.__init__(self, mixedclass_, content_) +supermod.reimplementType.subclass = reimplementTypeSub +# end class reimplementTypeSub + + +class incTypeSub(supermod.incType): + def __init__(self, local=None, refid=None, valueOf_='', mixedclass_=None, content_=None): + supermod.incType.__init__(self, mixedclass_, content_) +supermod.incType.subclass = incTypeSub +# end class incTypeSub + + +class refTypeSub(supermod.refType): + def __init__(self, prot=None, refid=None, valueOf_='', mixedclass_=None, content_=None): + supermod.refType.__init__(self, mixedclass_, content_) +supermod.refType.subclass = refTypeSub +# end class refTypeSub + + + +class refTextTypeSub(supermod.refTextType): + def __init__(self, refid=None, kindref=None, external=None, valueOf_='', mixedclass_=None, content_=None): + supermod.refTextType.__init__(self, mixedclass_, content_) + +supermod.refTextType.subclass = refTextTypeSub +# end class refTextTypeSub + +class sectiondefTypeSub(supermod.sectiondefType): + + + def __init__(self, kind=None, header='', description=None, memberdef=None): + supermod.sectiondefType.__init__(self, kind, header, description, memberdef) + + def find(self, details): + + for memberdef in self.memberdef: + if memberdef.id == details.refid: + return memberdef + + return None + + +supermod.sectiondefType.subclass = sectiondefTypeSub +# end class sectiondefTypeSub + + +class memberdefTypeSub(supermod.memberdefType): + def __init__(self, initonly=None, kind=None, volatile=None, const=None, raise_=None, virt=None, readable=None, prot=None, explicit=None, new=None, final=None, writable=None, add=None, static=None, remove=None, sealed=None, mutable=None, gettable=None, inline=None, settable=None, id=None, templateparamlist=None, type_=None, definition='', argsstring='', name='', read='', write='', bitfield='', reimplements=None, reimplementedby=None, param=None, enumvalue=None, initializer=None, exceptions=None, briefdescription=None, detaileddescription=None, inbodydescription=None, location=None, references=None, referencedby=None): + supermod.memberdefType.__init__(self, initonly, kind, volatile, const, raise_, virt, readable, prot, explicit, new, final, writable, add, static, remove, sealed, mutable, gettable, inline, settable, id, templateparamlist, type_, definition, argsstring, name, read, write, bitfield, reimplements, reimplementedby, param, enumvalue, initializer, exceptions, briefdescription, detaileddescription, inbodydescription, location, references, referencedby) +supermod.memberdefType.subclass = memberdefTypeSub +# end class memberdefTypeSub + + +class descriptionTypeSub(supermod.descriptionType): + def __init__(self, title='', para=None, sect1=None, internal=None, mixedclass_=None, content_=None): + supermod.descriptionType.__init__(self, mixedclass_, content_) +supermod.descriptionType.subclass = descriptionTypeSub +# end class descriptionTypeSub + + +class enumvalueTypeSub(supermod.enumvalueType): + def __init__(self, prot=None, id=None, name='', initializer=None, briefdescription=None, detaileddescription=None, mixedclass_=None, content_=None): + supermod.enumvalueType.__init__(self, mixedclass_, content_) +supermod.enumvalueType.subclass = enumvalueTypeSub +# end class enumvalueTypeSub + + +class templateparamlistTypeSub(supermod.templateparamlistType): + def __init__(self, param=None): + supermod.templateparamlistType.__init__(self, param) +supermod.templateparamlistType.subclass = templateparamlistTypeSub +# end class templateparamlistTypeSub + + +class paramTypeSub(supermod.paramType): + def __init__(self, type_=None, declname='', defname='', array='', defval=None, briefdescription=None): + supermod.paramType.__init__(self, type_, declname, defname, array, defval, briefdescription) +supermod.paramType.subclass = paramTypeSub +# end class paramTypeSub + + +class linkedTextTypeSub(supermod.linkedTextType): + def __init__(self, ref=None, mixedclass_=None, content_=None): + supermod.linkedTextType.__init__(self, mixedclass_, content_) +supermod.linkedTextType.subclass = linkedTextTypeSub +# end class linkedTextTypeSub + + +class graphTypeSub(supermod.graphType): + def __init__(self, node=None): + supermod.graphType.__init__(self, node) +supermod.graphType.subclass = graphTypeSub +# end class graphTypeSub + + +class nodeTypeSub(supermod.nodeType): + def __init__(self, id=None, label='', link=None, childnode=None): + supermod.nodeType.__init__(self, id, label, link, childnode) +supermod.nodeType.subclass = nodeTypeSub +# end class nodeTypeSub + + +class childnodeTypeSub(supermod.childnodeType): + def __init__(self, relation=None, refid=None, edgelabel=None): + supermod.childnodeType.__init__(self, relation, refid, edgelabel) +supermod.childnodeType.subclass = childnodeTypeSub +# end class childnodeTypeSub + + +class linkTypeSub(supermod.linkType): + def __init__(self, refid=None, external=None, valueOf_=''): + supermod.linkType.__init__(self, refid, external) +supermod.linkType.subclass = linkTypeSub +# end class linkTypeSub + + +class listingTypeSub(supermod.listingType): + def __init__(self, codeline=None): + supermod.listingType.__init__(self, codeline) +supermod.listingType.subclass = listingTypeSub +# end class listingTypeSub + + +class codelineTypeSub(supermod.codelineType): + def __init__(self, external=None, lineno=None, refkind=None, refid=None, highlight=None): + supermod.codelineType.__init__(self, external, lineno, refkind, refid, highlight) +supermod.codelineType.subclass = codelineTypeSub +# end class codelineTypeSub + + +class highlightTypeSub(supermod.highlightType): + def __init__(self, class_=None, sp=None, ref=None, mixedclass_=None, content_=None): + supermod.highlightType.__init__(self, mixedclass_, content_) +supermod.highlightType.subclass = highlightTypeSub +# end class highlightTypeSub + + +class referenceTypeSub(supermod.referenceType): + def __init__(self, endline=None, startline=None, refid=None, compoundref=None, valueOf_='', mixedclass_=None, content_=None): + supermod.referenceType.__init__(self, mixedclass_, content_) +supermod.referenceType.subclass = referenceTypeSub +# end class referenceTypeSub + + +class locationTypeSub(supermod.locationType): + def __init__(self, bodystart=None, line=None, bodyend=None, bodyfile=None, file=None, valueOf_=''): + supermod.locationType.__init__(self, bodystart, line, bodyend, bodyfile, file) +supermod.locationType.subclass = locationTypeSub +# end class locationTypeSub + + +class docSect1TypeSub(supermod.docSect1Type): + def __init__(self, id=None, title='', para=None, sect2=None, internal=None, mixedclass_=None, content_=None): + supermod.docSect1Type.__init__(self, mixedclass_, content_) +supermod.docSect1Type.subclass = docSect1TypeSub +# end class docSect1TypeSub + + +class docSect2TypeSub(supermod.docSect2Type): + def __init__(self, id=None, title='', para=None, sect3=None, internal=None, mixedclass_=None, content_=None): + supermod.docSect2Type.__init__(self, mixedclass_, content_) +supermod.docSect2Type.subclass = docSect2TypeSub +# end class docSect2TypeSub + + +class docSect3TypeSub(supermod.docSect3Type): + def __init__(self, id=None, title='', para=None, sect4=None, internal=None, mixedclass_=None, content_=None): + supermod.docSect3Type.__init__(self, mixedclass_, content_) +supermod.docSect3Type.subclass = docSect3TypeSub +# end class docSect3TypeSub + + +class docSect4TypeSub(supermod.docSect4Type): + def __init__(self, id=None, title='', para=None, internal=None, mixedclass_=None, content_=None): + supermod.docSect4Type.__init__(self, mixedclass_, content_) +supermod.docSect4Type.subclass = docSect4TypeSub +# end class docSect4TypeSub + + +class docInternalTypeSub(supermod.docInternalType): + def __init__(self, para=None, sect1=None, mixedclass_=None, content_=None): + supermod.docInternalType.__init__(self, mixedclass_, content_) +supermod.docInternalType.subclass = docInternalTypeSub +# end class docInternalTypeSub + + +class docInternalS1TypeSub(supermod.docInternalS1Type): + def __init__(self, para=None, sect2=None, mixedclass_=None, content_=None): + supermod.docInternalS1Type.__init__(self, mixedclass_, content_) +supermod.docInternalS1Type.subclass = docInternalS1TypeSub +# end class docInternalS1TypeSub + + +class docInternalS2TypeSub(supermod.docInternalS2Type): + def __init__(self, para=None, sect3=None, mixedclass_=None, content_=None): + supermod.docInternalS2Type.__init__(self, mixedclass_, content_) +supermod.docInternalS2Type.subclass = docInternalS2TypeSub +# end class docInternalS2TypeSub + + +class docInternalS3TypeSub(supermod.docInternalS3Type): + def __init__(self, para=None, sect3=None, mixedclass_=None, content_=None): + supermod.docInternalS3Type.__init__(self, mixedclass_, content_) +supermod.docInternalS3Type.subclass = docInternalS3TypeSub +# end class docInternalS3TypeSub + + +class docInternalS4TypeSub(supermod.docInternalS4Type): + def __init__(self, para=None, mixedclass_=None, content_=None): + supermod.docInternalS4Type.__init__(self, mixedclass_, content_) +supermod.docInternalS4Type.subclass = docInternalS4TypeSub +# end class docInternalS4TypeSub + + +class docURLLinkSub(supermod.docURLLink): + def __init__(self, url=None, valueOf_='', mixedclass_=None, content_=None): + supermod.docURLLink.__init__(self, mixedclass_, content_) +supermod.docURLLink.subclass = docURLLinkSub +# end class docURLLinkSub + + +class docAnchorTypeSub(supermod.docAnchorType): + def __init__(self, id=None, valueOf_='', mixedclass_=None, content_=None): + supermod.docAnchorType.__init__(self, mixedclass_, content_) +supermod.docAnchorType.subclass = docAnchorTypeSub +# end class docAnchorTypeSub + + +class docFormulaTypeSub(supermod.docFormulaType): + def __init__(self, id=None, valueOf_='', mixedclass_=None, content_=None): + supermod.docFormulaType.__init__(self, mixedclass_, content_) +supermod.docFormulaType.subclass = docFormulaTypeSub +# end class docFormulaTypeSub + + +class docIndexEntryTypeSub(supermod.docIndexEntryType): + def __init__(self, primaryie='', secondaryie=''): + supermod.docIndexEntryType.__init__(self, primaryie, secondaryie) +supermod.docIndexEntryType.subclass = docIndexEntryTypeSub +# end class docIndexEntryTypeSub + + +class docListTypeSub(supermod.docListType): + def __init__(self, listitem=None): + supermod.docListType.__init__(self, listitem) +supermod.docListType.subclass = docListTypeSub +# end class docListTypeSub + + +class docListItemTypeSub(supermod.docListItemType): + def __init__(self, para=None): + supermod.docListItemType.__init__(self, para) +supermod.docListItemType.subclass = docListItemTypeSub +# end class docListItemTypeSub + + +class docSimpleSectTypeSub(supermod.docSimpleSectType): + def __init__(self, kind=None, title=None, para=None): + supermod.docSimpleSectType.__init__(self, kind, title, para) +supermod.docSimpleSectType.subclass = docSimpleSectTypeSub +# end class docSimpleSectTypeSub + + +class docVarListEntryTypeSub(supermod.docVarListEntryType): + def __init__(self, term=None): + supermod.docVarListEntryType.__init__(self, term) +supermod.docVarListEntryType.subclass = docVarListEntryTypeSub +# end class docVarListEntryTypeSub + + +class docRefTextTypeSub(supermod.docRefTextType): + def __init__(self, refid=None, kindref=None, external=None, valueOf_='', mixedclass_=None, content_=None): + supermod.docRefTextType.__init__(self, mixedclass_, content_) +supermod.docRefTextType.subclass = docRefTextTypeSub +# end class docRefTextTypeSub + + +class docTableTypeSub(supermod.docTableType): + def __init__(self, rows=None, cols=None, row=None, caption=None): + supermod.docTableType.__init__(self, rows, cols, row, caption) +supermod.docTableType.subclass = docTableTypeSub +# end class docTableTypeSub + + +class docRowTypeSub(supermod.docRowType): + def __init__(self, entry=None): + supermod.docRowType.__init__(self, entry) +supermod.docRowType.subclass = docRowTypeSub +# end class docRowTypeSub + + +class docEntryTypeSub(supermod.docEntryType): + def __init__(self, thead=None, para=None): + supermod.docEntryType.__init__(self, thead, para) +supermod.docEntryType.subclass = docEntryTypeSub +# end class docEntryTypeSub + + +class docHeadingTypeSub(supermod.docHeadingType): + def __init__(self, level=None, valueOf_='', mixedclass_=None, content_=None): + supermod.docHeadingType.__init__(self, mixedclass_, content_) +supermod.docHeadingType.subclass = docHeadingTypeSub +# end class docHeadingTypeSub + + +class docImageTypeSub(supermod.docImageType): + def __init__(self, width=None, type_=None, name=None, height=None, valueOf_='', mixedclass_=None, content_=None): + supermod.docImageType.__init__(self, mixedclass_, content_) +supermod.docImageType.subclass = docImageTypeSub +# end class docImageTypeSub + + +class docDotFileTypeSub(supermod.docDotFileType): + def __init__(self, name=None, valueOf_='', mixedclass_=None, content_=None): + supermod.docDotFileType.__init__(self, mixedclass_, content_) +supermod.docDotFileType.subclass = docDotFileTypeSub +# end class docDotFileTypeSub + + +class docTocItemTypeSub(supermod.docTocItemType): + def __init__(self, id=None, valueOf_='', mixedclass_=None, content_=None): + supermod.docTocItemType.__init__(self, mixedclass_, content_) +supermod.docTocItemType.subclass = docTocItemTypeSub +# end class docTocItemTypeSub + + +class docTocListTypeSub(supermod.docTocListType): + def __init__(self, tocitem=None): + supermod.docTocListType.__init__(self, tocitem) +supermod.docTocListType.subclass = docTocListTypeSub +# end class docTocListTypeSub + + +class docLanguageTypeSub(supermod.docLanguageType): + def __init__(self, langid=None, para=None): + supermod.docLanguageType.__init__(self, langid, para) +supermod.docLanguageType.subclass = docLanguageTypeSub +# end class docLanguageTypeSub + + +class docParamListTypeSub(supermod.docParamListType): + def __init__(self, kind=None, parameteritem=None): + supermod.docParamListType.__init__(self, kind, parameteritem) +supermod.docParamListType.subclass = docParamListTypeSub +# end class docParamListTypeSub + + +class docParamListItemSub(supermod.docParamListItem): + def __init__(self, parameternamelist=None, parameterdescription=None): + supermod.docParamListItem.__init__(self, parameternamelist, parameterdescription) +supermod.docParamListItem.subclass = docParamListItemSub +# end class docParamListItemSub + + +class docParamNameListSub(supermod.docParamNameList): + def __init__(self, parametername=None): + supermod.docParamNameList.__init__(self, parametername) +supermod.docParamNameList.subclass = docParamNameListSub +# end class docParamNameListSub + + +class docParamNameSub(supermod.docParamName): + def __init__(self, direction=None, ref=None, mixedclass_=None, content_=None): + supermod.docParamName.__init__(self, mixedclass_, content_) +supermod.docParamName.subclass = docParamNameSub +# end class docParamNameSub + + +class docXRefSectTypeSub(supermod.docXRefSectType): + def __init__(self, id=None, xreftitle=None, xrefdescription=None): + supermod.docXRefSectType.__init__(self, id, xreftitle, xrefdescription) +supermod.docXRefSectType.subclass = docXRefSectTypeSub +# end class docXRefSectTypeSub + + +class docCopyTypeSub(supermod.docCopyType): + def __init__(self, link=None, para=None, sect1=None, internal=None): + supermod.docCopyType.__init__(self, link, para, sect1, internal) +supermod.docCopyType.subclass = docCopyTypeSub +# end class docCopyTypeSub + + +class docCharTypeSub(supermod.docCharType): + def __init__(self, char=None, valueOf_=''): + supermod.docCharType.__init__(self, char) +supermod.docCharType.subclass = docCharTypeSub +# end class docCharTypeSub + +class docParaTypeSub(supermod.docParaType): + def __init__(self, char=None, valueOf_=''): + supermod.docParaType.__init__(self, char) + + self.parameterlist = [] + self.simplesects = [] + self.content = [] + + def buildChildren(self, child_, nodeName_): + supermod.docParaType.buildChildren(self, child_, nodeName_) + + if child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == "ref": + obj_ = supermod.docRefTextType.factory() + obj_.build(child_) + self.content.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'parameterlist': + obj_ = supermod.docParamListType.factory() + obj_.build(child_) + self.parameterlist.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'simplesect': + obj_ = supermod.docSimpleSectType.factory() + obj_.build(child_) + self.simplesects.append(obj_) + + +supermod.docParaType.subclass = docParaTypeSub +# end class docParaTypeSub + + + +def parse(inFilename): + doc = minidom.parse(inFilename) + rootNode = doc.documentElement + rootObj = supermod.DoxygenType.factory() + rootObj.build(rootNode) + return rootObj + + diff --git a/docs/doxygen/doxyxml/generated/compoundsuper.py b/docs/doxygen/doxyxml/generated/compoundsuper.py new file mode 100644 index 0000000..6e984e1 --- /dev/null +++ b/docs/doxygen/doxyxml/generated/compoundsuper.py @@ -0,0 +1,8346 @@ +#!/usr/bin/env python + +# +# Generated Thu Jun 11 18:44:25 2009 by generateDS.py. +# + +from __future__ import print_function +from __future__ import unicode_literals + +import sys + +from xml.dom import minidom +from xml.dom import Node + +import six + + +# +# User methods +# +# Calls to the methods in these classes are generated by generateDS.py. +# You can replace these methods by re-implementing the following class +# in a module named generatedssuper.py. + +try: + from generatedssuper import GeneratedsSuper +except ImportError as exp: + + class GeneratedsSuper(object): + def format_string(self, input_data, input_name=''): + return input_data + def format_integer(self, input_data, input_name=''): + return '%d' % input_data + def format_float(self, input_data, input_name=''): + return '%f' % input_data + def format_double(self, input_data, input_name=''): + return '%e' % input_data + def format_boolean(self, input_data, input_name=''): + return '%s' % input_data + + +# +# If you have installed IPython you can uncomment and use the following. +# IPython is available from http://ipython.scipy.org/. +# + +## from IPython.Shell import IPShellEmbed +## args = '' +## ipshell = IPShellEmbed(args, +## banner = 'Dropping into IPython', +## exit_msg = 'Leaving Interpreter, back to program.') + +# Then use the following line where and when you want to drop into the +# IPython shell: +# ipshell(' -- Entering ipshell.\nHit Ctrl-D to exit') + +# +# Globals +# + +ExternalEncoding = 'ascii' + +# +# Support/utility functions. +# + +def showIndent(outfile, level): + for idx in range(level): + outfile.write(' ') + +def quote_xml(inStr): + s1 = (isinstance(inStr, six.string_types) and inStr or + '%s' % inStr) + s1 = s1.replace('&', '&') + s1 = s1.replace('<', '<') + s1 = s1.replace('>', '>') + return s1 + +def quote_attrib(inStr): + s1 = (isinstance(inStr, six.string_types) and inStr or + '%s' % inStr) + s1 = s1.replace('&', '&') + s1 = s1.replace('<', '<') + s1 = s1.replace('>', '>') + if '"' in s1: + if "'" in s1: + s1 = '"%s"' % s1.replace('"', """) + else: + s1 = "'%s'" % s1 + else: + s1 = '"%s"' % s1 + return s1 + +def quote_python(inStr): + s1 = inStr + if s1.find("'") == -1: + if s1.find('\n') == -1: + return "'%s'" % s1 + else: + return "'''%s'''" % s1 + else: + if s1.find('"') != -1: + s1 = s1.replace('"', '\\"') + if s1.find('\n') == -1: + return '"%s"' % s1 + else: + return '"""%s"""' % s1 + + +class MixedContainer(object): + # Constants for category: + CategoryNone = 0 + CategoryText = 1 + CategorySimple = 2 + CategoryComplex = 3 + # Constants for content_type: + TypeNone = 0 + TypeText = 1 + TypeString = 2 + TypeInteger = 3 + TypeFloat = 4 + TypeDecimal = 5 + TypeDouble = 6 + TypeBoolean = 7 + def __init__(self, category, content_type, name, value): + self.category = category + self.content_type = content_type + self.name = name + self.value = value + def getCategory(self): + return self.category + def getContenttype(self, content_type): + return self.content_type + def getValue(self): + return self.value + def getName(self): + return self.name + def export(self, outfile, level, name, namespace): + if self.category == MixedContainer.CategoryText: + outfile.write(self.value) + elif self.category == MixedContainer.CategorySimple: + self.exportSimple(outfile, level, name) + else: # category == MixedContainer.CategoryComplex + self.value.export(outfile, level, namespace,name) + def exportSimple(self, outfile, level, name): + if self.content_type == MixedContainer.TypeString: + outfile.write('<%s>%s' % (self.name, self.value, self.name)) + elif self.content_type == MixedContainer.TypeInteger or \ + self.content_type == MixedContainer.TypeBoolean: + outfile.write('<%s>%d' % (self.name, self.value, self.name)) + elif self.content_type == MixedContainer.TypeFloat or \ + self.content_type == MixedContainer.TypeDecimal: + outfile.write('<%s>%f' % (self.name, self.value, self.name)) + elif self.content_type == MixedContainer.TypeDouble: + outfile.write('<%s>%g' % (self.name, self.value, self.name)) + def exportLiteral(self, outfile, level, name): + if self.category == MixedContainer.CategoryText: + showIndent(outfile, level) + outfile.write('MixedContainer(%d, %d, "%s", "%s"),\n' % \ + (self.category, self.content_type, self.name, self.value)) + elif self.category == MixedContainer.CategorySimple: + showIndent(outfile, level) + outfile.write('MixedContainer(%d, %d, "%s", "%s"),\n' % \ + (self.category, self.content_type, self.name, self.value)) + else: # category == MixedContainer.CategoryComplex + showIndent(outfile, level) + outfile.write('MixedContainer(%d, %d, "%s",\n' % \ + (self.category, self.content_type, self.name,)) + self.value.exportLiteral(outfile, level + 1) + showIndent(outfile, level) + outfile.write(')\n') + + +class _MemberSpec(object): + def __init__(self, name='', data_type='', container=0): + self.name = name + self.data_type = data_type + self.container = container + def set_name(self, name): self.name = name + def get_name(self): return self.name + def set_data_type(self, data_type): self.data_type = data_type + def get_data_type(self): return self.data_type + def set_container(self, container): self.container = container + def get_container(self): return self.container + + +# +# Data representation classes. +# + +class DoxygenType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, version=None, compounddef=None): + self.version = version + self.compounddef = compounddef + def factory(*args_, **kwargs_): + if DoxygenType.subclass: + return DoxygenType.subclass(*args_, **kwargs_) + else: + return DoxygenType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_compounddef(self): return self.compounddef + def set_compounddef(self, compounddef): self.compounddef = compounddef + def get_version(self): return self.version + def set_version(self, version): self.version = version + def export(self, outfile, level, namespace_='', name_='DoxygenType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='DoxygenType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='DoxygenType'): + outfile.write(' version=%s' % (quote_attrib(self.version), )) + def exportChildren(self, outfile, level, namespace_='', name_='DoxygenType'): + if self.compounddef: + self.compounddef.export(outfile, level, namespace_, name_='compounddef') + def hasContent_(self): + if ( + self.compounddef is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='DoxygenType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.version is not None: + showIndent(outfile, level) + outfile.write('version = "%s",\n' % (self.version,)) + def exportLiteralChildren(self, outfile, level, name_): + if self.compounddef: + showIndent(outfile, level) + outfile.write('compounddef=model_.compounddefType(\n') + self.compounddef.exportLiteral(outfile, level, name_='compounddef') + showIndent(outfile, level) + outfile.write('),\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('version'): + self.version = attrs.get('version').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'compounddef': + obj_ = compounddefType.factory() + obj_.build(child_) + self.set_compounddef(obj_) +# end class DoxygenType + + +class compounddefType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, kind=None, prot=None, id=None, compoundname=None, title=None, basecompoundref=None, derivedcompoundref=None, includes=None, includedby=None, incdepgraph=None, invincdepgraph=None, innerdir=None, innerfile=None, innerclass=None, innernamespace=None, innerpage=None, innergroup=None, templateparamlist=None, sectiondef=None, briefdescription=None, detaileddescription=None, inheritancegraph=None, collaborationgraph=None, programlisting=None, location=None, listofallmembers=None): + self.kind = kind + self.prot = prot + self.id = id + self.compoundname = compoundname + self.title = title + if basecompoundref is None: + self.basecompoundref = [] + else: + self.basecompoundref = basecompoundref + if derivedcompoundref is None: + self.derivedcompoundref = [] + else: + self.derivedcompoundref = derivedcompoundref + if includes is None: + self.includes = [] + else: + self.includes = includes + if includedby is None: + self.includedby = [] + else: + self.includedby = includedby + self.incdepgraph = incdepgraph + self.invincdepgraph = invincdepgraph + if innerdir is None: + self.innerdir = [] + else: + self.innerdir = innerdir + if innerfile is None: + self.innerfile = [] + else: + self.innerfile = innerfile + if innerclass is None: + self.innerclass = [] + else: + self.innerclass = innerclass + if innernamespace is None: + self.innernamespace = [] + else: + self.innernamespace = innernamespace + if innerpage is None: + self.innerpage = [] + else: + self.innerpage = innerpage + if innergroup is None: + self.innergroup = [] + else: + self.innergroup = innergroup + self.templateparamlist = templateparamlist + if sectiondef is None: + self.sectiondef = [] + else: + self.sectiondef = sectiondef + self.briefdescription = briefdescription + self.detaileddescription = detaileddescription + self.inheritancegraph = inheritancegraph + self.collaborationgraph = collaborationgraph + self.programlisting = programlisting + self.location = location + self.listofallmembers = listofallmembers + def factory(*args_, **kwargs_): + if compounddefType.subclass: + return compounddefType.subclass(*args_, **kwargs_) + else: + return compounddefType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_compoundname(self): return self.compoundname + def set_compoundname(self, compoundname): self.compoundname = compoundname + def get_title(self): return self.title + def set_title(self, title): self.title = title + def get_basecompoundref(self): return self.basecompoundref + def set_basecompoundref(self, basecompoundref): self.basecompoundref = basecompoundref + def add_basecompoundref(self, value): self.basecompoundref.append(value) + def insert_basecompoundref(self, index, value): self.basecompoundref[index] = value + def get_derivedcompoundref(self): return self.derivedcompoundref + def set_derivedcompoundref(self, derivedcompoundref): self.derivedcompoundref = derivedcompoundref + def add_derivedcompoundref(self, value): self.derivedcompoundref.append(value) + def insert_derivedcompoundref(self, index, value): self.derivedcompoundref[index] = value + def get_includes(self): return self.includes + def set_includes(self, includes): self.includes = includes + def add_includes(self, value): self.includes.append(value) + def insert_includes(self, index, value): self.includes[index] = value + def get_includedby(self): return self.includedby + def set_includedby(self, includedby): self.includedby = includedby + def add_includedby(self, value): self.includedby.append(value) + def insert_includedby(self, index, value): self.includedby[index] = value + def get_incdepgraph(self): return self.incdepgraph + def set_incdepgraph(self, incdepgraph): self.incdepgraph = incdepgraph + def get_invincdepgraph(self): return self.invincdepgraph + def set_invincdepgraph(self, invincdepgraph): self.invincdepgraph = invincdepgraph + def get_innerdir(self): return self.innerdir + def set_innerdir(self, innerdir): self.innerdir = innerdir + def add_innerdir(self, value): self.innerdir.append(value) + def insert_innerdir(self, index, value): self.innerdir[index] = value + def get_innerfile(self): return self.innerfile + def set_innerfile(self, innerfile): self.innerfile = innerfile + def add_innerfile(self, value): self.innerfile.append(value) + def insert_innerfile(self, index, value): self.innerfile[index] = value + def get_innerclass(self): return self.innerclass + def set_innerclass(self, innerclass): self.innerclass = innerclass + def add_innerclass(self, value): self.innerclass.append(value) + def insert_innerclass(self, index, value): self.innerclass[index] = value + def get_innernamespace(self): return self.innernamespace + def set_innernamespace(self, innernamespace): self.innernamespace = innernamespace + def add_innernamespace(self, value): self.innernamespace.append(value) + def insert_innernamespace(self, index, value): self.innernamespace[index] = value + def get_innerpage(self): return self.innerpage + def set_innerpage(self, innerpage): self.innerpage = innerpage + def add_innerpage(self, value): self.innerpage.append(value) + def insert_innerpage(self, index, value): self.innerpage[index] = value + def get_innergroup(self): return self.innergroup + def set_innergroup(self, innergroup): self.innergroup = innergroup + def add_innergroup(self, value): self.innergroup.append(value) + def insert_innergroup(self, index, value): self.innergroup[index] = value + def get_templateparamlist(self): return self.templateparamlist + def set_templateparamlist(self, templateparamlist): self.templateparamlist = templateparamlist + def get_sectiondef(self): return self.sectiondef + def set_sectiondef(self, sectiondef): self.sectiondef = sectiondef + def add_sectiondef(self, value): self.sectiondef.append(value) + def insert_sectiondef(self, index, value): self.sectiondef[index] = value + def get_briefdescription(self): return self.briefdescription + def set_briefdescription(self, briefdescription): self.briefdescription = briefdescription + def get_detaileddescription(self): return self.detaileddescription + def set_detaileddescription(self, detaileddescription): self.detaileddescription = detaileddescription + def get_inheritancegraph(self): return self.inheritancegraph + def set_inheritancegraph(self, inheritancegraph): self.inheritancegraph = inheritancegraph + def get_collaborationgraph(self): return self.collaborationgraph + def set_collaborationgraph(self, collaborationgraph): self.collaborationgraph = collaborationgraph + def get_programlisting(self): return self.programlisting + def set_programlisting(self, programlisting): self.programlisting = programlisting + def get_location(self): return self.location + def set_location(self, location): self.location = location + def get_listofallmembers(self): return self.listofallmembers + def set_listofallmembers(self, listofallmembers): self.listofallmembers = listofallmembers + def get_kind(self): return self.kind + def set_kind(self, kind): self.kind = kind + def get_prot(self): return self.prot + def set_prot(self, prot): self.prot = prot + def get_id(self): return self.id + def set_id(self, id): self.id = id + def export(self, outfile, level, namespace_='', name_='compounddefType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='compounddefType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='compounddefType'): + if self.kind is not None: + outfile.write(' kind=%s' % (quote_attrib(self.kind), )) + if self.prot is not None: + outfile.write(' prot=%s' % (quote_attrib(self.prot), )) + if self.id is not None: + outfile.write(' id=%s' % (self.format_string(quote_attrib(self.id).encode(ExternalEncoding), input_name='id'), )) + def exportChildren(self, outfile, level, namespace_='', name_='compounddefType'): + if self.compoundname is not None: + showIndent(outfile, level) + outfile.write('<%scompoundname>%s\n' % (namespace_, self.format_string(quote_xml(self.compoundname).encode(ExternalEncoding), input_name='compoundname'), namespace_)) + if self.title is not None: + showIndent(outfile, level) + outfile.write('<%stitle>%s\n' % (namespace_, self.format_string(quote_xml(self.title).encode(ExternalEncoding), input_name='title'), namespace_)) + for basecompoundref_ in self.basecompoundref: + basecompoundref_.export(outfile, level, namespace_, name_='basecompoundref') + for derivedcompoundref_ in self.derivedcompoundref: + derivedcompoundref_.export(outfile, level, namespace_, name_='derivedcompoundref') + for includes_ in self.includes: + includes_.export(outfile, level, namespace_, name_='includes') + for includedby_ in self.includedby: + includedby_.export(outfile, level, namespace_, name_='includedby') + if self.incdepgraph: + self.incdepgraph.export(outfile, level, namespace_, name_='incdepgraph') + if self.invincdepgraph: + self.invincdepgraph.export(outfile, level, namespace_, name_='invincdepgraph') + for innerdir_ in self.innerdir: + innerdir_.export(outfile, level, namespace_, name_='innerdir') + for innerfile_ in self.innerfile: + innerfile_.export(outfile, level, namespace_, name_='innerfile') + for innerclass_ in self.innerclass: + innerclass_.export(outfile, level, namespace_, name_='innerclass') + for innernamespace_ in self.innernamespace: + innernamespace_.export(outfile, level, namespace_, name_='innernamespace') + for innerpage_ in self.innerpage: + innerpage_.export(outfile, level, namespace_, name_='innerpage') + for innergroup_ in self.innergroup: + innergroup_.export(outfile, level, namespace_, name_='innergroup') + if self.templateparamlist: + self.templateparamlist.export(outfile, level, namespace_, name_='templateparamlist') + for sectiondef_ in self.sectiondef: + sectiondef_.export(outfile, level, namespace_, name_='sectiondef') + if self.briefdescription: + self.briefdescription.export(outfile, level, namespace_, name_='briefdescription') + if self.detaileddescription: + self.detaileddescription.export(outfile, level, namespace_, name_='detaileddescription') + if self.inheritancegraph: + self.inheritancegraph.export(outfile, level, namespace_, name_='inheritancegraph') + if self.collaborationgraph: + self.collaborationgraph.export(outfile, level, namespace_, name_='collaborationgraph') + if self.programlisting: + self.programlisting.export(outfile, level, namespace_, name_='programlisting') + if self.location: + self.location.export(outfile, level, namespace_, name_='location') + if self.listofallmembers: + self.listofallmembers.export(outfile, level, namespace_, name_='listofallmembers') + def hasContent_(self): + if ( + self.compoundname is not None or + self.title is not None or + self.basecompoundref is not None or + self.derivedcompoundref is not None or + self.includes is not None or + self.includedby is not None or + self.incdepgraph is not None or + self.invincdepgraph is not None or + self.innerdir is not None or + self.innerfile is not None or + self.innerclass is not None or + self.innernamespace is not None or + self.innerpage is not None or + self.innergroup is not None or + self.templateparamlist is not None or + self.sectiondef is not None or + self.briefdescription is not None or + self.detaileddescription is not None or + self.inheritancegraph is not None or + self.collaborationgraph is not None or + self.programlisting is not None or + self.location is not None or + self.listofallmembers is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='compounddefType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.kind is not None: + showIndent(outfile, level) + outfile.write('kind = "%s",\n' % (self.kind,)) + if self.prot is not None: + showIndent(outfile, level) + outfile.write('prot = "%s",\n' % (self.prot,)) + if self.id is not None: + showIndent(outfile, level) + outfile.write('id = %s,\n' % (self.id,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('compoundname=%s,\n' % quote_python(self.compoundname).encode(ExternalEncoding)) + if self.title: + showIndent(outfile, level) + outfile.write('title=model_.xsd_string(\n') + self.title.exportLiteral(outfile, level, name_='title') + showIndent(outfile, level) + outfile.write('),\n') + showIndent(outfile, level) + outfile.write('basecompoundref=[\n') + level += 1 + for basecompoundref in self.basecompoundref: + showIndent(outfile, level) + outfile.write('model_.basecompoundref(\n') + basecompoundref.exportLiteral(outfile, level, name_='basecompoundref') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('derivedcompoundref=[\n') + level += 1 + for derivedcompoundref in self.derivedcompoundref: + showIndent(outfile, level) + outfile.write('model_.derivedcompoundref(\n') + derivedcompoundref.exportLiteral(outfile, level, name_='derivedcompoundref') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('includes=[\n') + level += 1 + for includes in self.includes: + showIndent(outfile, level) + outfile.write('model_.includes(\n') + includes.exportLiteral(outfile, level, name_='includes') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('includedby=[\n') + level += 1 + for includedby in self.includedby: + showIndent(outfile, level) + outfile.write('model_.includedby(\n') + includedby.exportLiteral(outfile, level, name_='includedby') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + if self.incdepgraph: + showIndent(outfile, level) + outfile.write('incdepgraph=model_.graphType(\n') + self.incdepgraph.exportLiteral(outfile, level, name_='incdepgraph') + showIndent(outfile, level) + outfile.write('),\n') + if self.invincdepgraph: + showIndent(outfile, level) + outfile.write('invincdepgraph=model_.graphType(\n') + self.invincdepgraph.exportLiteral(outfile, level, name_='invincdepgraph') + showIndent(outfile, level) + outfile.write('),\n') + showIndent(outfile, level) + outfile.write('innerdir=[\n') + level += 1 + for innerdir in self.innerdir: + showIndent(outfile, level) + outfile.write('model_.innerdir(\n') + innerdir.exportLiteral(outfile, level, name_='innerdir') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('innerfile=[\n') + level += 1 + for innerfile in self.innerfile: + showIndent(outfile, level) + outfile.write('model_.innerfile(\n') + innerfile.exportLiteral(outfile, level, name_='innerfile') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('innerclass=[\n') + level += 1 + for innerclass in self.innerclass: + showIndent(outfile, level) + outfile.write('model_.innerclass(\n') + innerclass.exportLiteral(outfile, level, name_='innerclass') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('innernamespace=[\n') + level += 1 + for innernamespace in self.innernamespace: + showIndent(outfile, level) + outfile.write('model_.innernamespace(\n') + innernamespace.exportLiteral(outfile, level, name_='innernamespace') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('innerpage=[\n') + level += 1 + for innerpage in self.innerpage: + showIndent(outfile, level) + outfile.write('model_.innerpage(\n') + innerpage.exportLiteral(outfile, level, name_='innerpage') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('innergroup=[\n') + level += 1 + for innergroup in self.innergroup: + showIndent(outfile, level) + outfile.write('model_.innergroup(\n') + innergroup.exportLiteral(outfile, level, name_='innergroup') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + if self.templateparamlist: + showIndent(outfile, level) + outfile.write('templateparamlist=model_.templateparamlistType(\n') + self.templateparamlist.exportLiteral(outfile, level, name_='templateparamlist') + showIndent(outfile, level) + outfile.write('),\n') + showIndent(outfile, level) + outfile.write('sectiondef=[\n') + level += 1 + for sectiondef in self.sectiondef: + showIndent(outfile, level) + outfile.write('model_.sectiondef(\n') + sectiondef.exportLiteral(outfile, level, name_='sectiondef') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + if self.briefdescription: + showIndent(outfile, level) + outfile.write('briefdescription=model_.descriptionType(\n') + self.briefdescription.exportLiteral(outfile, level, name_='briefdescription') + showIndent(outfile, level) + outfile.write('),\n') + if self.detaileddescription: + showIndent(outfile, level) + outfile.write('detaileddescription=model_.descriptionType(\n') + self.detaileddescription.exportLiteral(outfile, level, name_='detaileddescription') + showIndent(outfile, level) + outfile.write('),\n') + if self.inheritancegraph: + showIndent(outfile, level) + outfile.write('inheritancegraph=model_.graphType(\n') + self.inheritancegraph.exportLiteral(outfile, level, name_='inheritancegraph') + showIndent(outfile, level) + outfile.write('),\n') + if self.collaborationgraph: + showIndent(outfile, level) + outfile.write('collaborationgraph=model_.graphType(\n') + self.collaborationgraph.exportLiteral(outfile, level, name_='collaborationgraph') + showIndent(outfile, level) + outfile.write('),\n') + if self.programlisting: + showIndent(outfile, level) + outfile.write('programlisting=model_.listingType(\n') + self.programlisting.exportLiteral(outfile, level, name_='programlisting') + showIndent(outfile, level) + outfile.write('),\n') + if self.location: + showIndent(outfile, level) + outfile.write('location=model_.locationType(\n') + self.location.exportLiteral(outfile, level, name_='location') + showIndent(outfile, level) + outfile.write('),\n') + if self.listofallmembers: + showIndent(outfile, level) + outfile.write('listofallmembers=model_.listofallmembersType(\n') + self.listofallmembers.exportLiteral(outfile, level, name_='listofallmembers') + showIndent(outfile, level) + outfile.write('),\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('kind'): + self.kind = attrs.get('kind').value + if attrs.get('prot'): + self.prot = attrs.get('prot').value + if attrs.get('id'): + self.id = attrs.get('id').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'compoundname': + compoundname_ = '' + for text__content_ in child_.childNodes: + compoundname_ += text__content_.nodeValue + self.compoundname = compoundname_ + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'title': + obj_ = docTitleType.factory() + obj_.build(child_) + self.set_title(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'basecompoundref': + obj_ = compoundRefType.factory() + obj_.build(child_) + self.basecompoundref.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'derivedcompoundref': + obj_ = compoundRefType.factory() + obj_.build(child_) + self.derivedcompoundref.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'includes': + obj_ = incType.factory() + obj_.build(child_) + self.includes.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'includedby': + obj_ = incType.factory() + obj_.build(child_) + self.includedby.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'incdepgraph': + obj_ = graphType.factory() + obj_.build(child_) + self.set_incdepgraph(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'invincdepgraph': + obj_ = graphType.factory() + obj_.build(child_) + self.set_invincdepgraph(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'innerdir': + obj_ = refType.factory() + obj_.build(child_) + self.innerdir.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'innerfile': + obj_ = refType.factory() + obj_.build(child_) + self.innerfile.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'innerclass': + obj_ = refType.factory() + obj_.build(child_) + self.innerclass.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'innernamespace': + obj_ = refType.factory() + obj_.build(child_) + self.innernamespace.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'innerpage': + obj_ = refType.factory() + obj_.build(child_) + self.innerpage.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'innergroup': + obj_ = refType.factory() + obj_.build(child_) + self.innergroup.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'templateparamlist': + obj_ = templateparamlistType.factory() + obj_.build(child_) + self.set_templateparamlist(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'sectiondef': + obj_ = sectiondefType.factory() + obj_.build(child_) + self.sectiondef.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'briefdescription': + obj_ = descriptionType.factory() + obj_.build(child_) + self.set_briefdescription(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'detaileddescription': + obj_ = descriptionType.factory() + obj_.build(child_) + self.set_detaileddescription(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'inheritancegraph': + obj_ = graphType.factory() + obj_.build(child_) + self.set_inheritancegraph(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'collaborationgraph': + obj_ = graphType.factory() + obj_.build(child_) + self.set_collaborationgraph(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'programlisting': + obj_ = listingType.factory() + obj_.build(child_) + self.set_programlisting(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'location': + obj_ = locationType.factory() + obj_.build(child_) + self.set_location(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'listofallmembers': + obj_ = listofallmembersType.factory() + obj_.build(child_) + self.set_listofallmembers(obj_) +# end class compounddefType + + +class listofallmembersType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, member=None): + if member is None: + self.member = [] + else: + self.member = member + def factory(*args_, **kwargs_): + if listofallmembersType.subclass: + return listofallmembersType.subclass(*args_, **kwargs_) + else: + return listofallmembersType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_member(self): return self.member + def set_member(self, member): self.member = member + def add_member(self, value): self.member.append(value) + def insert_member(self, index, value): self.member[index] = value + def export(self, outfile, level, namespace_='', name_='listofallmembersType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='listofallmembersType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='listofallmembersType'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='listofallmembersType'): + for member_ in self.member: + member_.export(outfile, level, namespace_, name_='member') + def hasContent_(self): + if ( + self.member is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='listofallmembersType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('member=[\n') + level += 1 + for member in self.member: + showIndent(outfile, level) + outfile.write('model_.member(\n') + member.exportLiteral(outfile, level, name_='member') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'member': + obj_ = memberRefType.factory() + obj_.build(child_) + self.member.append(obj_) +# end class listofallmembersType + + +class memberRefType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, virt=None, prot=None, refid=None, ambiguityscope=None, scope=None, name=None): + self.virt = virt + self.prot = prot + self.refid = refid + self.ambiguityscope = ambiguityscope + self.scope = scope + self.name = name + def factory(*args_, **kwargs_): + if memberRefType.subclass: + return memberRefType.subclass(*args_, **kwargs_) + else: + return memberRefType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_scope(self): return self.scope + def set_scope(self, scope): self.scope = scope + def get_name(self): return self.name + def set_name(self, name): self.name = name + def get_virt(self): return self.virt + def set_virt(self, virt): self.virt = virt + def get_prot(self): return self.prot + def set_prot(self, prot): self.prot = prot + def get_refid(self): return self.refid + def set_refid(self, refid): self.refid = refid + def get_ambiguityscope(self): return self.ambiguityscope + def set_ambiguityscope(self, ambiguityscope): self.ambiguityscope = ambiguityscope + def export(self, outfile, level, namespace_='', name_='memberRefType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='memberRefType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='memberRefType'): + if self.virt is not None: + outfile.write(' virt=%s' % (quote_attrib(self.virt), )) + if self.prot is not None: + outfile.write(' prot=%s' % (quote_attrib(self.prot), )) + if self.refid is not None: + outfile.write(' refid=%s' % (self.format_string(quote_attrib(self.refid).encode(ExternalEncoding), input_name='refid'), )) + if self.ambiguityscope is not None: + outfile.write(' ambiguityscope=%s' % (self.format_string(quote_attrib(self.ambiguityscope).encode(ExternalEncoding), input_name='ambiguityscope'), )) + def exportChildren(self, outfile, level, namespace_='', name_='memberRefType'): + if self.scope is not None: + showIndent(outfile, level) + outfile.write('<%sscope>%s\n' % (namespace_, self.format_string(quote_xml(self.scope).encode(ExternalEncoding), input_name='scope'), namespace_)) + if self.name is not None: + showIndent(outfile, level) + outfile.write('<%sname>%s\n' % (namespace_, self.format_string(quote_xml(self.name).encode(ExternalEncoding), input_name='name'), namespace_)) + def hasContent_(self): + if ( + self.scope is not None or + self.name is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='memberRefType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.virt is not None: + showIndent(outfile, level) + outfile.write('virt = "%s",\n' % (self.virt,)) + if self.prot is not None: + showIndent(outfile, level) + outfile.write('prot = "%s",\n' % (self.prot,)) + if self.refid is not None: + showIndent(outfile, level) + outfile.write('refid = %s,\n' % (self.refid,)) + if self.ambiguityscope is not None: + showIndent(outfile, level) + outfile.write('ambiguityscope = %s,\n' % (self.ambiguityscope,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('scope=%s,\n' % quote_python(self.scope).encode(ExternalEncoding)) + showIndent(outfile, level) + outfile.write('name=%s,\n' % quote_python(self.name).encode(ExternalEncoding)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('virt'): + self.virt = attrs.get('virt').value + if attrs.get('prot'): + self.prot = attrs.get('prot').value + if attrs.get('refid'): + self.refid = attrs.get('refid').value + if attrs.get('ambiguityscope'): + self.ambiguityscope = attrs.get('ambiguityscope').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'scope': + scope_ = '' + for text__content_ in child_.childNodes: + scope_ += text__content_.nodeValue + self.scope = scope_ + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'name': + name_ = '' + for text__content_ in child_.childNodes: + name_ += text__content_.nodeValue + self.name = name_ +# end class memberRefType + + +class scope(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, valueOf_=''): + self.valueOf_ = valueOf_ + def factory(*args_, **kwargs_): + if scope.subclass: + return scope.subclass(*args_, **kwargs_) + else: + return scope(*args_, **kwargs_) + factory = staticmethod(factory) + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='scope', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='scope') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='scope'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='scope'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='scope'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class scope + + +class name(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, valueOf_=''): + self.valueOf_ = valueOf_ + def factory(*args_, **kwargs_): + if name.subclass: + return name.subclass(*args_, **kwargs_) + else: + return name(*args_, **kwargs_) + factory = staticmethod(factory) + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='name', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='name') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='name'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='name'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='name'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class name + + +class compoundRefType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, virt=None, prot=None, refid=None, valueOf_='', mixedclass_=None, content_=None): + self.virt = virt + self.prot = prot + self.refid = refid + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if compoundRefType.subclass: + return compoundRefType.subclass(*args_, **kwargs_) + else: + return compoundRefType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_virt(self): return self.virt + def set_virt(self, virt): self.virt = virt + def get_prot(self): return self.prot + def set_prot(self, prot): self.prot = prot + def get_refid(self): return self.refid + def set_refid(self, refid): self.refid = refid + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='compoundRefType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='compoundRefType') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='compoundRefType'): + if self.virt is not None: + outfile.write(' virt=%s' % (quote_attrib(self.virt), )) + if self.prot is not None: + outfile.write(' prot=%s' % (quote_attrib(self.prot), )) + if self.refid is not None: + outfile.write(' refid=%s' % (self.format_string(quote_attrib(self.refid).encode(ExternalEncoding), input_name='refid'), )) + def exportChildren(self, outfile, level, namespace_='', name_='compoundRefType'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='compoundRefType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.virt is not None: + showIndent(outfile, level) + outfile.write('virt = "%s",\n' % (self.virt,)) + if self.prot is not None: + showIndent(outfile, level) + outfile.write('prot = "%s",\n' % (self.prot,)) + if self.refid is not None: + showIndent(outfile, level) + outfile.write('refid = %s,\n' % (self.refid,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('virt'): + self.virt = attrs.get('virt').value + if attrs.get('prot'): + self.prot = attrs.get('prot').value + if attrs.get('refid'): + self.refid = attrs.get('refid').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class compoundRefType + + +class reimplementType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, refid=None, valueOf_='', mixedclass_=None, content_=None): + self.refid = refid + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if reimplementType.subclass: + return reimplementType.subclass(*args_, **kwargs_) + else: + return reimplementType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_refid(self): return self.refid + def set_refid(self, refid): self.refid = refid + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='reimplementType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='reimplementType') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='reimplementType'): + if self.refid is not None: + outfile.write(' refid=%s' % (self.format_string(quote_attrib(self.refid).encode(ExternalEncoding), input_name='refid'), )) + def exportChildren(self, outfile, level, namespace_='', name_='reimplementType'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='reimplementType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.refid is not None: + showIndent(outfile, level) + outfile.write('refid = %s,\n' % (self.refid,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('refid'): + self.refid = attrs.get('refid').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class reimplementType + + +class incType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, local=None, refid=None, valueOf_='', mixedclass_=None, content_=None): + self.local = local + self.refid = refid + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if incType.subclass: + return incType.subclass(*args_, **kwargs_) + else: + return incType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_local(self): return self.local + def set_local(self, local): self.local = local + def get_refid(self): return self.refid + def set_refid(self, refid): self.refid = refid + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='incType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='incType') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='incType'): + if self.local is not None: + outfile.write(' local=%s' % (quote_attrib(self.local), )) + if self.refid is not None: + outfile.write(' refid=%s' % (self.format_string(quote_attrib(self.refid).encode(ExternalEncoding), input_name='refid'), )) + def exportChildren(self, outfile, level, namespace_='', name_='incType'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='incType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.local is not None: + showIndent(outfile, level) + outfile.write('local = "%s",\n' % (self.local,)) + if self.refid is not None: + showIndent(outfile, level) + outfile.write('refid = %s,\n' % (self.refid,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('local'): + self.local = attrs.get('local').value + if attrs.get('refid'): + self.refid = attrs.get('refid').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class incType + + +class refType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, prot=None, refid=None, valueOf_='', mixedclass_=None, content_=None): + self.prot = prot + self.refid = refid + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if refType.subclass: + return refType.subclass(*args_, **kwargs_) + else: + return refType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_prot(self): return self.prot + def set_prot(self, prot): self.prot = prot + def get_refid(self): return self.refid + def set_refid(self, refid): self.refid = refid + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='refType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='refType') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='refType'): + if self.prot is not None: + outfile.write(' prot=%s' % (quote_attrib(self.prot), )) + if self.refid is not None: + outfile.write(' refid=%s' % (self.format_string(quote_attrib(self.refid).encode(ExternalEncoding), input_name='refid'), )) + def exportChildren(self, outfile, level, namespace_='', name_='refType'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='refType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.prot is not None: + showIndent(outfile, level) + outfile.write('prot = "%s",\n' % (self.prot,)) + if self.refid is not None: + showIndent(outfile, level) + outfile.write('refid = %s,\n' % (self.refid,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('prot'): + self.prot = attrs.get('prot').value + if attrs.get('refid'): + self.refid = attrs.get('refid').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class refType + + +class refTextType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, refid=None, kindref=None, external=None, valueOf_='', mixedclass_=None, content_=None): + self.refid = refid + self.kindref = kindref + self.external = external + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if refTextType.subclass: + return refTextType.subclass(*args_, **kwargs_) + else: + return refTextType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_refid(self): return self.refid + def set_refid(self, refid): self.refid = refid + def get_kindref(self): return self.kindref + def set_kindref(self, kindref): self.kindref = kindref + def get_external(self): return self.external + def set_external(self, external): self.external = external + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='refTextType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='refTextType') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='refTextType'): + if self.refid is not None: + outfile.write(' refid=%s' % (self.format_string(quote_attrib(self.refid).encode(ExternalEncoding), input_name='refid'), )) + if self.kindref is not None: + outfile.write(' kindref=%s' % (quote_attrib(self.kindref), )) + if self.external is not None: + outfile.write(' external=%s' % (self.format_string(quote_attrib(self.external).encode(ExternalEncoding), input_name='external'), )) + def exportChildren(self, outfile, level, namespace_='', name_='refTextType'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='refTextType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.refid is not None: + showIndent(outfile, level) + outfile.write('refid = %s,\n' % (self.refid,)) + if self.kindref is not None: + showIndent(outfile, level) + outfile.write('kindref = "%s",\n' % (self.kindref,)) + if self.external is not None: + showIndent(outfile, level) + outfile.write('external = %s,\n' % (self.external,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('refid'): + self.refid = attrs.get('refid').value + if attrs.get('kindref'): + self.kindref = attrs.get('kindref').value + if attrs.get('external'): + self.external = attrs.get('external').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class refTextType + + +class sectiondefType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, kind=None, header=None, description=None, memberdef=None): + self.kind = kind + self.header = header + self.description = description + if memberdef is None: + self.memberdef = [] + else: + self.memberdef = memberdef + def factory(*args_, **kwargs_): + if sectiondefType.subclass: + return sectiondefType.subclass(*args_, **kwargs_) + else: + return sectiondefType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_header(self): return self.header + def set_header(self, header): self.header = header + def get_description(self): return self.description + def set_description(self, description): self.description = description + def get_memberdef(self): return self.memberdef + def set_memberdef(self, memberdef): self.memberdef = memberdef + def add_memberdef(self, value): self.memberdef.append(value) + def insert_memberdef(self, index, value): self.memberdef[index] = value + def get_kind(self): return self.kind + def set_kind(self, kind): self.kind = kind + def export(self, outfile, level, namespace_='', name_='sectiondefType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='sectiondefType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='sectiondefType'): + if self.kind is not None: + outfile.write(' kind=%s' % (quote_attrib(self.kind), )) + def exportChildren(self, outfile, level, namespace_='', name_='sectiondefType'): + if self.header is not None: + showIndent(outfile, level) + outfile.write('<%sheader>%s\n' % (namespace_, self.format_string(quote_xml(self.header).encode(ExternalEncoding), input_name='header'), namespace_)) + if self.description: + self.description.export(outfile, level, namespace_, name_='description') + for memberdef_ in self.memberdef: + memberdef_.export(outfile, level, namespace_, name_='memberdef') + def hasContent_(self): + if ( + self.header is not None or + self.description is not None or + self.memberdef is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='sectiondefType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.kind is not None: + showIndent(outfile, level) + outfile.write('kind = "%s",\n' % (self.kind,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('header=%s,\n' % quote_python(self.header).encode(ExternalEncoding)) + if self.description: + showIndent(outfile, level) + outfile.write('description=model_.descriptionType(\n') + self.description.exportLiteral(outfile, level, name_='description') + showIndent(outfile, level) + outfile.write('),\n') + showIndent(outfile, level) + outfile.write('memberdef=[\n') + level += 1 + for memberdef in self.memberdef: + showIndent(outfile, level) + outfile.write('model_.memberdef(\n') + memberdef.exportLiteral(outfile, level, name_='memberdef') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('kind'): + self.kind = attrs.get('kind').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'header': + header_ = '' + for text__content_ in child_.childNodes: + header_ += text__content_.nodeValue + self.header = header_ + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'description': + obj_ = descriptionType.factory() + obj_.build(child_) + self.set_description(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'memberdef': + obj_ = memberdefType.factory() + obj_.build(child_) + self.memberdef.append(obj_) +# end class sectiondefType + + +class memberdefType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, initonly=None, kind=None, volatile=None, const=None, raisexx=None, virt=None, readable=None, prot=None, explicit=None, new=None, final=None, writable=None, add=None, static=None, remove=None, sealed=None, mutable=None, gettable=None, inline=None, settable=None, id=None, templateparamlist=None, type_=None, definition=None, argsstring=None, name=None, read=None, write=None, bitfield=None, reimplements=None, reimplementedby=None, param=None, enumvalue=None, initializer=None, exceptions=None, briefdescription=None, detaileddescription=None, inbodydescription=None, location=None, references=None, referencedby=None): + self.initonly = initonly + self.kind = kind + self.volatile = volatile + self.const = const + self.raisexx = raisexx + self.virt = virt + self.readable = readable + self.prot = prot + self.explicit = explicit + self.new = new + self.final = final + self.writable = writable + self.add = add + self.static = static + self.remove = remove + self.sealed = sealed + self.mutable = mutable + self.gettable = gettable + self.inline = inline + self.settable = settable + self.id = id + self.templateparamlist = templateparamlist + self.type_ = type_ + self.definition = definition + self.argsstring = argsstring + self.name = name + self.read = read + self.write = write + self.bitfield = bitfield + if reimplements is None: + self.reimplements = [] + else: + self.reimplements = reimplements + if reimplementedby is None: + self.reimplementedby = [] + else: + self.reimplementedby = reimplementedby + if param is None: + self.param = [] + else: + self.param = param + if enumvalue is None: + self.enumvalue = [] + else: + self.enumvalue = enumvalue + self.initializer = initializer + self.exceptions = exceptions + self.briefdescription = briefdescription + self.detaileddescription = detaileddescription + self.inbodydescription = inbodydescription + self.location = location + if references is None: + self.references = [] + else: + self.references = references + if referencedby is None: + self.referencedby = [] + else: + self.referencedby = referencedby + def factory(*args_, **kwargs_): + if memberdefType.subclass: + return memberdefType.subclass(*args_, **kwargs_) + else: + return memberdefType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_templateparamlist(self): return self.templateparamlist + def set_templateparamlist(self, templateparamlist): self.templateparamlist = templateparamlist + def get_type(self): return self.type_ + def set_type(self, type_): self.type_ = type_ + def get_definition(self): return self.definition + def set_definition(self, definition): self.definition = definition + def get_argsstring(self): return self.argsstring + def set_argsstring(self, argsstring): self.argsstring = argsstring + def get_name(self): return self.name + def set_name(self, name): self.name = name + def get_read(self): return self.read + def set_read(self, read): self.read = read + def get_write(self): return self.write + def set_write(self, write): self.write = write + def get_bitfield(self): return self.bitfield + def set_bitfield(self, bitfield): self.bitfield = bitfield + def get_reimplements(self): return self.reimplements + def set_reimplements(self, reimplements): self.reimplements = reimplements + def add_reimplements(self, value): self.reimplements.append(value) + def insert_reimplements(self, index, value): self.reimplements[index] = value + def get_reimplementedby(self): return self.reimplementedby + def set_reimplementedby(self, reimplementedby): self.reimplementedby = reimplementedby + def add_reimplementedby(self, value): self.reimplementedby.append(value) + def insert_reimplementedby(self, index, value): self.reimplementedby[index] = value + def get_param(self): return self.param + def set_param(self, param): self.param = param + def add_param(self, value): self.param.append(value) + def insert_param(self, index, value): self.param[index] = value + def get_enumvalue(self): return self.enumvalue + def set_enumvalue(self, enumvalue): self.enumvalue = enumvalue + def add_enumvalue(self, value): self.enumvalue.append(value) + def insert_enumvalue(self, index, value): self.enumvalue[index] = value + def get_initializer(self): return self.initializer + def set_initializer(self, initializer): self.initializer = initializer + def get_exceptions(self): return self.exceptions + def set_exceptions(self, exceptions): self.exceptions = exceptions + def get_briefdescription(self): return self.briefdescription + def set_briefdescription(self, briefdescription): self.briefdescription = briefdescription + def get_detaileddescription(self): return self.detaileddescription + def set_detaileddescription(self, detaileddescription): self.detaileddescription = detaileddescription + def get_inbodydescription(self): return self.inbodydescription + def set_inbodydescription(self, inbodydescription): self.inbodydescription = inbodydescription + def get_location(self): return self.location + def set_location(self, location): self.location = location + def get_references(self): return self.references + def set_references(self, references): self.references = references + def add_references(self, value): self.references.append(value) + def insert_references(self, index, value): self.references[index] = value + def get_referencedby(self): return self.referencedby + def set_referencedby(self, referencedby): self.referencedby = referencedby + def add_referencedby(self, value): self.referencedby.append(value) + def insert_referencedby(self, index, value): self.referencedby[index] = value + def get_initonly(self): return self.initonly + def set_initonly(self, initonly): self.initonly = initonly + def get_kind(self): return self.kind + def set_kind(self, kind): self.kind = kind + def get_volatile(self): return self.volatile + def set_volatile(self, volatile): self.volatile = volatile + def get_const(self): return self.const + def set_const(self, const): self.const = const + def get_raise(self): return self.raisexx + def set_raise(self, raisexx): self.raisexx = raisexx + def get_virt(self): return self.virt + def set_virt(self, virt): self.virt = virt + def get_readable(self): return self.readable + def set_readable(self, readable): self.readable = readable + def get_prot(self): return self.prot + def set_prot(self, prot): self.prot = prot + def get_explicit(self): return self.explicit + def set_explicit(self, explicit): self.explicit = explicit + def get_new(self): return self.new + def set_new(self, new): self.new = new + def get_final(self): return self.final + def set_final(self, final): self.final = final + def get_writable(self): return self.writable + def set_writable(self, writable): self.writable = writable + def get_add(self): return self.add + def set_add(self, add): self.add = add + def get_static(self): return self.static + def set_static(self, static): self.static = static + def get_remove(self): return self.remove + def set_remove(self, remove): self.remove = remove + def get_sealed(self): return self.sealed + def set_sealed(self, sealed): self.sealed = sealed + def get_mutable(self): return self.mutable + def set_mutable(self, mutable): self.mutable = mutable + def get_gettable(self): return self.gettable + def set_gettable(self, gettable): self.gettable = gettable + def get_inline(self): return self.inline + def set_inline(self, inline): self.inline = inline + def get_settable(self): return self.settable + def set_settable(self, settable): self.settable = settable + def get_id(self): return self.id + def set_id(self, id): self.id = id + def export(self, outfile, level, namespace_='', name_='memberdefType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='memberdefType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='memberdefType'): + if self.initonly is not None: + outfile.write(' initonly=%s' % (quote_attrib(self.initonly), )) + if self.kind is not None: + outfile.write(' kind=%s' % (quote_attrib(self.kind), )) + if self.volatile is not None: + outfile.write(' volatile=%s' % (quote_attrib(self.volatile), )) + if self.const is not None: + outfile.write(' const=%s' % (quote_attrib(self.const), )) + if self.raisexx is not None: + outfile.write(' raise=%s' % (quote_attrib(self.raisexx), )) + if self.virt is not None: + outfile.write(' virt=%s' % (quote_attrib(self.virt), )) + if self.readable is not None: + outfile.write(' readable=%s' % (quote_attrib(self.readable), )) + if self.prot is not None: + outfile.write(' prot=%s' % (quote_attrib(self.prot), )) + if self.explicit is not None: + outfile.write(' explicit=%s' % (quote_attrib(self.explicit), )) + if self.new is not None: + outfile.write(' new=%s' % (quote_attrib(self.new), )) + if self.final is not None: + outfile.write(' final=%s' % (quote_attrib(self.final), )) + if self.writable is not None: + outfile.write(' writable=%s' % (quote_attrib(self.writable), )) + if self.add is not None: + outfile.write(' add=%s' % (quote_attrib(self.add), )) + if self.static is not None: + outfile.write(' static=%s' % (quote_attrib(self.static), )) + if self.remove is not None: + outfile.write(' remove=%s' % (quote_attrib(self.remove), )) + if self.sealed is not None: + outfile.write(' sealed=%s' % (quote_attrib(self.sealed), )) + if self.mutable is not None: + outfile.write(' mutable=%s' % (quote_attrib(self.mutable), )) + if self.gettable is not None: + outfile.write(' gettable=%s' % (quote_attrib(self.gettable), )) + if self.inline is not None: + outfile.write(' inline=%s' % (quote_attrib(self.inline), )) + if self.settable is not None: + outfile.write(' settable=%s' % (quote_attrib(self.settable), )) + if self.id is not None: + outfile.write(' id=%s' % (self.format_string(quote_attrib(self.id).encode(ExternalEncoding), input_name='id'), )) + def exportChildren(self, outfile, level, namespace_='', name_='memberdefType'): + if self.templateparamlist: + self.templateparamlist.export(outfile, level, namespace_, name_='templateparamlist') + if self.type_: + self.type_.export(outfile, level, namespace_, name_='type') + if self.definition is not None: + showIndent(outfile, level) + outfile.write('<%sdefinition>%s\n' % (namespace_, self.format_string(quote_xml(self.definition).encode(ExternalEncoding), input_name='definition'), namespace_)) + if self.argsstring is not None: + showIndent(outfile, level) + outfile.write('<%sargsstring>%s\n' % (namespace_, self.format_string(quote_xml(self.argsstring).encode(ExternalEncoding), input_name='argsstring'), namespace_)) + if self.name is not None: + showIndent(outfile, level) + outfile.write('<%sname>%s\n' % (namespace_, self.format_string(quote_xml(self.name).encode(ExternalEncoding), input_name='name'), namespace_)) + if self.read is not None: + showIndent(outfile, level) + outfile.write('<%sread>%s\n' % (namespace_, self.format_string(quote_xml(self.read).encode(ExternalEncoding), input_name='read'), namespace_)) + if self.write is not None: + showIndent(outfile, level) + outfile.write('<%swrite>%s\n' % (namespace_, self.format_string(quote_xml(self.write).encode(ExternalEncoding), input_name='write'), namespace_)) + if self.bitfield is not None: + showIndent(outfile, level) + outfile.write('<%sbitfield>%s\n' % (namespace_, self.format_string(quote_xml(self.bitfield).encode(ExternalEncoding), input_name='bitfield'), namespace_)) + for reimplements_ in self.reimplements: + reimplements_.export(outfile, level, namespace_, name_='reimplements') + for reimplementedby_ in self.reimplementedby: + reimplementedby_.export(outfile, level, namespace_, name_='reimplementedby') + for param_ in self.param: + param_.export(outfile, level, namespace_, name_='param') + for enumvalue_ in self.enumvalue: + enumvalue_.export(outfile, level, namespace_, name_='enumvalue') + if self.initializer: + self.initializer.export(outfile, level, namespace_, name_='initializer') + if self.exceptions: + self.exceptions.export(outfile, level, namespace_, name_='exceptions') + if self.briefdescription: + self.briefdescription.export(outfile, level, namespace_, name_='briefdescription') + if self.detaileddescription: + self.detaileddescription.export(outfile, level, namespace_, name_='detaileddescription') + if self.inbodydescription: + self.inbodydescription.export(outfile, level, namespace_, name_='inbodydescription') + if self.location: + self.location.export(outfile, level, namespace_, name_='location', ) + for references_ in self.references: + references_.export(outfile, level, namespace_, name_='references') + for referencedby_ in self.referencedby: + referencedby_.export(outfile, level, namespace_, name_='referencedby') + def hasContent_(self): + if ( + self.templateparamlist is not None or + self.type_ is not None or + self.definition is not None or + self.argsstring is not None or + self.name is not None or + self.read is not None or + self.write is not None or + self.bitfield is not None or + self.reimplements is not None or + self.reimplementedby is not None or + self.param is not None or + self.enumvalue is not None or + self.initializer is not None or + self.exceptions is not None or + self.briefdescription is not None or + self.detaileddescription is not None or + self.inbodydescription is not None or + self.location is not None or + self.references is not None or + self.referencedby is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='memberdefType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.initonly is not None: + showIndent(outfile, level) + outfile.write('initonly = "%s",\n' % (self.initonly,)) + if self.kind is not None: + showIndent(outfile, level) + outfile.write('kind = "%s",\n' % (self.kind,)) + if self.volatile is not None: + showIndent(outfile, level) + outfile.write('volatile = "%s",\n' % (self.volatile,)) + if self.const is not None: + showIndent(outfile, level) + outfile.write('const = "%s",\n' % (self.const,)) + if self.raisexx is not None: + showIndent(outfile, level) + outfile.write('raisexx = "%s",\n' % (self.raisexx,)) + if self.virt is not None: + showIndent(outfile, level) + outfile.write('virt = "%s",\n' % (self.virt,)) + if self.readable is not None: + showIndent(outfile, level) + outfile.write('readable = "%s",\n' % (self.readable,)) + if self.prot is not None: + showIndent(outfile, level) + outfile.write('prot = "%s",\n' % (self.prot,)) + if self.explicit is not None: + showIndent(outfile, level) + outfile.write('explicit = "%s",\n' % (self.explicit,)) + if self.new is not None: + showIndent(outfile, level) + outfile.write('new = "%s",\n' % (self.new,)) + if self.final is not None: + showIndent(outfile, level) + outfile.write('final = "%s",\n' % (self.final,)) + if self.writable is not None: + showIndent(outfile, level) + outfile.write('writable = "%s",\n' % (self.writable,)) + if self.add is not None: + showIndent(outfile, level) + outfile.write('add = "%s",\n' % (self.add,)) + if self.static is not None: + showIndent(outfile, level) + outfile.write('static = "%s",\n' % (self.static,)) + if self.remove is not None: + showIndent(outfile, level) + outfile.write('remove = "%s",\n' % (self.remove,)) + if self.sealed is not None: + showIndent(outfile, level) + outfile.write('sealed = "%s",\n' % (self.sealed,)) + if self.mutable is not None: + showIndent(outfile, level) + outfile.write('mutable = "%s",\n' % (self.mutable,)) + if self.gettable is not None: + showIndent(outfile, level) + outfile.write('gettable = "%s",\n' % (self.gettable,)) + if self.inline is not None: + showIndent(outfile, level) + outfile.write('inline = "%s",\n' % (self.inline,)) + if self.settable is not None: + showIndent(outfile, level) + outfile.write('settable = "%s",\n' % (self.settable,)) + if self.id is not None: + showIndent(outfile, level) + outfile.write('id = %s,\n' % (self.id,)) + def exportLiteralChildren(self, outfile, level, name_): + if self.templateparamlist: + showIndent(outfile, level) + outfile.write('templateparamlist=model_.templateparamlistType(\n') + self.templateparamlist.exportLiteral(outfile, level, name_='templateparamlist') + showIndent(outfile, level) + outfile.write('),\n') + if self.type_: + showIndent(outfile, level) + outfile.write('type_=model_.linkedTextType(\n') + self.type_.exportLiteral(outfile, level, name_='type') + showIndent(outfile, level) + outfile.write('),\n') + showIndent(outfile, level) + outfile.write('definition=%s,\n' % quote_python(self.definition).encode(ExternalEncoding)) + showIndent(outfile, level) + outfile.write('argsstring=%s,\n' % quote_python(self.argsstring).encode(ExternalEncoding)) + showIndent(outfile, level) + outfile.write('name=%s,\n' % quote_python(self.name).encode(ExternalEncoding)) + showIndent(outfile, level) + outfile.write('read=%s,\n' % quote_python(self.read).encode(ExternalEncoding)) + showIndent(outfile, level) + outfile.write('write=%s,\n' % quote_python(self.write).encode(ExternalEncoding)) + showIndent(outfile, level) + outfile.write('bitfield=%s,\n' % quote_python(self.bitfield).encode(ExternalEncoding)) + showIndent(outfile, level) + outfile.write('reimplements=[\n') + level += 1 + for reimplements in self.reimplements: + showIndent(outfile, level) + outfile.write('model_.reimplements(\n') + reimplements.exportLiteral(outfile, level, name_='reimplements') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('reimplementedby=[\n') + level += 1 + for reimplementedby in self.reimplementedby: + showIndent(outfile, level) + outfile.write('model_.reimplementedby(\n') + reimplementedby.exportLiteral(outfile, level, name_='reimplementedby') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('param=[\n') + level += 1 + for param in self.param: + showIndent(outfile, level) + outfile.write('model_.param(\n') + param.exportLiteral(outfile, level, name_='param') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('enumvalue=[\n') + level += 1 + for enumvalue in self.enumvalue: + showIndent(outfile, level) + outfile.write('model_.enumvalue(\n') + enumvalue.exportLiteral(outfile, level, name_='enumvalue') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + if self.initializer: + showIndent(outfile, level) + outfile.write('initializer=model_.linkedTextType(\n') + self.initializer.exportLiteral(outfile, level, name_='initializer') + showIndent(outfile, level) + outfile.write('),\n') + if self.exceptions: + showIndent(outfile, level) + outfile.write('exceptions=model_.linkedTextType(\n') + self.exceptions.exportLiteral(outfile, level, name_='exceptions') + showIndent(outfile, level) + outfile.write('),\n') + if self.briefdescription: + showIndent(outfile, level) + outfile.write('briefdescription=model_.descriptionType(\n') + self.briefdescription.exportLiteral(outfile, level, name_='briefdescription') + showIndent(outfile, level) + outfile.write('),\n') + if self.detaileddescription: + showIndent(outfile, level) + outfile.write('detaileddescription=model_.descriptionType(\n') + self.detaileddescription.exportLiteral(outfile, level, name_='detaileddescription') + showIndent(outfile, level) + outfile.write('),\n') + if self.inbodydescription: + showIndent(outfile, level) + outfile.write('inbodydescription=model_.descriptionType(\n') + self.inbodydescription.exportLiteral(outfile, level, name_='inbodydescription') + showIndent(outfile, level) + outfile.write('),\n') + if self.location: + showIndent(outfile, level) + outfile.write('location=model_.locationType(\n') + self.location.exportLiteral(outfile, level, name_='location') + showIndent(outfile, level) + outfile.write('),\n') + showIndent(outfile, level) + outfile.write('references=[\n') + level += 1 + for references in self.references: + showIndent(outfile, level) + outfile.write('model_.references(\n') + references.exportLiteral(outfile, level, name_='references') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('referencedby=[\n') + level += 1 + for referencedby in self.referencedby: + showIndent(outfile, level) + outfile.write('model_.referencedby(\n') + referencedby.exportLiteral(outfile, level, name_='referencedby') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('initonly'): + self.initonly = attrs.get('initonly').value + if attrs.get('kind'): + self.kind = attrs.get('kind').value + if attrs.get('volatile'): + self.volatile = attrs.get('volatile').value + if attrs.get('const'): + self.const = attrs.get('const').value + if attrs.get('raise'): + self.raisexx = attrs.get('raise').value + if attrs.get('virt'): + self.virt = attrs.get('virt').value + if attrs.get('readable'): + self.readable = attrs.get('readable').value + if attrs.get('prot'): + self.prot = attrs.get('prot').value + if attrs.get('explicit'): + self.explicit = attrs.get('explicit').value + if attrs.get('new'): + self.new = attrs.get('new').value + if attrs.get('final'): + self.final = attrs.get('final').value + if attrs.get('writable'): + self.writable = attrs.get('writable').value + if attrs.get('add'): + self.add = attrs.get('add').value + if attrs.get('static'): + self.static = attrs.get('static').value + if attrs.get('remove'): + self.remove = attrs.get('remove').value + if attrs.get('sealed'): + self.sealed = attrs.get('sealed').value + if attrs.get('mutable'): + self.mutable = attrs.get('mutable').value + if attrs.get('gettable'): + self.gettable = attrs.get('gettable').value + if attrs.get('inline'): + self.inline = attrs.get('inline').value + if attrs.get('settable'): + self.settable = attrs.get('settable').value + if attrs.get('id'): + self.id = attrs.get('id').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'templateparamlist': + obj_ = templateparamlistType.factory() + obj_.build(child_) + self.set_templateparamlist(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'type': + obj_ = linkedTextType.factory() + obj_.build(child_) + self.set_type(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'definition': + definition_ = '' + for text__content_ in child_.childNodes: + definition_ += text__content_.nodeValue + self.definition = definition_ + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'argsstring': + argsstring_ = '' + for text__content_ in child_.childNodes: + argsstring_ += text__content_.nodeValue + self.argsstring = argsstring_ + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'name': + name_ = '' + for text__content_ in child_.childNodes: + name_ += text__content_.nodeValue + self.name = name_ + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'read': + read_ = '' + for text__content_ in child_.childNodes: + read_ += text__content_.nodeValue + self.read = read_ + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'write': + write_ = '' + for text__content_ in child_.childNodes: + write_ += text__content_.nodeValue + self.write = write_ + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'bitfield': + bitfield_ = '' + for text__content_ in child_.childNodes: + bitfield_ += text__content_.nodeValue + self.bitfield = bitfield_ + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'reimplements': + obj_ = reimplementType.factory() + obj_.build(child_) + self.reimplements.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'reimplementedby': + obj_ = reimplementType.factory() + obj_.build(child_) + self.reimplementedby.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'param': + obj_ = paramType.factory() + obj_.build(child_) + self.param.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'enumvalue': + obj_ = enumvalueType.factory() + obj_.build(child_) + self.enumvalue.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'initializer': + obj_ = linkedTextType.factory() + obj_.build(child_) + self.set_initializer(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'exceptions': + obj_ = linkedTextType.factory() + obj_.build(child_) + self.set_exceptions(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'briefdescription': + obj_ = descriptionType.factory() + obj_.build(child_) + self.set_briefdescription(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'detaileddescription': + obj_ = descriptionType.factory() + obj_.build(child_) + self.set_detaileddescription(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'inbodydescription': + obj_ = descriptionType.factory() + obj_.build(child_) + self.set_inbodydescription(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'location': + obj_ = locationType.factory() + obj_.build(child_) + self.set_location(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'references': + obj_ = referenceType.factory() + obj_.build(child_) + self.references.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'referencedby': + obj_ = referenceType.factory() + obj_.build(child_) + self.referencedby.append(obj_) +# end class memberdefType + + +class definition(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, valueOf_=''): + self.valueOf_ = valueOf_ + def factory(*args_, **kwargs_): + if definition.subclass: + return definition.subclass(*args_, **kwargs_) + else: + return definition(*args_, **kwargs_) + factory = staticmethod(factory) + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='definition', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='definition') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='definition'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='definition'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='definition'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class definition + + +class argsstring(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, valueOf_=''): + self.valueOf_ = valueOf_ + def factory(*args_, **kwargs_): + if argsstring.subclass: + return argsstring.subclass(*args_, **kwargs_) + else: + return argsstring(*args_, **kwargs_) + factory = staticmethod(factory) + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='argsstring', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='argsstring') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='argsstring'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='argsstring'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='argsstring'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class argsstring + + +class read(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, valueOf_=''): + self.valueOf_ = valueOf_ + def factory(*args_, **kwargs_): + if read.subclass: + return read.subclass(*args_, **kwargs_) + else: + return read(*args_, **kwargs_) + factory = staticmethod(factory) + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='read', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='read') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='read'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='read'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='read'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class read + + +class write(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, valueOf_=''): + self.valueOf_ = valueOf_ + def factory(*args_, **kwargs_): + if write.subclass: + return write.subclass(*args_, **kwargs_) + else: + return write(*args_, **kwargs_) + factory = staticmethod(factory) + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='write', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='write') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='write'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='write'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='write'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class write + + +class bitfield(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, valueOf_=''): + self.valueOf_ = valueOf_ + def factory(*args_, **kwargs_): + if bitfield.subclass: + return bitfield.subclass(*args_, **kwargs_) + else: + return bitfield(*args_, **kwargs_) + factory = staticmethod(factory) + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='bitfield', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='bitfield') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='bitfield'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='bitfield'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='bitfield'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class bitfield + + +class descriptionType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, title=None, para=None, sect1=None, internal=None, mixedclass_=None, content_=None): + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if descriptionType.subclass: + return descriptionType.subclass(*args_, **kwargs_) + else: + return descriptionType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_title(self): return self.title + def set_title(self, title): self.title = title + def get_para(self): return self.para + def set_para(self, para): self.para = para + def add_para(self, value): self.para.append(value) + def insert_para(self, index, value): self.para[index] = value + def get_sect1(self): return self.sect1 + def set_sect1(self, sect1): self.sect1 = sect1 + def add_sect1(self, value): self.sect1.append(value) + def insert_sect1(self, index, value): self.sect1[index] = value + def get_internal(self): return self.internal + def set_internal(self, internal): self.internal = internal + def export(self, outfile, level, namespace_='', name_='descriptionType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='descriptionType') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='descriptionType'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='descriptionType'): + for item_ in self.content_: + item_.export(outfile, level, item_.name, namespace_) + def hasContent_(self): + if ( + self.title is not None or + self.para is not None or + self.sect1 is not None or + self.internal is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='descriptionType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'title': + childobj_ = docTitleType.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'title', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'para': + childobj_ = docParaType.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'para', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'sect1': + childobj_ = docSect1Type.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'sect1', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'internal': + childobj_ = docInternalType.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'internal', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) +# end class descriptionType + + +class enumvalueType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, prot=None, id=None, name=None, initializer=None, briefdescription=None, detaileddescription=None, mixedclass_=None, content_=None): + self.prot = prot + self.id = id + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if enumvalueType.subclass: + return enumvalueType.subclass(*args_, **kwargs_) + else: + return enumvalueType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_name(self): return self.name + def set_name(self, name): self.name = name + def get_initializer(self): return self.initializer + def set_initializer(self, initializer): self.initializer = initializer + def get_briefdescription(self): return self.briefdescription + def set_briefdescription(self, briefdescription): self.briefdescription = briefdescription + def get_detaileddescription(self): return self.detaileddescription + def set_detaileddescription(self, detaileddescription): self.detaileddescription = detaileddescription + def get_prot(self): return self.prot + def set_prot(self, prot): self.prot = prot + def get_id(self): return self.id + def set_id(self, id): self.id = id + def export(self, outfile, level, namespace_='', name_='enumvalueType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='enumvalueType') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='enumvalueType'): + if self.prot is not None: + outfile.write(' prot=%s' % (quote_attrib(self.prot), )) + if self.id is not None: + outfile.write(' id=%s' % (self.format_string(quote_attrib(self.id).encode(ExternalEncoding), input_name='id'), )) + def exportChildren(self, outfile, level, namespace_='', name_='enumvalueType'): + for item_ in self.content_: + item_.export(outfile, level, item_.name, namespace_) + def hasContent_(self): + if ( + self.name is not None or + self.initializer is not None or + self.briefdescription is not None or + self.detaileddescription is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='enumvalueType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.prot is not None: + showIndent(outfile, level) + outfile.write('prot = "%s",\n' % (self.prot,)) + if self.id is not None: + showIndent(outfile, level) + outfile.write('id = %s,\n' % (self.id,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('prot'): + self.prot = attrs.get('prot').value + if attrs.get('id'): + self.id = attrs.get('id').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'name': + value_ = [] + for text_ in child_.childNodes: + value_.append(text_.nodeValue) + valuestr_ = ''.join(value_) + obj_ = self.mixedclass_(MixedContainer.CategorySimple, + MixedContainer.TypeString, 'name', valuestr_) + self.content_.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'initializer': + childobj_ = linkedTextType.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'initializer', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'briefdescription': + childobj_ = descriptionType.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'briefdescription', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'detaileddescription': + childobj_ = descriptionType.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'detaileddescription', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) +# end class enumvalueType + + +class templateparamlistType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, param=None): + if param is None: + self.param = [] + else: + self.param = param + def factory(*args_, **kwargs_): + if templateparamlistType.subclass: + return templateparamlistType.subclass(*args_, **kwargs_) + else: + return templateparamlistType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_param(self): return self.param + def set_param(self, param): self.param = param + def add_param(self, value): self.param.append(value) + def insert_param(self, index, value): self.param[index] = value + def export(self, outfile, level, namespace_='', name_='templateparamlistType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='templateparamlistType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='templateparamlistType'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='templateparamlistType'): + for param_ in self.param: + param_.export(outfile, level, namespace_, name_='param') + def hasContent_(self): + if ( + self.param is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='templateparamlistType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('param=[\n') + level += 1 + for param in self.param: + showIndent(outfile, level) + outfile.write('model_.param(\n') + param.exportLiteral(outfile, level, name_='param') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'param': + obj_ = paramType.factory() + obj_.build(child_) + self.param.append(obj_) +# end class templateparamlistType + + +class paramType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, type_=None, declname=None, defname=None, array=None, defval=None, briefdescription=None): + self.type_ = type_ + self.declname = declname + self.defname = defname + self.array = array + self.defval = defval + self.briefdescription = briefdescription + def factory(*args_, **kwargs_): + if paramType.subclass: + return paramType.subclass(*args_, **kwargs_) + else: + return paramType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_type(self): return self.type_ + def set_type(self, type_): self.type_ = type_ + def get_declname(self): return self.declname + def set_declname(self, declname): self.declname = declname + def get_defname(self): return self.defname + def set_defname(self, defname): self.defname = defname + def get_array(self): return self.array + def set_array(self, array): self.array = array + def get_defval(self): return self.defval + def set_defval(self, defval): self.defval = defval + def get_briefdescription(self): return self.briefdescription + def set_briefdescription(self, briefdescription): self.briefdescription = briefdescription + def export(self, outfile, level, namespace_='', name_='paramType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='paramType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='paramType'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='paramType'): + if self.type_: + self.type_.export(outfile, level, namespace_, name_='type') + if self.declname is not None: + showIndent(outfile, level) + outfile.write('<%sdeclname>%s\n' % (namespace_, self.format_string(quote_xml(self.declname).encode(ExternalEncoding), input_name='declname'), namespace_)) + if self.defname is not None: + showIndent(outfile, level) + outfile.write('<%sdefname>%s\n' % (namespace_, self.format_string(quote_xml(self.defname).encode(ExternalEncoding), input_name='defname'), namespace_)) + if self.array is not None: + showIndent(outfile, level) + outfile.write('<%sarray>%s\n' % (namespace_, self.format_string(quote_xml(self.array).encode(ExternalEncoding), input_name='array'), namespace_)) + if self.defval: + self.defval.export(outfile, level, namespace_, name_='defval') + if self.briefdescription: + self.briefdescription.export(outfile, level, namespace_, name_='briefdescription') + def hasContent_(self): + if ( + self.type_ is not None or + self.declname is not None or + self.defname is not None or + self.array is not None or + self.defval is not None or + self.briefdescription is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='paramType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + if self.type_: + showIndent(outfile, level) + outfile.write('type_=model_.linkedTextType(\n') + self.type_.exportLiteral(outfile, level, name_='type') + showIndent(outfile, level) + outfile.write('),\n') + showIndent(outfile, level) + outfile.write('declname=%s,\n' % quote_python(self.declname).encode(ExternalEncoding)) + showIndent(outfile, level) + outfile.write('defname=%s,\n' % quote_python(self.defname).encode(ExternalEncoding)) + showIndent(outfile, level) + outfile.write('array=%s,\n' % quote_python(self.array).encode(ExternalEncoding)) + if self.defval: + showIndent(outfile, level) + outfile.write('defval=model_.linkedTextType(\n') + self.defval.exportLiteral(outfile, level, name_='defval') + showIndent(outfile, level) + outfile.write('),\n') + if self.briefdescription: + showIndent(outfile, level) + outfile.write('briefdescription=model_.descriptionType(\n') + self.briefdescription.exportLiteral(outfile, level, name_='briefdescription') + showIndent(outfile, level) + outfile.write('),\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'type': + obj_ = linkedTextType.factory() + obj_.build(child_) + self.set_type(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'declname': + declname_ = '' + for text__content_ in child_.childNodes: + declname_ += text__content_.nodeValue + self.declname = declname_ + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'defname': + defname_ = '' + for text__content_ in child_.childNodes: + defname_ += text__content_.nodeValue + self.defname = defname_ + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'array': + array_ = '' + for text__content_ in child_.childNodes: + array_ += text__content_.nodeValue + self.array = array_ + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'defval': + obj_ = linkedTextType.factory() + obj_.build(child_) + self.set_defval(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'briefdescription': + obj_ = descriptionType.factory() + obj_.build(child_) + self.set_briefdescription(obj_) +# end class paramType + + +class declname(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, valueOf_=''): + self.valueOf_ = valueOf_ + def factory(*args_, **kwargs_): + if declname.subclass: + return declname.subclass(*args_, **kwargs_) + else: + return declname(*args_, **kwargs_) + factory = staticmethod(factory) + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='declname', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='declname') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='declname'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='declname'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='declname'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class declname + + +class defname(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, valueOf_=''): + self.valueOf_ = valueOf_ + def factory(*args_, **kwargs_): + if defname.subclass: + return defname.subclass(*args_, **kwargs_) + else: + return defname(*args_, **kwargs_) + factory = staticmethod(factory) + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='defname', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='defname') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='defname'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='defname'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='defname'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class defname + + +class array(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, valueOf_=''): + self.valueOf_ = valueOf_ + def factory(*args_, **kwargs_): + if array.subclass: + return array.subclass(*args_, **kwargs_) + else: + return array(*args_, **kwargs_) + factory = staticmethod(factory) + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='array', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='array') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='array'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='array'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='array'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class array + + +class linkedTextType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, ref=None, mixedclass_=None, content_=None): + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if linkedTextType.subclass: + return linkedTextType.subclass(*args_, **kwargs_) + else: + return linkedTextType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_ref(self): return self.ref + def set_ref(self, ref): self.ref = ref + def add_ref(self, value): self.ref.append(value) + def insert_ref(self, index, value): self.ref[index] = value + def export(self, outfile, level, namespace_='', name_='linkedTextType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='linkedTextType') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='linkedTextType'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='linkedTextType'): + for item_ in self.content_: + item_.export(outfile, level, item_.name, namespace_) + def hasContent_(self): + if ( + self.ref is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='linkedTextType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'ref': + childobj_ = docRefTextType.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'ref', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) +# end class linkedTextType + + +class graphType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, node=None): + if node is None: + self.node = [] + else: + self.node = node + def factory(*args_, **kwargs_): + if graphType.subclass: + return graphType.subclass(*args_, **kwargs_) + else: + return graphType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_node(self): return self.node + def set_node(self, node): self.node = node + def add_node(self, value): self.node.append(value) + def insert_node(self, index, value): self.node[index] = value + def export(self, outfile, level, namespace_='', name_='graphType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='graphType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='graphType'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='graphType'): + for node_ in self.node: + node_.export(outfile, level, namespace_, name_='node') + def hasContent_(self): + if ( + self.node is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='graphType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('node=[\n') + level += 1 + for node in self.node: + showIndent(outfile, level) + outfile.write('model_.node(\n') + node.exportLiteral(outfile, level, name_='node') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'node': + obj_ = nodeType.factory() + obj_.build(child_) + self.node.append(obj_) +# end class graphType + + +class nodeType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, id=None, label=None, link=None, childnode=None): + self.id = id + self.label = label + self.link = link + if childnode is None: + self.childnode = [] + else: + self.childnode = childnode + def factory(*args_, **kwargs_): + if nodeType.subclass: + return nodeType.subclass(*args_, **kwargs_) + else: + return nodeType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_label(self): return self.label + def set_label(self, label): self.label = label + def get_link(self): return self.link + def set_link(self, link): self.link = link + def get_childnode(self): return self.childnode + def set_childnode(self, childnode): self.childnode = childnode + def add_childnode(self, value): self.childnode.append(value) + def insert_childnode(self, index, value): self.childnode[index] = value + def get_id(self): return self.id + def set_id(self, id): self.id = id + def export(self, outfile, level, namespace_='', name_='nodeType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='nodeType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='nodeType'): + if self.id is not None: + outfile.write(' id=%s' % (self.format_string(quote_attrib(self.id).encode(ExternalEncoding), input_name='id'), )) + def exportChildren(self, outfile, level, namespace_='', name_='nodeType'): + if self.label is not None: + showIndent(outfile, level) + outfile.write('<%slabel>%s\n' % (namespace_, self.format_string(quote_xml(self.label).encode(ExternalEncoding), input_name='label'), namespace_)) + if self.link: + self.link.export(outfile, level, namespace_, name_='link') + for childnode_ in self.childnode: + childnode_.export(outfile, level, namespace_, name_='childnode') + def hasContent_(self): + if ( + self.label is not None or + self.link is not None or + self.childnode is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='nodeType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.id is not None: + showIndent(outfile, level) + outfile.write('id = %s,\n' % (self.id,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('label=%s,\n' % quote_python(self.label).encode(ExternalEncoding)) + if self.link: + showIndent(outfile, level) + outfile.write('link=model_.linkType(\n') + self.link.exportLiteral(outfile, level, name_='link') + showIndent(outfile, level) + outfile.write('),\n') + showIndent(outfile, level) + outfile.write('childnode=[\n') + level += 1 + for childnode in self.childnode: + showIndent(outfile, level) + outfile.write('model_.childnode(\n') + childnode.exportLiteral(outfile, level, name_='childnode') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('id'): + self.id = attrs.get('id').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'label': + label_ = '' + for text__content_ in child_.childNodes: + label_ += text__content_.nodeValue + self.label = label_ + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'link': + obj_ = linkType.factory() + obj_.build(child_) + self.set_link(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'childnode': + obj_ = childnodeType.factory() + obj_.build(child_) + self.childnode.append(obj_) +# end class nodeType + + +class label(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, valueOf_=''): + self.valueOf_ = valueOf_ + def factory(*args_, **kwargs_): + if label.subclass: + return label.subclass(*args_, **kwargs_) + else: + return label(*args_, **kwargs_) + factory = staticmethod(factory) + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='label', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='label') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='label'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='label'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='label'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class label + + +class childnodeType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, relation=None, refid=None, edgelabel=None): + self.relation = relation + self.refid = refid + if edgelabel is None: + self.edgelabel = [] + else: + self.edgelabel = edgelabel + def factory(*args_, **kwargs_): + if childnodeType.subclass: + return childnodeType.subclass(*args_, **kwargs_) + else: + return childnodeType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_edgelabel(self): return self.edgelabel + def set_edgelabel(self, edgelabel): self.edgelabel = edgelabel + def add_edgelabel(self, value): self.edgelabel.append(value) + def insert_edgelabel(self, index, value): self.edgelabel[index] = value + def get_relation(self): return self.relation + def set_relation(self, relation): self.relation = relation + def get_refid(self): return self.refid + def set_refid(self, refid): self.refid = refid + def export(self, outfile, level, namespace_='', name_='childnodeType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='childnodeType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='childnodeType'): + if self.relation is not None: + outfile.write(' relation=%s' % (quote_attrib(self.relation), )) + if self.refid is not None: + outfile.write(' refid=%s' % (self.format_string(quote_attrib(self.refid).encode(ExternalEncoding), input_name='refid'), )) + def exportChildren(self, outfile, level, namespace_='', name_='childnodeType'): + for edgelabel_ in self.edgelabel: + showIndent(outfile, level) + outfile.write('<%sedgelabel>%s\n' % (namespace_, self.format_string(quote_xml(edgelabel_).encode(ExternalEncoding), input_name='edgelabel'), namespace_)) + def hasContent_(self): + if ( + self.edgelabel is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='childnodeType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.relation is not None: + showIndent(outfile, level) + outfile.write('relation = "%s",\n' % (self.relation,)) + if self.refid is not None: + showIndent(outfile, level) + outfile.write('refid = %s,\n' % (self.refid,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('edgelabel=[\n') + level += 1 + for edgelabel in self.edgelabel: + showIndent(outfile, level) + outfile.write('%s,\n' % quote_python(edgelabel).encode(ExternalEncoding)) + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('relation'): + self.relation = attrs.get('relation').value + if attrs.get('refid'): + self.refid = attrs.get('refid').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'edgelabel': + edgelabel_ = '' + for text__content_ in child_.childNodes: + edgelabel_ += text__content_.nodeValue + self.edgelabel.append(edgelabel_) +# end class childnodeType + + +class edgelabel(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, valueOf_=''): + self.valueOf_ = valueOf_ + def factory(*args_, **kwargs_): + if edgelabel.subclass: + return edgelabel.subclass(*args_, **kwargs_) + else: + return edgelabel(*args_, **kwargs_) + factory = staticmethod(factory) + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='edgelabel', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='edgelabel') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='edgelabel'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='edgelabel'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='edgelabel'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class edgelabel + + +class linkType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, refid=None, external=None, valueOf_=''): + self.refid = refid + self.external = external + self.valueOf_ = valueOf_ + def factory(*args_, **kwargs_): + if linkType.subclass: + return linkType.subclass(*args_, **kwargs_) + else: + return linkType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_refid(self): return self.refid + def set_refid(self, refid): self.refid = refid + def get_external(self): return self.external + def set_external(self, external): self.external = external + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='linkType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='linkType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='linkType'): + if self.refid is not None: + outfile.write(' refid=%s' % (self.format_string(quote_attrib(self.refid).encode(ExternalEncoding), input_name='refid'), )) + if self.external is not None: + outfile.write(' external=%s' % (self.format_string(quote_attrib(self.external).encode(ExternalEncoding), input_name='external'), )) + def exportChildren(self, outfile, level, namespace_='', name_='linkType'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='linkType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.refid is not None: + showIndent(outfile, level) + outfile.write('refid = %s,\n' % (self.refid,)) + if self.external is not None: + showIndent(outfile, level) + outfile.write('external = %s,\n' % (self.external,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('refid'): + self.refid = attrs.get('refid').value + if attrs.get('external'): + self.external = attrs.get('external').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class linkType + + +class listingType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, codeline=None): + if codeline is None: + self.codeline = [] + else: + self.codeline = codeline + def factory(*args_, **kwargs_): + if listingType.subclass: + return listingType.subclass(*args_, **kwargs_) + else: + return listingType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_codeline(self): return self.codeline + def set_codeline(self, codeline): self.codeline = codeline + def add_codeline(self, value): self.codeline.append(value) + def insert_codeline(self, index, value): self.codeline[index] = value + def export(self, outfile, level, namespace_='', name_='listingType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='listingType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='listingType'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='listingType'): + for codeline_ in self.codeline: + codeline_.export(outfile, level, namespace_, name_='codeline') + def hasContent_(self): + if ( + self.codeline is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='listingType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('codeline=[\n') + level += 1 + for codeline in self.codeline: + showIndent(outfile, level) + outfile.write('model_.codeline(\n') + codeline.exportLiteral(outfile, level, name_='codeline') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'codeline': + obj_ = codelineType.factory() + obj_.build(child_) + self.codeline.append(obj_) +# end class listingType + + +class codelineType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, external=None, lineno=None, refkind=None, refid=None, highlight=None): + self.external = external + self.lineno = lineno + self.refkind = refkind + self.refid = refid + if highlight is None: + self.highlight = [] + else: + self.highlight = highlight + def factory(*args_, **kwargs_): + if codelineType.subclass: + return codelineType.subclass(*args_, **kwargs_) + else: + return codelineType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_highlight(self): return self.highlight + def set_highlight(self, highlight): self.highlight = highlight + def add_highlight(self, value): self.highlight.append(value) + def insert_highlight(self, index, value): self.highlight[index] = value + def get_external(self): return self.external + def set_external(self, external): self.external = external + def get_lineno(self): return self.lineno + def set_lineno(self, lineno): self.lineno = lineno + def get_refkind(self): return self.refkind + def set_refkind(self, refkind): self.refkind = refkind + def get_refid(self): return self.refid + def set_refid(self, refid): self.refid = refid + def export(self, outfile, level, namespace_='', name_='codelineType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='codelineType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='codelineType'): + if self.external is not None: + outfile.write(' external=%s' % (quote_attrib(self.external), )) + if self.lineno is not None: + outfile.write(' lineno="%s"' % self.format_integer(self.lineno, input_name='lineno')) + if self.refkind is not None: + outfile.write(' refkind=%s' % (quote_attrib(self.refkind), )) + if self.refid is not None: + outfile.write(' refid=%s' % (self.format_string(quote_attrib(self.refid).encode(ExternalEncoding), input_name='refid'), )) + def exportChildren(self, outfile, level, namespace_='', name_='codelineType'): + for highlight_ in self.highlight: + highlight_.export(outfile, level, namespace_, name_='highlight') + def hasContent_(self): + if ( + self.highlight is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='codelineType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.external is not None: + showIndent(outfile, level) + outfile.write('external = "%s",\n' % (self.external,)) + if self.lineno is not None: + showIndent(outfile, level) + outfile.write('lineno = %s,\n' % (self.lineno,)) + if self.refkind is not None: + showIndent(outfile, level) + outfile.write('refkind = "%s",\n' % (self.refkind,)) + if self.refid is not None: + showIndent(outfile, level) + outfile.write('refid = %s,\n' % (self.refid,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('highlight=[\n') + level += 1 + for highlight in self.highlight: + showIndent(outfile, level) + outfile.write('model_.highlight(\n') + highlight.exportLiteral(outfile, level, name_='highlight') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('external'): + self.external = attrs.get('external').value + if attrs.get('lineno'): + try: + self.lineno = int(attrs.get('lineno').value) + except ValueError as exp: + raise ValueError('Bad integer attribute (lineno): %s' % exp) + if attrs.get('refkind'): + self.refkind = attrs.get('refkind').value + if attrs.get('refid'): + self.refid = attrs.get('refid').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'highlight': + obj_ = highlightType.factory() + obj_.build(child_) + self.highlight.append(obj_) +# end class codelineType + + +class highlightType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, classxx=None, sp=None, ref=None, mixedclass_=None, content_=None): + self.classxx = classxx + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if highlightType.subclass: + return highlightType.subclass(*args_, **kwargs_) + else: + return highlightType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_sp(self): return self.sp + def set_sp(self, sp): self.sp = sp + def add_sp(self, value): self.sp.append(value) + def insert_sp(self, index, value): self.sp[index] = value + def get_ref(self): return self.ref + def set_ref(self, ref): self.ref = ref + def add_ref(self, value): self.ref.append(value) + def insert_ref(self, index, value): self.ref[index] = value + def get_class(self): return self.classxx + def set_class(self, classxx): self.classxx = classxx + def export(self, outfile, level, namespace_='', name_='highlightType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='highlightType') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='highlightType'): + if self.classxx is not None: + outfile.write(' class=%s' % (quote_attrib(self.classxx), )) + def exportChildren(self, outfile, level, namespace_='', name_='highlightType'): + for item_ in self.content_: + item_.export(outfile, level, item_.name, namespace_) + def hasContent_(self): + if ( + self.sp is not None or + self.ref is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='highlightType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.classxx is not None: + showIndent(outfile, level) + outfile.write('classxx = "%s",\n' % (self.classxx,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('class'): + self.classxx = attrs.get('class').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'sp': + value_ = [] + for text_ in child_.childNodes: + value_.append(text_.nodeValue) + valuestr_ = ''.join(value_) + obj_ = self.mixedclass_(MixedContainer.CategorySimple, + MixedContainer.TypeString, 'sp', valuestr_) + self.content_.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'ref': + childobj_ = docRefTextType.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'ref', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) +# end class highlightType + + +class sp(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, valueOf_=''): + self.valueOf_ = valueOf_ + def factory(*args_, **kwargs_): + if sp.subclass: + return sp.subclass(*args_, **kwargs_) + else: + return sp(*args_, **kwargs_) + factory = staticmethod(factory) + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='sp', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='sp') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='sp'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='sp'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='sp'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class sp + + +class referenceType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, endline=None, startline=None, refid=None, compoundref=None, valueOf_='', mixedclass_=None, content_=None): + self.endline = endline + self.startline = startline + self.refid = refid + self.compoundref = compoundref + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if referenceType.subclass: + return referenceType.subclass(*args_, **kwargs_) + else: + return referenceType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_endline(self): return self.endline + def set_endline(self, endline): self.endline = endline + def get_startline(self): return self.startline + def set_startline(self, startline): self.startline = startline + def get_refid(self): return self.refid + def set_refid(self, refid): self.refid = refid + def get_compoundref(self): return self.compoundref + def set_compoundref(self, compoundref): self.compoundref = compoundref + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='referenceType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='referenceType') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='referenceType'): + if self.endline is not None: + outfile.write(' endline="%s"' % self.format_integer(self.endline, input_name='endline')) + if self.startline is not None: + outfile.write(' startline="%s"' % self.format_integer(self.startline, input_name='startline')) + if self.refid is not None: + outfile.write(' refid=%s' % (self.format_string(quote_attrib(self.refid).encode(ExternalEncoding), input_name='refid'), )) + if self.compoundref is not None: + outfile.write(' compoundref=%s' % (self.format_string(quote_attrib(self.compoundref).encode(ExternalEncoding), input_name='compoundref'), )) + def exportChildren(self, outfile, level, namespace_='', name_='referenceType'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='referenceType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.endline is not None: + showIndent(outfile, level) + outfile.write('endline = %s,\n' % (self.endline,)) + if self.startline is not None: + showIndent(outfile, level) + outfile.write('startline = %s,\n' % (self.startline,)) + if self.refid is not None: + showIndent(outfile, level) + outfile.write('refid = %s,\n' % (self.refid,)) + if self.compoundref is not None: + showIndent(outfile, level) + outfile.write('compoundref = %s,\n' % (self.compoundref,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('endline'): + try: + self.endline = int(attrs.get('endline').value) + except ValueError as exp: + raise ValueError('Bad integer attribute (endline): %s' % exp) + if attrs.get('startline'): + try: + self.startline = int(attrs.get('startline').value) + except ValueError as exp: + raise ValueError('Bad integer attribute (startline): %s' % exp) + if attrs.get('refid'): + self.refid = attrs.get('refid').value + if attrs.get('compoundref'): + self.compoundref = attrs.get('compoundref').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class referenceType + + +class locationType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, bodystart=None, line=None, bodyend=None, bodyfile=None, file=None, valueOf_=''): + self.bodystart = bodystart + self.line = line + self.bodyend = bodyend + self.bodyfile = bodyfile + self.file = file + self.valueOf_ = valueOf_ + def factory(*args_, **kwargs_): + if locationType.subclass: + return locationType.subclass(*args_, **kwargs_) + else: + return locationType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_bodystart(self): return self.bodystart + def set_bodystart(self, bodystart): self.bodystart = bodystart + def get_line(self): return self.line + def set_line(self, line): self.line = line + def get_bodyend(self): return self.bodyend + def set_bodyend(self, bodyend): self.bodyend = bodyend + def get_bodyfile(self): return self.bodyfile + def set_bodyfile(self, bodyfile): self.bodyfile = bodyfile + def get_file(self): return self.file + def set_file(self, file): self.file = file + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='locationType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='locationType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='locationType'): + if self.bodystart is not None: + outfile.write(' bodystart="%s"' % self.format_integer(self.bodystart, input_name='bodystart')) + if self.line is not None: + outfile.write(' line="%s"' % self.format_integer(self.line, input_name='line')) + if self.bodyend is not None: + outfile.write(' bodyend="%s"' % self.format_integer(self.bodyend, input_name='bodyend')) + if self.bodyfile is not None: + outfile.write(' bodyfile=%s' % (self.format_string(quote_attrib(self.bodyfile).encode(ExternalEncoding), input_name='bodyfile'), )) + if self.file is not None: + outfile.write(' file=%s' % (self.format_string(quote_attrib(self.file).encode(ExternalEncoding), input_name='file'), )) + def exportChildren(self, outfile, level, namespace_='', name_='locationType'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='locationType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.bodystart is not None: + showIndent(outfile, level) + outfile.write('bodystart = %s,\n' % (self.bodystart,)) + if self.line is not None: + showIndent(outfile, level) + outfile.write('line = %s,\n' % (self.line,)) + if self.bodyend is not None: + showIndent(outfile, level) + outfile.write('bodyend = %s,\n' % (self.bodyend,)) + if self.bodyfile is not None: + showIndent(outfile, level) + outfile.write('bodyfile = %s,\n' % (self.bodyfile,)) + if self.file is not None: + showIndent(outfile, level) + outfile.write('file = %s,\n' % (self.file,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('bodystart'): + try: + self.bodystart = int(attrs.get('bodystart').value) + except ValueError as exp: + raise ValueError('Bad integer attribute (bodystart): %s' % exp) + if attrs.get('line'): + try: + self.line = int(attrs.get('line').value) + except ValueError as exp: + raise ValueError('Bad integer attribute (line): %s' % exp) + if attrs.get('bodyend'): + try: + self.bodyend = int(attrs.get('bodyend').value) + except ValueError as exp: + raise ValueError('Bad integer attribute (bodyend): %s' % exp) + if attrs.get('bodyfile'): + self.bodyfile = attrs.get('bodyfile').value + if attrs.get('file'): + self.file = attrs.get('file').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class locationType + + +class docSect1Type(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, id=None, title=None, para=None, sect2=None, internal=None, mixedclass_=None, content_=None): + self.id = id + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if docSect1Type.subclass: + return docSect1Type.subclass(*args_, **kwargs_) + else: + return docSect1Type(*args_, **kwargs_) + factory = staticmethod(factory) + def get_title(self): return self.title + def set_title(self, title): self.title = title + def get_para(self): return self.para + def set_para(self, para): self.para = para + def add_para(self, value): self.para.append(value) + def insert_para(self, index, value): self.para[index] = value + def get_sect2(self): return self.sect2 + def set_sect2(self, sect2): self.sect2 = sect2 + def add_sect2(self, value): self.sect2.append(value) + def insert_sect2(self, index, value): self.sect2[index] = value + def get_internal(self): return self.internal + def set_internal(self, internal): self.internal = internal + def get_id(self): return self.id + def set_id(self, id): self.id = id + def export(self, outfile, level, namespace_='', name_='docSect1Type', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docSect1Type') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='docSect1Type'): + if self.id is not None: + outfile.write(' id=%s' % (self.format_string(quote_attrib(self.id).encode(ExternalEncoding), input_name='id'), )) + def exportChildren(self, outfile, level, namespace_='', name_='docSect1Type'): + for item_ in self.content_: + item_.export(outfile, level, item_.name, namespace_) + def hasContent_(self): + if ( + self.title is not None or + self.para is not None or + self.sect2 is not None or + self.internal is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docSect1Type'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.id is not None: + showIndent(outfile, level) + outfile.write('id = %s,\n' % (self.id,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('id'): + self.id = attrs.get('id').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'title': + childobj_ = docTitleType.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'title', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'para': + childobj_ = docParaType.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'para', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'sect2': + childobj_ = docSect2Type.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'sect2', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'internal': + childobj_ = docInternalS1Type.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'internal', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) +# end class docSect1Type + + +class docSect2Type(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, id=None, title=None, para=None, sect3=None, internal=None, mixedclass_=None, content_=None): + self.id = id + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if docSect2Type.subclass: + return docSect2Type.subclass(*args_, **kwargs_) + else: + return docSect2Type(*args_, **kwargs_) + factory = staticmethod(factory) + def get_title(self): return self.title + def set_title(self, title): self.title = title + def get_para(self): return self.para + def set_para(self, para): self.para = para + def add_para(self, value): self.para.append(value) + def insert_para(self, index, value): self.para[index] = value + def get_sect3(self): return self.sect3 + def set_sect3(self, sect3): self.sect3 = sect3 + def add_sect3(self, value): self.sect3.append(value) + def insert_sect3(self, index, value): self.sect3[index] = value + def get_internal(self): return self.internal + def set_internal(self, internal): self.internal = internal + def get_id(self): return self.id + def set_id(self, id): self.id = id + def export(self, outfile, level, namespace_='', name_='docSect2Type', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docSect2Type') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='docSect2Type'): + if self.id is not None: + outfile.write(' id=%s' % (self.format_string(quote_attrib(self.id).encode(ExternalEncoding), input_name='id'), )) + def exportChildren(self, outfile, level, namespace_='', name_='docSect2Type'): + for item_ in self.content_: + item_.export(outfile, level, item_.name, namespace_) + def hasContent_(self): + if ( + self.title is not None or + self.para is not None or + self.sect3 is not None or + self.internal is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docSect2Type'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.id is not None: + showIndent(outfile, level) + outfile.write('id = %s,\n' % (self.id,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('id'): + self.id = attrs.get('id').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'title': + childobj_ = docTitleType.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'title', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'para': + childobj_ = docParaType.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'para', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'sect3': + childobj_ = docSect3Type.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'sect3', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'internal': + childobj_ = docInternalS2Type.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'internal', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) +# end class docSect2Type + + +class docSect3Type(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, id=None, title=None, para=None, sect4=None, internal=None, mixedclass_=None, content_=None): + self.id = id + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if docSect3Type.subclass: + return docSect3Type.subclass(*args_, **kwargs_) + else: + return docSect3Type(*args_, **kwargs_) + factory = staticmethod(factory) + def get_title(self): return self.title + def set_title(self, title): self.title = title + def get_para(self): return self.para + def set_para(self, para): self.para = para + def add_para(self, value): self.para.append(value) + def insert_para(self, index, value): self.para[index] = value + def get_sect4(self): return self.sect4 + def set_sect4(self, sect4): self.sect4 = sect4 + def add_sect4(self, value): self.sect4.append(value) + def insert_sect4(self, index, value): self.sect4[index] = value + def get_internal(self): return self.internal + def set_internal(self, internal): self.internal = internal + def get_id(self): return self.id + def set_id(self, id): self.id = id + def export(self, outfile, level, namespace_='', name_='docSect3Type', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docSect3Type') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='docSect3Type'): + if self.id is not None: + outfile.write(' id=%s' % (self.format_string(quote_attrib(self.id).encode(ExternalEncoding), input_name='id'), )) + def exportChildren(self, outfile, level, namespace_='', name_='docSect3Type'): + for item_ in self.content_: + item_.export(outfile, level, item_.name, namespace_) + def hasContent_(self): + if ( + self.title is not None or + self.para is not None or + self.sect4 is not None or + self.internal is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docSect3Type'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.id is not None: + showIndent(outfile, level) + outfile.write('id = %s,\n' % (self.id,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('id'): + self.id = attrs.get('id').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'title': + childobj_ = docTitleType.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'title', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'para': + childobj_ = docParaType.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'para', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'sect4': + childobj_ = docSect4Type.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'sect4', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'internal': + childobj_ = docInternalS3Type.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'internal', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) +# end class docSect3Type + + +class docSect4Type(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, id=None, title=None, para=None, internal=None, mixedclass_=None, content_=None): + self.id = id + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if docSect4Type.subclass: + return docSect4Type.subclass(*args_, **kwargs_) + else: + return docSect4Type(*args_, **kwargs_) + factory = staticmethod(factory) + def get_title(self): return self.title + def set_title(self, title): self.title = title + def get_para(self): return self.para + def set_para(self, para): self.para = para + def add_para(self, value): self.para.append(value) + def insert_para(self, index, value): self.para[index] = value + def get_internal(self): return self.internal + def set_internal(self, internal): self.internal = internal + def get_id(self): return self.id + def set_id(self, id): self.id = id + def export(self, outfile, level, namespace_='', name_='docSect4Type', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docSect4Type') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='docSect4Type'): + if self.id is not None: + outfile.write(' id=%s' % (self.format_string(quote_attrib(self.id).encode(ExternalEncoding), input_name='id'), )) + def exportChildren(self, outfile, level, namespace_='', name_='docSect4Type'): + for item_ in self.content_: + item_.export(outfile, level, item_.name, namespace_) + def hasContent_(self): + if ( + self.title is not None or + self.para is not None or + self.internal is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docSect4Type'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.id is not None: + showIndent(outfile, level) + outfile.write('id = %s,\n' % (self.id,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('id'): + self.id = attrs.get('id').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'title': + childobj_ = docTitleType.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'title', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'para': + childobj_ = docParaType.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'para', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'internal': + childobj_ = docInternalS4Type.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'internal', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) +# end class docSect4Type + + +class docInternalType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, para=None, sect1=None, mixedclass_=None, content_=None): + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if docInternalType.subclass: + return docInternalType.subclass(*args_, **kwargs_) + else: + return docInternalType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_para(self): return self.para + def set_para(self, para): self.para = para + def add_para(self, value): self.para.append(value) + def insert_para(self, index, value): self.para[index] = value + def get_sect1(self): return self.sect1 + def set_sect1(self, sect1): self.sect1 = sect1 + def add_sect1(self, value): self.sect1.append(value) + def insert_sect1(self, index, value): self.sect1[index] = value + def export(self, outfile, level, namespace_='', name_='docInternalType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docInternalType') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='docInternalType'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='docInternalType'): + for item_ in self.content_: + item_.export(outfile, level, item_.name, namespace_) + def hasContent_(self): + if ( + self.para is not None or + self.sect1 is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docInternalType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'para': + childobj_ = docParaType.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'para', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'sect1': + childobj_ = docSect1Type.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'sect1', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) +# end class docInternalType + + +class docInternalS1Type(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, para=None, sect2=None, mixedclass_=None, content_=None): + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if docInternalS1Type.subclass: + return docInternalS1Type.subclass(*args_, **kwargs_) + else: + return docInternalS1Type(*args_, **kwargs_) + factory = staticmethod(factory) + def get_para(self): return self.para + def set_para(self, para): self.para = para + def add_para(self, value): self.para.append(value) + def insert_para(self, index, value): self.para[index] = value + def get_sect2(self): return self.sect2 + def set_sect2(self, sect2): self.sect2 = sect2 + def add_sect2(self, value): self.sect2.append(value) + def insert_sect2(self, index, value): self.sect2[index] = value + def export(self, outfile, level, namespace_='', name_='docInternalS1Type', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docInternalS1Type') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='docInternalS1Type'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='docInternalS1Type'): + for item_ in self.content_: + item_.export(outfile, level, item_.name, namespace_) + def hasContent_(self): + if ( + self.para is not None or + self.sect2 is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docInternalS1Type'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'para': + childobj_ = docParaType.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'para', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'sect2': + childobj_ = docSect2Type.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'sect2', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) +# end class docInternalS1Type + + +class docInternalS2Type(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, para=None, sect3=None, mixedclass_=None, content_=None): + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if docInternalS2Type.subclass: + return docInternalS2Type.subclass(*args_, **kwargs_) + else: + return docInternalS2Type(*args_, **kwargs_) + factory = staticmethod(factory) + def get_para(self): return self.para + def set_para(self, para): self.para = para + def add_para(self, value): self.para.append(value) + def insert_para(self, index, value): self.para[index] = value + def get_sect3(self): return self.sect3 + def set_sect3(self, sect3): self.sect3 = sect3 + def add_sect3(self, value): self.sect3.append(value) + def insert_sect3(self, index, value): self.sect3[index] = value + def export(self, outfile, level, namespace_='', name_='docInternalS2Type', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docInternalS2Type') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='docInternalS2Type'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='docInternalS2Type'): + for item_ in self.content_: + item_.export(outfile, level, item_.name, namespace_) + def hasContent_(self): + if ( + self.para is not None or + self.sect3 is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docInternalS2Type'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'para': + childobj_ = docParaType.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'para', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'sect3': + childobj_ = docSect3Type.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'sect3', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) +# end class docInternalS2Type + + +class docInternalS3Type(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, para=None, sect3=None, mixedclass_=None, content_=None): + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if docInternalS3Type.subclass: + return docInternalS3Type.subclass(*args_, **kwargs_) + else: + return docInternalS3Type(*args_, **kwargs_) + factory = staticmethod(factory) + def get_para(self): return self.para + def set_para(self, para): self.para = para + def add_para(self, value): self.para.append(value) + def insert_para(self, index, value): self.para[index] = value + def get_sect3(self): return self.sect3 + def set_sect3(self, sect3): self.sect3 = sect3 + def add_sect3(self, value): self.sect3.append(value) + def insert_sect3(self, index, value): self.sect3[index] = value + def export(self, outfile, level, namespace_='', name_='docInternalS3Type', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docInternalS3Type') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='docInternalS3Type'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='docInternalS3Type'): + for item_ in self.content_: + item_.export(outfile, level, item_.name, namespace_) + def hasContent_(self): + if ( + self.para is not None or + self.sect3 is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docInternalS3Type'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'para': + childobj_ = docParaType.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'para', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'sect3': + childobj_ = docSect4Type.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'sect3', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) +# end class docInternalS3Type + + +class docInternalS4Type(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, para=None, mixedclass_=None, content_=None): + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if docInternalS4Type.subclass: + return docInternalS4Type.subclass(*args_, **kwargs_) + else: + return docInternalS4Type(*args_, **kwargs_) + factory = staticmethod(factory) + def get_para(self): return self.para + def set_para(self, para): self.para = para + def add_para(self, value): self.para.append(value) + def insert_para(self, index, value): self.para[index] = value + def export(self, outfile, level, namespace_='', name_='docInternalS4Type', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docInternalS4Type') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='docInternalS4Type'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='docInternalS4Type'): + for item_ in self.content_: + item_.export(outfile, level, item_.name, namespace_) + def hasContent_(self): + if ( + self.para is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docInternalS4Type'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'para': + childobj_ = docParaType.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'para', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) +# end class docInternalS4Type + + +class docTitleType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, valueOf_='', mixedclass_=None, content_=None): + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if docTitleType.subclass: + return docTitleType.subclass(*args_, **kwargs_) + else: + return docTitleType(*args_, **kwargs_) + factory = staticmethod(factory) + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='docTitleType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docTitleType') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='docTitleType'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='docTitleType'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docTitleType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class docTitleType + + +class docParaType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, valueOf_='', mixedclass_=None, content_=None): + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if docParaType.subclass: + return docParaType.subclass(*args_, **kwargs_) + else: + return docParaType(*args_, **kwargs_) + factory = staticmethod(factory) + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='docParaType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docParaType') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='docParaType'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='docParaType'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docParaType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class docParaType + + +class docMarkupType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, valueOf_='', mixedclass_=None, content_=None): + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if docMarkupType.subclass: + return docMarkupType.subclass(*args_, **kwargs_) + else: + return docMarkupType(*args_, **kwargs_) + factory = staticmethod(factory) + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='docMarkupType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docMarkupType') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='docMarkupType'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='docMarkupType'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docMarkupType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class docMarkupType + + +class docURLLink(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, url=None, valueOf_='', mixedclass_=None, content_=None): + self.url = url + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if docURLLink.subclass: + return docURLLink.subclass(*args_, **kwargs_) + else: + return docURLLink(*args_, **kwargs_) + factory = staticmethod(factory) + def get_url(self): return self.url + def set_url(self, url): self.url = url + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='docURLLink', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docURLLink') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='docURLLink'): + if self.url is not None: + outfile.write(' url=%s' % (self.format_string(quote_attrib(self.url).encode(ExternalEncoding), input_name='url'), )) + def exportChildren(self, outfile, level, namespace_='', name_='docURLLink'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docURLLink'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.url is not None: + showIndent(outfile, level) + outfile.write('url = %s,\n' % (self.url,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('url'): + self.url = attrs.get('url').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class docURLLink + + +class docAnchorType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, id=None, valueOf_='', mixedclass_=None, content_=None): + self.id = id + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if docAnchorType.subclass: + return docAnchorType.subclass(*args_, **kwargs_) + else: + return docAnchorType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_id(self): return self.id + def set_id(self, id): self.id = id + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='docAnchorType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docAnchorType') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='docAnchorType'): + if self.id is not None: + outfile.write(' id=%s' % (self.format_string(quote_attrib(self.id).encode(ExternalEncoding), input_name='id'), )) + def exportChildren(self, outfile, level, namespace_='', name_='docAnchorType'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docAnchorType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.id is not None: + showIndent(outfile, level) + outfile.write('id = %s,\n' % (self.id,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('id'): + self.id = attrs.get('id').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class docAnchorType + + +class docFormulaType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, id=None, valueOf_='', mixedclass_=None, content_=None): + self.id = id + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if docFormulaType.subclass: + return docFormulaType.subclass(*args_, **kwargs_) + else: + return docFormulaType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_id(self): return self.id + def set_id(self, id): self.id = id + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='docFormulaType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docFormulaType') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='docFormulaType'): + if self.id is not None: + outfile.write(' id=%s' % (self.format_string(quote_attrib(self.id).encode(ExternalEncoding), input_name='id'), )) + def exportChildren(self, outfile, level, namespace_='', name_='docFormulaType'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docFormulaType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.id is not None: + showIndent(outfile, level) + outfile.write('id = %s,\n' % (self.id,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('id'): + self.id = attrs.get('id').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class docFormulaType + + +class docIndexEntryType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, primaryie=None, secondaryie=None): + self.primaryie = primaryie + self.secondaryie = secondaryie + def factory(*args_, **kwargs_): + if docIndexEntryType.subclass: + return docIndexEntryType.subclass(*args_, **kwargs_) + else: + return docIndexEntryType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_primaryie(self): return self.primaryie + def set_primaryie(self, primaryie): self.primaryie = primaryie + def get_secondaryie(self): return self.secondaryie + def set_secondaryie(self, secondaryie): self.secondaryie = secondaryie + def export(self, outfile, level, namespace_='', name_='docIndexEntryType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docIndexEntryType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='docIndexEntryType'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='docIndexEntryType'): + if self.primaryie is not None: + showIndent(outfile, level) + outfile.write('<%sprimaryie>%s\n' % (namespace_, self.format_string(quote_xml(self.primaryie).encode(ExternalEncoding), input_name='primaryie'), namespace_)) + if self.secondaryie is not None: + showIndent(outfile, level) + outfile.write('<%ssecondaryie>%s\n' % (namespace_, self.format_string(quote_xml(self.secondaryie).encode(ExternalEncoding), input_name='secondaryie'), namespace_)) + def hasContent_(self): + if ( + self.primaryie is not None or + self.secondaryie is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docIndexEntryType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('primaryie=%s,\n' % quote_python(self.primaryie).encode(ExternalEncoding)) + showIndent(outfile, level) + outfile.write('secondaryie=%s,\n' % quote_python(self.secondaryie).encode(ExternalEncoding)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'primaryie': + primaryie_ = '' + for text__content_ in child_.childNodes: + primaryie_ += text__content_.nodeValue + self.primaryie = primaryie_ + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'secondaryie': + secondaryie_ = '' + for text__content_ in child_.childNodes: + secondaryie_ += text__content_.nodeValue + self.secondaryie = secondaryie_ +# end class docIndexEntryType + + +class docListType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, listitem=None): + if listitem is None: + self.listitem = [] + else: + self.listitem = listitem + def factory(*args_, **kwargs_): + if docListType.subclass: + return docListType.subclass(*args_, **kwargs_) + else: + return docListType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_listitem(self): return self.listitem + def set_listitem(self, listitem): self.listitem = listitem + def add_listitem(self, value): self.listitem.append(value) + def insert_listitem(self, index, value): self.listitem[index] = value + def export(self, outfile, level, namespace_='', name_='docListType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docListType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='docListType'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='docListType'): + for listitem_ in self.listitem: + listitem_.export(outfile, level, namespace_, name_='listitem') + def hasContent_(self): + if ( + self.listitem is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docListType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('listitem=[\n') + level += 1 + for listitem in self.listitem: + showIndent(outfile, level) + outfile.write('model_.listitem(\n') + listitem.exportLiteral(outfile, level, name_='listitem') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'listitem': + obj_ = docListItemType.factory() + obj_.build(child_) + self.listitem.append(obj_) +# end class docListType + + +class docListItemType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, para=None): + if para is None: + self.para = [] + else: + self.para = para + def factory(*args_, **kwargs_): + if docListItemType.subclass: + return docListItemType.subclass(*args_, **kwargs_) + else: + return docListItemType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_para(self): return self.para + def set_para(self, para): self.para = para + def add_para(self, value): self.para.append(value) + def insert_para(self, index, value): self.para[index] = value + def export(self, outfile, level, namespace_='', name_='docListItemType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docListItemType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='docListItemType'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='docListItemType'): + for para_ in self.para: + para_.export(outfile, level, namespace_, name_='para') + def hasContent_(self): + if ( + self.para is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docListItemType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('para=[\n') + level += 1 + for para in self.para: + showIndent(outfile, level) + outfile.write('model_.para(\n') + para.exportLiteral(outfile, level, name_='para') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'para': + obj_ = docParaType.factory() + obj_.build(child_) + self.para.append(obj_) +# end class docListItemType + + +class docSimpleSectType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, kind=None, title=None, para=None): + self.kind = kind + self.title = title + if para is None: + self.para = [] + else: + self.para = para + def factory(*args_, **kwargs_): + if docSimpleSectType.subclass: + return docSimpleSectType.subclass(*args_, **kwargs_) + else: + return docSimpleSectType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_title(self): return self.title + def set_title(self, title): self.title = title + def get_para(self): return self.para + def set_para(self, para): self.para = para + def add_para(self, value): self.para.append(value) + def insert_para(self, index, value): self.para[index] = value + def get_kind(self): return self.kind + def set_kind(self, kind): self.kind = kind + def export(self, outfile, level, namespace_='', name_='docSimpleSectType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docSimpleSectType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='docSimpleSectType'): + if self.kind is not None: + outfile.write(' kind=%s' % (quote_attrib(self.kind), )) + def exportChildren(self, outfile, level, namespace_='', name_='docSimpleSectType'): + if self.title: + self.title.export(outfile, level, namespace_, name_='title') + for para_ in self.para: + para_.export(outfile, level, namespace_, name_='para') + def hasContent_(self): + if ( + self.title is not None or + self.para is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docSimpleSectType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.kind is not None: + showIndent(outfile, level) + outfile.write('kind = "%s",\n' % (self.kind,)) + def exportLiteralChildren(self, outfile, level, name_): + if self.title: + showIndent(outfile, level) + outfile.write('title=model_.docTitleType(\n') + self.title.exportLiteral(outfile, level, name_='title') + showIndent(outfile, level) + outfile.write('),\n') + showIndent(outfile, level) + outfile.write('para=[\n') + level += 1 + for para in self.para: + showIndent(outfile, level) + outfile.write('model_.para(\n') + para.exportLiteral(outfile, level, name_='para') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('kind'): + self.kind = attrs.get('kind').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'title': + obj_ = docTitleType.factory() + obj_.build(child_) + self.set_title(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'para': + obj_ = docParaType.factory() + obj_.build(child_) + self.para.append(obj_) +# end class docSimpleSectType + + +class docVarListEntryType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, term=None): + self.term = term + def factory(*args_, **kwargs_): + if docVarListEntryType.subclass: + return docVarListEntryType.subclass(*args_, **kwargs_) + else: + return docVarListEntryType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_term(self): return self.term + def set_term(self, term): self.term = term + def export(self, outfile, level, namespace_='', name_='docVarListEntryType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docVarListEntryType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='docVarListEntryType'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='docVarListEntryType'): + if self.term: + self.term.export(outfile, level, namespace_, name_='term', ) + def hasContent_(self): + if ( + self.term is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docVarListEntryType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + if self.term: + showIndent(outfile, level) + outfile.write('term=model_.docTitleType(\n') + self.term.exportLiteral(outfile, level, name_='term') + showIndent(outfile, level) + outfile.write('),\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'term': + obj_ = docTitleType.factory() + obj_.build(child_) + self.set_term(obj_) +# end class docVarListEntryType + + +class docVariableListType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, valueOf_=''): + self.valueOf_ = valueOf_ + def factory(*args_, **kwargs_): + if docVariableListType.subclass: + return docVariableListType.subclass(*args_, **kwargs_) + else: + return docVariableListType(*args_, **kwargs_) + factory = staticmethod(factory) + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='docVariableListType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docVariableListType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='docVariableListType'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='docVariableListType'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docVariableListType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class docVariableListType + + +class docRefTextType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, refid=None, kindref=None, external=None, valueOf_='', mixedclass_=None, content_=None): + self.refid = refid + self.kindref = kindref + self.external = external + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if docRefTextType.subclass: + return docRefTextType.subclass(*args_, **kwargs_) + else: + return docRefTextType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_refid(self): return self.refid + def set_refid(self, refid): self.refid = refid + def get_kindref(self): return self.kindref + def set_kindref(self, kindref): self.kindref = kindref + def get_external(self): return self.external + def set_external(self, external): self.external = external + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='docRefTextType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docRefTextType') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='docRefTextType'): + if self.refid is not None: + outfile.write(' refid=%s' % (self.format_string(quote_attrib(self.refid).encode(ExternalEncoding), input_name='refid'), )) + if self.kindref is not None: + outfile.write(' kindref=%s' % (quote_attrib(self.kindref), )) + if self.external is not None: + outfile.write(' external=%s' % (self.format_string(quote_attrib(self.external).encode(ExternalEncoding), input_name='external'), )) + def exportChildren(self, outfile, level, namespace_='', name_='docRefTextType'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docRefTextType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.refid is not None: + showIndent(outfile, level) + outfile.write('refid = %s,\n' % (self.refid,)) + if self.kindref is not None: + showIndent(outfile, level) + outfile.write('kindref = "%s",\n' % (self.kindref,)) + if self.external is not None: + showIndent(outfile, level) + outfile.write('external = %s,\n' % (self.external,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('refid'): + self.refid = attrs.get('refid').value + if attrs.get('kindref'): + self.kindref = attrs.get('kindref').value + if attrs.get('external'): + self.external = attrs.get('external').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class docRefTextType + + +class docTableType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, rows=None, cols=None, row=None, caption=None): + self.rows = rows + self.cols = cols + if row is None: + self.row = [] + else: + self.row = row + self.caption = caption + def factory(*args_, **kwargs_): + if docTableType.subclass: + return docTableType.subclass(*args_, **kwargs_) + else: + return docTableType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_row(self): return self.row + def set_row(self, row): self.row = row + def add_row(self, value): self.row.append(value) + def insert_row(self, index, value): self.row[index] = value + def get_caption(self): return self.caption + def set_caption(self, caption): self.caption = caption + def get_rows(self): return self.rows + def set_rows(self, rows): self.rows = rows + def get_cols(self): return self.cols + def set_cols(self, cols): self.cols = cols + def export(self, outfile, level, namespace_='', name_='docTableType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docTableType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='docTableType'): + if self.rows is not None: + outfile.write(' rows="%s"' % self.format_integer(self.rows, input_name='rows')) + if self.cols is not None: + outfile.write(' cols="%s"' % self.format_integer(self.cols, input_name='cols')) + def exportChildren(self, outfile, level, namespace_='', name_='docTableType'): + for row_ in self.row: + row_.export(outfile, level, namespace_, name_='row') + if self.caption: + self.caption.export(outfile, level, namespace_, name_='caption') + def hasContent_(self): + if ( + self.row is not None or + self.caption is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docTableType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.rows is not None: + showIndent(outfile, level) + outfile.write('rows = %s,\n' % (self.rows,)) + if self.cols is not None: + showIndent(outfile, level) + outfile.write('cols = %s,\n' % (self.cols,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('row=[\n') + level += 1 + for row in self.row: + showIndent(outfile, level) + outfile.write('model_.row(\n') + row.exportLiteral(outfile, level, name_='row') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + if self.caption: + showIndent(outfile, level) + outfile.write('caption=model_.docCaptionType(\n') + self.caption.exportLiteral(outfile, level, name_='caption') + showIndent(outfile, level) + outfile.write('),\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('rows'): + try: + self.rows = int(attrs.get('rows').value) + except ValueError as exp: + raise ValueError('Bad integer attribute (rows): %s' % exp) + if attrs.get('cols'): + try: + self.cols = int(attrs.get('cols').value) + except ValueError as exp: + raise ValueError('Bad integer attribute (cols): %s' % exp) + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'row': + obj_ = docRowType.factory() + obj_.build(child_) + self.row.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'caption': + obj_ = docCaptionType.factory() + obj_.build(child_) + self.set_caption(obj_) +# end class docTableType + + +class docRowType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, entry=None): + if entry is None: + self.entry = [] + else: + self.entry = entry + def factory(*args_, **kwargs_): + if docRowType.subclass: + return docRowType.subclass(*args_, **kwargs_) + else: + return docRowType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_entry(self): return self.entry + def set_entry(self, entry): self.entry = entry + def add_entry(self, value): self.entry.append(value) + def insert_entry(self, index, value): self.entry[index] = value + def export(self, outfile, level, namespace_='', name_='docRowType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docRowType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='docRowType'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='docRowType'): + for entry_ in self.entry: + entry_.export(outfile, level, namespace_, name_='entry') + def hasContent_(self): + if ( + self.entry is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docRowType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('entry=[\n') + level += 1 + for entry in self.entry: + showIndent(outfile, level) + outfile.write('model_.entry(\n') + entry.exportLiteral(outfile, level, name_='entry') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'entry': + obj_ = docEntryType.factory() + obj_.build(child_) + self.entry.append(obj_) +# end class docRowType + + +class docEntryType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, thead=None, para=None): + self.thead = thead + if para is None: + self.para = [] + else: + self.para = para + def factory(*args_, **kwargs_): + if docEntryType.subclass: + return docEntryType.subclass(*args_, **kwargs_) + else: + return docEntryType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_para(self): return self.para + def set_para(self, para): self.para = para + def add_para(self, value): self.para.append(value) + def insert_para(self, index, value): self.para[index] = value + def get_thead(self): return self.thead + def set_thead(self, thead): self.thead = thead + def export(self, outfile, level, namespace_='', name_='docEntryType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docEntryType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='docEntryType'): + if self.thead is not None: + outfile.write(' thead=%s' % (quote_attrib(self.thead), )) + def exportChildren(self, outfile, level, namespace_='', name_='docEntryType'): + for para_ in self.para: + para_.export(outfile, level, namespace_, name_='para') + def hasContent_(self): + if ( + self.para is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docEntryType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.thead is not None: + showIndent(outfile, level) + outfile.write('thead = "%s",\n' % (self.thead,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('para=[\n') + level += 1 + for para in self.para: + showIndent(outfile, level) + outfile.write('model_.para(\n') + para.exportLiteral(outfile, level, name_='para') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('thead'): + self.thead = attrs.get('thead').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'para': + obj_ = docParaType.factory() + obj_.build(child_) + self.para.append(obj_) +# end class docEntryType + + +class docCaptionType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, valueOf_='', mixedclass_=None, content_=None): + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if docCaptionType.subclass: + return docCaptionType.subclass(*args_, **kwargs_) + else: + return docCaptionType(*args_, **kwargs_) + factory = staticmethod(factory) + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='docCaptionType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docCaptionType') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='docCaptionType'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='docCaptionType'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docCaptionType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class docCaptionType + + +class docHeadingType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, level=None, valueOf_='', mixedclass_=None, content_=None): + self.level = level + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if docHeadingType.subclass: + return docHeadingType.subclass(*args_, **kwargs_) + else: + return docHeadingType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_level(self): return self.level + def set_level(self, level): self.level = level + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='docHeadingType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docHeadingType') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='docHeadingType'): + if self.level is not None: + outfile.write(' level="%s"' % self.format_integer(self.level, input_name='level')) + def exportChildren(self, outfile, level, namespace_='', name_='docHeadingType'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docHeadingType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.level is not None: + showIndent(outfile, level) + outfile.write('level = %s,\n' % (self.level,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('level'): + try: + self.level = int(attrs.get('level').value) + except ValueError as exp: + raise ValueError('Bad integer attribute (level): %s' % exp) + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class docHeadingType + + +class docImageType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, width=None, type_=None, name=None, height=None, valueOf_='', mixedclass_=None, content_=None): + self.width = width + self.type_ = type_ + self.name = name + self.height = height + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if docImageType.subclass: + return docImageType.subclass(*args_, **kwargs_) + else: + return docImageType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_width(self): return self.width + def set_width(self, width): self.width = width + def get_type(self): return self.type_ + def set_type(self, type_): self.type_ = type_ + def get_name(self): return self.name + def set_name(self, name): self.name = name + def get_height(self): return self.height + def set_height(self, height): self.height = height + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='docImageType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docImageType') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='docImageType'): + if self.width is not None: + outfile.write(' width=%s' % (self.format_string(quote_attrib(self.width).encode(ExternalEncoding), input_name='width'), )) + if self.type_ is not None: + outfile.write(' type=%s' % (quote_attrib(self.type_), )) + if self.name is not None: + outfile.write(' name=%s' % (self.format_string(quote_attrib(self.name).encode(ExternalEncoding), input_name='name'), )) + if self.height is not None: + outfile.write(' height=%s' % (self.format_string(quote_attrib(self.height).encode(ExternalEncoding), input_name='height'), )) + def exportChildren(self, outfile, level, namespace_='', name_='docImageType'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docImageType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.width is not None: + showIndent(outfile, level) + outfile.write('width = %s,\n' % (self.width,)) + if self.type_ is not None: + showIndent(outfile, level) + outfile.write('type_ = "%s",\n' % (self.type_,)) + if self.name is not None: + showIndent(outfile, level) + outfile.write('name = %s,\n' % (self.name,)) + if self.height is not None: + showIndent(outfile, level) + outfile.write('height = %s,\n' % (self.height,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('width'): + self.width = attrs.get('width').value + if attrs.get('type'): + self.type_ = attrs.get('type').value + if attrs.get('name'): + self.name = attrs.get('name').value + if attrs.get('height'): + self.height = attrs.get('height').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class docImageType + + +class docDotFileType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, name=None, valueOf_='', mixedclass_=None, content_=None): + self.name = name + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if docDotFileType.subclass: + return docDotFileType.subclass(*args_, **kwargs_) + else: + return docDotFileType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_name(self): return self.name + def set_name(self, name): self.name = name + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='docDotFileType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docDotFileType') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='docDotFileType'): + if self.name is not None: + outfile.write(' name=%s' % (self.format_string(quote_attrib(self.name).encode(ExternalEncoding), input_name='name'), )) + def exportChildren(self, outfile, level, namespace_='', name_='docDotFileType'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docDotFileType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.name is not None: + showIndent(outfile, level) + outfile.write('name = %s,\n' % (self.name,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('name'): + self.name = attrs.get('name').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class docDotFileType + + +class docTocItemType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, id=None, valueOf_='', mixedclass_=None, content_=None): + self.id = id + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if docTocItemType.subclass: + return docTocItemType.subclass(*args_, **kwargs_) + else: + return docTocItemType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_id(self): return self.id + def set_id(self, id): self.id = id + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='docTocItemType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docTocItemType') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='docTocItemType'): + if self.id is not None: + outfile.write(' id=%s' % (self.format_string(quote_attrib(self.id).encode(ExternalEncoding), input_name='id'), )) + def exportChildren(self, outfile, level, namespace_='', name_='docTocItemType'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docTocItemType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.id is not None: + showIndent(outfile, level) + outfile.write('id = %s,\n' % (self.id,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('id'): + self.id = attrs.get('id').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class docTocItemType + + +class docTocListType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, tocitem=None): + if tocitem is None: + self.tocitem = [] + else: + self.tocitem = tocitem + def factory(*args_, **kwargs_): + if docTocListType.subclass: + return docTocListType.subclass(*args_, **kwargs_) + else: + return docTocListType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_tocitem(self): return self.tocitem + def set_tocitem(self, tocitem): self.tocitem = tocitem + def add_tocitem(self, value): self.tocitem.append(value) + def insert_tocitem(self, index, value): self.tocitem[index] = value + def export(self, outfile, level, namespace_='', name_='docTocListType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docTocListType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='docTocListType'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='docTocListType'): + for tocitem_ in self.tocitem: + tocitem_.export(outfile, level, namespace_, name_='tocitem') + def hasContent_(self): + if ( + self.tocitem is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docTocListType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('tocitem=[\n') + level += 1 + for tocitem in self.tocitem: + showIndent(outfile, level) + outfile.write('model_.tocitem(\n') + tocitem.exportLiteral(outfile, level, name_='tocitem') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'tocitem': + obj_ = docTocItemType.factory() + obj_.build(child_) + self.tocitem.append(obj_) +# end class docTocListType + + +class docLanguageType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, langid=None, para=None): + self.langid = langid + if para is None: + self.para = [] + else: + self.para = para + def factory(*args_, **kwargs_): + if docLanguageType.subclass: + return docLanguageType.subclass(*args_, **kwargs_) + else: + return docLanguageType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_para(self): return self.para + def set_para(self, para): self.para = para + def add_para(self, value): self.para.append(value) + def insert_para(self, index, value): self.para[index] = value + def get_langid(self): return self.langid + def set_langid(self, langid): self.langid = langid + def export(self, outfile, level, namespace_='', name_='docLanguageType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docLanguageType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='docLanguageType'): + if self.langid is not None: + outfile.write(' langid=%s' % (self.format_string(quote_attrib(self.langid).encode(ExternalEncoding), input_name='langid'), )) + def exportChildren(self, outfile, level, namespace_='', name_='docLanguageType'): + for para_ in self.para: + para_.export(outfile, level, namespace_, name_='para') + def hasContent_(self): + if ( + self.para is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docLanguageType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.langid is not None: + showIndent(outfile, level) + outfile.write('langid = %s,\n' % (self.langid,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('para=[\n') + level += 1 + for para in self.para: + showIndent(outfile, level) + outfile.write('model_.para(\n') + para.exportLiteral(outfile, level, name_='para') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('langid'): + self.langid = attrs.get('langid').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'para': + obj_ = docParaType.factory() + obj_.build(child_) + self.para.append(obj_) +# end class docLanguageType + + +class docParamListType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, kind=None, parameteritem=None): + self.kind = kind + if parameteritem is None: + self.parameteritem = [] + else: + self.parameteritem = parameteritem + def factory(*args_, **kwargs_): + if docParamListType.subclass: + return docParamListType.subclass(*args_, **kwargs_) + else: + return docParamListType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_parameteritem(self): return self.parameteritem + def set_parameteritem(self, parameteritem): self.parameteritem = parameteritem + def add_parameteritem(self, value): self.parameteritem.append(value) + def insert_parameteritem(self, index, value): self.parameteritem[index] = value + def get_kind(self): return self.kind + def set_kind(self, kind): self.kind = kind + def export(self, outfile, level, namespace_='', name_='docParamListType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docParamListType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='docParamListType'): + if self.kind is not None: + outfile.write(' kind=%s' % (quote_attrib(self.kind), )) + def exportChildren(self, outfile, level, namespace_='', name_='docParamListType'): + for parameteritem_ in self.parameteritem: + parameteritem_.export(outfile, level, namespace_, name_='parameteritem') + def hasContent_(self): + if ( + self.parameteritem is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docParamListType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.kind is not None: + showIndent(outfile, level) + outfile.write('kind = "%s",\n' % (self.kind,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('parameteritem=[\n') + level += 1 + for parameteritem in self.parameteritem: + showIndent(outfile, level) + outfile.write('model_.parameteritem(\n') + parameteritem.exportLiteral(outfile, level, name_='parameteritem') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('kind'): + self.kind = attrs.get('kind').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'parameteritem': + obj_ = docParamListItem.factory() + obj_.build(child_) + self.parameteritem.append(obj_) +# end class docParamListType + + +class docParamListItem(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, parameternamelist=None, parameterdescription=None): + if parameternamelist is None: + self.parameternamelist = [] + else: + self.parameternamelist = parameternamelist + self.parameterdescription = parameterdescription + def factory(*args_, **kwargs_): + if docParamListItem.subclass: + return docParamListItem.subclass(*args_, **kwargs_) + else: + return docParamListItem(*args_, **kwargs_) + factory = staticmethod(factory) + def get_parameternamelist(self): return self.parameternamelist + def set_parameternamelist(self, parameternamelist): self.parameternamelist = parameternamelist + def add_parameternamelist(self, value): self.parameternamelist.append(value) + def insert_parameternamelist(self, index, value): self.parameternamelist[index] = value + def get_parameterdescription(self): return self.parameterdescription + def set_parameterdescription(self, parameterdescription): self.parameterdescription = parameterdescription + def export(self, outfile, level, namespace_='', name_='docParamListItem', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docParamListItem') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='docParamListItem'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='docParamListItem'): + for parameternamelist_ in self.parameternamelist: + parameternamelist_.export(outfile, level, namespace_, name_='parameternamelist') + if self.parameterdescription: + self.parameterdescription.export(outfile, level, namespace_, name_='parameterdescription', ) + def hasContent_(self): + if ( + self.parameternamelist is not None or + self.parameterdescription is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docParamListItem'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('parameternamelist=[\n') + level += 1 + for parameternamelist in self.parameternamelist: + showIndent(outfile, level) + outfile.write('model_.parameternamelist(\n') + parameternamelist.exportLiteral(outfile, level, name_='parameternamelist') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + if self.parameterdescription: + showIndent(outfile, level) + outfile.write('parameterdescription=model_.descriptionType(\n') + self.parameterdescription.exportLiteral(outfile, level, name_='parameterdescription') + showIndent(outfile, level) + outfile.write('),\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'parameternamelist': + obj_ = docParamNameList.factory() + obj_.build(child_) + self.parameternamelist.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'parameterdescription': + obj_ = descriptionType.factory() + obj_.build(child_) + self.set_parameterdescription(obj_) +# end class docParamListItem + + +class docParamNameList(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, parametername=None): + if parametername is None: + self.parametername = [] + else: + self.parametername = parametername + def factory(*args_, **kwargs_): + if docParamNameList.subclass: + return docParamNameList.subclass(*args_, **kwargs_) + else: + return docParamNameList(*args_, **kwargs_) + factory = staticmethod(factory) + def get_parametername(self): return self.parametername + def set_parametername(self, parametername): self.parametername = parametername + def add_parametername(self, value): self.parametername.append(value) + def insert_parametername(self, index, value): self.parametername[index] = value + def export(self, outfile, level, namespace_='', name_='docParamNameList', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docParamNameList') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='docParamNameList'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='docParamNameList'): + for parametername_ in self.parametername: + parametername_.export(outfile, level, namespace_, name_='parametername') + def hasContent_(self): + if ( + self.parametername is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docParamNameList'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('parametername=[\n') + level += 1 + for parametername in self.parametername: + showIndent(outfile, level) + outfile.write('model_.parametername(\n') + parametername.exportLiteral(outfile, level, name_='parametername') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'parametername': + obj_ = docParamName.factory() + obj_.build(child_) + self.parametername.append(obj_) +# end class docParamNameList + + +class docParamName(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, direction=None, ref=None, mixedclass_=None, content_=None): + self.direction = direction + if mixedclass_ is None: + self.mixedclass_ = MixedContainer + else: + self.mixedclass_ = mixedclass_ + if content_ is None: + self.content_ = [] + else: + self.content_ = content_ + def factory(*args_, **kwargs_): + if docParamName.subclass: + return docParamName.subclass(*args_, **kwargs_) + else: + return docParamName(*args_, **kwargs_) + factory = staticmethod(factory) + def get_ref(self): return self.ref + def set_ref(self, ref): self.ref = ref + def get_direction(self): return self.direction + def set_direction(self, direction): self.direction = direction + def export(self, outfile, level, namespace_='', name_='docParamName', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docParamName') + outfile.write('>') + self.exportChildren(outfile, level + 1, namespace_, name_) + outfile.write('\n' % (namespace_, name_)) + def exportAttributes(self, outfile, level, namespace_='', name_='docParamName'): + if self.direction is not None: + outfile.write(' direction=%s' % (quote_attrib(self.direction), )) + def exportChildren(self, outfile, level, namespace_='', name_='docParamName'): + for item_ in self.content_: + item_.export(outfile, level, item_.name, namespace_) + def hasContent_(self): + if ( + self.ref is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docParamName'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.direction is not None: + showIndent(outfile, level) + outfile.write('direction = "%s",\n' % (self.direction,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('content_ = [\n') + for item_ in self.content_: + item_.exportLiteral(outfile, level, name_) + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('direction'): + self.direction = attrs.get('direction').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'ref': + childobj_ = docRefTextType.factory() + childobj_.build(child_) + obj_ = self.mixedclass_(MixedContainer.CategoryComplex, + MixedContainer.TypeNone, 'ref', childobj_) + self.content_.append(obj_) + elif child_.nodeType == Node.TEXT_NODE: + obj_ = self.mixedclass_(MixedContainer.CategoryText, + MixedContainer.TypeNone, '', child_.nodeValue) + self.content_.append(obj_) +# end class docParamName + + +class docXRefSectType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, id=None, xreftitle=None, xrefdescription=None): + self.id = id + if xreftitle is None: + self.xreftitle = [] + else: + self.xreftitle = xreftitle + self.xrefdescription = xrefdescription + def factory(*args_, **kwargs_): + if docXRefSectType.subclass: + return docXRefSectType.subclass(*args_, **kwargs_) + else: + return docXRefSectType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_xreftitle(self): return self.xreftitle + def set_xreftitle(self, xreftitle): self.xreftitle = xreftitle + def add_xreftitle(self, value): self.xreftitle.append(value) + def insert_xreftitle(self, index, value): self.xreftitle[index] = value + def get_xrefdescription(self): return self.xrefdescription + def set_xrefdescription(self, xrefdescription): self.xrefdescription = xrefdescription + def get_id(self): return self.id + def set_id(self, id): self.id = id + def export(self, outfile, level, namespace_='', name_='docXRefSectType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docXRefSectType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='docXRefSectType'): + if self.id is not None: + outfile.write(' id=%s' % (self.format_string(quote_attrib(self.id).encode(ExternalEncoding), input_name='id'), )) + def exportChildren(self, outfile, level, namespace_='', name_='docXRefSectType'): + for xreftitle_ in self.xreftitle: + showIndent(outfile, level) + outfile.write('<%sxreftitle>%s\n' % (namespace_, self.format_string(quote_xml(xreftitle_).encode(ExternalEncoding), input_name='xreftitle'), namespace_)) + if self.xrefdescription: + self.xrefdescription.export(outfile, level, namespace_, name_='xrefdescription', ) + def hasContent_(self): + if ( + self.xreftitle is not None or + self.xrefdescription is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docXRefSectType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.id is not None: + showIndent(outfile, level) + outfile.write('id = %s,\n' % (self.id,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('xreftitle=[\n') + level += 1 + for xreftitle in self.xreftitle: + showIndent(outfile, level) + outfile.write('%s,\n' % quote_python(xreftitle).encode(ExternalEncoding)) + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + if self.xrefdescription: + showIndent(outfile, level) + outfile.write('xrefdescription=model_.descriptionType(\n') + self.xrefdescription.exportLiteral(outfile, level, name_='xrefdescription') + showIndent(outfile, level) + outfile.write('),\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('id'): + self.id = attrs.get('id').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'xreftitle': + xreftitle_ = '' + for text__content_ in child_.childNodes: + xreftitle_ += text__content_.nodeValue + self.xreftitle.append(xreftitle_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'xrefdescription': + obj_ = descriptionType.factory() + obj_.build(child_) + self.set_xrefdescription(obj_) +# end class docXRefSectType + + +class docCopyType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, link=None, para=None, sect1=None, internal=None): + self.link = link + if para is None: + self.para = [] + else: + self.para = para + if sect1 is None: + self.sect1 = [] + else: + self.sect1 = sect1 + self.internal = internal + def factory(*args_, **kwargs_): + if docCopyType.subclass: + return docCopyType.subclass(*args_, **kwargs_) + else: + return docCopyType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_para(self): return self.para + def set_para(self, para): self.para = para + def add_para(self, value): self.para.append(value) + def insert_para(self, index, value): self.para[index] = value + def get_sect1(self): return self.sect1 + def set_sect1(self, sect1): self.sect1 = sect1 + def add_sect1(self, value): self.sect1.append(value) + def insert_sect1(self, index, value): self.sect1[index] = value + def get_internal(self): return self.internal + def set_internal(self, internal): self.internal = internal + def get_link(self): return self.link + def set_link(self, link): self.link = link + def export(self, outfile, level, namespace_='', name_='docCopyType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docCopyType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='docCopyType'): + if self.link is not None: + outfile.write(' link=%s' % (self.format_string(quote_attrib(self.link).encode(ExternalEncoding), input_name='link'), )) + def exportChildren(self, outfile, level, namespace_='', name_='docCopyType'): + for para_ in self.para: + para_.export(outfile, level, namespace_, name_='para') + for sect1_ in self.sect1: + sect1_.export(outfile, level, namespace_, name_='sect1') + if self.internal: + self.internal.export(outfile, level, namespace_, name_='internal') + def hasContent_(self): + if ( + self.para is not None or + self.sect1 is not None or + self.internal is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docCopyType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.link is not None: + showIndent(outfile, level) + outfile.write('link = %s,\n' % (self.link,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('para=[\n') + level += 1 + for para in self.para: + showIndent(outfile, level) + outfile.write('model_.para(\n') + para.exportLiteral(outfile, level, name_='para') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + showIndent(outfile, level) + outfile.write('sect1=[\n') + level += 1 + for sect1 in self.sect1: + showIndent(outfile, level) + outfile.write('model_.sect1(\n') + sect1.exportLiteral(outfile, level, name_='sect1') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + if self.internal: + showIndent(outfile, level) + outfile.write('internal=model_.docInternalType(\n') + self.internal.exportLiteral(outfile, level, name_='internal') + showIndent(outfile, level) + outfile.write('),\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('link'): + self.link = attrs.get('link').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'para': + obj_ = docParaType.factory() + obj_.build(child_) + self.para.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'sect1': + obj_ = docSect1Type.factory() + obj_.build(child_) + self.sect1.append(obj_) + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'internal': + obj_ = docInternalType.factory() + obj_.build(child_) + self.set_internal(obj_) +# end class docCopyType + + +class docCharType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, char=None, valueOf_=''): + self.char = char + self.valueOf_ = valueOf_ + def factory(*args_, **kwargs_): + if docCharType.subclass: + return docCharType.subclass(*args_, **kwargs_) + else: + return docCharType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_char(self): return self.char + def set_char(self, char): self.char = char + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='docCharType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docCharType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='docCharType'): + if self.char is not None: + outfile.write(' char=%s' % (quote_attrib(self.char), )) + def exportChildren(self, outfile, level, namespace_='', name_='docCharType'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docCharType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.char is not None: + showIndent(outfile, level) + outfile.write('char = "%s",\n' % (self.char,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('char'): + self.char = attrs.get('char').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class docCharType + + +class docEmptyType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, valueOf_=''): + self.valueOf_ = valueOf_ + def factory(*args_, **kwargs_): + if docEmptyType.subclass: + return docEmptyType.subclass(*args_, **kwargs_) + else: + return docEmptyType(*args_, **kwargs_) + factory = staticmethod(factory) + def getValueOf_(self): return self.valueOf_ + def setValueOf_(self, valueOf_): self.valueOf_ = valueOf_ + def export(self, outfile, level, namespace_='', name_='docEmptyType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='docEmptyType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='docEmptyType'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='docEmptyType'): + if self.valueOf_.find('![CDATA')>-1: + value=quote_xml('%s' % self.valueOf_) + value=value.replace('![CDATA','') + outfile.write(value) + else: + outfile.write(quote_xml('%s' % self.valueOf_)) + def hasContent_(self): + if ( + self.valueOf_ is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='docEmptyType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('valueOf_ = "%s",\n' % (self.valueOf_,)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + self.valueOf_ = '' + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + pass + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.TEXT_NODE: + self.valueOf_ += child_.nodeValue + elif child_.nodeType == Node.CDATA_SECTION_NODE: + self.valueOf_ += '![CDATA['+child_.nodeValue+']]' +# end class docEmptyType + + +USAGE_TEXT = """ +Usage: python .py [ -s ] +Options: + -s Use the SAX parser, not the minidom parser. +""" + +def usage(): + print(USAGE_TEXT) + sys.exit(1) + + +def parse(inFileName): + doc = minidom.parse(inFileName) + rootNode = doc.documentElement + rootObj = DoxygenType.factory() + rootObj.build(rootNode) + # Enable Python to collect the space used by the DOM. + doc = None + sys.stdout.write('\n') + rootObj.export(sys.stdout, 0, name_="doxygen", + namespacedef_='') + return rootObj + + +def parseString(inString): + doc = minidom.parseString(inString) + rootNode = doc.documentElement + rootObj = DoxygenType.factory() + rootObj.build(rootNode) + # Enable Python to collect the space used by the DOM. + doc = None + sys.stdout.write('\n') + rootObj.export(sys.stdout, 0, name_="doxygen", + namespacedef_='') + return rootObj + + +def parseLiteral(inFileName): + doc = minidom.parse(inFileName) + rootNode = doc.documentElement + rootObj = DoxygenType.factory() + rootObj.build(rootNode) + # Enable Python to collect the space used by the DOM. + doc = None + sys.stdout.write('from compound import *\n\n') + sys.stdout.write('rootObj = doxygen(\n') + rootObj.exportLiteral(sys.stdout, 0, name_="doxygen") + sys.stdout.write(')\n') + return rootObj + + +def main(): + args = sys.argv[1:] + if len(args) == 1: + parse(args[0]) + else: + usage() + + +if __name__ == '__main__': + main() + #import pdb + #pdb.run('main()') diff --git a/docs/doxygen/doxyxml/generated/index.py b/docs/doxygen/doxyxml/generated/index.py new file mode 100644 index 0000000..0c63512 --- /dev/null +++ b/docs/doxygen/doxyxml/generated/index.py @@ -0,0 +1,79 @@ +#!/usr/bin/env python + +""" +Generated Mon Feb 9 19:08:05 2009 by generateDS.py. +""" +from __future__ import absolute_import +from __future__ import unicode_literals + +from xml.dom import minidom + +import os +import sys +from . import compound + +from . import indexsuper as supermod + +class DoxygenTypeSub(supermod.DoxygenType): + def __init__(self, version=None, compound=None): + supermod.DoxygenType.__init__(self, version, compound) + + def find_compounds_and_members(self, details): + """ + Returns a list of all compounds and their members which match details + """ + + results = [] + for compound in self.compound: + members = compound.find_members(details) + if members: + results.append([compound, members]) + else: + if details.match(compound): + results.append([compound, []]) + + return results + +supermod.DoxygenType.subclass = DoxygenTypeSub +# end class DoxygenTypeSub + + +class CompoundTypeSub(supermod.CompoundType): + def __init__(self, kind=None, refid=None, name='', member=None): + supermod.CompoundType.__init__(self, kind, refid, name, member) + + def find_members(self, details): + """ + Returns a list of all members which match details + """ + + results = [] + + for member in self.member: + if details.match(member): + results.append(member) + + return results + +supermod.CompoundType.subclass = CompoundTypeSub +# end class CompoundTypeSub + + +class MemberTypeSub(supermod.MemberType): + + def __init__(self, kind=None, refid=None, name=''): + supermod.MemberType.__init__(self, kind, refid, name) + +supermod.MemberType.subclass = MemberTypeSub +# end class MemberTypeSub + + +def parse(inFilename): + + doc = minidom.parse(inFilename) + rootNode = doc.documentElement + rootObj = supermod.DoxygenType.factory() + rootObj.build(rootNode) + + return rootObj + diff --git a/docs/doxygen/doxyxml/generated/indexsuper.py b/docs/doxygen/doxyxml/generated/indexsuper.py new file mode 100644 index 0000000..11312db --- /dev/null +++ b/docs/doxygen/doxyxml/generated/indexsuper.py @@ -0,0 +1,526 @@ +#!/usr/bin/env python + +# +# Generated Thu Jun 11 18:43:54 2009 by generateDS.py. +# + +from __future__ import print_function +from __future__ import unicode_literals + +import sys + +from xml.dom import minidom +from xml.dom import Node + +import six + +# +# User methods +# +# Calls to the methods in these classes are generated by generateDS.py. +# You can replace these methods by re-implementing the following class +# in a module named generatedssuper.py. + +try: + from generatedssuper import GeneratedsSuper +except ImportError as exp: + + class GeneratedsSuper(object): + def format_string(self, input_data, input_name=''): + return input_data + def format_integer(self, input_data, input_name=''): + return '%d' % input_data + def format_float(self, input_data, input_name=''): + return '%f' % input_data + def format_double(self, input_data, input_name=''): + return '%e' % input_data + def format_boolean(self, input_data, input_name=''): + return '%s' % input_data + + +# +# If you have installed IPython you can uncomment and use the following. +# IPython is available from http://ipython.scipy.org/. +# + +## from IPython.Shell import IPShellEmbed +## args = '' +## ipshell = IPShellEmbed(args, +## banner = 'Dropping into IPython', +## exit_msg = 'Leaving Interpreter, back to program.') + +# Then use the following line where and when you want to drop into the +# IPython shell: +# ipshell(' -- Entering ipshell.\nHit Ctrl-D to exit') + +# +# Globals +# + +ExternalEncoding = 'ascii' + +# +# Support/utility functions. +# + +def showIndent(outfile, level): + for idx in range(level): + outfile.write(' ') + +def quote_xml(inStr): + s1 = (isinstance(inStr, six.string_types) and inStr or + '%s' % inStr) + s1 = s1.replace('&', '&') + s1 = s1.replace('<', '<') + s1 = s1.replace('>', '>') + return s1 + +def quote_attrib(inStr): + s1 = (isinstance(inStr, six.string_types) and inStr or + '%s' % inStr) + s1 = s1.replace('&', '&') + s1 = s1.replace('<', '<') + s1 = s1.replace('>', '>') + if '"' in s1: + if "'" in s1: + s1 = '"%s"' % s1.replace('"', """) + else: + s1 = "'%s'" % s1 + else: + s1 = '"%s"' % s1 + return s1 + +def quote_python(inStr): + s1 = inStr + if s1.find("'") == -1: + if s1.find('\n') == -1: + return "'%s'" % s1 + else: + return "'''%s'''" % s1 + else: + if s1.find('"') != -1: + s1 = s1.replace('"', '\\"') + if s1.find('\n') == -1: + return '"%s"' % s1 + else: + return '"""%s"""' % s1 + + +class MixedContainer(object): + # Constants for category: + CategoryNone = 0 + CategoryText = 1 + CategorySimple = 2 + CategoryComplex = 3 + # Constants for content_type: + TypeNone = 0 + TypeText = 1 + TypeString = 2 + TypeInteger = 3 + TypeFloat = 4 + TypeDecimal = 5 + TypeDouble = 6 + TypeBoolean = 7 + def __init__(self, category, content_type, name, value): + self.category = category + self.content_type = content_type + self.name = name + self.value = value + def getCategory(self): + return self.category + def getContenttype(self, content_type): + return self.content_type + def getValue(self): + return self.value + def getName(self): + return self.name + def export(self, outfile, level, name, namespace): + if self.category == MixedContainer.CategoryText: + outfile.write(self.value) + elif self.category == MixedContainer.CategorySimple: + self.exportSimple(outfile, level, name) + else: # category == MixedContainer.CategoryComplex + self.value.export(outfile, level, namespace,name) + def exportSimple(self, outfile, level, name): + if self.content_type == MixedContainer.TypeString: + outfile.write('<%s>%s' % (self.name, self.value, self.name)) + elif self.content_type == MixedContainer.TypeInteger or \ + self.content_type == MixedContainer.TypeBoolean: + outfile.write('<%s>%d' % (self.name, self.value, self.name)) + elif self.content_type == MixedContainer.TypeFloat or \ + self.content_type == MixedContainer.TypeDecimal: + outfile.write('<%s>%f' % (self.name, self.value, self.name)) + elif self.content_type == MixedContainer.TypeDouble: + outfile.write('<%s>%g' % (self.name, self.value, self.name)) + def exportLiteral(self, outfile, level, name): + if self.category == MixedContainer.CategoryText: + showIndent(outfile, level) + outfile.write('MixedContainer(%d, %d, "%s", "%s"),\n' % \ + (self.category, self.content_type, self.name, self.value)) + elif self.category == MixedContainer.CategorySimple: + showIndent(outfile, level) + outfile.write('MixedContainer(%d, %d, "%s", "%s"),\n' % \ + (self.category, self.content_type, self.name, self.value)) + else: # category == MixedContainer.CategoryComplex + showIndent(outfile, level) + outfile.write('MixedContainer(%d, %d, "%s",\n' % \ + (self.category, self.content_type, self.name,)) + self.value.exportLiteral(outfile, level + 1) + showIndent(outfile, level) + outfile.write(')\n') + + +class _MemberSpec(object): + def __init__(self, name='', data_type='', container=0): + self.name = name + self.data_type = data_type + self.container = container + def set_name(self, name): self.name = name + def get_name(self): return self.name + def set_data_type(self, data_type): self.data_type = data_type + def get_data_type(self): return self.data_type + def set_container(self, container): self.container = container + def get_container(self): return self.container + + +# +# Data representation classes. +# + +class DoxygenType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, version=None, compound=None): + self.version = version + if compound is None: + self.compound = [] + else: + self.compound = compound + def factory(*args_, **kwargs_): + if DoxygenType.subclass: + return DoxygenType.subclass(*args_, **kwargs_) + else: + return DoxygenType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_compound(self): return self.compound + def set_compound(self, compound): self.compound = compound + def add_compound(self, value): self.compound.append(value) + def insert_compound(self, index, value): self.compound[index] = value + def get_version(self): return self.version + def set_version(self, version): self.version = version + def export(self, outfile, level, namespace_='', name_='DoxygenType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='DoxygenType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='DoxygenType'): + outfile.write(' version=%s' % (self.format_string(quote_attrib(self.version).encode(ExternalEncoding), input_name='version'), )) + def exportChildren(self, outfile, level, namespace_='', name_='DoxygenType'): + for compound_ in self.compound: + compound_.export(outfile, level, namespace_, name_='compound') + def hasContent_(self): + if ( + self.compound is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='DoxygenType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.version is not None: + showIndent(outfile, level) + outfile.write('version = %s,\n' % (self.version,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('compound=[\n') + level += 1 + for compound in self.compound: + showIndent(outfile, level) + outfile.write('model_.compound(\n') + compound.exportLiteral(outfile, level, name_='compound') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('version'): + self.version = attrs.get('version').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'compound': + obj_ = CompoundType.factory() + obj_.build(child_) + self.compound.append(obj_) +# end class DoxygenType + + +class CompoundType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, kind=None, refid=None, name=None, member=None): + self.kind = kind + self.refid = refid + self.name = name + if member is None: + self.member = [] + else: + self.member = member + def factory(*args_, **kwargs_): + if CompoundType.subclass: + return CompoundType.subclass(*args_, **kwargs_) + else: + return CompoundType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_name(self): return self.name + def set_name(self, name): self.name = name + def get_member(self): return self.member + def set_member(self, member): self.member = member + def add_member(self, value): self.member.append(value) + def insert_member(self, index, value): self.member[index] = value + def get_kind(self): return self.kind + def set_kind(self, kind): self.kind = kind + def get_refid(self): return self.refid + def set_refid(self, refid): self.refid = refid + def export(self, outfile, level, namespace_='', name_='CompoundType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='CompoundType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='CompoundType'): + outfile.write(' kind=%s' % (quote_attrib(self.kind), )) + outfile.write(' refid=%s' % (self.format_string(quote_attrib(self.refid).encode(ExternalEncoding), input_name='refid'), )) + def exportChildren(self, outfile, level, namespace_='', name_='CompoundType'): + if self.name is not None: + showIndent(outfile, level) + outfile.write('<%sname>%s\n' % (namespace_, self.format_string(quote_xml(self.name).encode(ExternalEncoding), input_name='name'), namespace_)) + for member_ in self.member: + member_.export(outfile, level, namespace_, name_='member') + def hasContent_(self): + if ( + self.name is not None or + self.member is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='CompoundType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.kind is not None: + showIndent(outfile, level) + outfile.write('kind = "%s",\n' % (self.kind,)) + if self.refid is not None: + showIndent(outfile, level) + outfile.write('refid = %s,\n' % (self.refid,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('name=%s,\n' % quote_python(self.name).encode(ExternalEncoding)) + showIndent(outfile, level) + outfile.write('member=[\n') + level += 1 + for member in self.member: + showIndent(outfile, level) + outfile.write('model_.member(\n') + member.exportLiteral(outfile, level, name_='member') + showIndent(outfile, level) + outfile.write('),\n') + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('kind'): + self.kind = attrs.get('kind').value + if attrs.get('refid'): + self.refid = attrs.get('refid').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'name': + name_ = '' + for text__content_ in child_.childNodes: + name_ += text__content_.nodeValue + self.name = name_ + elif child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'member': + obj_ = MemberType.factory() + obj_.build(child_) + self.member.append(obj_) +# end class CompoundType + + +class MemberType(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, kind=None, refid=None, name=None): + self.kind = kind + self.refid = refid + self.name = name + def factory(*args_, **kwargs_): + if MemberType.subclass: + return MemberType.subclass(*args_, **kwargs_) + else: + return MemberType(*args_, **kwargs_) + factory = staticmethod(factory) + def get_name(self): return self.name + def set_name(self, name): self.name = name + def get_kind(self): return self.kind + def set_kind(self, kind): self.kind = kind + def get_refid(self): return self.refid + def set_refid(self, refid): self.refid = refid + def export(self, outfile, level, namespace_='', name_='MemberType', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s %s' % (namespace_, name_, namespacedef_, )) + self.exportAttributes(outfile, level, namespace_, name_='MemberType') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('\n' % (namespace_, name_)) + else: + outfile.write(' />\n') + def exportAttributes(self, outfile, level, namespace_='', name_='MemberType'): + outfile.write(' kind=%s' % (quote_attrib(self.kind), )) + outfile.write(' refid=%s' % (self.format_string(quote_attrib(self.refid).encode(ExternalEncoding), input_name='refid'), )) + def exportChildren(self, outfile, level, namespace_='', name_='MemberType'): + if self.name is not None: + showIndent(outfile, level) + outfile.write('<%sname>%s\n' % (namespace_, self.format_string(quote_xml(self.name).encode(ExternalEncoding), input_name='name'), namespace_)) + def hasContent_(self): + if ( + self.name is not None + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='MemberType'): + level += 1 + self.exportLiteralAttributes(outfile, level, name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, name_): + if self.kind is not None: + showIndent(outfile, level) + outfile.write('kind = "%s",\n' % (self.kind,)) + if self.refid is not None: + showIndent(outfile, level) + outfile.write('refid = %s,\n' % (self.refid,)) + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('name=%s,\n' % quote_python(self.name).encode(ExternalEncoding)) + def build(self, node_): + attrs = node_.attributes + self.buildAttributes(attrs) + for child_ in node_.childNodes: + nodeName_ = child_.nodeName.split(':')[-1] + self.buildChildren(child_, nodeName_) + def buildAttributes(self, attrs): + if attrs.get('kind'): + self.kind = attrs.get('kind').value + if attrs.get('refid'): + self.refid = attrs.get('refid').value + def buildChildren(self, child_, nodeName_): + if child_.nodeType == Node.ELEMENT_NODE and \ + nodeName_ == 'name': + name_ = '' + for text__content_ in child_.childNodes: + name_ += text__content_.nodeValue + self.name = name_ +# end class MemberType + + +USAGE_TEXT = """ +Usage: python .py [ -s ] +Options: + -s Use the SAX parser, not the minidom parser. +""" + +def usage(): + print(USAGE_TEXT) + sys.exit(1) + + +def parse(inFileName): + doc = minidom.parse(inFileName) + rootNode = doc.documentElement + rootObj = DoxygenType.factory() + rootObj.build(rootNode) + # Enable Python to collect the space used by the DOM. + doc = None + sys.stdout.write('\n') + rootObj.export(sys.stdout, 0, name_="doxygenindex", + namespacedef_='') + return rootObj + + +def parseString(inString): + doc = minidom.parseString(inString) + rootNode = doc.documentElement + rootObj = DoxygenType.factory() + rootObj.build(rootNode) + # Enable Python to collect the space used by the DOM. + doc = None + sys.stdout.write('\n') + rootObj.export(sys.stdout, 0, name_="doxygenindex", + namespacedef_='') + return rootObj + + +def parseLiteral(inFileName): + doc = minidom.parse(inFileName) + rootNode = doc.documentElement + rootObj = DoxygenType.factory() + rootObj.build(rootNode) + # Enable Python to collect the space used by the DOM. + doc = None + sys.stdout.write('from index import *\n\n') + sys.stdout.write('rootObj = doxygenindex(\n') + rootObj.exportLiteral(sys.stdout, 0, name_="doxygenindex") + sys.stdout.write(')\n') + return rootObj + + +def main(): + args = sys.argv[1:] + if len(args) == 1: + parse(args[0]) + else: + usage() + + + + +if __name__ == '__main__': + main() + #import pdb + #pdb.run('main()') diff --git a/docs/doxygen/doxyxml/text.py b/docs/doxygen/doxyxml/text.py new file mode 100644 index 0000000..c0d8b12 --- /dev/null +++ b/docs/doxygen/doxyxml/text.py @@ -0,0 +1,58 @@ +# +# Copyright 2010 Free Software Foundation, Inc. +# +# This file was generated by gr_modtool, a tool from the GNU Radio framework +# This file is a part of gr-tempest +# +# 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. +# +""" +Utilities for extracting text from generated classes. +""" +from __future__ import unicode_literals + +def is_string(txt): + if isinstance(txt, str): + return True + try: + if isinstance(txt, str): + return True + except NameError: + pass + return False + +def description(obj): + if obj is None: + return None + return description_bit(obj).strip() + +def description_bit(obj): + if hasattr(obj, 'content'): + contents = [description_bit(item) for item in obj.content] + result = ''.join(contents) + elif hasattr(obj, 'content_'): + contents = [description_bit(item) for item in obj.content_] + result = ''.join(contents) + elif hasattr(obj, 'value'): + result = description_bit(obj.value) + elif is_string(obj): + return obj + else: + raise Exception('Expecting a string or something with content, content_ or value attribute') + # If this bit is a paragraph then add one some line breaks. + if hasattr(obj, 'name') and obj.name == 'para': + result += "\n\n" + return result diff --git a/docs/doxygen/other/group_defs.dox b/docs/doxygen/other/group_defs.dox new file mode 100644 index 0000000..7ff61c5 --- /dev/null +++ b/docs/doxygen/other/group_defs.dox @@ -0,0 +1,7 @@ +/*! + * \defgroup block GNU Radio TEMPEST C++ Signal Processing Blocks + * \brief All C++ blocks that can be used from the TEMPEST GNU Radio + * module are listed here or in the subcategories below. + * + */ + diff --git a/docs/doxygen/other/main_page.dox b/docs/doxygen/other/main_page.dox new file mode 100644 index 0000000..f0d22c1 --- /dev/null +++ b/docs/doxygen/other/main_page.dox @@ -0,0 +1,10 @@ +/*! \mainpage + +Welcome to the GNU Radio TEMPEST Block + +This is the intro page for the Doxygen manual generated for the TEMPEST +block (docs/doxygen/other/main_page.dox). Edit it to add more detailed +documentation about the new GNU Radio modules contained in this +project. + +*/ diff --git a/docs/doxygen/swig_doc.py b/docs/doxygen/swig_doc.py new file mode 100644 index 0000000..56691e2 --- /dev/null +++ b/docs/doxygen/swig_doc.py @@ -0,0 +1,332 @@ +# +# Copyright 2010-2012 Free Software Foundation, Inc. +# +# This file was generated by gr_modtool, a tool from the GNU Radio framework +# This file is a part of gr-tempest +# +# 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. +# +""" +Creates the swig_doc.i SWIG interface file. +Execute using: python swig_doc.py xml_path outputfilename + +The file instructs SWIG to transfer the doxygen comments into the +python docstrings. + +""" +from __future__ import unicode_literals + +import sys, time + +from doxyxml import DoxyIndex, DoxyClass, DoxyFriend, DoxyFunction, DoxyFile +from doxyxml import DoxyOther, base + +def py_name(name): + bits = name.split('_') + return '_'.join(bits[1:]) + +def make_name(name): + bits = name.split('_') + return bits[0] + '_make_' + '_'.join(bits[1:]) + + +class Block(object): + """ + Checks if doxyxml produced objects correspond to a gnuradio block. + """ + + @classmethod + def includes(cls, item): + if not isinstance(item, DoxyClass): + return False + # Check for a parsing error. + if item.error(): + return False + friendname = make_name(item.name()) + is_a_block = item.has_member(friendname, DoxyFriend) + # But now sometimes the make function isn't a friend so check again. + if not is_a_block: + is_a_block = di.has_member(friendname, DoxyFunction) + return is_a_block + +class Block2(object): + """ + Checks if doxyxml produced objects correspond to a new style + gnuradio block. + """ + + @classmethod + def includes(cls, item): + if not isinstance(item, DoxyClass): + return False + # Check for a parsing error. + if item.error(): + return False + is_a_block2 = item.has_member('make', DoxyFunction) and item.has_member('sptr', DoxyOther) + return is_a_block2 + + +def utoascii(text): + """ + Convert unicode text into ascii and escape quotes and backslashes. + """ + if text is None: + return '' + out = text.encode('ascii', 'replace') + # swig will require us to replace blackslash with 4 backslashes + out = out.replace(b'\\', b'\\\\\\\\') + out = out.replace(b'"', b'\\"').decode('ascii') + return str(out) + + +def combine_descriptions(obj): + """ + Combines the brief and detailed descriptions of an object together. + """ + description = [] + bd = obj.brief_description.strip() + dd = obj.detailed_description.strip() + if bd: + description.append(bd) + if dd: + description.append(dd) + return utoascii('\n\n'.join(description)).strip() + +def format_params(parameteritems): + output = ['Args:'] + template = ' {0} : {1}' + for pi in parameteritems: + output.append(template.format(pi.name, pi.description)) + return '\n'.join(output) + +entry_templ = '%feature("docstring") {name} "{docstring}"' +def make_entry(obj, name=None, templ="{description}", description=None, params=[]): + """ + Create a docstring entry for a swig interface file. + + obj - a doxyxml object from which documentation will be extracted. + name - the name of the C object (defaults to obj.name()) + templ - an optional template for the docstring containing only one + variable named 'description'. + description - if this optional variable is set then it's value is + used as the description instead of extracting it from obj. + """ + if name is None: + name=obj.name() + if "operator " in name: + return '' + if description is None: + description = combine_descriptions(obj) + if params: + description += '\n\n' + description += utoascii(format_params(params)) + docstring = templ.format(description=description) + if not docstring: + return '' + return entry_templ.format( + name=name, + docstring=docstring, + ) + + +def make_func_entry(func, name=None, description=None, params=None): + """ + Create a function docstring entry for a swig interface file. + + func - a doxyxml object from which documentation will be extracted. + name - the name of the C object (defaults to func.name()) + description - if this optional variable is set then it's value is + used as the description instead of extracting it from func. + params - a parameter list that overrides using func.params. + """ + #if params is None: + # params = func.params + #params = [prm.declname for prm in params] + #if params: + # sig = "Params: (%s)" % ", ".join(params) + #else: + # sig = "Params: (NONE)" + #templ = "{description}\n\n" + sig + #return make_entry(func, name=name, templ=utoascii(templ), + # description=description) + return make_entry(func, name=name, description=description, params=params) + + +def make_class_entry(klass, description=None, ignored_methods=[], params=None): + """ + Create a class docstring for a swig interface file. + """ + if params is None: + params = klass.params + output = [] + output.append(make_entry(klass, description=description, params=params)) + for func in klass.in_category(DoxyFunction): + if func.name() not in ignored_methods: + name = klass.name() + '::' + func.name() + output.append(make_func_entry(func, name=name)) + return "\n\n".join(output) + + +def make_block_entry(di, block): + """ + Create class and function docstrings of a gnuradio block for a + swig interface file. + """ + descriptions = [] + # Get the documentation associated with the class. + class_desc = combine_descriptions(block) + if class_desc: + descriptions.append(class_desc) + # Get the documentation associated with the make function + make_func = di.get_member(make_name(block.name()), DoxyFunction) + make_func_desc = combine_descriptions(make_func) + if make_func_desc: + descriptions.append(make_func_desc) + # Get the documentation associated with the file + try: + block_file = di.get_member(block.name() + ".h", DoxyFile) + file_desc = combine_descriptions(block_file) + if file_desc: + descriptions.append(file_desc) + except base.Base.NoSuchMember: + # Don't worry if we can't find a matching file. + pass + # And join them all together to make a super duper description. + super_description = "\n\n".join(descriptions) + # Associate the combined description with the class and + # the make function. + output = [] + output.append(make_class_entry(block, description=super_description)) + output.append(make_func_entry(make_func, description=super_description, + params=block.params)) + return "\n\n".join(output) + +def make_block2_entry(di, block): + """ + Create class and function docstrings of a new style gnuradio block for a + swig interface file. + """ + descriptions = [] + # For new style blocks all the relevant documentation should be + # associated with the 'make' method. + class_description = combine_descriptions(block) + make_func = block.get_member('make', DoxyFunction) + make_description = combine_descriptions(make_func) + description = class_description + "\n\nConstructor Specific Documentation:\n\n" + make_description + # Associate the combined description with the class and + # the make function. + output = [] + output.append(make_class_entry( + block, description=description, + ignored_methods=['make'], params=make_func.params)) + makename = block.name() + '::make' + output.append(make_func_entry( + make_func, name=makename, description=description, + params=make_func.params)) + return "\n\n".join(output) + +def make_swig_interface_file(di, swigdocfilename, custom_output=None): + + output = [""" +/* + * This file was automatically generated using swig_doc.py. + * + * Any changes to it will be lost next time it is regenerated. + */ +"""] + + if custom_output is not None: + output.append(custom_output) + + # Create docstrings for the blocks. + blocks = di.in_category(Block) + blocks2 = di.in_category(Block2) + + make_funcs = set([]) + for block in blocks: + try: + make_func = di.get_member(make_name(block.name()), DoxyFunction) + # Don't want to risk writing to output twice. + if make_func.name() not in make_funcs: + make_funcs.add(make_func.name()) + output.append(make_block_entry(di, block)) + except block.ParsingError: + sys.stderr.write('Parsing error for block {0}\n'.format(block.name())) + raise + + for block in blocks2: + try: + make_func = block.get_member('make', DoxyFunction) + make_func_name = block.name() +'::make' + # Don't want to risk writing to output twice. + if make_func_name not in make_funcs: + make_funcs.add(make_func_name) + output.append(make_block2_entry(di, block)) + except block.ParsingError: + sys.stderr.write('Parsing error for block {0}\n'.format(block.name())) + raise + + # Create docstrings for functions + # Don't include the make functions since they have already been dealt with. + funcs = [f for f in di.in_category(DoxyFunction) + if f.name() not in make_funcs and not f.name().startswith('std::')] + for f in funcs: + try: + output.append(make_func_entry(f)) + except f.ParsingError: + sys.stderr.write('Parsing error for function {0}\n'.format(f.name())) + + # Create docstrings for classes + block_names = [block.name() for block in blocks] + block_names += [block.name() for block in blocks2] + klasses = [k for k in di.in_category(DoxyClass) + if k.name() not in block_names and not k.name().startswith('std::')] + for k in klasses: + try: + output.append(make_class_entry(k)) + except k.ParsingError: + sys.stderr.write('Parsing error for class {0}\n'.format(k.name())) + + # Docstrings are not created for anything that is not a function or a class. + # If this excludes anything important please add it here. + + output = "\n\n".join(output) + + swig_doc = open(swigdocfilename, 'w') + swig_doc.write(output) + swig_doc.close() + +if __name__ == "__main__": + # Parse command line options and set up doxyxml. + err_msg = "Execute using: python swig_doc.py xml_path outputfilename" + if len(sys.argv) != 3: + raise Exception(err_msg) + xml_path = sys.argv[1] + swigdocfilename = sys.argv[2] + di = DoxyIndex(xml_path) + + # gnuradio.gr.msq_queue.insert_tail and delete_head create errors unless docstrings are defined! + # This is presumably a bug in SWIG. + #msg_q = di.get_member(u'gr_msg_queue', DoxyClass) + #insert_tail = msg_q.get_member(u'insert_tail', DoxyFunction) + #delete_head = msg_q.get_member(u'delete_head', DoxyFunction) + output = [] + #output.append(make_func_entry(insert_tail, name='gr_py_msg_queue__insert_tail')) + #output.append(make_func_entry(delete_head, name='gr_py_msg_queue__delete_head')) + custom_output = "\n\n".join(output) + + # Generate the docstrings interface file. + make_swig_interface_file(di, swigdocfilename, custom_output=custom_output) diff --git a/examples/Demo/HDMI_50MHzSps_1485MHzCentral_Magnitude.grc b/examples/Demo/HDMI_50MHzSps_1485MHzCentral_Magnitude.grc new file mode 100644 index 0000000..503f022 --- /dev/null +++ b/examples/Demo/HDMI_50MHzSps_1485MHzCentral_Magnitude.grc @@ -0,0 +1,1029 @@ +options: + parameters: + author: '' + category: '[GRC Hier Blocks]' + cmake_opt: '' + comment: '' + copyright: '' + description: '' + gen_cmake: 'On' + gen_linking: dynamic + generate_options: qt_gui + hier_block_src_path: '.:' + id: manual_tempest_example + max_nouts: '0' + output_language: python + placement: (0,0) + qt_qss_theme: '' + realtime_scheduling: '1' + run: 'True' + run_command: '{python} -u {filename}' + run_options: prompt + sizing_mode: fixed + thread_safe_setters: '' + title: '' + window_size: '' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [15, 12] + rotation: 0 + state: enabled + +blocks: +- name: DelaySyncDetector + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: '' + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '0' + step: interpolatedHsize*1 + stop: Vsize*interpolatedHsize + value: interpolatedHsize*1 + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1061, 35] + rotation: 0 + state: enabled +- name: DroppedFrames + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: '' + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '1' + step: '1' + stop: '100' + value: '50' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [859, 34] + rotation: 0 + state: true +- name: Hblank + id: variable + parameters: + comment: '' + value: Hsize-Hvisible + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [740, 220] + rotation: 0 + state: enabled +- name: Hsize + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: Horizontal resolution (total) + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: int(4096*1.5) + value: '2200' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [505, 34] + rotation: 0 + state: enabled +- name: Hvisible + id: variable + parameters: + comment: '' + value: '1920' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [740, 156] + rotation: 0 + state: enabled +- name: Vblank + id: variable + parameters: + comment: '' + value: Vsize-Vvisible + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [656, 220] + rotation: 0 + state: enabled +- name: Vsize + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: Vertical resolution (total) + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: int(2160*1.5) + value: '1125' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [649, 34] + rotation: 0 + state: enabled +- name: Vvisible + id: variable + parameters: + comment: '' + value: '1080' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [649, 157] + rotation: 0 + state: enabled +- name: fft_size + id: variable + parameters: + comment: '' + value: 2**21 + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [226, 244] + rotation: 0 + state: true +- name: harmonic + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: Harmonic + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '1' + step: '1' + stop: '10' + value: '1' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [226, 127] + rotation: 0 + state: enabled +- name: interpolatedHblank + id: variable + parameters: + comment: '' + value: int(Hblank/float(px_rate)*samp_rate) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [506, 215] + rotation: 0 + state: enabled +- name: interpolatedHscreen + id: variable + parameters: + comment: '' + value: int(Hvisible/float(px_rate)*samp_rate) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [506, 278] + rotation: 0 + state: enabled +- name: interpolatedHsize + id: variable + parameters: + comment: '' + value: int(Hsize/float(px_rate)*samp_rate) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [506, 154] + rotation: 0 + state: enabled +- name: inverted + id: variable_qtgui_chooser + parameters: + comment: '' + gui_hint: tab_m@0 + label: Inverted colors? + label0: 'Yes' + label1: 'No' + label2: '' + label3: '' + label4: '' + labels: '[]' + num_opts: '2' + option1: '1' + option2: '2' + option3: '3' + option4: '4' + options: '[0, 1, 2]' + orient: Qt.QHBoxLayout + type: real + value: '-1' + widget: radio_buttons + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [21, 235] + rotation: 0 + state: enabled +- name: px_rate + id: variable + parameters: + comment: '' + value: Hsize*Vsize*refresh_rate + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [332, 244] + rotation: 0 + state: enabled +- name: refresh_rate + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: Refresh Rate (Hz) + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '0' + step: '1' + stop: '240' + value: '60' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [331, 126] + rotation: 0 + state: enabled +- name: samp_rate + id: variable + parameters: + comment: '' + value: int(50e6) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [225, 61] + rotation: 0 + state: enabled +- name: FFT_autocorrelation_0_0 + id: FFT_autocorrelation + parameters: + affinity: '' + alias: '' + alpha: '1.0' + comment: '' + fft_size: int(fft_size) + maxoutbuf: '0' + minoutbuf: '0' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [597, 634] + rotation: 270 + state: enabled +- name: Keep_1_in_N_Frames_0 + id: Keep_1_in_N_Frames + parameters: + affinity: '' + alias: '' + comment: '' + fac_decimation: DroppedFrames + fft_size: interpolatedHsize*Vsize*4 + maxoutbuf: '0' + minoutbuf: '0' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [506, 470] + rotation: 0 + state: enabled +- name: blocks_complex_to_mag_0 + id: blocks_complex_to_mag + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1336, 493] + rotation: 0 + state: enabled +- name: blocks_delay_0_0 + id: blocks_delay + parameters: + affinity: '' + alias: '' + comment: '' + delay: DelaySyncDetector + maxoutbuf: '0' + minoutbuf: '0' + num_ports: '1' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1099, 491] + rotation: 0 + state: enabled +- name: blocks_float_to_short_0 + id: blocks_float_to_short + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + scale: inverted + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1496, 796] + rotation: 270 + state: enabled +- name: import_0 + id: import + parameters: + alias: '' + comment: '' + imports: from math import pi + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [22, 185] + rotation: 0 + state: true +- name: qtgui_time_sink_x_1 + id: qtgui_time_sink_x + parameters: + affinity: '' + alias: '' + alpha1: '1.0' + alpha10: '1.0' + alpha2: '1.0' + alpha3: '1.0' + alpha4: '1.0' + alpha5: '1.0' + alpha6: '1.0' + alpha7: '1.0' + alpha8: '1.0' + alpha9: '1.0' + autoscale: 'False' + axislabels: 'True' + color1: blue + color10: dark blue + color2: red + color3: green + color4: black + color5: cyan + color6: magenta + color7: yellow + color8: dark red + color9: dark green + comment: '' + ctrlpanel: 'False' + entags: 'True' + grid: 'True' + gui_hint: tab_m@1 + label1: Signal 1 + label10: Signal 10 + label2: Signal 2 + label3: Signal 3 + label4: Signal 4 + label5: Signal 5 + label6: Signal 6 + label7: Signal 7 + label8: Signal 8 + label9: Signal 9 + legend: 'True' + marker1: '-1' + marker10: '-1' + marker2: '-1' + marker3: '-1' + marker4: '-1' + marker5: '-1' + marker6: '-1' + marker7: '-1' + marker8: '-1' + marker9: '-1' + name: '""' + nconnections: '1' + size: int(fft_size/2) + srate: samp_rate + stemplot: 'False' + style1: '1' + style10: '1' + style2: '1' + style3: '1' + style4: '1' + style5: '1' + style6: '1' + style7: '1' + style8: '1' + style9: '1' + tr_chan: '0' + tr_delay: '0' + tr_level: '15.0' + tr_mode: qtgui.TRIG_MODE_NORM + tr_slope: qtgui.TRIG_SLOPE_POS + tr_tag: '"peak_1"' + type: float + update_time: '2.0' + width1: '1' + width10: '1' + width2: '1' + width3: '1' + width4: '1' + width5: '1' + width6: '1' + width7: '1' + width8: '1' + width9: '1' + ylabel: Amplitude + ymax: '1' + ymin: '-1' + yunit: '""' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [868, 623] + rotation: 270 + state: enabled +- name: ratio_finder_toggle_on_and_off + id: variable_qtgui_msg_push_button + parameters: + comment: '' + gui_hint: '' + label: Ratio Finder toggle ON or OFF (FFT peaks). + msgName: pressed + relBackgroundColor: default + relFontColor: default + type: bool + value: 'True' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [874, 817] + rotation: 180 + state: enabled +- name: tab_m + id: qtgui_tab_widget + parameters: + alias: '' + comment: '' + gui_hint: '' + label0: Tempest Main Tab + label1: Autocorrelation Plot Tab + label10: Tab 10 + label11: Tab 11 + label12: Tab 12 + label13: Tab 13 + label14: Tab 14 + label15: Tab 15 + label16: Tab 16 + label17: Tab 17 + label18: Tab 18 + label19: Tab 19 + label2: Tab 2 + label3: Tab 3 + label4: Tab 4 + label5: Tab 5 + label6: Tab 6 + label7: Tab 7 + label8: Tab 8 + label9: Tab 9 + num_tabs: '2' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [17, 92] + rotation: 0 + state: true +- name: tempest_fft_peak_fine_sampling_sync_0_0 + id: tempest_fft_peak_fine_sampling_sync + parameters: + Hvisible: interpolatedHsize + Vvisible: Vsize + affinity: '' + alias: '' + automatic_mode: 'True' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + refresh_rate: refresh_rate + sample_rate: samp_rate + size: int(fft_size) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [706, 628] + rotation: 90 + state: enabled +- name: tempest_normalize_flow_0 + id: tempest_normalize_flow + parameters: + affinity: '' + alias: '' + alpha_avg: 1e-2 + comment: '' + max: '245' + maxoutbuf: '0' + min: '10' + minoutbuf: '0' + update_proba: '0.1' + window: interpolatedHsize + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1472, 578] + rotation: 270 + state: enabled +- name: tempest_sync_detector_0_0 + id: tempest_sync_detector + parameters: + affinity: '' + alias: '' + comment: '' + hblanking: interpolatedHblank + hscreen: interpolatedHscreen + maxoutbuf: '0' + minoutbuf: '0' + vblanking: Vblank + vscreen: Vsize-Vblank + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [842, 473] + rotation: 0 + state: enabled +- name: uhd_usrp_source_0 + id: uhd_usrp_source + parameters: + affinity: '' + alias: '' + ant0: '' + ant1: '' + ant10: '' + ant11: '' + ant12: '' + ant13: '' + ant14: '' + ant15: '' + ant16: '' + ant17: '' + ant18: '' + ant19: '' + ant2: '' + ant20: '' + ant21: '' + ant22: '' + ant23: '' + ant24: '' + ant25: '' + ant26: '' + ant27: '' + ant28: '' + ant29: '' + ant3: '' + ant30: '' + ant31: '' + ant4: '' + ant5: '' + ant6: '' + ant7: '' + ant8: '' + ant9: '' + bw0: '0' + bw1: '0' + bw10: '0' + bw11: '0' + bw12: '0' + bw13: '0' + bw14: '0' + bw15: '0' + bw16: '0' + bw17: '0' + bw18: '0' + bw19: '0' + bw2: '0' + bw20: '0' + bw21: '0' + bw22: '0' + bw23: '0' + bw24: '0' + bw25: '0' + bw26: '0' + bw27: '0' + bw28: '0' + bw29: '0' + bw3: '0' + bw30: '0' + bw31: '0' + bw4: '0' + bw5: '0' + bw6: '0' + bw7: '0' + bw8: '0' + bw9: '0' + center_freq0: px_rate*harmonic + center_freq1: '0' + center_freq10: '0' + center_freq11: '0' + center_freq12: '0' + center_freq13: '0' + center_freq14: '0' + center_freq15: '0' + center_freq16: '0' + center_freq17: '0' + center_freq18: '0' + center_freq19: '0' + center_freq2: '0' + center_freq20: '0' + center_freq21: '0' + center_freq22: '0' + center_freq23: '0' + center_freq24: '0' + center_freq25: '0' + center_freq26: '0' + center_freq27: '0' + center_freq28: '0' + center_freq29: '0' + center_freq3: '0' + center_freq30: '0' + center_freq31: '0' + center_freq4: '0' + center_freq5: '0' + center_freq6: '0' + center_freq7: '0' + center_freq8: '0' + center_freq9: '0' + clock_rate: '0.0' + clock_source0: '' + clock_source1: '' + clock_source2: '' + clock_source3: '' + clock_source4: '' + clock_source5: '' + clock_source6: '' + clock_source7: '' + comment: '' + dc_offs_enb0: '""' + dc_offs_enb1: '""' + dc_offs_enb10: '""' + dc_offs_enb11: '""' + dc_offs_enb12: '""' + dc_offs_enb13: '""' + dc_offs_enb14: '""' + dc_offs_enb15: '""' + dc_offs_enb16: '""' + dc_offs_enb17: '""' + dc_offs_enb18: '""' + dc_offs_enb19: '""' + dc_offs_enb2: '""' + dc_offs_enb20: '""' + dc_offs_enb21: '""' + dc_offs_enb22: '""' + dc_offs_enb23: '""' + dc_offs_enb24: '""' + dc_offs_enb25: '""' + dc_offs_enb26: '""' + dc_offs_enb27: '""' + dc_offs_enb28: '""' + dc_offs_enb29: '""' + dc_offs_enb3: '""' + dc_offs_enb30: '""' + dc_offs_enb31: '""' + dc_offs_enb4: '""' + dc_offs_enb5: '""' + dc_offs_enb6: '""' + dc_offs_enb7: '""' + dc_offs_enb8: '""' + dc_offs_enb9: '""' + dev_addr: '""' + dev_args: '"recv_frame_size= 65536, num_recv_frames=128"' + gain0: '50' + gain1: '0' + gain10: '0' + gain11: '0' + gain12: '0' + gain13: '0' + gain14: '0' + gain15: '0' + gain16: '0' + gain17: '0' + gain18: '0' + gain19: '0' + gain2: '0' + gain20: '0' + gain21: '0' + gain22: '0' + gain23: '0' + gain24: '0' + gain25: '0' + gain26: '0' + gain27: '0' + gain28: '0' + gain29: '0' + gain3: '0' + gain30: '0' + gain31: '0' + gain4: '0' + gain5: '0' + gain6: '0' + gain7: '0' + gain8: '0' + gain9: '0' + iq_imbal_enb0: '""' + iq_imbal_enb1: '""' + iq_imbal_enb10: '""' + iq_imbal_enb11: '""' + iq_imbal_enb12: '""' + iq_imbal_enb13: '""' + iq_imbal_enb14: '""' + iq_imbal_enb15: '""' + iq_imbal_enb16: '""' + iq_imbal_enb17: '""' + iq_imbal_enb18: '""' + iq_imbal_enb19: '""' + iq_imbal_enb2: '""' + iq_imbal_enb20: '""' + iq_imbal_enb21: '""' + iq_imbal_enb22: '""' + iq_imbal_enb23: '""' + iq_imbal_enb24: '""' + iq_imbal_enb25: '""' + iq_imbal_enb26: '""' + iq_imbal_enb27: '""' + iq_imbal_enb28: '""' + iq_imbal_enb29: '""' + iq_imbal_enb3: '""' + iq_imbal_enb30: '""' + iq_imbal_enb31: '""' + iq_imbal_enb4: '""' + iq_imbal_enb5: '""' + iq_imbal_enb6: '""' + iq_imbal_enb7: '""' + iq_imbal_enb8: '""' + iq_imbal_enb9: '""' + lo_export0: 'False' + lo_export1: 'False' + lo_export10: 'False' + lo_export11: 'False' + lo_export12: 'False' + lo_export13: 'False' + lo_export14: 'False' + lo_export15: 'False' + lo_export16: 'False' + lo_export17: 'False' + lo_export18: 'False' + lo_export19: 'False' + lo_export2: 'False' + lo_export20: 'False' + lo_export21: 'False' + lo_export22: 'False' + lo_export23: 'False' + lo_export24: 'False' + lo_export25: 'False' + lo_export26: 'False' + lo_export27: 'False' + lo_export28: 'False' + lo_export29: 'False' + lo_export3: 'False' + lo_export30: 'False' + lo_export31: 'False' + lo_export4: 'False' + lo_export5: 'False' + lo_export6: 'False' + lo_export7: 'False' + lo_export8: 'False' + lo_export9: 'False' + lo_source0: internal + lo_source1: internal + lo_source10: internal + lo_source11: internal + lo_source12: internal + lo_source13: internal + lo_source14: internal + lo_source15: internal + lo_source16: internal + lo_source17: internal + lo_source18: internal + lo_source19: internal + lo_source2: internal + lo_source20: internal + lo_source21: internal + lo_source22: internal + lo_source23: internal + lo_source24: internal + lo_source25: internal + lo_source26: internal + lo_source27: internal + lo_source28: internal + lo_source29: internal + lo_source3: internal + lo_source30: internal + lo_source31: internal + lo_source4: internal + lo_source5: internal + lo_source6: internal + lo_source7: internal + lo_source8: internal + lo_source9: internal + maxoutbuf: '0' + minoutbuf: '0' + nchan: '1' + norm_gain0: 'False' + norm_gain1: 'False' + norm_gain10: 'False' + norm_gain11: 'False' + norm_gain12: 'False' + norm_gain13: 'False' + norm_gain14: 'False' + norm_gain15: 'False' + norm_gain16: 'False' + norm_gain17: 'False' + norm_gain18: 'False' + norm_gain19: 'False' + norm_gain2: 'False' + norm_gain20: 'False' + norm_gain21: 'False' + norm_gain22: 'False' + norm_gain23: 'False' + norm_gain24: 'False' + norm_gain25: 'False' + norm_gain26: 'False' + norm_gain27: 'False' + norm_gain28: 'False' + norm_gain29: 'False' + norm_gain3: 'False' + norm_gain30: 'False' + norm_gain31: 'False' + norm_gain4: 'False' + norm_gain5: 'False' + norm_gain6: 'False' + norm_gain7: 'False' + norm_gain8: 'False' + norm_gain9: 'False' + num_mboards: '1' + otw: '' + rx_agc0: Default + rx_agc1: Default + rx_agc10: Default + rx_agc11: Default + rx_agc12: Default + rx_agc13: Default + rx_agc14: Default + rx_agc15: Default + rx_agc16: Default + rx_agc17: Default + rx_agc18: Default + rx_agc19: Default + rx_agc2: Default + rx_agc20: Default + rx_agc21: Default + rx_agc22: Default + rx_agc23: Default + rx_agc24: Default + rx_agc25: Default + rx_agc26: Default + rx_agc27: Default + rx_agc28: Default + rx_agc29: Default + rx_agc3: Default + rx_agc30: Default + rx_agc31: Default + rx_agc4: Default + rx_agc5: Default + rx_agc6: Default + rx_agc7: Default + rx_agc8: Default + rx_agc9: Default + samp_rate: samp_rate + sd_spec0: '' + sd_spec1: '' + sd_spec2: '' + sd_spec3: '' + sd_spec4: '' + sd_spec5: '' + sd_spec6: '' + sd_spec7: '' + show_lo_controls: 'False' + stream_args: '' + stream_chans: '[]' + sync: sync + time_source0: '' + time_source1: '' + time_source2: '' + time_source3: '' + time_source4: '' + time_source5: '' + time_source6: '' + time_source7: '' + type: fc32 + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [240, 438] + rotation: 0 + state: enabled +- name: video_sdl_sink_0_0_0 + id: video_sdl_sink + parameters: + affinity: '' + alias: '' + comment: "Enable this path when you are sure what the \nresolution is (and defaut\ + \ to those values on \nthe chooser)." + display_height: '517' + display_width: '1088' + fps: '0' + height: Vsize + num_channels: '1' + type: short + width: interpolatedHsize + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1473, 1001] + rotation: 270 + state: enabled + +connections: +- [FFT_autocorrelation_0_0, '0', tempest_fft_peak_fine_sampling_sync_0_0, '0'] +- [Keep_1_in_N_Frames_0, '0', FFT_autocorrelation_0_0, '0'] +- [Keep_1_in_N_Frames_0, '0', tempest_sync_detector_0_0, '0'] +- [blocks_complex_to_mag_0, '0', tempest_normalize_flow_0, '0'] +- [blocks_delay_0_0, '0', blocks_complex_to_mag_0, '0'] +- [blocks_float_to_short_0, '0', video_sdl_sink_0_0_0, '0'] +- [ratio_finder_toggle_on_and_off, pressed, tempest_fft_peak_fine_sampling_sync_0_0, + en] +- [tempest_fft_peak_fine_sampling_sync_0_0, '0', qtgui_time_sink_x_1, '0'] +- [tempest_fft_peak_fine_sampling_sync_0_0, en, FFT_autocorrelation_0_0, en] +- [tempest_fft_peak_fine_sampling_sync_0_0, en, tempest_sync_detector_0_0, en] +- [tempest_fft_peak_fine_sampling_sync_0_0, rate, uhd_usrp_source_0, command] +- [tempest_normalize_flow_0, '0', blocks_float_to_short_0, '0'] +- [tempest_sync_detector_0_0, '0', blocks_delay_0_0, '0'] +- [uhd_usrp_source_0, '0', Keep_1_in_N_Frames_0, '0'] + +metadata: + file_format: 1 diff --git a/examples/Demo/HDMI_50MHzSps_300MHzCentral_Magnitude.grc b/examples/Demo/HDMI_50MHzSps_300MHzCentral_Magnitude.grc new file mode 100644 index 0000000..23083e9 --- /dev/null +++ b/examples/Demo/HDMI_50MHzSps_300MHzCentral_Magnitude.grc @@ -0,0 +1,1029 @@ +options: + parameters: + author: '' + category: '[GRC Hier Blocks]' + cmake_opt: '' + comment: '' + copyright: '' + description: '' + gen_cmake: 'On' + gen_linking: dynamic + generate_options: qt_gui + hier_block_src_path: '.:' + id: manual_tempest_example + max_nouts: '0' + output_language: python + placement: (0,0) + qt_qss_theme: '' + realtime_scheduling: '1' + run: 'True' + run_command: '{python} -u {filename}' + run_options: prompt + sizing_mode: fixed + thread_safe_setters: '' + title: '' + window_size: '' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [15, 12] + rotation: 0 + state: enabled + +blocks: +- name: DelaySyncDetector + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: '' + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '0' + step: interpolatedHsize*1 + stop: Vsize*interpolatedHsize + value: interpolatedHsize*1 + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1061, 35] + rotation: 0 + state: enabled +- name: DroppedFrames + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: '' + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '1' + step: '1' + stop: '100' + value: '50' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [859, 34] + rotation: 0 + state: true +- name: Hblank + id: variable + parameters: + comment: '' + value: Hsize-Hvisible + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [740, 220] + rotation: 0 + state: enabled +- name: Hsize + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: Horizontal resolution (total) + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: int(4096*1.5) + value: '2200' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [505, 34] + rotation: 0 + state: enabled +- name: Hvisible + id: variable + parameters: + comment: '' + value: '1920' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [740, 156] + rotation: 0 + state: enabled +- name: Vblank + id: variable + parameters: + comment: '' + value: Vsize-Vvisible + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [656, 220] + rotation: 0 + state: enabled +- name: Vsize + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: Vertical resolution (total) + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: int(2160*1.5) + value: '1125' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [649, 34] + rotation: 0 + state: enabled +- name: Vvisible + id: variable + parameters: + comment: '' + value: '1080' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [649, 157] + rotation: 0 + state: enabled +- name: fft_size + id: variable + parameters: + comment: '' + value: 2**21 + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [226, 244] + rotation: 0 + state: true +- name: harmonic + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: Harmonic + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '1' + step: '1' + stop: '10' + value: '2' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [226, 127] + rotation: 0 + state: enabled +- name: interpolatedHblank + id: variable + parameters: + comment: '' + value: int(Hblank/float(px_rate)*samp_rate) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [506, 215] + rotation: 0 + state: enabled +- name: interpolatedHscreen + id: variable + parameters: + comment: '' + value: int(Hvisible/float(px_rate)*samp_rate) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [506, 278] + rotation: 0 + state: enabled +- name: interpolatedHsize + id: variable + parameters: + comment: '' + value: int(Hsize/float(px_rate)*samp_rate) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [506, 154] + rotation: 0 + state: enabled +- name: inverted + id: variable_qtgui_chooser + parameters: + comment: '' + gui_hint: tab_m@0 + label: Inverted colors? + label0: 'Yes' + label1: 'No' + label2: '' + label3: '' + label4: '' + labels: '[]' + num_opts: '2' + option1: '1' + option2: '2' + option3: '3' + option4: '4' + options: '[0, 1, 2]' + orient: Qt.QHBoxLayout + type: real + value: '-1' + widget: radio_buttons + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [21, 235] + rotation: 0 + state: enabled +- name: px_rate + id: variable + parameters: + comment: '' + value: Hsize*Vsize*refresh_rate + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [332, 244] + rotation: 0 + state: enabled +- name: refresh_rate + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: Refresh Rate (Hz) + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '0' + step: '1' + stop: '240' + value: '60' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [331, 126] + rotation: 0 + state: enabled +- name: samp_rate + id: variable + parameters: + comment: '' + value: int(50e6) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [225, 61] + rotation: 0 + state: enabled +- name: FFT_autocorrelation_0_0 + id: FFT_autocorrelation + parameters: + affinity: '' + alias: '' + alpha: '1.0' + comment: '' + fft_size: int(fft_size) + maxoutbuf: '0' + minoutbuf: '0' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [648, 809] + rotation: 270 + state: enabled +- name: Keep_1_in_N_Frames_0 + id: Keep_1_in_N_Frames + parameters: + affinity: '' + alias: '' + comment: '' + fac_decimation: DroppedFrames + fft_size: interpolatedHsize*Vsize*4 + maxoutbuf: '0' + minoutbuf: '0' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [506, 470] + rotation: 0 + state: enabled +- name: blocks_complex_to_mag_0 + id: blocks_complex_to_mag + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1336, 493] + rotation: 0 + state: enabled +- name: blocks_delay_0_0 + id: blocks_delay + parameters: + affinity: '' + alias: '' + comment: '' + delay: DelaySyncDetector + maxoutbuf: '0' + minoutbuf: '0' + num_ports: '1' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1099, 491] + rotation: 0 + state: enabled +- name: blocks_float_to_short_0 + id: blocks_float_to_short + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + scale: inverted + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1501, 796] + rotation: 270 + state: enabled +- name: import_0 + id: import + parameters: + alias: '' + comment: '' + imports: from math import pi + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [22, 185] + rotation: 0 + state: true +- name: qtgui_time_sink_x_1 + id: qtgui_time_sink_x + parameters: + affinity: '' + alias: '' + alpha1: '1.0' + alpha10: '1.0' + alpha2: '1.0' + alpha3: '1.0' + alpha4: '1.0' + alpha5: '1.0' + alpha6: '1.0' + alpha7: '1.0' + alpha8: '1.0' + alpha9: '1.0' + autoscale: 'False' + axislabels: 'True' + color1: blue + color10: dark blue + color2: red + color3: green + color4: black + color5: cyan + color6: magenta + color7: yellow + color8: dark red + color9: dark green + comment: '' + ctrlpanel: 'False' + entags: 'True' + grid: 'True' + gui_hint: tab_m@1 + label1: Signal 1 + label10: Signal 10 + label2: Signal 2 + label3: Signal 3 + label4: Signal 4 + label5: Signal 5 + label6: Signal 6 + label7: Signal 7 + label8: Signal 8 + label9: Signal 9 + legend: 'True' + marker1: '-1' + marker10: '-1' + marker2: '-1' + marker3: '-1' + marker4: '-1' + marker5: '-1' + marker6: '-1' + marker7: '-1' + marker8: '-1' + marker9: '-1' + name: '""' + nconnections: '1' + size: int(fft_size/2) + srate: samp_rate + stemplot: 'False' + style1: '1' + style10: '1' + style2: '1' + style3: '1' + style4: '1' + style5: '1' + style6: '1' + style7: '1' + style8: '1' + style9: '1' + tr_chan: '0' + tr_delay: '0' + tr_level: '19.0' + tr_mode: qtgui.TRIG_MODE_FREE + tr_slope: qtgui.TRIG_SLOPE_POS + tr_tag: '"peak_1"' + type: float + update_time: '2.0' + width1: '1' + width10: '1' + width2: '1' + width3: '1' + width4: '1' + width5: '1' + width6: '1' + width7: '1' + width8: '1' + width9: '1' + ylabel: Amplitude + ymax: '1' + ymin: '-1' + yunit: '""' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [919, 798] + rotation: 270 + state: enabled +- name: ratio_finder_toggle_on_and_off + id: variable_qtgui_msg_push_button + parameters: + comment: '' + gui_hint: '' + label: Ratio Finder toggle ON or OFF (FFT peaks). + msgName: pressed + relBackgroundColor: default + relFontColor: default + type: bool + value: 'True' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [925, 992] + rotation: 180 + state: enabled +- name: tab_m + id: qtgui_tab_widget + parameters: + alias: '' + comment: '' + gui_hint: '' + label0: Tempest Main Tab + label1: Autocorrelation Plot Tab + label10: Tab 10 + label11: Tab 11 + label12: Tab 12 + label13: Tab 13 + label14: Tab 14 + label15: Tab 15 + label16: Tab 16 + label17: Tab 17 + label18: Tab 18 + label19: Tab 19 + label2: Tab 2 + label3: Tab 3 + label4: Tab 4 + label5: Tab 5 + label6: Tab 6 + label7: Tab 7 + label8: Tab 8 + label9: Tab 9 + num_tabs: '2' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [17, 92] + rotation: 0 + state: true +- name: tempest_fft_peak_fine_sampling_sync_0_0 + id: tempest_fft_peak_fine_sampling_sync + parameters: + Hvisible: interpolatedHsize + Vvisible: Vsize + affinity: '' + alias: '' + automatic_mode: 'True' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + refresh_rate: refresh_rate + sample_rate: samp_rate + size: int(fft_size) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [757, 803] + rotation: 90 + state: enabled +- name: tempest_normalize_flow_0 + id: tempest_normalize_flow + parameters: + affinity: '' + alias: '' + alpha_avg: 1e-2 + comment: '' + max: '245' + maxoutbuf: '0' + min: '10' + minoutbuf: '0' + update_proba: '0.1' + window: interpolatedHsize + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1472, 578] + rotation: 270 + state: enabled +- name: tempest_sync_detector_0_0 + id: tempest_sync_detector + parameters: + affinity: '' + alias: '' + comment: '' + hblanking: interpolatedHblank + hscreen: interpolatedHscreen + maxoutbuf: '0' + minoutbuf: '0' + vblanking: Vblank + vscreen: Vsize-Vblank + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [842, 473] + rotation: 0 + state: enabled +- name: uhd_usrp_source_0 + id: uhd_usrp_source + parameters: + affinity: '' + alias: '' + ant0: '' + ant1: '' + ant10: '' + ant11: '' + ant12: '' + ant13: '' + ant14: '' + ant15: '' + ant16: '' + ant17: '' + ant18: '' + ant19: '' + ant2: '' + ant20: '' + ant21: '' + ant22: '' + ant23: '' + ant24: '' + ant25: '' + ant26: '' + ant27: '' + ant28: '' + ant29: '' + ant3: '' + ant30: '' + ant31: '' + ant4: '' + ant5: '' + ant6: '' + ant7: '' + ant8: '' + ant9: '' + bw0: '0' + bw1: '0' + bw10: '0' + bw11: '0' + bw12: '0' + bw13: '0' + bw14: '0' + bw15: '0' + bw16: '0' + bw17: '0' + bw18: '0' + bw19: '0' + bw2: '0' + bw20: '0' + bw21: '0' + bw22: '0' + bw23: '0' + bw24: '0' + bw25: '0' + bw26: '0' + bw27: '0' + bw28: '0' + bw29: '0' + bw3: '0' + bw30: '0' + bw31: '0' + bw4: '0' + bw5: '0' + bw6: '0' + bw7: '0' + bw8: '0' + bw9: '0' + center_freq0: px_rate*harmonic + center_freq1: '0' + center_freq10: '0' + center_freq11: '0' + center_freq12: '0' + center_freq13: '0' + center_freq14: '0' + center_freq15: '0' + center_freq16: '0' + center_freq17: '0' + center_freq18: '0' + center_freq19: '0' + center_freq2: '0' + center_freq20: '0' + center_freq21: '0' + center_freq22: '0' + center_freq23: '0' + center_freq24: '0' + center_freq25: '0' + center_freq26: '0' + center_freq27: '0' + center_freq28: '0' + center_freq29: '0' + center_freq3: '0' + center_freq30: '0' + center_freq31: '0' + center_freq4: '0' + center_freq5: '0' + center_freq6: '0' + center_freq7: '0' + center_freq8: '0' + center_freq9: '0' + clock_rate: '0.0' + clock_source0: '' + clock_source1: '' + clock_source2: '' + clock_source3: '' + clock_source4: '' + clock_source5: '' + clock_source6: '' + clock_source7: '' + comment: '' + dc_offs_enb0: '""' + dc_offs_enb1: '""' + dc_offs_enb10: '""' + dc_offs_enb11: '""' + dc_offs_enb12: '""' + dc_offs_enb13: '""' + dc_offs_enb14: '""' + dc_offs_enb15: '""' + dc_offs_enb16: '""' + dc_offs_enb17: '""' + dc_offs_enb18: '""' + dc_offs_enb19: '""' + dc_offs_enb2: '""' + dc_offs_enb20: '""' + dc_offs_enb21: '""' + dc_offs_enb22: '""' + dc_offs_enb23: '""' + dc_offs_enb24: '""' + dc_offs_enb25: '""' + dc_offs_enb26: '""' + dc_offs_enb27: '""' + dc_offs_enb28: '""' + dc_offs_enb29: '""' + dc_offs_enb3: '""' + dc_offs_enb30: '""' + dc_offs_enb31: '""' + dc_offs_enb4: '""' + dc_offs_enb5: '""' + dc_offs_enb6: '""' + dc_offs_enb7: '""' + dc_offs_enb8: '""' + dc_offs_enb9: '""' + dev_addr: '""' + dev_args: '"recv_frame_size= 65536, num_recv_frames=128"' + gain0: '50' + gain1: '0' + gain10: '0' + gain11: '0' + gain12: '0' + gain13: '0' + gain14: '0' + gain15: '0' + gain16: '0' + gain17: '0' + gain18: '0' + gain19: '0' + gain2: '0' + gain20: '0' + gain21: '0' + gain22: '0' + gain23: '0' + gain24: '0' + gain25: '0' + gain26: '0' + gain27: '0' + gain28: '0' + gain29: '0' + gain3: '0' + gain30: '0' + gain31: '0' + gain4: '0' + gain5: '0' + gain6: '0' + gain7: '0' + gain8: '0' + gain9: '0' + iq_imbal_enb0: '""' + iq_imbal_enb1: '""' + iq_imbal_enb10: '""' + iq_imbal_enb11: '""' + iq_imbal_enb12: '""' + iq_imbal_enb13: '""' + iq_imbal_enb14: '""' + iq_imbal_enb15: '""' + iq_imbal_enb16: '""' + iq_imbal_enb17: '""' + iq_imbal_enb18: '""' + iq_imbal_enb19: '""' + iq_imbal_enb2: '""' + iq_imbal_enb20: '""' + iq_imbal_enb21: '""' + iq_imbal_enb22: '""' + iq_imbal_enb23: '""' + iq_imbal_enb24: '""' + iq_imbal_enb25: '""' + iq_imbal_enb26: '""' + iq_imbal_enb27: '""' + iq_imbal_enb28: '""' + iq_imbal_enb29: '""' + iq_imbal_enb3: '""' + iq_imbal_enb30: '""' + iq_imbal_enb31: '""' + iq_imbal_enb4: '""' + iq_imbal_enb5: '""' + iq_imbal_enb6: '""' + iq_imbal_enb7: '""' + iq_imbal_enb8: '""' + iq_imbal_enb9: '""' + lo_export0: 'False' + lo_export1: 'False' + lo_export10: 'False' + lo_export11: 'False' + lo_export12: 'False' + lo_export13: 'False' + lo_export14: 'False' + lo_export15: 'False' + lo_export16: 'False' + lo_export17: 'False' + lo_export18: 'False' + lo_export19: 'False' + lo_export2: 'False' + lo_export20: 'False' + lo_export21: 'False' + lo_export22: 'False' + lo_export23: 'False' + lo_export24: 'False' + lo_export25: 'False' + lo_export26: 'False' + lo_export27: 'False' + lo_export28: 'False' + lo_export29: 'False' + lo_export3: 'False' + lo_export30: 'False' + lo_export31: 'False' + lo_export4: 'False' + lo_export5: 'False' + lo_export6: 'False' + lo_export7: 'False' + lo_export8: 'False' + lo_export9: 'False' + lo_source0: internal + lo_source1: internal + lo_source10: internal + lo_source11: internal + lo_source12: internal + lo_source13: internal + lo_source14: internal + lo_source15: internal + lo_source16: internal + lo_source17: internal + lo_source18: internal + lo_source19: internal + lo_source2: internal + lo_source20: internal + lo_source21: internal + lo_source22: internal + lo_source23: internal + lo_source24: internal + lo_source25: internal + lo_source26: internal + lo_source27: internal + lo_source28: internal + lo_source29: internal + lo_source3: internal + lo_source30: internal + lo_source31: internal + lo_source4: internal + lo_source5: internal + lo_source6: internal + lo_source7: internal + lo_source8: internal + lo_source9: internal + maxoutbuf: '0' + minoutbuf: '0' + nchan: '1' + norm_gain0: 'False' + norm_gain1: 'False' + norm_gain10: 'False' + norm_gain11: 'False' + norm_gain12: 'False' + norm_gain13: 'False' + norm_gain14: 'False' + norm_gain15: 'False' + norm_gain16: 'False' + norm_gain17: 'False' + norm_gain18: 'False' + norm_gain19: 'False' + norm_gain2: 'False' + norm_gain20: 'False' + norm_gain21: 'False' + norm_gain22: 'False' + norm_gain23: 'False' + norm_gain24: 'False' + norm_gain25: 'False' + norm_gain26: 'False' + norm_gain27: 'False' + norm_gain28: 'False' + norm_gain29: 'False' + norm_gain3: 'False' + norm_gain30: 'False' + norm_gain31: 'False' + norm_gain4: 'False' + norm_gain5: 'False' + norm_gain6: 'False' + norm_gain7: 'False' + norm_gain8: 'False' + norm_gain9: 'False' + num_mboards: '1' + otw: '' + rx_agc0: Default + rx_agc1: Default + rx_agc10: Default + rx_agc11: Default + rx_agc12: Default + rx_agc13: Default + rx_agc14: Default + rx_agc15: Default + rx_agc16: Default + rx_agc17: Default + rx_agc18: Default + rx_agc19: Default + rx_agc2: Default + rx_agc20: Default + rx_agc21: Default + rx_agc22: Default + rx_agc23: Default + rx_agc24: Default + rx_agc25: Default + rx_agc26: Default + rx_agc27: Default + rx_agc28: Default + rx_agc29: Default + rx_agc3: Default + rx_agc30: Default + rx_agc31: Default + rx_agc4: Default + rx_agc5: Default + rx_agc6: Default + rx_agc7: Default + rx_agc8: Default + rx_agc9: Default + samp_rate: samp_rate + sd_spec0: '' + sd_spec1: '' + sd_spec2: '' + sd_spec3: '' + sd_spec4: '' + sd_spec5: '' + sd_spec6: '' + sd_spec7: '' + show_lo_controls: 'False' + stream_args: '' + stream_chans: '[]' + sync: sync + time_source0: '' + time_source1: '' + time_source2: '' + time_source3: '' + time_source4: '' + time_source5: '' + time_source6: '' + time_source7: '' + type: fc32 + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [240, 438] + rotation: 0 + state: enabled +- name: video_sdl_sink_0_0_0 + id: video_sdl_sink + parameters: + affinity: '' + alias: '' + comment: "Enable this path when you are sure what the \nresolution is (and defaut\ + \ to those values on \nthe chooser)." + display_height: '517' + display_width: '1088' + fps: '0' + height: Vsize + num_channels: '1' + type: short + width: interpolatedHsize + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1474, 1001] + rotation: 270 + state: enabled + +connections: +- [FFT_autocorrelation_0_0, '0', tempest_fft_peak_fine_sampling_sync_0_0, '0'] +- [Keep_1_in_N_Frames_0, '0', FFT_autocorrelation_0_0, '0'] +- [Keep_1_in_N_Frames_0, '0', tempest_sync_detector_0_0, '0'] +- [blocks_complex_to_mag_0, '0', tempest_normalize_flow_0, '0'] +- [blocks_delay_0_0, '0', blocks_complex_to_mag_0, '0'] +- [blocks_float_to_short_0, '0', video_sdl_sink_0_0_0, '0'] +- [ratio_finder_toggle_on_and_off, pressed, tempest_fft_peak_fine_sampling_sync_0_0, + en] +- [tempest_fft_peak_fine_sampling_sync_0_0, '0', qtgui_time_sink_x_1, '0'] +- [tempest_fft_peak_fine_sampling_sync_0_0, en, FFT_autocorrelation_0_0, en] +- [tempest_fft_peak_fine_sampling_sync_0_0, en, tempest_sync_detector_0_0, en] +- [tempest_fft_peak_fine_sampling_sync_0_0, rate, uhd_usrp_source_0, command] +- [tempest_normalize_flow_0, '0', blocks_float_to_short_0, '0'] +- [tempest_sync_detector_0_0, '0', blocks_delay_0_0, '0'] +- [uhd_usrp_source_0, '0', Keep_1_in_N_Frames_0, '0'] + +metadata: + file_format: 1 diff --git a/examples/Demo/HDMI_50MHzSps_300MHzCentral_Real.grc b/examples/Demo/HDMI_50MHzSps_300MHzCentral_Real.grc new file mode 100644 index 0000000..5e1b7bf --- /dev/null +++ b/examples/Demo/HDMI_50MHzSps_300MHzCentral_Real.grc @@ -0,0 +1,1707 @@ +options: + parameters: + author: '' + category: '[GRC Hier Blocks]' + cmake_opt: '' + comment: '' + copyright: '' + description: '' + gen_cmake: 'On' + gen_linking: dynamic + generate_options: qt_gui + hier_block_src_path: '.:' + id: manual_tempest_example + max_nouts: '0' + output_language: python + placement: (0,0) + qt_qss_theme: '' + realtime_scheduling: '1' + run: 'True' + run_command: '{python} -u {filename}' + run_options: prompt + sizing_mode: fixed + thread_safe_setters: '' + title: '' + window_size: '' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [81, 12] + rotation: 0 + state: enabled + +blocks: +- name: DelaySyncDetector + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: '' + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '0' + step: interpolatedHsize*1 + stop: Vsize*interpolatedHsize + value: interpolatedHsize*1 + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [932, 1064] + rotation: 0 + state: enabled +- name: DroppedFrames + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: '' + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '1' + step: '1' + stop: '100' + value: '50' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [766, 252] + rotation: 0 + state: true +- name: Hblank + id: variable + parameters: + comment: '' + value: Hsize-Hvisible + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [623, 168] + rotation: 0 + state: enabled +- name: Hsize + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: Horizontal resolution (total) + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: int(4096*1.5) + value: '2200' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [350, 102] + rotation: 0 + state: enabled +- name: Hvisible + id: variable + parameters: + comment: '' + value: '1920' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [624, 64] + rotation: 0 + state: enabled +- name: Vblank + id: variable + parameters: + comment: '' + value: Vsize-Vvisible + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [750, 178] + rotation: 0 + state: enabled +- name: Vsize + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: Vertical resolution (total) + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: int(2160*1.5) + value: '1125' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [493, 104] + rotation: 0 + state: enabled +- name: Vvisible + id: variable + parameters: + comment: '' + value: '1080' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [750, 126] + rotation: 0 + state: enabled +- name: eq_fir_1080p + id: variable + parameters: + comment: '' + value: '[-0.0004 + 0j,-0.0000 + 0.0000j,-0.0004 - 0.0000j,-0.0000 + 0.0001j,-0.0004 + - 0.0001j,-0.0000 + 0.0001j,-0.0004 - 0.0001j,-0.0000 + 0.0002j,-0.0004 + - 0.0001j,-0.0001 + 0.0002j,-0.0003 - 0.0001j,-0.0001 + 0.0003j,-0.0003 + - 0.0001j,-0.0002 + 0.0003j,-0.0003 - 0.0001j,-0.0002 + 0.0004j,-0.0002 + - 0.0001j,-0.0002 + 0.0004j,-0.0002 - 0.0001j,-0.0003 + 0.0004j,-0.0001 + - 0.0001j,-0.0003 + 0.0004j,-0.0001 - 0.0001j,-0.0004 + 0.0004j,-0.0000 + - 0.0000j,-0.0004 + 0.0004j, 0.0000 + 0.0000j,-0.0005 + 0.0004j, 0.0000 + + 0.0001j,-0.0005 + 0.0004j, 0.0001 + 0.0001j,-0.0006 + 0.0003j, 0.0001 + + 0.0002j,-0.0006 + 0.0003j, 0.0001 + 0.0002j,-0.0006 + 0.0003j, 0.0001 + + 0.0003j,-0.0006 + 0.0002j, 0.0001 + 0.0004j,-0.0006 + 0.0002j, 0.0001 + + 0.0005j,-0.0006 + 0.0001j, 0.0001 + 0.0005j,-0.0006 + 0.0001j, 0.0001 + + 0.0006j,-0.0006 + 0.0000j, 0.0000 + 0.0007j,-0.0006 - 0.0000j,-0.0000 + + 0.0008j,-0.0005 - 0.0000j,-0.0001 + 0.0008j,-0.0005 - 0.0001j,-0.0002 + + 0.0009j,-0.0004 - 0.0001j,-0.0002 + 0.0009j,-0.0004 - 0.0001j,-0.0003 + + 0.0010j,-0.0003 - 0.0001j,-0.0004 + 0.0010j,-0.0002 - 0.0001j,-0.0005 + + 0.0010j,-0.0002 - 0.0001j,-0.0006 + 0.0011j,-0.0001 - 0.0001j,-0.0007 + + 0.0011j,-0.0000 - 0.0000j,-0.0008 + 0.0010j, 0.0000 + 0.0000j,-0.0009 + + 0.0010j, 0.0001 + 0.0001j,-0.0010 + 0.0010j, 0.0002 + 0.0002j,-0.0011 + + 0.0009j, 0.0002 + 0.0003j,-0.0011 + 0.0009j, 0.0003 + 0.0004j,-0.0012 + + 0.0008j, 0.0003 + 0.0005j,-0.0013 + 0.0007j, 0.0003 + 0.0006j,-0.0013 + + 0.0006j, 0.0003 + 0.0007j,-0.0014 + 0.0005j, 0.0003 + 0.0008j,-0.0014 + + 0.0004j, 0.0003 + 0.0010j,-0.0014 + 0.0003j, 0.0002 + 0.0011j,-0.0014 + + 0.0002j, 0.0002 + 0.0013j,-0.0015 + 0.0002j, 0.0001 + 0.0019j,-0.0038 + + 0.0001j, 0.0001 + 0.0198j, 0.0603 + 0.0018j, 0.0091 - 0.1418j,-0.2643 + - 0.0260j,-0.0543 + 0.4093j, 0.5602 + 0.0937j, 0.1441 - 0.7130j,-0.8669 + - 0.2059j,-0.2777 + 1.0157j, 1.1535 + 0.3576j, 0.4438 - 1.2773j,-1.3776 + - 0.5314j,-0.6122 + 1.4403j, 1.4636 + 0.6813j, 0.7425 - 1.4640j,-1.4577 + - 0.8023j,-0.8613 + 1.4470j, 1.4300 + 0.9179j, 0.9747 - 1.4114j,-1.3954 + - 1.0349j,-1.0955 + 1.3775j, 1.3531 + 1.1528j, 1.2096 - 1.3263j,-1.3019 + - 1.2703j,-1.3319 + 1.2759j, 1.2436 + 1.3891j, 1.4451 - 1.2084j,-1.1749 + - 1.5056j,-1.5673 + 1.1402j, 1.0995 + 1.6238j, 1.6782 - 1.0555j,-1.0126 + - 1.7375j,-1.7986 + 0.9685j, 0.9189 + 1.8538j, 1.9057 - 0.8658j,-0.8130 + - 1.9627j,-2.0224 + 0.7588j, 0.6998 + 2.0754j, 2.1239 - 0.6372j,-0.5739 + - 2.1776j,-2.2347 + 0.5090j, 0.4399 + 2.2848j, 2.3289 - 0.3674j,-0.2933 + - 2.3781j,-2.4316 + 0.2169j, 0.1370 + 2.4778j, 2.5165 - 0.0541j, 0.0314 + - 2.5599j,-2.6085 - 0.1201j,-0.2118 + 2.6496j, 2.6819 + 0.3057j, 0.4032 + - 2.7181j,-2.7604 - 0.5052j,-0.6097 + 2.7952j, 2.8196 + 0.7155j, 0.8257 + - 2.8472j,-2.8814 - 0.9421j,-1.0608 + 2.9083j, 2.9235 + 1.1796j, 1.3035 + - 2.9407j,-2.9648 - 1.4358j,-1.5705 + 2.9820j, 2.9863 + 1.7038j, 1.8430 + - 2.9910j,-3.0027 - 1.9930j,-2.1461 + 3.0078j, 2.9988 + 2.2962j, 2.4527 + - 2.9886j,-2.9849 - 2.6231j,-2.7977 + 2.9749j, 2.9497 + 2.9679j, 3.1448 + - 2.9214j,-2.8985 - 3.3394j,-3.5403 + 2.8692j, 2.8239 + 3.7352j, 3.9374 + - 2.7730j,-2.7258 - 4.1619j,-4.3958 + 2.6715j, 2.6001 + 4.6228j, 4.8579 + - 2.5204j,-2.4414 - 5.1213j,-5.3988 + 2.3536j, 2.2471 + 5.6694j, 5.9499 + - 2.1289j,-2.0065 - 6.2670j,-6.6056 + 1.8717j, 1.7156 + 6.9393j, 7.2870 + - 1.5427j,-1.3575 - 7.6836j,-8.1142 + 1.1528j, 0.9212 + 8.5461j, 9.0016 + - 0.6640j,-0.3802 - 9.5270j,10.1094 + 0.0620j,-0.2958 + 10.7103j,11.3586 + + 0.6978j, 1.1560 - 12.1183j,12.9856 - 1.6826j,-2.2839 + 13.9218j,14.9722 + + 2.9782j, 3.8038 - 16.2383j,17.7577 - 4.7971j,-5.9920 + 19.5370j,21.6829 + + 7.4594j, 9.3348 - 24.4225j,28.1470 - 11.8617j,15.4831 + 33.5314j,40.9709 + + 20.6230j,26.6688 - 48.8079j,52.0219 - 30.7484j,28.2403 + 44.2950j,23.3522 + + 16.0214j,-3.8869 + 5.2747j,30.8124 + 24.3519j,37.7829 - 44.6248j,45.5825 + - 41.3136j,37.7025 + 38.8773j,30.6655 + 31.8158j,26.8368 - 24.1739j,19.7007 + - 23.4135j,21.0374 + 16.5218j,14.0970 + 19.2534j,17.8348 - 12.1558j,10.5339 + - 16.6349j,15.6016 + 9.1571j, 8.0025 + 14.7531j,14.0496 - 7.0180j,-6.1378 + - 13.4003j,12.7899 + 5.3438j, 4.6462 + 12.2684j,11.8264 - 4.0280j,-3.4572 + - 11.3969j,10.9712 + 2.9277j, 2.4483 + 10.5981j,10.2775 - 2.0116j,-1.6020 + - 9.9561j,-9.6259 + 1.2172j, 0.8612 + 9.3302j, 9.0735 - 0.5295j,-0.2163 + - 8.8117j,-8.5362 - 0.0786j,-0.3561 + 8.2845j, 8.0638 + 0.6197j, 0.8691 + - 7.8372j,-7.5953 - 1.1029j,-1.3255 + 7.3701j, 7.1703 + 1.5410j, 1.7448 + - 6.9655j,-6.7452 - 1.9337j,-2.1150 + 6.5365j, 6.3493 + 2.2938j, 2.4627 + - 6.1581j,-5.9524 - 2.6167j,-2.7650 + 5.7545j, 5.5747 + 2.9141j, 3.0547 + - 5.3922j,-5.1967 - 3.1801j,-3.3007 + 5.0061j, 4.8306 + 3.4243j, 3.5409 + - 4.6538j,-4.4656 - 3.6420j,-3.7384 + 4.2804j, 4.1076 + 3.8393j, 3.9345 + - 3.9345j,-3.7519 - 4.0141j,-4.0887 + 3.5709j, 3.3999 + 4.1688j, 4.2445 + - 3.2294j,-3.0514 - 4.3046j,-4.3591 + 2.8742j, 2.7047 + 4.4197j, 4.4769 + - 2.5361j,-2.3622 - 4.5189j,-4.5547 + 2.1885j, 2.0207 + 4.5966j, 4.6361 + - 1.8540j,-1.6839 - 4.6609j,-4.6790 + 1.5140j, 1.3482 + 4.7029j, 4.7252 + - 1.1836j,-1.0173 - 4.7335j,-4.7347 + 0.8515j, 0.6884 + 4.7411j, 4.7465 + - 0.5264j,-0.3642 - 4.7389j,-4.7239 + 0.2030j, 0.0434 + 4.7133j, 4.7021 + + 0.1154j, 0.2730 - 4.6788j,-4.6481 - 0.4290j,-0.5844 + 4.6211j, 4.5934 + + 0.7391j, 0.8915 - 4.5546j,-4.5088 - 1.0416j,-1.1917 + 4.4659j, 4.4220 + + 1.3414j, 1.4877 - 4.3679j,-4.3074 - 1.6313j,-1.7754 + 4.2492j, 4.1893 + + 1.9189j, 2.0580 - 4.1200j,-4.0452 - 2.1942j,-2.3315 + 3.9723j, 3.8968 + + 2.4676j, 2.5985 - 3.8124j,-3.7237 - 2.7264j,-2.8561 + 3.6366j, 3.5461 + + 2.9838j, 3.1047 - 3.4467j,-3.3444 - 3.2235j,-3.3448 + 3.2438j, 3.1387 + + 3.4630j, 3.5729 - 3.0251j,-2.9091 - 3.6809j,-3.7913 + 2.7939j, 2.6757 + + 3.9000j, 4.0096 - 2.5563j,-2.4240 - 4.1010j,-4.0498 + 2.2128j, 1.8310 + + 3.6375j, 2.7604 - 1.2746j,-0.6875 - 1.6313j,-0.6705 + 0.2563j, 0.0515 + + 0.1497j, 0.0019 - 0.0006j, 0.0015 + 0.0056j, 0.0078 - 0.0018j,-0.0011 + - 0.0057j, 0.0080 - 0.0013j,-0.0010 - 0.0077j, 0.0073 - 0.0007j,-0.0005 + - 0.0080j, 0.0065 - 0.0002j, 0.0000 - 0.0078j, 0.0057 + 0.0002j, 0.0006 + - 0.0076j, 0.0050 + 0.0005j, 0.0010 - 0.0073j, 0.0044 + 0.0008j, 0.0015 + - 0.0071j, 0.0038 + 0.0009j, 0.0019 - 0.0068j, 0.0032 + 0.0010j, 0.0023 + - 0.0065j, 0.0027 + 0.0011j, 0.0027 - 0.0062j, 0.0022 + 0.0011j, 0.0031 + - 0.0059j, 0.0018 + 0.0010j, 0.0034 - 0.0056j, 0.0014 + 0.0009j, 0.0037 + - 0.0052j, 0.0010 + 0.0008j, 0.0040 - 0.0049j, 0.0007 + 0.0006j, 0.0042 + - 0.0045j, 0.0004 + 0.0004j, 0.0044 - 0.0042j, 0.0002 + 0.0002j, 0.0046 + - 0.0038j,-0.0001 - 0.0001j, 0.0047 - 0.0034j,-0.0002 - 0.0003j, 0.0048 + - 0.0030j,-0.0003 - 0.0006j, 0.0049 - 0.0026j,-0.0004 - 0.0009j, 0.0049 + - 0.0022j,-0.0005 - 0.0012j, 0.0049 - 0.0018j,-0.0005 - 0.0015j, 0.0048 + - 0.0014j,-0.0004 - 0.0017j, 0.0047 - 0.0010j,-0.0004 - 0.0020j, 0.0046 + - 0.0007j,-0.0003 - 0.0023j, 0.0044 - 0.0004j,-0.0001 - 0.0025j, 0.0043 + - 0.0001j, 0.0001 - 0.0027j, 0.0040 + 0.0002j, 0.0003 - 0.0029j, 0.0038 + + 0.0005j, 0.0005 - 0.0030j, 0.0035 + 0.0007j, 0.0007 - 0.0032j, 0.0033 + + 0.0009j, 0.0010 - 0.0033j, 0.0030 + 0.0010j, 0.0012 - 0.0033j, 0.0027 + + 0.0011j, 0.0015 - 0.0033j, 0.0024 + 0.0012j, 0.0018 - 0.0033j, 0.0021 + + 0.0012j, 0.0021 - 0.0033j, 0.0018 + 0.0012j, 0.0023 - 0.0032j, 0.0015 + + 0.0012j, 0.0026 - 0.0031j, 0.0012 + 0.0011j, 0.0029 - 0.0030j, 0.0010 + + 0.0010j, 0.0031 - 0.0028j, 0.0007 + 0.0009j, 0.0033 - 0.0026j, 0.0005 + + 0.0007j, 0.0035 - 0.0024j, 0.0003 + 0.0005j, 0.0036 - 0.0022j, 0.0002 + + 0.0003j, 0.0038 - 0.0019j, 0.0001 + 0.0001j, 0.0039 - 0.0016j,-0.0000 + - 0.0001j, 0.0039 - 0.0014j,-0.0001 - 0.0003j, 0.0040 - 0.0011j,-0.0001 + - 0.0006j, 0.0040 - 0.0008j,-0.0001 - 0.0008j, 0.0039 - 0.0005j,-0.0001 + - 0.0011j, 0.0039 - 0.0002j,-0.0000 - 0.0013j, 0.0038 + 0.0000j, 0.0001 + - 0.0015j, 0.0037 + 0.0003j, 0.0002 - 0.0017j, 0.0035 + 0.0005j, 0.0003 + - 0.0019j, 0.0033 + 0.0007j, 0.0005 - 0.0020j, 0.0032 + 0.0009j, 0.0007 + - 0.0022j, 0.0029 + 0.0010j, 0.0009 - 0.0023j, 0.0027 + 0.0012j, 0.0011 + - 0.0024j, 0.0025 + 0.0013j, 0.0014 - 0.0024j, 0.0022 + 0.0013j, 0.0016 + - 0.0024j, 0.0020 + 0.0014j, 0.0018 - 0.0024j, 0.0017 + 0.0014j, 0.0021 + - 0.0024j, 0.0015 + 0.0014j, 0.0023 - 0.0023j, 0.0013 + 0.0013j, 0.0025 + - 0.0022j, 0.0010 + 0.0012j, 0.0027 - 0.0021j, 0.0008 + 0.0011j, 0.0029 + - 0.0020j, 0.0006 + 0.0010j, 0.0031 - 0.0018j, 0.0005 + 0.0009j, 0.0033 + - 0.0016j, 0.0003 + 0.0007j, 0.0034 - 0.0014j, 0.0002 + 0.0005j, 0.0035 + - 0.0012j, 0.0001 + 0.0003j, 0.0036 - 0.0009j, 0.0000 + 0.0001j, 0.0036 + - 0.0007j,-0.0000 - 0.0001j, 0.0036 - 0.0004j,-0.0000 - 0.0004j, 0.0036 + - 0.0002j,-0.0000 - 0.0006j, 0.0036 + 0.0001j, 0.0000 - 0.0008j, 0.0035 + + 0.0003j, 0.0001 - 0.0010j, 0.0034 + 0.0005j, 0.0002 - 0.0012j, 0.0033 + + 0.0007j, 0.0004 - 0.0014j, 0.0032 + 0.0009j, 0.0005 - 0.0015j, 0.0030 + + 0.0011j, 0.0007 - 0.0017j, 0.0028 + 0.0013j, 0.0009 - 0.0018j, 0.0026 + + 0.0014j, 0.0011 - 0.0019j, 0.0024 + 0.0015j, 0.0013 - 0.0019j, 0.0022 + + 0.0016j, 0.0015 - 0.0020j, 0.0019 + 0.0016j, 0.0017 - 0.0020j, 0.0017 + + 0.0016j, 0.0020 - 0.0019j, 0.0015 + 0.0016j, 0.0022 - 0.0019j, 0.0013 + + 0.0016j, 0.0024 - 0.0018j, 0.0011 + 0.0015j, 0.0026 - 0.0017j, 0.0008 + + 0.0014j, 0.0028 - 0.0016j, 0.0007 + 0.0013j, 0.0030 - 0.0014j, 0.0005 + + 0.0012j, 0.0031 - 0.0012j, 0.0003 + 0.0010j, 0.0033 - 0.0010j, 0.0002 + + 0.0008j, 0.0034 - 0.0008j, 0.0001 + 0.0006j, 0.0035 - 0.0006j, 0.0001 + + 0.0004j, 0.0035 - 0.0004j, 0.0000 + 0.0002j, 0.0036 - 0.0001j]' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [842, 184] + rotation: 0 + state: disabled +- name: ferror + id: variable + parameters: + comment: '' + value: (samp_rate*fine_freq)/(2*pi*interpolatedHsize) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1077, 302] + rotation: 0 + state: true +- name: fft_size + id: variable + parameters: + comment: '' + value: 2**21 + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [592, 224] + rotation: 0 + state: true +- name: filtro_ecualizador_1st + id: variable + parameters: + comment: '' + value: '[-6.13e-05-1.22e-05j, + + 6.18e-04-2.02e-04j, + + 3.84e-03-2.43e-03j, + + 5.50e-03-3.87e-03j, + + 7.65e-03-5.51e-03j, + + 8.36e-03-6.47e-03j, + + 3.42e-03-3.78e-03j, + + -7.81e-03+2.35e-03j, + + -3.86e-02+2.21e-02j, + + -8.12e-02+4.68e-02j, + + -1.62e-01+9.94e-02j, + + -2.48e-01+1.48e-01j, + + -3.92e-01+2.43e-01j, + + -5.04e-01+2.99e-01j, + + -7.22e-01+4.49e-01j, + + -6.65e-01+3.56e-01j, + + 7.83e-01-4.68e-01j, + + 6.76e-01-3.60e-01j, + + 5.19e-01-2.92e-01j, + + 3.70e-01-1.98e-01j, + + 2.48e-01-1.39e-01j, + + 1.48e-01-8.02e-02j, + + 7.74e-02-4.50e-02j, + + 3.09e-02-1.83e-02j, + + 4.68e-03-4.89e-03j, + + -6.43e-03+1.92e-03j, + + -9.85e-03+4.10e-03j, + + -8.23e-03+3.73e-03j, + + -5.86e-03+2.73e-03j, + + -3.57e-03+1.94e-03j, + + -1.81e-04+2.41e-04j, + + ]' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [976, 185] + rotation: 0 + state: enabled +- name: filtro_ecualizador_viejo + id: variable + parameters: + comment: '' + value: '[ 3.5209e-07 - 1.0836e-06*1j, 1.4076e-06 - 2.3919e-06*1j, 5.9650e-06 + - 6.1506e-06*1j, 1.5271e-05 - 1.4326e-05*1j, 4.1151e-05 - 3.6713e-05*1j , + 3.9905e-04 - 6.3391e-04*1j, 1.4256e-03 - 4.2010e-04*1j, 1.7775e-03 - 1.1448e-03*1j, 2.6252e-03 + - 8.9501e-04*1j, 2.9812e-03 - 1.6801e-03*1j , 4.3656e-03 - 1.5903e-03*1j, 4.8418e-03 + - 2.4404e-03*1j, 6.9685e-03 - 2.6534e-03*1j, 7.6915e-03 - 3.5182e-03*1j, 1.0749e-02 + - 4.2291e-03*1j , 1.1902e-02 - 5.0055e-03*1j, 1.6024e-02 - 6.4526e-03*1j, 1.7878e-02 + - 7.0057e-03*1j, 2.3102e-02 - 9.4388e-03*1j, 2.6038e-02 - 9.6422e-03*1j , + 3.2280e-02 - 1.3269e-02*1j, 3.6789e-02 - 1.3061e-02*1j, 4.3841e-02 - 1.7982e-02*1j, 5.0495e-02 + - 1.7431e-02*1j, 5.8052e-02 - 2.3569e-02*1j , 6.7444e-02 - 2.2930e-02*1j, 7.5169e-02 + - 2.9981e-02*1j, 8.7819e-02 - 2.9736e-02*1j, 9.5427e-02 - 3.7136e-02*1j, 1.1167e-01 + - 3.8000e-02*1j , 1.1904e-01 - 4.4941e-02*1j, 1.3890e-01 - 4.7822e-02*1j, 1.4617e-01 + - 5.3309e-02*1j, 1.6926e-01 - 5.9221e-02*1j, 1.7695e-01 - 6.2182e-02*1j , + 2.0235e-01 - 7.2116e-02*1j, 2.1140e-01 - 7.1549e-02*1j, 2.3765e-01 - 8.6305e-02*1j, 2.4944e-01 + - 8.1456e-02*1j, 2.7453e-01 - 1.0146e-01*1j , 2.9088e-01 - 9.2017e-02*1j, 3.1227e-01 + - 1.1711e-01*1j, 3.3535e-01 - 1.0341e-01*1j, 3.5009e-01 - 1.3267e-01*1j, 3.8238e-01 + - 1.1587e-01*1j , 3.8713e-01 - 1.4742e-01*1j, 4.3146e-01 - 1.2974e-01*1j, 4.2233e-01 + - 1.6044e-01*1j, 4.8222e-01 - 1.4561e-01*1j, 4.5414e-01 - 1.7040e-01*1j , + 5.3510e-01 - 1.6460e-01*1j, 4.8020e-01 - 1.7358e-01*1j, 5.9455e-01 - 1.9170e-01*1j, 4.8669e-01 + - 1.5965e-01*1j, 6.9081e-01 - 2.6218e-01*1j , 3.1530e-01 + 9.3424e-02*1j, -7.1052e-01 + + 2.8833e-01*1j, -5.1861e-01 + 1.1433e-01*1j, -5.7535e-01 + 2.2141e-01*1j, -5.2124e-01 + + 1.3015e-01*1j , -5.1574e-01 + 1.9092e-01*1j, -4.9507e-01 + 1.3022e-01*1j, + -4.6700e-01 + 1.6704e-01*1j, -4.5921e-01 + 1.2586e-01*1j, -4.2136e-01 + 1.4550e-01*1j + , -4.1873e-01 + 1.1899e-01*1j, -3.7785e-01 + 1.2562e-01*1j, -3.7593e-01 + 1.1045e-01*1j, + -3.3620e-01 + 1.0737e-01*1j, -3.3244e-01 + 1.0068e-01*1j , -2.9648e-01 + 9.0865e-02*1j, + -2.8954e-01 + 9.0026e-02*1j, -2.5879e-01 + 7.6211e-02*1j, -2.4833e-01 + 7.8847e-02*1j, + -2.2331e-01 + 6.3414e-02*1j , -2.0968e-01 + 6.7517e-02*1j, -1.9019e-01 + 5.2395e-02*1j, + -1.7425e-01 + 5.6423e-02*1j, -1.5960e-01 + 4.2999e-02*1j, -1.4246e-01 + 4.5930e-02*1j + , -1.3169e-01 + 3.5031e-02*1j, -1.1454e-01 + 3.6352e-02*1j, -1.0661e-01 + 2.8282e-02*1j, + -9.0505e-02 + 2.7922e-02*1j, -8.4485e-02 + 2.2562e-02*1j , -7.0222e-02 + 2.0778e-02*1j, + -6.5365e-02 + 1.7714e-02*1j, -5.3441e-02 + 1.4956e-02*1j, -4.9242e-02 + 1.3619e-02*1j, + -3.9832e-02 + 1.0400e-02*1j , -3.6019e-02 + 1.0195e-02*1j, -2.9025e-02 + 6.9842e-03*1j, + -2.5513e-02 + 7.3869e-03*1j, -2.0639e-02 + 4.5335e-03*1j, -1.7457e-02 + 5.1469e-03*1j + , -1.4300e-02 + 2.8536e-03*1j, -1.1520e-02 + 3.4260e-03*1j, -9.6508e-03 + 1.7541e-03*1j, + -7.3304e-03 + 2.1628e-03*1j, -6.3552e-03 + 1.0661e-03*1j , -4.5025e-03 + 1.2798e-03*1j, + -4.1002e-03 + 6.5174e-04*1j, -2.6663e-03 + 6.8397e-04*1j, -2.5965e-03 + 4.0387e-04*1j, + -1.4935e-03 + 2.7171e-04*1j , -1.6079e-03 + 2.1239e-04*1j, 8.5832e-05 + 6.1758e-05*1j, 2.4841e-05 + + 1.8521e-05*1j, 9.8862e-06 + 7.4457e-06*1j, 3.4696e-06 + 2.6799e-06*1j , + 7.2346e-07 + 6.5333e-07*1j ]' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [979, 246] + rotation: 0 + state: disabled +- name: fine_freq + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: Sine multiply Freq correction + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '-50000' + step: '0.1' + stop: '50000' + value: '19215.22' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [972, 5] + rotation: 0 + state: enabled +- name: harmonic + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: Harmonic + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '1' + step: '1' + stop: '10' + value: '2' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [229, 132] + rotation: 0 + state: enabled +- name: interpolatedHblank + id: variable + parameters: + comment: '' + value: int(Hblank/float(px_rate)*samp_rate) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [740, 7] + rotation: 0 + state: enabled +- name: interpolatedHscreen + id: variable + parameters: + comment: '' + value: int(Hvisible/float(px_rate)*samp_rate) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [622, 116] + rotation: 0 + state: enabled +- name: interpolatedHsize + id: variable + parameters: + comment: '' + value: int(Hsize/float(px_rate)*samp_rate) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [747, 64] + rotation: 0 + state: enabled +- name: inverted + id: variable_qtgui_chooser + parameters: + comment: '' + gui_hint: tab_m@0 + label: Inverted colors? + label0: 'Yes' + label1: 'No' + label2: '' + label3: '' + label4: '' + labels: '[]' + num_opts: '2' + option1: '1' + option2: '2' + option3: '3' + option4: '4' + options: '[0, 1, 2]' + orient: Qt.QHBoxLayout + type: real + value: '-1' + widget: radio_buttons + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [850, 6] + rotation: 0 + state: enabled +- name: px_rate + id: variable + parameters: + comment: '' + value: Hsize*Vsize*refresh_rate + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [136, 64] + rotation: 0 + state: enabled +- name: refresh_rate + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: Refresh Rate (Hz) + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '0' + step: '1' + stop: '240' + value: '60' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [222, 8] + rotation: 0 + state: enabled +- name: samp_rate + id: variable + parameters: + comment: '' + value: int(50e6) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [137, 116] + rotation: 0 + state: enabled +- name: FFT_autocorrelation_0_0 + id: FFT_autocorrelation + parameters: + affinity: '' + alias: '' + alpha: '1.0' + comment: '' + fft_size: int(fft_size) + maxoutbuf: '0' + minoutbuf: '0' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [242, 1191] + rotation: 270 + state: enabled +- name: Keep_1_in_N_Frames_0 + id: Keep_1_in_N_Frames + parameters: + affinity: '' + alias: '' + comment: '' + fac_decimation: DroppedFrames + fft_size: interpolatedHsize*Vsize*4 + maxoutbuf: '0' + minoutbuf: '0' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [349, 773] + rotation: 0 + state: enabled +- name: analog_sig_source_x_0_0 + id: analog_sig_source_x + parameters: + affinity: '' + alias: '' + amp: '1' + comment: '' + freq: -fine_freq + maxoutbuf: '0' + minoutbuf: '0' + offset: '0' + phase: '0' + samp_rate: samp_rate + type: complex + waveform: analog.GR_COS_WAVE + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [937, 705] + rotation: 0 + state: enabled +- name: blocks_complex_to_arg_0 + id: blocks_complex_to_arg + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1059, 396] + rotation: 0 + state: disabled +- name: blocks_complex_to_mag_0 + id: blocks_complex_to_mag + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1174, 908] + rotation: 0 + state: disabled +- name: blocks_complex_to_real_0 + id: blocks_complex_to_real + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1168, 637] + rotation: 0 + state: enabled +- name: blocks_delay_0 + id: blocks_delay + parameters: + affinity: '' + alias: '' + comment: '' + delay: DelaySyncDetector + maxoutbuf: '0' + minoutbuf: '0' + num_ports: '1' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [820, 680] + rotation: 0 + state: enabled +- name: blocks_delay_0_0 + id: blocks_delay + parameters: + affinity: '' + alias: '' + comment: '' + delay: DelaySyncDetector + maxoutbuf: '0' + minoutbuf: '0' + num_ports: '1' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [937, 906] + rotation: 0 + state: disabled +- name: blocks_delay_1 + id: blocks_delay + parameters: + affinity: '' + alias: '' + comment: '' + delay: interpolatedHsize + maxoutbuf: '0' + minoutbuf: '0' + num_ports: '1' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [603, 554] + rotation: 90 + state: disabled +- name: blocks_file_source_0 + id: blocks_file_source + parameters: + affinity: '' + alias: '' + begin_tag: pmt.PMT_NIL + comment: '' + file: /home/felipe/gnuradio/git/grabaciones_local/test2_19980KHz_1920_1080.dat + length: '0' + maxoutbuf: '0' + minoutbuf: '0' + offset: '0' + repeat: 'True' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [69, 626] + rotation: 0 + state: disabled +- name: blocks_float_to_short_0 + id: blocks_float_to_short + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + scale: inverted + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1424, 1113] + rotation: 270 + state: enabled +- name: blocks_multiply_conjugate_cc_0 + id: blocks_multiply_conjugate_cc + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [576, 374] + rotation: 90 + state: disabled +- name: blocks_multiply_xx_0_0 + id: blocks_multiply_xx + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + num_inputs: '2' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1239, 688] + rotation: 0 + state: enabled +- name: blocks_throttle_0 + id: blocks_throttle + parameters: + affinity: '' + alias: '' + comment: '' + ignoretag: 'True' + maxoutbuf: '0' + minoutbuf: '0' + samples_per_second: samp_rate + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [271, 650] + rotation: 0 + state: disabled +- name: import_0 + id: import + parameters: + alias: '' + comment: '' + imports: from math import pi + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1048, 141] + rotation: 0 + state: true +- name: interp_fir_filter_xxx_1 + id: interp_fir_filter_xxx + parameters: + affinity: '' + alias: '' + comment: '' + interp: '1' + maxoutbuf: '0' + minoutbuf: '0' + samp_delay: '0' + taps: filtro_ecualizador_1st + type: ccc + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [721, 726] + rotation: 0 + state: bypassed +- name: qtgui_time_sink_x_0 + id: qtgui_time_sink_x + parameters: + affinity: '' + alias: '' + alpha1: '1.0' + alpha10: '1.0' + alpha2: '1.0' + alpha3: '1.0' + alpha4: '1.0' + alpha5: '1.0' + alpha6: '1.0' + alpha7: '1.0' + alpha8: '1.0' + alpha9: '1.0' + autoscale: 'True' + axislabels: 'True' + color1: blue + color10: dark blue + color2: red + color3: green + color4: black + color5: cyan + color6: magenta + color7: yellow + color8: dark red + color9: dark green + comment: '' + ctrlpanel: 'False' + entags: 'True' + grid: 'False' + gui_hint: tab_m@0 + label1: Signal 1 + label10: Signal 10 + label2: Signal 2 + label3: Signal 3 + label4: Signal 4 + label5: Signal 5 + label6: Signal 6 + label7: Signal 7 + label8: Signal 8 + label9: Signal 9 + legend: 'True' + marker1: '-1' + marker10: '-1' + marker2: '-1' + marker3: '-1' + marker4: '-1' + marker5: '-1' + marker6: '-1' + marker7: '-1' + marker8: '-1' + marker9: '-1' + name: '""' + nconnections: '1' + size: '1024' + srate: samp_rate + stemplot: 'False' + style1: '1' + style10: '1' + style2: '1' + style3: '1' + style4: '1' + style5: '1' + style6: '1' + style7: '1' + style8: '1' + style9: '1' + tr_chan: '0' + tr_delay: '0' + tr_level: '0.0' + tr_mode: qtgui.TRIG_MODE_FREE + tr_slope: qtgui.TRIG_SLOPE_POS + tr_tag: '""' + type: float + update_time: '0.5' + width1: '1' + width10: '1' + width2: '1' + width3: '1' + width4: '1' + width5: '1' + width6: '1' + width7: '1' + width8: '1' + width9: '1' + ylabel: Phase difference (rad). + ymax: '1' + ymin: '-1' + yunit: '""' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1341, 496] + rotation: 0 + state: disabled +- name: qtgui_time_sink_x_1 + id: qtgui_time_sink_x + parameters: + affinity: '' + alias: '' + alpha1: '1.0' + alpha10: '1.0' + alpha2: '1.0' + alpha3: '1.0' + alpha4: '1.0' + alpha5: '1.0' + alpha6: '1.0' + alpha7: '1.0' + alpha8: '1.0' + alpha9: '1.0' + autoscale: 'False' + axislabels: 'True' + color1: blue + color10: dark blue + color2: red + color3: green + color4: black + color5: cyan + color6: magenta + color7: yellow + color8: dark red + color9: dark green + comment: '' + ctrlpanel: 'False' + entags: 'True' + grid: 'True' + gui_hint: tab_m@1 + label1: Signal 1 + label10: Signal 10 + label2: Signal 2 + label3: Signal 3 + label4: Signal 4 + label5: Signal 5 + label6: Signal 6 + label7: Signal 7 + label8: Signal 8 + label9: Signal 9 + legend: 'True' + marker1: '-1' + marker10: '-1' + marker2: '-1' + marker3: '-1' + marker4: '-1' + marker5: '-1' + marker6: '-1' + marker7: '-1' + marker8: '-1' + marker9: '-1' + name: '""' + nconnections: '1' + size: int(fft_size/2) + srate: samp_rate + stemplot: 'False' + style1: '1' + style10: '1' + style2: '1' + style3: '1' + style4: '1' + style5: '1' + style6: '1' + style7: '1' + style8: '1' + style9: '1' + tr_chan: '0' + tr_delay: '0' + tr_level: '19.0' + tr_mode: qtgui.TRIG_MODE_FREE + tr_slope: qtgui.TRIG_SLOPE_POS + tr_tag: '"peak_1"' + type: float + update_time: '2.0' + width1: '1' + width10: '1' + width2: '1' + width3: '1' + width4: '1' + width5: '1' + width6: '1' + width7: '1' + width8: '1' + width9: '1' + ylabel: Amplitude + ymax: '1' + ymin: '-1' + yunit: '""' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [490, 1022] + rotation: 90 + state: enabled +- name: ratio_finder_toggle_on_and_off + id: variable_qtgui_msg_push_button + parameters: + comment: '' + gui_hint: '' + label: Ratio Finder toggle ON or OFF (FFT peaks). + msgName: pressed + relBackgroundColor: default + relFontColor: default + type: bool + value: 'True' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [441, 1471] + rotation: 180 + state: enabled +- name: single_pole_iir_filter_xx_0 + id: single_pole_iir_filter_xx + parameters: + affinity: '' + alias: '' + alpha: '0.001' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [850, 392] + rotation: 0 + state: disabled +- name: tab_m + id: qtgui_tab_widget + parameters: + alias: '' + comment: '' + gui_hint: '' + label0: Tempest Main Tab + label1: Autocorrelation Plot Tab + label10: Tab 10 + label11: Tab 11 + label12: Tab 12 + label13: Tab 13 + label14: Tab 14 + label15: Tab 15 + label16: Tab 16 + label17: Tab 17 + label18: Tab 18 + label19: Tab 19 + label2: Tab 2 + label3: Tab 3 + label4: Tab 4 + label5: Tab 5 + label6: Tab 6 + label7: Tab 7 + label8: Tab 8 + label9: Tab 9 + num_tabs: '2' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [353, 8] + rotation: 0 + state: true +- name: tempest_fft_peak_fine_sampling_sync_0_0 + id: tempest_fft_peak_fine_sampling_sync + parameters: + Hvisible: interpolatedHsize + Vvisible: Vsize + affinity: '' + alias: '' + automatic_mode: 'True' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + refresh_rate: refresh_rate + sample_rate: samp_rate + size: int(fft_size) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [325, 1201] + rotation: 90 + state: enabled +- name: tempest_fine_sampling_synchronization_0 + id: tempest_fine_sampling_synchronization + parameters: + Htotal: interpolatedHsize + Vtotal: Vsize + affinity: '' + alias: '' + comment: '' + correct_sampling: '1' + max_deviation: 10.0/interpolatedHsize + maxoutbuf: '0' + minoutbuf: '0' + update_proba: 1.2e-2/(interpolatedHsize*Vsize) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [645, 791] + rotation: 0 + state: disabled +- name: tempest_infer_screen_resolution_1 + id: tempest_infer_screen_resolution + parameters: + affinity: '' + alias: '' + automatic_mode: 'True' + comment: '' + fft_size: int(fft_size) + maxoutbuf: '0' + minoutbuf: '0' + refresh_rate: refresh_rate + sample_rate: samp_rate + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [747, 1102] + rotation: 0 + state: disabled +- name: tempest_normalize_flow_0 + id: tempest_normalize_flow + parameters: + affinity: '' + alias: '' + alpha_avg: 1e-2 + comment: '' + max: '245' + maxoutbuf: '0' + min: '10' + minoutbuf: '0' + update_proba: '0.1' + window: interpolatedHsize + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1400, 924] + rotation: 270 + state: enabled +- name: tempest_sync_detector_0 + id: tempest_sync_detector + parameters: + affinity: '' + alias: '' + comment: '' + hblanking: interpolatedHblank + hscreen: interpolatedHscreen + maxoutbuf: '0' + minoutbuf: '0' + vblanking: Vblank + vscreen: Vsize-Vblank + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [772, 590] + rotation: 0 + state: enabled +- name: tempest_sync_detector_0_0 + id: tempest_sync_detector + parameters: + affinity: '' + alias: '' + comment: '' + hblanking: interpolatedHblank + hscreen: interpolatedHscreen + maxoutbuf: '0' + minoutbuf: '0' + vblanking: Vblank + vscreen: Vsize-Vblank + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [706, 950] + rotation: 0 + state: disabled +- name: uhd_usrp_source_0 + id: uhd_usrp_source + parameters: + affinity: '' + alias: '' + ant0: '' + ant1: '' + ant10: '' + ant11: '' + ant12: '' + ant13: '' + ant14: '' + ant15: '' + ant16: '' + ant17: '' + ant18: '' + ant19: '' + ant2: '' + ant20: '' + ant21: '' + ant22: '' + ant23: '' + ant24: '' + ant25: '' + ant26: '' + ant27: '' + ant28: '' + ant29: '' + ant3: '' + ant30: '' + ant31: '' + ant4: '' + ant5: '' + ant6: '' + ant7: '' + ant8: '' + ant9: '' + bw0: '0' + bw1: '0' + bw10: '0' + bw11: '0' + bw12: '0' + bw13: '0' + bw14: '0' + bw15: '0' + bw16: '0' + bw17: '0' + bw18: '0' + bw19: '0' + bw2: '0' + bw20: '0' + bw21: '0' + bw22: '0' + bw23: '0' + bw24: '0' + bw25: '0' + bw26: '0' + bw27: '0' + bw28: '0' + bw29: '0' + bw3: '0' + bw30: '0' + bw31: '0' + bw4: '0' + bw5: '0' + bw6: '0' + bw7: '0' + bw8: '0' + bw9: '0' + center_freq0: px_rate*harmonic + center_freq1: '0' + center_freq10: '0' + center_freq11: '0' + center_freq12: '0' + center_freq13: '0' + center_freq14: '0' + center_freq15: '0' + center_freq16: '0' + center_freq17: '0' + center_freq18: '0' + center_freq19: '0' + center_freq2: '0' + center_freq20: '0' + center_freq21: '0' + center_freq22: '0' + center_freq23: '0' + center_freq24: '0' + center_freq25: '0' + center_freq26: '0' + center_freq27: '0' + center_freq28: '0' + center_freq29: '0' + center_freq3: '0' + center_freq30: '0' + center_freq31: '0' + center_freq4: '0' + center_freq5: '0' + center_freq6: '0' + center_freq7: '0' + center_freq8: '0' + center_freq9: '0' + clock_rate: '0.0' + clock_source0: '' + clock_source1: '' + clock_source2: '' + clock_source3: '' + clock_source4: '' + clock_source5: '' + clock_source6: '' + clock_source7: '' + comment: '' + dc_offs_enb0: '""' + dc_offs_enb1: '""' + dc_offs_enb10: '""' + dc_offs_enb11: '""' + dc_offs_enb12: '""' + dc_offs_enb13: '""' + dc_offs_enb14: '""' + dc_offs_enb15: '""' + dc_offs_enb16: '""' + dc_offs_enb17: '""' + dc_offs_enb18: '""' + dc_offs_enb19: '""' + dc_offs_enb2: '""' + dc_offs_enb20: '""' + dc_offs_enb21: '""' + dc_offs_enb22: '""' + dc_offs_enb23: '""' + dc_offs_enb24: '""' + dc_offs_enb25: '""' + dc_offs_enb26: '""' + dc_offs_enb27: '""' + dc_offs_enb28: '""' + dc_offs_enb29: '""' + dc_offs_enb3: '""' + dc_offs_enb30: '""' + dc_offs_enb31: '""' + dc_offs_enb4: '""' + dc_offs_enb5: '""' + dc_offs_enb6: '""' + dc_offs_enb7: '""' + dc_offs_enb8: '""' + dc_offs_enb9: '""' + dev_addr: '""' + dev_args: '"recv_frame_size= 65536, num_recv_frames=128"' + gain0: '50' + gain1: '0' + gain10: '0' + gain11: '0' + gain12: '0' + gain13: '0' + gain14: '0' + gain15: '0' + gain16: '0' + gain17: '0' + gain18: '0' + gain19: '0' + gain2: '0' + gain20: '0' + gain21: '0' + gain22: '0' + gain23: '0' + gain24: '0' + gain25: '0' + gain26: '0' + gain27: '0' + gain28: '0' + gain29: '0' + gain3: '0' + gain30: '0' + gain31: '0' + gain4: '0' + gain5: '0' + gain6: '0' + gain7: '0' + gain8: '0' + gain9: '0' + iq_imbal_enb0: '""' + iq_imbal_enb1: '""' + iq_imbal_enb10: '""' + iq_imbal_enb11: '""' + iq_imbal_enb12: '""' + iq_imbal_enb13: '""' + iq_imbal_enb14: '""' + iq_imbal_enb15: '""' + iq_imbal_enb16: '""' + iq_imbal_enb17: '""' + iq_imbal_enb18: '""' + iq_imbal_enb19: '""' + iq_imbal_enb2: '""' + iq_imbal_enb20: '""' + iq_imbal_enb21: '""' + iq_imbal_enb22: '""' + iq_imbal_enb23: '""' + iq_imbal_enb24: '""' + iq_imbal_enb25: '""' + iq_imbal_enb26: '""' + iq_imbal_enb27: '""' + iq_imbal_enb28: '""' + iq_imbal_enb29: '""' + iq_imbal_enb3: '""' + iq_imbal_enb30: '""' + iq_imbal_enb31: '""' + iq_imbal_enb4: '""' + iq_imbal_enb5: '""' + iq_imbal_enb6: '""' + iq_imbal_enb7: '""' + iq_imbal_enb8: '""' + iq_imbal_enb9: '""' + lo_export0: 'False' + lo_export1: 'False' + lo_export10: 'False' + lo_export11: 'False' + lo_export12: 'False' + lo_export13: 'False' + lo_export14: 'False' + lo_export15: 'False' + lo_export16: 'False' + lo_export17: 'False' + lo_export18: 'False' + lo_export19: 'False' + lo_export2: 'False' + lo_export20: 'False' + lo_export21: 'False' + lo_export22: 'False' + lo_export23: 'False' + lo_export24: 'False' + lo_export25: 'False' + lo_export26: 'False' + lo_export27: 'False' + lo_export28: 'False' + lo_export29: 'False' + lo_export3: 'False' + lo_export30: 'False' + lo_export31: 'False' + lo_export4: 'False' + lo_export5: 'False' + lo_export6: 'False' + lo_export7: 'False' + lo_export8: 'False' + lo_export9: 'False' + lo_source0: internal + lo_source1: internal + lo_source10: internal + lo_source11: internal + lo_source12: internal + lo_source13: internal + lo_source14: internal + lo_source15: internal + lo_source16: internal + lo_source17: internal + lo_source18: internal + lo_source19: internal + lo_source2: internal + lo_source20: internal + lo_source21: internal + lo_source22: internal + lo_source23: internal + lo_source24: internal + lo_source25: internal + lo_source26: internal + lo_source27: internal + lo_source28: internal + lo_source29: internal + lo_source3: internal + lo_source30: internal + lo_source31: internal + lo_source4: internal + lo_source5: internal + lo_source6: internal + lo_source7: internal + lo_source8: internal + lo_source9: internal + maxoutbuf: '0' + minoutbuf: '0' + nchan: '1' + norm_gain0: 'False' + norm_gain1: 'False' + norm_gain10: 'False' + norm_gain11: 'False' + norm_gain12: 'False' + norm_gain13: 'False' + norm_gain14: 'False' + norm_gain15: 'False' + norm_gain16: 'False' + norm_gain17: 'False' + norm_gain18: 'False' + norm_gain19: 'False' + norm_gain2: 'False' + norm_gain20: 'False' + norm_gain21: 'False' + norm_gain22: 'False' + norm_gain23: 'False' + norm_gain24: 'False' + norm_gain25: 'False' + norm_gain26: 'False' + norm_gain27: 'False' + norm_gain28: 'False' + norm_gain29: 'False' + norm_gain3: 'False' + norm_gain30: 'False' + norm_gain31: 'False' + norm_gain4: 'False' + norm_gain5: 'False' + norm_gain6: 'False' + norm_gain7: 'False' + norm_gain8: 'False' + norm_gain9: 'False' + num_mboards: '1' + otw: '' + rx_agc0: Default + rx_agc1: Default + rx_agc10: Default + rx_agc11: Default + rx_agc12: Default + rx_agc13: Default + rx_agc14: Default + rx_agc15: Default + rx_agc16: Default + rx_agc17: Default + rx_agc18: Default + rx_agc19: Default + rx_agc2: Default + rx_agc20: Default + rx_agc21: Default + rx_agc22: Default + rx_agc23: Default + rx_agc24: Default + rx_agc25: Default + rx_agc26: Default + rx_agc27: Default + rx_agc28: Default + rx_agc29: Default + rx_agc3: Default + rx_agc30: Default + rx_agc31: Default + rx_agc4: Default + rx_agc5: Default + rx_agc6: Default + rx_agc7: Default + rx_agc8: Default + rx_agc9: Default + samp_rate: samp_rate + sd_spec0: '' + sd_spec1: '' + sd_spec2: '' + sd_spec3: '' + sd_spec4: '' + sd_spec5: '' + sd_spec6: '' + sd_spec7: '' + show_lo_controls: 'False' + stream_args: '' + stream_chans: '[]' + sync: sync + time_source0: '' + time_source1: '' + time_source2: '' + time_source3: '' + time_source4: '' + time_source5: '' + time_source6: '' + time_source7: '' + type: fc32 + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [83, 741] + rotation: 0 + state: enabled +- name: video_sdl_sink_0_0_0 + id: video_sdl_sink + parameters: + affinity: '' + alias: '' + comment: "Enable this path when you are sure what the \nresolution is (and defaut\ + \ to those values on \nthe chooser)." + display_height: '517' + display_width: '1088' + fps: '0' + height: Vsize + num_channels: '1' + type: short + width: interpolatedHsize + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1400, 1258] + rotation: 270 + state: enabled + +connections: +- [FFT_autocorrelation_0_0, '0', tempest_fft_peak_fine_sampling_sync_0_0, '0'] +- [FFT_autocorrelation_0_0, '0', tempest_infer_screen_resolution_1, '0'] +- [Keep_1_in_N_Frames_0, '0', FFT_autocorrelation_0_0, '0'] +- [Keep_1_in_N_Frames_0, '0', blocks_delay_1, '0'] +- [Keep_1_in_N_Frames_0, '0', blocks_multiply_conjugate_cc_0, '0'] +- [Keep_1_in_N_Frames_0, '0', interp_fir_filter_xxx_1, '0'] +- [Keep_1_in_N_Frames_0, '0', tempest_fine_sampling_synchronization_0, '0'] +- [Keep_1_in_N_Frames_0, '0', tempest_sync_detector_0_0, '0'] +- [analog_sig_source_x_0_0, '0', blocks_multiply_xx_0_0, '1'] +- [blocks_complex_to_arg_0, '0', qtgui_time_sink_x_0, '0'] +- [blocks_complex_to_mag_0, '0', tempest_normalize_flow_0, '0'] +- [blocks_complex_to_real_0, '0', tempest_normalize_flow_0, '0'] +- [blocks_delay_0, '0', blocks_multiply_xx_0_0, '0'] +- [blocks_delay_0_0, '0', blocks_complex_to_mag_0, '0'] +- [blocks_delay_1, '0', blocks_multiply_conjugate_cc_0, '1'] +- [blocks_file_source_0, '0', blocks_throttle_0, '0'] +- [blocks_float_to_short_0, '0', video_sdl_sink_0_0_0, '0'] +- [blocks_multiply_conjugate_cc_0, '0', single_pole_iir_filter_xx_0, '0'] +- [blocks_multiply_xx_0_0, '0', blocks_complex_to_real_0, '0'] +- [blocks_throttle_0, '0', Keep_1_in_N_Frames_0, '0'] +- [interp_fir_filter_xxx_1, '0', tempest_sync_detector_0, '0'] +- [ratio_finder_toggle_on_and_off, pressed, tempest_fft_peak_fine_sampling_sync_0_0, + en] +- [single_pole_iir_filter_xx_0, '0', blocks_complex_to_arg_0, '0'] +- [tempest_fft_peak_fine_sampling_sync_0_0, '0', qtgui_time_sink_x_1, '0'] +- [tempest_fft_peak_fine_sampling_sync_0_0, en, FFT_autocorrelation_0_0, en] +- [tempest_fft_peak_fine_sampling_sync_0_0, en, tempest_fine_sampling_synchronization_0, + en] +- [tempest_fft_peak_fine_sampling_sync_0_0, en, tempest_sync_detector_0, en] +- [tempest_fft_peak_fine_sampling_sync_0_0, en, tempest_sync_detector_0_0, en] +- [tempest_fft_peak_fine_sampling_sync_0_0, rate, uhd_usrp_source_0, command] +- [tempest_fft_peak_fine_sampling_sync_0_0, ratio, tempest_fine_sampling_synchronization_0, + ratio] +- [tempest_fine_sampling_synchronization_0, '0', tempest_sync_detector_0_0, '0'] +- [tempest_infer_screen_resolution_1, '0', qtgui_time_sink_x_1, '0'] +- [tempest_normalize_flow_0, '0', blocks_float_to_short_0, '0'] +- [tempest_sync_detector_0, '0', blocks_delay_0, '0'] +- [tempest_sync_detector_0_0, '0', blocks_delay_0_0, '0'] +- [uhd_usrp_source_0, '0', Keep_1_in_N_Frames_0, '0'] + +metadata: + file_format: 1 diff --git a/examples/Demo/InferScreenResolution_50MSps_300MHzCentral.grc b/examples/Demo/InferScreenResolution_50MSps_300MHzCentral.grc new file mode 100644 index 0000000..b8a9b42 --- /dev/null +++ b/examples/Demo/InferScreenResolution_50MSps_300MHzCentral.grc @@ -0,0 +1,705 @@ +options: + parameters: + author: '' + category: '[GRC Hier Blocks]' + cmake_opt: '' + comment: '' + copyright: '' + description: '' + gen_cmake: 'On' + gen_linking: dynamic + generate_options: qt_gui + hier_block_src_path: '.:' + id: manual_tempest_example + max_nouts: '0' + output_language: python + placement: (0,0) + qt_qss_theme: '' + realtime_scheduling: '1' + run: 'True' + run_command: '{python} -u {filename}' + run_options: prompt + sizing_mode: fixed + thread_safe_setters: '' + title: '' + window_size: '' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [52, 17] + rotation: 0 + state: enabled + +blocks: +- name: DroppedFrames + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: '' + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '0' + step: '1' + stop: '100' + value: '50' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [493, 427] + rotation: 0 + state: enabled +- name: Hsize + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Horizontal resolution (total) + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: int(4096*1.5) + value: '2200' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [296, 37] + rotation: 0 + state: enabled +- name: Vsize + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Vertical resolution (total) + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: int(2160*1.5) + value: '1125' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [439, 37] + rotation: 0 + state: enabled +- name: fft_size + id: variable + parameters: + comment: '' + value: 2**21 + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [192, 102] + rotation: 0 + state: true +- name: harmonic + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Harmonic + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '1' + step: '1' + stop: '10' + value: '2' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [54, 214] + rotation: 0 + state: enabled +- name: px_rate + id: variable + parameters: + comment: '' + value: Hsize*Vsize*refresh_rate + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [192, 172] + rotation: 0 + state: enabled +- name: refresh_rate + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: refr + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: '100' + value: '60' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [53, 97] + rotation: 0 + state: true +- name: samp_rate + id: variable + parameters: + comment: '' + value: int(50e6) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [192, 35] + rotation: 0 + state: enabled +- name: FFT_autocorrelation_0_0 + id: FFT_autocorrelation + parameters: + affinity: '' + alias: '' + alpha: '1.0' + comment: '' + fft_size: int(fft_size) + maxoutbuf: '0' + minoutbuf: '0' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [640, 371] + rotation: 0 + state: enabled +- name: Keep_1_in_N_Frames_0 + id: Keep_1_in_N_Frames + parameters: + affinity: '' + alias: '' + comment: '' + fac_decimation: DroppedFrames + fft_size: fft_size + maxoutbuf: '0' + minoutbuf: '0' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [425, 363] + rotation: 0 + state: enabled +- name: qtgui_time_sink_x_1 + id: qtgui_time_sink_x + parameters: + affinity: '' + alias: '' + alpha1: '1.0' + alpha10: '1.0' + alpha2: '1.0' + alpha3: '1.0' + alpha4: '1.0' + alpha5: '1.0' + alpha6: '1.0' + alpha7: '1.0' + alpha8: '1.0' + alpha9: '1.0' + autoscale: 'False' + axislabels: 'True' + color1: blue + color10: dark blue + color2: red + color3: green + color4: black + color5: cyan + color6: magenta + color7: yellow + color8: dark red + color9: dark green + comment: '' + ctrlpanel: 'False' + entags: 'True' + grid: 'True' + gui_hint: '' + label1: Signal 1 + label10: Signal 10 + label2: Signal 2 + label3: Signal 3 + label4: Signal 4 + label5: Signal 5 + label6: Signal 6 + label7: Signal 7 + label8: Signal 8 + label9: Signal 9 + legend: 'True' + marker1: '-1' + marker10: '-1' + marker2: '-1' + marker3: '-1' + marker4: '-1' + marker5: '-1' + marker6: '-1' + marker7: '-1' + marker8: '-1' + marker9: '-1' + name: '""' + nconnections: '1' + size: int(fft_size) + srate: samp_rate + stemplot: 'False' + style1: '1' + style10: '1' + style2: '1' + style3: '1' + style4: '1' + style5: '1' + style6: '1' + style7: '1' + style8: '1' + style9: '1' + tr_chan: '0' + tr_delay: '0' + tr_level: '15.0' + tr_mode: qtgui.TRIG_MODE_NORM + tr_slope: qtgui.TRIG_SLOPE_POS + tr_tag: '"peak_1"' + type: float + update_time: '2.0' + width1: '1' + width10: '1' + width2: '1' + width3: '1' + width4: '1' + width5: '1' + width6: '1' + width7: '1' + width8: '1' + width9: '1' + ylabel: Amplitude + ymax: '1' + ymin: '-1' + yunit: '""' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1048, 476] + rotation: 270 + state: enabled +- name: tempest_infer_screen_resolution_0 + id: tempest_infer_screen_resolution + parameters: + affinity: '' + alias: '' + automatic_mode: 'True' + comment: '' + fft_size: int(fft_size) + maxoutbuf: '0' + minoutbuf: '0' + refresh_rate: refresh_rate + sample_rate: samp_rate + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [848, 363] + rotation: 0 + state: enabled +- name: uhd_usrp_source_0 + id: uhd_usrp_source + parameters: + affinity: '' + alias: '' + ant0: '' + ant1: '' + ant10: '' + ant11: '' + ant12: '' + ant13: '' + ant14: '' + ant15: '' + ant16: '' + ant17: '' + ant18: '' + ant19: '' + ant2: '' + ant20: '' + ant21: '' + ant22: '' + ant23: '' + ant24: '' + ant25: '' + ant26: '' + ant27: '' + ant28: '' + ant29: '' + ant3: '' + ant30: '' + ant31: '' + ant4: '' + ant5: '' + ant6: '' + ant7: '' + ant8: '' + ant9: '' + bw0: '0' + bw1: '0' + bw10: '0' + bw11: '0' + bw12: '0' + bw13: '0' + bw14: '0' + bw15: '0' + bw16: '0' + bw17: '0' + bw18: '0' + bw19: '0' + bw2: '0' + bw20: '0' + bw21: '0' + bw22: '0' + bw23: '0' + bw24: '0' + bw25: '0' + bw26: '0' + bw27: '0' + bw28: '0' + bw29: '0' + bw3: '0' + bw30: '0' + bw31: '0' + bw4: '0' + bw5: '0' + bw6: '0' + bw7: '0' + bw8: '0' + bw9: '0' + center_freq0: px_rate*harmonic + center_freq1: '0' + center_freq10: '0' + center_freq11: '0' + center_freq12: '0' + center_freq13: '0' + center_freq14: '0' + center_freq15: '0' + center_freq16: '0' + center_freq17: '0' + center_freq18: '0' + center_freq19: '0' + center_freq2: '0' + center_freq20: '0' + center_freq21: '0' + center_freq22: '0' + center_freq23: '0' + center_freq24: '0' + center_freq25: '0' + center_freq26: '0' + center_freq27: '0' + center_freq28: '0' + center_freq29: '0' + center_freq3: '0' + center_freq30: '0' + center_freq31: '0' + center_freq4: '0' + center_freq5: '0' + center_freq6: '0' + center_freq7: '0' + center_freq8: '0' + center_freq9: '0' + clock_rate: '0.0' + clock_source0: '' + clock_source1: '' + clock_source2: '' + clock_source3: '' + clock_source4: '' + clock_source5: '' + clock_source6: '' + clock_source7: '' + comment: '' + dc_offs_enb0: '""' + dc_offs_enb1: '""' + dc_offs_enb10: '""' + dc_offs_enb11: '""' + dc_offs_enb12: '""' + dc_offs_enb13: '""' + dc_offs_enb14: '""' + dc_offs_enb15: '""' + dc_offs_enb16: '""' + dc_offs_enb17: '""' + dc_offs_enb18: '""' + dc_offs_enb19: '""' + dc_offs_enb2: '""' + dc_offs_enb20: '""' + dc_offs_enb21: '""' + dc_offs_enb22: '""' + dc_offs_enb23: '""' + dc_offs_enb24: '""' + dc_offs_enb25: '""' + dc_offs_enb26: '""' + dc_offs_enb27: '""' + dc_offs_enb28: '""' + dc_offs_enb29: '""' + dc_offs_enb3: '""' + dc_offs_enb30: '""' + dc_offs_enb31: '""' + dc_offs_enb4: '""' + dc_offs_enb5: '""' + dc_offs_enb6: '""' + dc_offs_enb7: '""' + dc_offs_enb8: '""' + dc_offs_enb9: '""' + dev_addr: '""' + dev_args: '"recv_frame_size= 65536, num_recv_frames=128"' + gain0: '50' + gain1: '0' + gain10: '0' + gain11: '0' + gain12: '0' + gain13: '0' + gain14: '0' + gain15: '0' + gain16: '0' + gain17: '0' + gain18: '0' + gain19: '0' + gain2: '0' + gain20: '0' + gain21: '0' + gain22: '0' + gain23: '0' + gain24: '0' + gain25: '0' + gain26: '0' + gain27: '0' + gain28: '0' + gain29: '0' + gain3: '0' + gain30: '0' + gain31: '0' + gain4: '0' + gain5: '0' + gain6: '0' + gain7: '0' + gain8: '0' + gain9: '0' + iq_imbal_enb0: '""' + iq_imbal_enb1: '""' + iq_imbal_enb10: '""' + iq_imbal_enb11: '""' + iq_imbal_enb12: '""' + iq_imbal_enb13: '""' + iq_imbal_enb14: '""' + iq_imbal_enb15: '""' + iq_imbal_enb16: '""' + iq_imbal_enb17: '""' + iq_imbal_enb18: '""' + iq_imbal_enb19: '""' + iq_imbal_enb2: '""' + iq_imbal_enb20: '""' + iq_imbal_enb21: '""' + iq_imbal_enb22: '""' + iq_imbal_enb23: '""' + iq_imbal_enb24: '""' + iq_imbal_enb25: '""' + iq_imbal_enb26: '""' + iq_imbal_enb27: '""' + iq_imbal_enb28: '""' + iq_imbal_enb29: '""' + iq_imbal_enb3: '""' + iq_imbal_enb30: '""' + iq_imbal_enb31: '""' + iq_imbal_enb4: '""' + iq_imbal_enb5: '""' + iq_imbal_enb6: '""' + iq_imbal_enb7: '""' + iq_imbal_enb8: '""' + iq_imbal_enb9: '""' + lo_export0: 'False' + lo_export1: 'False' + lo_export10: 'False' + lo_export11: 'False' + lo_export12: 'False' + lo_export13: 'False' + lo_export14: 'False' + lo_export15: 'False' + lo_export16: 'False' + lo_export17: 'False' + lo_export18: 'False' + lo_export19: 'False' + lo_export2: 'False' + lo_export20: 'False' + lo_export21: 'False' + lo_export22: 'False' + lo_export23: 'False' + lo_export24: 'False' + lo_export25: 'False' + lo_export26: 'False' + lo_export27: 'False' + lo_export28: 'False' + lo_export29: 'False' + lo_export3: 'False' + lo_export30: 'False' + lo_export31: 'False' + lo_export4: 'False' + lo_export5: 'False' + lo_export6: 'False' + lo_export7: 'False' + lo_export8: 'False' + lo_export9: 'False' + lo_source0: internal + lo_source1: internal + lo_source10: internal + lo_source11: internal + lo_source12: internal + lo_source13: internal + lo_source14: internal + lo_source15: internal + lo_source16: internal + lo_source17: internal + lo_source18: internal + lo_source19: internal + lo_source2: internal + lo_source20: internal + lo_source21: internal + lo_source22: internal + lo_source23: internal + lo_source24: internal + lo_source25: internal + lo_source26: internal + lo_source27: internal + lo_source28: internal + lo_source29: internal + lo_source3: internal + lo_source30: internal + lo_source31: internal + lo_source4: internal + lo_source5: internal + lo_source6: internal + lo_source7: internal + lo_source8: internal + lo_source9: internal + maxoutbuf: '0' + minoutbuf: '0' + nchan: '1' + norm_gain0: 'False' + norm_gain1: 'False' + norm_gain10: 'False' + norm_gain11: 'False' + norm_gain12: 'False' + norm_gain13: 'False' + norm_gain14: 'False' + norm_gain15: 'False' + norm_gain16: 'False' + norm_gain17: 'False' + norm_gain18: 'False' + norm_gain19: 'False' + norm_gain2: 'False' + norm_gain20: 'False' + norm_gain21: 'False' + norm_gain22: 'False' + norm_gain23: 'False' + norm_gain24: 'False' + norm_gain25: 'False' + norm_gain26: 'False' + norm_gain27: 'False' + norm_gain28: 'False' + norm_gain29: 'False' + norm_gain3: 'False' + norm_gain30: 'False' + norm_gain31: 'False' + norm_gain4: 'False' + norm_gain5: 'False' + norm_gain6: 'False' + norm_gain7: 'False' + norm_gain8: 'False' + norm_gain9: 'False' + num_mboards: '1' + otw: '' + rx_agc0: Default + rx_agc1: Default + rx_agc10: Default + rx_agc11: Default + rx_agc12: Default + rx_agc13: Default + rx_agc14: Default + rx_agc15: Default + rx_agc16: Default + rx_agc17: Default + rx_agc18: Default + rx_agc19: Default + rx_agc2: Default + rx_agc20: Default + rx_agc21: Default + rx_agc22: Default + rx_agc23: Default + rx_agc24: Default + rx_agc25: Default + rx_agc26: Default + rx_agc27: Default + rx_agc28: Default + rx_agc29: Default + rx_agc3: Default + rx_agc30: Default + rx_agc31: Default + rx_agc4: Default + rx_agc5: Default + rx_agc6: Default + rx_agc7: Default + rx_agc8: Default + rx_agc9: Default + samp_rate: samp_rate + sd_spec0: '' + sd_spec1: '' + sd_spec2: '' + sd_spec3: '' + sd_spec4: '' + sd_spec5: '' + sd_spec6: '' + sd_spec7: '' + show_lo_controls: 'False' + stream_args: '' + stream_chans: '[]' + sync: sync + time_source0: '' + time_source1: '' + time_source2: '' + time_source3: '' + time_source4: '' + time_source5: '' + time_source6: '' + time_source7: '' + type: fc32 + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [129, 331] + rotation: 0 + state: enabled + +connections: +- [FFT_autocorrelation_0_0, '0', tempest_infer_screen_resolution_0, '0'] +- [Keep_1_in_N_Frames_0, '0', FFT_autocorrelation_0_0, '0'] +- [tempest_infer_screen_resolution_0, '0', qtgui_time_sink_x_1, '0'] +- [uhd_usrp_source_0, '0', Keep_1_in_N_Frames_0, '0'] + +metadata: + file_format: 1 diff --git a/examples/Demo/VGA_50MHzSps_300MHzCentral_Magnitude.grc b/examples/Demo/VGA_50MHzSps_300MHzCentral_Magnitude.grc new file mode 100644 index 0000000..23083e9 --- /dev/null +++ b/examples/Demo/VGA_50MHzSps_300MHzCentral_Magnitude.grc @@ -0,0 +1,1029 @@ +options: + parameters: + author: '' + category: '[GRC Hier Blocks]' + cmake_opt: '' + comment: '' + copyright: '' + description: '' + gen_cmake: 'On' + gen_linking: dynamic + generate_options: qt_gui + hier_block_src_path: '.:' + id: manual_tempest_example + max_nouts: '0' + output_language: python + placement: (0,0) + qt_qss_theme: '' + realtime_scheduling: '1' + run: 'True' + run_command: '{python} -u {filename}' + run_options: prompt + sizing_mode: fixed + thread_safe_setters: '' + title: '' + window_size: '' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [15, 12] + rotation: 0 + state: enabled + +blocks: +- name: DelaySyncDetector + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: '' + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '0' + step: interpolatedHsize*1 + stop: Vsize*interpolatedHsize + value: interpolatedHsize*1 + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1061, 35] + rotation: 0 + state: enabled +- name: DroppedFrames + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: '' + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '1' + step: '1' + stop: '100' + value: '50' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [859, 34] + rotation: 0 + state: true +- name: Hblank + id: variable + parameters: + comment: '' + value: Hsize-Hvisible + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [740, 220] + rotation: 0 + state: enabled +- name: Hsize + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: Horizontal resolution (total) + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: int(4096*1.5) + value: '2200' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [505, 34] + rotation: 0 + state: enabled +- name: Hvisible + id: variable + parameters: + comment: '' + value: '1920' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [740, 156] + rotation: 0 + state: enabled +- name: Vblank + id: variable + parameters: + comment: '' + value: Vsize-Vvisible + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [656, 220] + rotation: 0 + state: enabled +- name: Vsize + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: Vertical resolution (total) + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: int(2160*1.5) + value: '1125' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [649, 34] + rotation: 0 + state: enabled +- name: Vvisible + id: variable + parameters: + comment: '' + value: '1080' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [649, 157] + rotation: 0 + state: enabled +- name: fft_size + id: variable + parameters: + comment: '' + value: 2**21 + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [226, 244] + rotation: 0 + state: true +- name: harmonic + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: Harmonic + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '1' + step: '1' + stop: '10' + value: '2' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [226, 127] + rotation: 0 + state: enabled +- name: interpolatedHblank + id: variable + parameters: + comment: '' + value: int(Hblank/float(px_rate)*samp_rate) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [506, 215] + rotation: 0 + state: enabled +- name: interpolatedHscreen + id: variable + parameters: + comment: '' + value: int(Hvisible/float(px_rate)*samp_rate) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [506, 278] + rotation: 0 + state: enabled +- name: interpolatedHsize + id: variable + parameters: + comment: '' + value: int(Hsize/float(px_rate)*samp_rate) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [506, 154] + rotation: 0 + state: enabled +- name: inverted + id: variable_qtgui_chooser + parameters: + comment: '' + gui_hint: tab_m@0 + label: Inverted colors? + label0: 'Yes' + label1: 'No' + label2: '' + label3: '' + label4: '' + labels: '[]' + num_opts: '2' + option1: '1' + option2: '2' + option3: '3' + option4: '4' + options: '[0, 1, 2]' + orient: Qt.QHBoxLayout + type: real + value: '-1' + widget: radio_buttons + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [21, 235] + rotation: 0 + state: enabled +- name: px_rate + id: variable + parameters: + comment: '' + value: Hsize*Vsize*refresh_rate + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [332, 244] + rotation: 0 + state: enabled +- name: refresh_rate + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: Refresh Rate (Hz) + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '0' + step: '1' + stop: '240' + value: '60' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [331, 126] + rotation: 0 + state: enabled +- name: samp_rate + id: variable + parameters: + comment: '' + value: int(50e6) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [225, 61] + rotation: 0 + state: enabled +- name: FFT_autocorrelation_0_0 + id: FFT_autocorrelation + parameters: + affinity: '' + alias: '' + alpha: '1.0' + comment: '' + fft_size: int(fft_size) + maxoutbuf: '0' + minoutbuf: '0' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [648, 809] + rotation: 270 + state: enabled +- name: Keep_1_in_N_Frames_0 + id: Keep_1_in_N_Frames + parameters: + affinity: '' + alias: '' + comment: '' + fac_decimation: DroppedFrames + fft_size: interpolatedHsize*Vsize*4 + maxoutbuf: '0' + minoutbuf: '0' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [506, 470] + rotation: 0 + state: enabled +- name: blocks_complex_to_mag_0 + id: blocks_complex_to_mag + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1336, 493] + rotation: 0 + state: enabled +- name: blocks_delay_0_0 + id: blocks_delay + parameters: + affinity: '' + alias: '' + comment: '' + delay: DelaySyncDetector + maxoutbuf: '0' + minoutbuf: '0' + num_ports: '1' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1099, 491] + rotation: 0 + state: enabled +- name: blocks_float_to_short_0 + id: blocks_float_to_short + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + scale: inverted + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1501, 796] + rotation: 270 + state: enabled +- name: import_0 + id: import + parameters: + alias: '' + comment: '' + imports: from math import pi + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [22, 185] + rotation: 0 + state: true +- name: qtgui_time_sink_x_1 + id: qtgui_time_sink_x + parameters: + affinity: '' + alias: '' + alpha1: '1.0' + alpha10: '1.0' + alpha2: '1.0' + alpha3: '1.0' + alpha4: '1.0' + alpha5: '1.0' + alpha6: '1.0' + alpha7: '1.0' + alpha8: '1.0' + alpha9: '1.0' + autoscale: 'False' + axislabels: 'True' + color1: blue + color10: dark blue + color2: red + color3: green + color4: black + color5: cyan + color6: magenta + color7: yellow + color8: dark red + color9: dark green + comment: '' + ctrlpanel: 'False' + entags: 'True' + grid: 'True' + gui_hint: tab_m@1 + label1: Signal 1 + label10: Signal 10 + label2: Signal 2 + label3: Signal 3 + label4: Signal 4 + label5: Signal 5 + label6: Signal 6 + label7: Signal 7 + label8: Signal 8 + label9: Signal 9 + legend: 'True' + marker1: '-1' + marker10: '-1' + marker2: '-1' + marker3: '-1' + marker4: '-1' + marker5: '-1' + marker6: '-1' + marker7: '-1' + marker8: '-1' + marker9: '-1' + name: '""' + nconnections: '1' + size: int(fft_size/2) + srate: samp_rate + stemplot: 'False' + style1: '1' + style10: '1' + style2: '1' + style3: '1' + style4: '1' + style5: '1' + style6: '1' + style7: '1' + style8: '1' + style9: '1' + tr_chan: '0' + tr_delay: '0' + tr_level: '19.0' + tr_mode: qtgui.TRIG_MODE_FREE + tr_slope: qtgui.TRIG_SLOPE_POS + tr_tag: '"peak_1"' + type: float + update_time: '2.0' + width1: '1' + width10: '1' + width2: '1' + width3: '1' + width4: '1' + width5: '1' + width6: '1' + width7: '1' + width8: '1' + width9: '1' + ylabel: Amplitude + ymax: '1' + ymin: '-1' + yunit: '""' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [919, 798] + rotation: 270 + state: enabled +- name: ratio_finder_toggle_on_and_off + id: variable_qtgui_msg_push_button + parameters: + comment: '' + gui_hint: '' + label: Ratio Finder toggle ON or OFF (FFT peaks). + msgName: pressed + relBackgroundColor: default + relFontColor: default + type: bool + value: 'True' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [925, 992] + rotation: 180 + state: enabled +- name: tab_m + id: qtgui_tab_widget + parameters: + alias: '' + comment: '' + gui_hint: '' + label0: Tempest Main Tab + label1: Autocorrelation Plot Tab + label10: Tab 10 + label11: Tab 11 + label12: Tab 12 + label13: Tab 13 + label14: Tab 14 + label15: Tab 15 + label16: Tab 16 + label17: Tab 17 + label18: Tab 18 + label19: Tab 19 + label2: Tab 2 + label3: Tab 3 + label4: Tab 4 + label5: Tab 5 + label6: Tab 6 + label7: Tab 7 + label8: Tab 8 + label9: Tab 9 + num_tabs: '2' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [17, 92] + rotation: 0 + state: true +- name: tempest_fft_peak_fine_sampling_sync_0_0 + id: tempest_fft_peak_fine_sampling_sync + parameters: + Hvisible: interpolatedHsize + Vvisible: Vsize + affinity: '' + alias: '' + automatic_mode: 'True' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + refresh_rate: refresh_rate + sample_rate: samp_rate + size: int(fft_size) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [757, 803] + rotation: 90 + state: enabled +- name: tempest_normalize_flow_0 + id: tempest_normalize_flow + parameters: + affinity: '' + alias: '' + alpha_avg: 1e-2 + comment: '' + max: '245' + maxoutbuf: '0' + min: '10' + minoutbuf: '0' + update_proba: '0.1' + window: interpolatedHsize + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1472, 578] + rotation: 270 + state: enabled +- name: tempest_sync_detector_0_0 + id: tempest_sync_detector + parameters: + affinity: '' + alias: '' + comment: '' + hblanking: interpolatedHblank + hscreen: interpolatedHscreen + maxoutbuf: '0' + minoutbuf: '0' + vblanking: Vblank + vscreen: Vsize-Vblank + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [842, 473] + rotation: 0 + state: enabled +- name: uhd_usrp_source_0 + id: uhd_usrp_source + parameters: + affinity: '' + alias: '' + ant0: '' + ant1: '' + ant10: '' + ant11: '' + ant12: '' + ant13: '' + ant14: '' + ant15: '' + ant16: '' + ant17: '' + ant18: '' + ant19: '' + ant2: '' + ant20: '' + ant21: '' + ant22: '' + ant23: '' + ant24: '' + ant25: '' + ant26: '' + ant27: '' + ant28: '' + ant29: '' + ant3: '' + ant30: '' + ant31: '' + ant4: '' + ant5: '' + ant6: '' + ant7: '' + ant8: '' + ant9: '' + bw0: '0' + bw1: '0' + bw10: '0' + bw11: '0' + bw12: '0' + bw13: '0' + bw14: '0' + bw15: '0' + bw16: '0' + bw17: '0' + bw18: '0' + bw19: '0' + bw2: '0' + bw20: '0' + bw21: '0' + bw22: '0' + bw23: '0' + bw24: '0' + bw25: '0' + bw26: '0' + bw27: '0' + bw28: '0' + bw29: '0' + bw3: '0' + bw30: '0' + bw31: '0' + bw4: '0' + bw5: '0' + bw6: '0' + bw7: '0' + bw8: '0' + bw9: '0' + center_freq0: px_rate*harmonic + center_freq1: '0' + center_freq10: '0' + center_freq11: '0' + center_freq12: '0' + center_freq13: '0' + center_freq14: '0' + center_freq15: '0' + center_freq16: '0' + center_freq17: '0' + center_freq18: '0' + center_freq19: '0' + center_freq2: '0' + center_freq20: '0' + center_freq21: '0' + center_freq22: '0' + center_freq23: '0' + center_freq24: '0' + center_freq25: '0' + center_freq26: '0' + center_freq27: '0' + center_freq28: '0' + center_freq29: '0' + center_freq3: '0' + center_freq30: '0' + center_freq31: '0' + center_freq4: '0' + center_freq5: '0' + center_freq6: '0' + center_freq7: '0' + center_freq8: '0' + center_freq9: '0' + clock_rate: '0.0' + clock_source0: '' + clock_source1: '' + clock_source2: '' + clock_source3: '' + clock_source4: '' + clock_source5: '' + clock_source6: '' + clock_source7: '' + comment: '' + dc_offs_enb0: '""' + dc_offs_enb1: '""' + dc_offs_enb10: '""' + dc_offs_enb11: '""' + dc_offs_enb12: '""' + dc_offs_enb13: '""' + dc_offs_enb14: '""' + dc_offs_enb15: '""' + dc_offs_enb16: '""' + dc_offs_enb17: '""' + dc_offs_enb18: '""' + dc_offs_enb19: '""' + dc_offs_enb2: '""' + dc_offs_enb20: '""' + dc_offs_enb21: '""' + dc_offs_enb22: '""' + dc_offs_enb23: '""' + dc_offs_enb24: '""' + dc_offs_enb25: '""' + dc_offs_enb26: '""' + dc_offs_enb27: '""' + dc_offs_enb28: '""' + dc_offs_enb29: '""' + dc_offs_enb3: '""' + dc_offs_enb30: '""' + dc_offs_enb31: '""' + dc_offs_enb4: '""' + dc_offs_enb5: '""' + dc_offs_enb6: '""' + dc_offs_enb7: '""' + dc_offs_enb8: '""' + dc_offs_enb9: '""' + dev_addr: '""' + dev_args: '"recv_frame_size= 65536, num_recv_frames=128"' + gain0: '50' + gain1: '0' + gain10: '0' + gain11: '0' + gain12: '0' + gain13: '0' + gain14: '0' + gain15: '0' + gain16: '0' + gain17: '0' + gain18: '0' + gain19: '0' + gain2: '0' + gain20: '0' + gain21: '0' + gain22: '0' + gain23: '0' + gain24: '0' + gain25: '0' + gain26: '0' + gain27: '0' + gain28: '0' + gain29: '0' + gain3: '0' + gain30: '0' + gain31: '0' + gain4: '0' + gain5: '0' + gain6: '0' + gain7: '0' + gain8: '0' + gain9: '0' + iq_imbal_enb0: '""' + iq_imbal_enb1: '""' + iq_imbal_enb10: '""' + iq_imbal_enb11: '""' + iq_imbal_enb12: '""' + iq_imbal_enb13: '""' + iq_imbal_enb14: '""' + iq_imbal_enb15: '""' + iq_imbal_enb16: '""' + iq_imbal_enb17: '""' + iq_imbal_enb18: '""' + iq_imbal_enb19: '""' + iq_imbal_enb2: '""' + iq_imbal_enb20: '""' + iq_imbal_enb21: '""' + iq_imbal_enb22: '""' + iq_imbal_enb23: '""' + iq_imbal_enb24: '""' + iq_imbal_enb25: '""' + iq_imbal_enb26: '""' + iq_imbal_enb27: '""' + iq_imbal_enb28: '""' + iq_imbal_enb29: '""' + iq_imbal_enb3: '""' + iq_imbal_enb30: '""' + iq_imbal_enb31: '""' + iq_imbal_enb4: '""' + iq_imbal_enb5: '""' + iq_imbal_enb6: '""' + iq_imbal_enb7: '""' + iq_imbal_enb8: '""' + iq_imbal_enb9: '""' + lo_export0: 'False' + lo_export1: 'False' + lo_export10: 'False' + lo_export11: 'False' + lo_export12: 'False' + lo_export13: 'False' + lo_export14: 'False' + lo_export15: 'False' + lo_export16: 'False' + lo_export17: 'False' + lo_export18: 'False' + lo_export19: 'False' + lo_export2: 'False' + lo_export20: 'False' + lo_export21: 'False' + lo_export22: 'False' + lo_export23: 'False' + lo_export24: 'False' + lo_export25: 'False' + lo_export26: 'False' + lo_export27: 'False' + lo_export28: 'False' + lo_export29: 'False' + lo_export3: 'False' + lo_export30: 'False' + lo_export31: 'False' + lo_export4: 'False' + lo_export5: 'False' + lo_export6: 'False' + lo_export7: 'False' + lo_export8: 'False' + lo_export9: 'False' + lo_source0: internal + lo_source1: internal + lo_source10: internal + lo_source11: internal + lo_source12: internal + lo_source13: internal + lo_source14: internal + lo_source15: internal + lo_source16: internal + lo_source17: internal + lo_source18: internal + lo_source19: internal + lo_source2: internal + lo_source20: internal + lo_source21: internal + lo_source22: internal + lo_source23: internal + lo_source24: internal + lo_source25: internal + lo_source26: internal + lo_source27: internal + lo_source28: internal + lo_source29: internal + lo_source3: internal + lo_source30: internal + lo_source31: internal + lo_source4: internal + lo_source5: internal + lo_source6: internal + lo_source7: internal + lo_source8: internal + lo_source9: internal + maxoutbuf: '0' + minoutbuf: '0' + nchan: '1' + norm_gain0: 'False' + norm_gain1: 'False' + norm_gain10: 'False' + norm_gain11: 'False' + norm_gain12: 'False' + norm_gain13: 'False' + norm_gain14: 'False' + norm_gain15: 'False' + norm_gain16: 'False' + norm_gain17: 'False' + norm_gain18: 'False' + norm_gain19: 'False' + norm_gain2: 'False' + norm_gain20: 'False' + norm_gain21: 'False' + norm_gain22: 'False' + norm_gain23: 'False' + norm_gain24: 'False' + norm_gain25: 'False' + norm_gain26: 'False' + norm_gain27: 'False' + norm_gain28: 'False' + norm_gain29: 'False' + norm_gain3: 'False' + norm_gain30: 'False' + norm_gain31: 'False' + norm_gain4: 'False' + norm_gain5: 'False' + norm_gain6: 'False' + norm_gain7: 'False' + norm_gain8: 'False' + norm_gain9: 'False' + num_mboards: '1' + otw: '' + rx_agc0: Default + rx_agc1: Default + rx_agc10: Default + rx_agc11: Default + rx_agc12: Default + rx_agc13: Default + rx_agc14: Default + rx_agc15: Default + rx_agc16: Default + rx_agc17: Default + rx_agc18: Default + rx_agc19: Default + rx_agc2: Default + rx_agc20: Default + rx_agc21: Default + rx_agc22: Default + rx_agc23: Default + rx_agc24: Default + rx_agc25: Default + rx_agc26: Default + rx_agc27: Default + rx_agc28: Default + rx_agc29: Default + rx_agc3: Default + rx_agc30: Default + rx_agc31: Default + rx_agc4: Default + rx_agc5: Default + rx_agc6: Default + rx_agc7: Default + rx_agc8: Default + rx_agc9: Default + samp_rate: samp_rate + sd_spec0: '' + sd_spec1: '' + sd_spec2: '' + sd_spec3: '' + sd_spec4: '' + sd_spec5: '' + sd_spec6: '' + sd_spec7: '' + show_lo_controls: 'False' + stream_args: '' + stream_chans: '[]' + sync: sync + time_source0: '' + time_source1: '' + time_source2: '' + time_source3: '' + time_source4: '' + time_source5: '' + time_source6: '' + time_source7: '' + type: fc32 + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [240, 438] + rotation: 0 + state: enabled +- name: video_sdl_sink_0_0_0 + id: video_sdl_sink + parameters: + affinity: '' + alias: '' + comment: "Enable this path when you are sure what the \nresolution is (and defaut\ + \ to those values on \nthe chooser)." + display_height: '517' + display_width: '1088' + fps: '0' + height: Vsize + num_channels: '1' + type: short + width: interpolatedHsize + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1474, 1001] + rotation: 270 + state: enabled + +connections: +- [FFT_autocorrelation_0_0, '0', tempest_fft_peak_fine_sampling_sync_0_0, '0'] +- [Keep_1_in_N_Frames_0, '0', FFT_autocorrelation_0_0, '0'] +- [Keep_1_in_N_Frames_0, '0', tempest_sync_detector_0_0, '0'] +- [blocks_complex_to_mag_0, '0', tempest_normalize_flow_0, '0'] +- [blocks_delay_0_0, '0', blocks_complex_to_mag_0, '0'] +- [blocks_float_to_short_0, '0', video_sdl_sink_0_0_0, '0'] +- [ratio_finder_toggle_on_and_off, pressed, tempest_fft_peak_fine_sampling_sync_0_0, + en] +- [tempest_fft_peak_fine_sampling_sync_0_0, '0', qtgui_time_sink_x_1, '0'] +- [tempest_fft_peak_fine_sampling_sync_0_0, en, FFT_autocorrelation_0_0, en] +- [tempest_fft_peak_fine_sampling_sync_0_0, en, tempest_sync_detector_0_0, en] +- [tempest_fft_peak_fine_sampling_sync_0_0, rate, uhd_usrp_source_0, command] +- [tempest_normalize_flow_0, '0', blocks_float_to_short_0, '0'] +- [tempest_sync_detector_0_0, '0', blocks_delay_0_0, '0'] +- [uhd_usrp_source_0, '0', Keep_1_in_N_Frames_0, '0'] + +metadata: + file_format: 1 diff --git a/examples/Demo/VGA_50MHzSps_300MHzCentral_Real.grc b/examples/Demo/VGA_50MHzSps_300MHzCentral_Real.grc new file mode 100644 index 0000000..861e7d4 --- /dev/null +++ b/examples/Demo/VGA_50MHzSps_300MHzCentral_Real.grc @@ -0,0 +1,1427 @@ +options: + parameters: + author: '' + category: '[GRC Hier Blocks]' + cmake_opt: '' + comment: '' + copyright: '' + description: '' + gen_cmake: 'On' + gen_linking: dynamic + generate_options: qt_gui + hier_block_src_path: '.:' + id: manual_tempest_example + max_nouts: '0' + output_language: python + placement: (0,0) + qt_qss_theme: '' + realtime_scheduling: '1' + run: 'True' + run_command: '{python} -u {filename}' + run_options: prompt + sizing_mode: fixed + thread_safe_setters: '' + title: '' + window_size: '' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [81, 12] + rotation: 0 + state: enabled + +blocks: +- name: DelaySyncDetector + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: '' + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '0' + step: interpolatedHsize*1 + stop: Vsize*interpolatedHsize + value: interpolatedHsize*1 + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [963, 571] + rotation: 0 + state: enabled +- name: DroppedFrames + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: '' + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '1' + step: '1' + stop: '100' + value: '50' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [766, 252] + rotation: 0 + state: true +- name: Hblank + id: variable + parameters: + comment: '' + value: Hsize-Hvisible + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [623, 168] + rotation: 0 + state: enabled +- name: Hsize + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: Horizontal resolution (total) + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: int(4096*1.5) + value: '2200' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [350, 102] + rotation: 0 + state: enabled +- name: Hvisible + id: variable + parameters: + comment: '' + value: '1920' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [624, 64] + rotation: 0 + state: enabled +- name: Vblank + id: variable + parameters: + comment: '' + value: Vsize-Vvisible + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [750, 178] + rotation: 0 + state: enabled +- name: Vsize + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: Vertical resolution (total) + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: int(2160*1.5) + value: '1125' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [493, 104] + rotation: 0 + state: enabled +- name: Vvisible + id: variable + parameters: + comment: '' + value: '1080' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [750, 126] + rotation: 0 + state: enabled +- name: ferror + id: variable + parameters: + comment: '' + value: (samp_rate*fine_freq)/(2*pi*interpolatedHsize) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1114, 42] + rotation: 0 + state: true +- name: fft_size + id: variable + parameters: + comment: '' + value: 2**21 + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [592, 224] + rotation: 0 + state: true +- name: filtro_ecualizador_1st + id: variable + parameters: + comment: '' + value: '[-6.13e-05-1.22e-05j, + + 6.18e-04-2.02e-04j, + + 3.84e-03-2.43e-03j, + + 5.50e-03-3.87e-03j, + + 7.65e-03-5.51e-03j, + + 8.36e-03-6.47e-03j, + + 3.42e-03-3.78e-03j, + + -7.81e-03+2.35e-03j, + + -3.86e-02+2.21e-02j, + + -8.12e-02+4.68e-02j, + + -1.62e-01+9.94e-02j, + + -2.48e-01+1.48e-01j, + + -3.92e-01+2.43e-01j, + + -5.04e-01+2.99e-01j, + + -7.22e-01+4.49e-01j, + + -6.65e-01+3.56e-01j, + + 7.83e-01-4.68e-01j, + + 6.76e-01-3.60e-01j, + + 5.19e-01-2.92e-01j, + + 3.70e-01-1.98e-01j, + + 2.48e-01-1.39e-01j, + + 1.48e-01-8.02e-02j, + + 7.74e-02-4.50e-02j, + + 3.09e-02-1.83e-02j, + + 4.68e-03-4.89e-03j, + + -6.43e-03+1.92e-03j, + + -9.85e-03+4.10e-03j, + + -8.23e-03+3.73e-03j, + + -5.86e-03+2.73e-03j, + + -3.57e-03+1.94e-03j, + + -1.81e-04+2.41e-04j, + + ]' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [975, 120] + rotation: 0 + state: enabled +- name: fine_freq + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: Sine multiply Freq correction + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '-50000' + step: '0.1' + stop: '50000' + value: '19215.22' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [972, 5] + rotation: 0 + state: enabled +- name: harmonic + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: Harmonic + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '1' + step: '1' + stop: '10' + value: '2' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [207, 318] + rotation: 0 + state: enabled +- name: interpolatedHblank + id: variable + parameters: + comment: '' + value: int(Hblank/float(px_rate)*samp_rate) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [740, 7] + rotation: 0 + state: enabled +- name: interpolatedHscreen + id: variable + parameters: + comment: '' + value: int(Hvisible/float(px_rate)*samp_rate) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [622, 116] + rotation: 0 + state: enabled +- name: interpolatedHsize + id: variable + parameters: + comment: '' + value: int(Hsize/float(px_rate)*samp_rate) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [747, 64] + rotation: 0 + state: enabled +- name: inverted + id: variable_qtgui_chooser + parameters: + comment: '' + gui_hint: tab_m@0 + label: Inverted colors? + label0: 'Yes' + label1: 'No' + label2: '' + label3: '' + label4: '' + labels: '[]' + num_opts: '2' + option1: '1' + option2: '2' + option3: '3' + option4: '4' + options: '[0, 1, 2]' + orient: Qt.QHBoxLayout + type: real + value: '-1' + widget: radio_buttons + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [850, 6] + rotation: 0 + state: enabled +- name: px_rate + id: variable + parameters: + comment: '' + value: Hsize*Vsize*refresh_rate + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [68, 105] + rotation: 0 + state: enabled +- name: ratio_correct + id: variable + parameters: + comment: '' + value: (1.0/(1+0.000935)) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [157, 127] + rotation: 0 + state: true +- name: refresh_rate + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: Refresh Rate (Hz) + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '0' + step: '1' + stop: '240' + value: '60' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [77, 317] + rotation: 0 + state: enabled +- name: samp_rate + id: variable + parameters: + comment: '' + value: int(50e6) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [73, 175] + rotation: 0 + state: enabled +- name: FFT_autocorrelation_0_0 + id: FFT_autocorrelation + parameters: + affinity: '' + alias: '' + alpha: '1.0' + comment: '' + fft_size: int(fft_size) + maxoutbuf: '0' + minoutbuf: '0' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [509, 1038] + rotation: 270 + state: enabled +- name: Keep_1_in_N_Frames_0 + id: Keep_1_in_N_Frames + parameters: + affinity: '' + alias: '' + comment: '' + fac_decimation: DroppedFrames + fft_size: interpolatedHsize*Vsize*4 + maxoutbuf: '0' + minoutbuf: '0' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [349, 773] + rotation: 0 + state: enabled +- name: analog_sig_source_x_0_0 + id: analog_sig_source_x + parameters: + affinity: '' + alias: '' + amp: '1' + comment: '' + freq: -fine_freq + maxoutbuf: '0' + minoutbuf: '0' + offset: '0' + phase: '0' + samp_rate: samp_rate + type: complex + waveform: analog.GR_COS_WAVE + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1147, 819] + rotation: 0 + state: disabled +- name: blocks_complex_to_arg_0 + id: blocks_complex_to_arg + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [787, 359] + rotation: 0 + state: disabled +- name: blocks_complex_to_real_0 + id: blocks_complex_to_real + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1563, 705] + rotation: 0 + state: disabled +- name: blocks_delay_0 + id: blocks_delay + parameters: + affinity: '' + alias: '' + comment: '' + delay: DelaySyncDetector + maxoutbuf: '0' + minoutbuf: '0' + num_ports: '1' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1164, 685] + rotation: 0 + state: disabled +- name: blocks_delay_1 + id: blocks_delay + parameters: + affinity: '' + alias: '' + comment: '' + delay: interpolatedHsize + maxoutbuf: '0' + minoutbuf: '0' + num_ports: '1' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [512, 600] + rotation: 90 + state: disabled +- name: blocks_file_source_0 + id: blocks_file_source + parameters: + affinity: '' + alias: '' + begin_tag: pmt.PMT_NIL + comment: '' + file: /home/felipe/gnuradio/git/grabaciones_local/DEMO_VGA_recording_1080p_60Hz_50MHz.dat + length: '0' + maxoutbuf: '0' + minoutbuf: '0' + offset: '0' + repeat: 'True' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [69, 626] + rotation: 0 + state: enabled +- name: blocks_float_to_short_0 + id: blocks_float_to_short + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + scale: inverted + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1735, 1082] + rotation: 270 + state: disabled +- name: blocks_multiply_conjugate_cc_0 + id: blocks_multiply_conjugate_cc + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [470, 392] + rotation: 90 + state: disabled +- name: blocks_multiply_xx_0_0 + id: blocks_multiply_xx + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + num_inputs: '2' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1385, 689] + rotation: 0 + state: disabled +- name: blocks_throttle_0 + id: blocks_throttle + parameters: + affinity: '' + alias: '' + comment: '' + ignoretag: 'True' + maxoutbuf: '0' + minoutbuf: '0' + samples_per_second: samp_rate + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [271, 650] + rotation: 0 + state: enabled +- name: import_0 + id: import + parameters: + alias: '' + comment: '' + imports: from math import pi + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [87, 242] + rotation: 0 + state: true +- name: interp_fir_filter_xxx_1 + id: interp_fir_filter_xxx + parameters: + affinity: '' + alias: '' + comment: '' + interp: '1' + maxoutbuf: '0' + minoutbuf: '0' + samp_delay: '0' + taps: filtro_ecualizador_1st + type: ccc + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [627, 665] + rotation: 0 + state: disabled +- name: qtgui_time_sink_x_0 + id: qtgui_time_sink_x + parameters: + affinity: '' + alias: '' + alpha1: '1.0' + alpha10: '1.0' + alpha2: '1.0' + alpha3: '1.0' + alpha4: '1.0' + alpha5: '1.0' + alpha6: '1.0' + alpha7: '1.0' + alpha8: '1.0' + alpha9: '1.0' + autoscale: 'True' + axislabels: 'True' + color1: blue + color10: dark blue + color2: red + color3: green + color4: black + color5: cyan + color6: magenta + color7: yellow + color8: dark red + color9: dark green + comment: '' + ctrlpanel: 'False' + entags: 'True' + grid: 'False' + gui_hint: tab_m@0 + label1: Signal 1 + label10: Signal 10 + label2: Signal 2 + label3: Signal 3 + label4: Signal 4 + label5: Signal 5 + label6: Signal 6 + label7: Signal 7 + label8: Signal 8 + label9: Signal 9 + legend: 'True' + marker1: '-1' + marker10: '-1' + marker2: '-1' + marker3: '-1' + marker4: '-1' + marker5: '-1' + marker6: '-1' + marker7: '-1' + marker8: '-1' + marker9: '-1' + name: '""' + nconnections: '1' + size: '1024' + srate: samp_rate + stemplot: 'False' + style1: '1' + style10: '1' + style2: '1' + style3: '1' + style4: '1' + style5: '1' + style6: '1' + style7: '1' + style8: '1' + style9: '1' + tr_chan: '0' + tr_delay: '0' + tr_level: '0.0' + tr_mode: qtgui.TRIG_MODE_FREE + tr_slope: qtgui.TRIG_SLOPE_POS + tr_tag: '""' + type: float + update_time: '0.5' + width1: '1' + width10: '1' + width2: '1' + width3: '1' + width4: '1' + width5: '1' + width6: '1' + width7: '1' + width8: '1' + width9: '1' + ylabel: Phase difference (rad). + ymax: '1' + ymin: '-1' + yunit: '""' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [963, 352] + rotation: 0 + state: disabled +- name: qtgui_time_sink_x_1 + id: qtgui_time_sink_x + parameters: + affinity: '' + alias: '' + alpha1: '1.0' + alpha10: '1.0' + alpha2: '1.0' + alpha3: '1.0' + alpha4: '1.0' + alpha5: '1.0' + alpha6: '1.0' + alpha7: '1.0' + alpha8: '1.0' + alpha9: '1.0' + autoscale: 'False' + axislabels: 'True' + color1: blue + color10: dark blue + color2: red + color3: green + color4: black + color5: cyan + color6: magenta + color7: yellow + color8: dark red + color9: dark green + comment: '' + ctrlpanel: 'False' + entags: 'True' + grid: 'True' + gui_hint: tab_m@1 + label1: Signal 1 + label10: Signal 10 + label2: Signal 2 + label3: Signal 3 + label4: Signal 4 + label5: Signal 5 + label6: Signal 6 + label7: Signal 7 + label8: Signal 8 + label9: Signal 9 + legend: 'True' + marker1: '-1' + marker10: '-1' + marker2: '-1' + marker3: '-1' + marker4: '-1' + marker5: '-1' + marker6: '-1' + marker7: '-1' + marker8: '-1' + marker9: '-1' + name: '""' + nconnections: '1' + size: int(fft_size/2) + srate: samp_rate + stemplot: 'False' + style1: '1' + style10: '1' + style2: '1' + style3: '1' + style4: '1' + style5: '1' + style6: '1' + style7: '1' + style8: '1' + style9: '1' + tr_chan: '0' + tr_delay: '0' + tr_level: '20.0' + tr_mode: qtgui.TRIG_MODE_NORM + tr_slope: qtgui.TRIG_SLOPE_POS + tr_tag: '"peak_1"' + type: float + update_time: '3.0' + width1: '1' + width10: '1' + width2: '1' + width3: '1' + width4: '1' + width5: '1' + width6: '1' + width7: '1' + width8: '1' + width9: '1' + ylabel: Amplitude + ymax: '1' + ymin: '-1' + yunit: '""' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [756, 1022] + rotation: 270 + state: enabled +- name: single_pole_iir_filter_xx_0 + id: single_pole_iir_filter_xx + parameters: + affinity: '' + alias: '' + alpha: '0.001' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [578, 355] + rotation: 0 + state: disabled +- name: tab_m + id: qtgui_tab_widget + parameters: + alias: '' + comment: '' + gui_hint: '' + label0: Tempest Main Tab + label1: Autocorrelation Plot Tab + label10: Tab 10 + label11: Tab 11 + label12: Tab 12 + label13: Tab 13 + label14: Tab 14 + label15: Tab 15 + label16: Tab 16 + label17: Tab 17 + label18: Tab 18 + label19: Tab 19 + label2: Tab 2 + label3: Tab 3 + label4: Tab 4 + label5: Tab 5 + label6: Tab 6 + label7: Tab 7 + label8: Tab 8 + label9: Tab 9 + num_tabs: '2' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [353, 8] + rotation: 0 + state: true +- name: tempest_fft_peak_fine_sampling_sync_0_0 + id: tempest_fft_peak_fine_sampling_sync + parameters: + Hvisible: interpolatedHsize + Vvisible: Vsize + affinity: '' + alias: '' + automatic_mode: 'True' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + refresh_rate: refresh_rate + sample_rate: samp_rate + size: int(fft_size) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [599, 1018] + rotation: 90 + state: enabled +- name: tempest_normalize_flow_0 + id: tempest_normalize_flow + parameters: + affinity: '' + alias: '' + alpha_avg: 1e-2 + comment: '' + max: '245' + maxoutbuf: '0' + min: '10' + minoutbuf: '0' + update_proba: '0.1' + window: interpolatedHsize + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1711, 893] + rotation: 270 + state: disabled +- name: tempest_sync_detector_0 + id: tempest_sync_detector + parameters: + affinity: '' + alias: '' + comment: '' + hblanking: interpolatedHblank + hscreen: interpolatedHscreen + maxoutbuf: '0' + minoutbuf: '0' + vblanking: Vblank + vscreen: Vsize-Vblank + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [842, 817] + rotation: 0 + state: disabled +- name: tempest_tempest_msgbtn_0 + id: tempest_tempest_msgbtn + parameters: + affinity: '' + alias: '' + comment: '' + gui_hint: tab_m@1 + label: 'Ratio Finder toggle ON or OFF (FFT peaks). ' + maxoutbuf: '0' + minoutbuf: '0' + msgName: pressed + relBackgroundColor: default + relFontColor: default + type: bool + value: 'True' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [282, 1084] + rotation: 270 + state: true +- name: uhd_usrp_source_0 + id: uhd_usrp_source + parameters: + affinity: '' + alias: '' + ant0: '' + ant1: '' + ant10: '' + ant11: '' + ant12: '' + ant13: '' + ant14: '' + ant15: '' + ant16: '' + ant17: '' + ant18: '' + ant19: '' + ant2: '' + ant20: '' + ant21: '' + ant22: '' + ant23: '' + ant24: '' + ant25: '' + ant26: '' + ant27: '' + ant28: '' + ant29: '' + ant3: '' + ant30: '' + ant31: '' + ant4: '' + ant5: '' + ant6: '' + ant7: '' + ant8: '' + ant9: '' + bw0: '0' + bw1: '0' + bw10: '0' + bw11: '0' + bw12: '0' + bw13: '0' + bw14: '0' + bw15: '0' + bw16: '0' + bw17: '0' + bw18: '0' + bw19: '0' + bw2: '0' + bw20: '0' + bw21: '0' + bw22: '0' + bw23: '0' + bw24: '0' + bw25: '0' + bw26: '0' + bw27: '0' + bw28: '0' + bw29: '0' + bw3: '0' + bw30: '0' + bw31: '0' + bw4: '0' + bw5: '0' + bw6: '0' + bw7: '0' + bw8: '0' + bw9: '0' + center_freq0: px_rate*harmonic + center_freq1: '0' + center_freq10: '0' + center_freq11: '0' + center_freq12: '0' + center_freq13: '0' + center_freq14: '0' + center_freq15: '0' + center_freq16: '0' + center_freq17: '0' + center_freq18: '0' + center_freq19: '0' + center_freq2: '0' + center_freq20: '0' + center_freq21: '0' + center_freq22: '0' + center_freq23: '0' + center_freq24: '0' + center_freq25: '0' + center_freq26: '0' + center_freq27: '0' + center_freq28: '0' + center_freq29: '0' + center_freq3: '0' + center_freq30: '0' + center_freq31: '0' + center_freq4: '0' + center_freq5: '0' + center_freq6: '0' + center_freq7: '0' + center_freq8: '0' + center_freq9: '0' + clock_rate: '0.0' + clock_source0: '' + clock_source1: '' + clock_source2: '' + clock_source3: '' + clock_source4: '' + clock_source5: '' + clock_source6: '' + clock_source7: '' + comment: '' + dc_offs_enb0: '""' + dc_offs_enb1: '""' + dc_offs_enb10: '""' + dc_offs_enb11: '""' + dc_offs_enb12: '""' + dc_offs_enb13: '""' + dc_offs_enb14: '""' + dc_offs_enb15: '""' + dc_offs_enb16: '""' + dc_offs_enb17: '""' + dc_offs_enb18: '""' + dc_offs_enb19: '""' + dc_offs_enb2: '""' + dc_offs_enb20: '""' + dc_offs_enb21: '""' + dc_offs_enb22: '""' + dc_offs_enb23: '""' + dc_offs_enb24: '""' + dc_offs_enb25: '""' + dc_offs_enb26: '""' + dc_offs_enb27: '""' + dc_offs_enb28: '""' + dc_offs_enb29: '""' + dc_offs_enb3: '""' + dc_offs_enb30: '""' + dc_offs_enb31: '""' + dc_offs_enb4: '""' + dc_offs_enb5: '""' + dc_offs_enb6: '""' + dc_offs_enb7: '""' + dc_offs_enb8: '""' + dc_offs_enb9: '""' + dev_addr: '""' + dev_args: '"recv_frame_size= 65536, num_recv_frames=128"' + gain0: '50' + gain1: '0' + gain10: '0' + gain11: '0' + gain12: '0' + gain13: '0' + gain14: '0' + gain15: '0' + gain16: '0' + gain17: '0' + gain18: '0' + gain19: '0' + gain2: '0' + gain20: '0' + gain21: '0' + gain22: '0' + gain23: '0' + gain24: '0' + gain25: '0' + gain26: '0' + gain27: '0' + gain28: '0' + gain29: '0' + gain3: '0' + gain30: '0' + gain31: '0' + gain4: '0' + gain5: '0' + gain6: '0' + gain7: '0' + gain8: '0' + gain9: '0' + iq_imbal_enb0: '""' + iq_imbal_enb1: '""' + iq_imbal_enb10: '""' + iq_imbal_enb11: '""' + iq_imbal_enb12: '""' + iq_imbal_enb13: '""' + iq_imbal_enb14: '""' + iq_imbal_enb15: '""' + iq_imbal_enb16: '""' + iq_imbal_enb17: '""' + iq_imbal_enb18: '""' + iq_imbal_enb19: '""' + iq_imbal_enb2: '""' + iq_imbal_enb20: '""' + iq_imbal_enb21: '""' + iq_imbal_enb22: '""' + iq_imbal_enb23: '""' + iq_imbal_enb24: '""' + iq_imbal_enb25: '""' + iq_imbal_enb26: '""' + iq_imbal_enb27: '""' + iq_imbal_enb28: '""' + iq_imbal_enb29: '""' + iq_imbal_enb3: '""' + iq_imbal_enb30: '""' + iq_imbal_enb31: '""' + iq_imbal_enb4: '""' + iq_imbal_enb5: '""' + iq_imbal_enb6: '""' + iq_imbal_enb7: '""' + iq_imbal_enb8: '""' + iq_imbal_enb9: '""' + lo_export0: 'False' + lo_export1: 'False' + lo_export10: 'False' + lo_export11: 'False' + lo_export12: 'False' + lo_export13: 'False' + lo_export14: 'False' + lo_export15: 'False' + lo_export16: 'False' + lo_export17: 'False' + lo_export18: 'False' + lo_export19: 'False' + lo_export2: 'False' + lo_export20: 'False' + lo_export21: 'False' + lo_export22: 'False' + lo_export23: 'False' + lo_export24: 'False' + lo_export25: 'False' + lo_export26: 'False' + lo_export27: 'False' + lo_export28: 'False' + lo_export29: 'False' + lo_export3: 'False' + lo_export30: 'False' + lo_export31: 'False' + lo_export4: 'False' + lo_export5: 'False' + lo_export6: 'False' + lo_export7: 'False' + lo_export8: 'False' + lo_export9: 'False' + lo_source0: internal + lo_source1: internal + lo_source10: internal + lo_source11: internal + lo_source12: internal + lo_source13: internal + lo_source14: internal + lo_source15: internal + lo_source16: internal + lo_source17: internal + lo_source18: internal + lo_source19: internal + lo_source2: internal + lo_source20: internal + lo_source21: internal + lo_source22: internal + lo_source23: internal + lo_source24: internal + lo_source25: internal + lo_source26: internal + lo_source27: internal + lo_source28: internal + lo_source29: internal + lo_source3: internal + lo_source30: internal + lo_source31: internal + lo_source4: internal + lo_source5: internal + lo_source6: internal + lo_source7: internal + lo_source8: internal + lo_source9: internal + maxoutbuf: '0' + minoutbuf: '0' + nchan: '1' + norm_gain0: 'False' + norm_gain1: 'False' + norm_gain10: 'False' + norm_gain11: 'False' + norm_gain12: 'False' + norm_gain13: 'False' + norm_gain14: 'False' + norm_gain15: 'False' + norm_gain16: 'False' + norm_gain17: 'False' + norm_gain18: 'False' + norm_gain19: 'False' + norm_gain2: 'False' + norm_gain20: 'False' + norm_gain21: 'False' + norm_gain22: 'False' + norm_gain23: 'False' + norm_gain24: 'False' + norm_gain25: 'False' + norm_gain26: 'False' + norm_gain27: 'False' + norm_gain28: 'False' + norm_gain29: 'False' + norm_gain3: 'False' + norm_gain30: 'False' + norm_gain31: 'False' + norm_gain4: 'False' + norm_gain5: 'False' + norm_gain6: 'False' + norm_gain7: 'False' + norm_gain8: 'False' + norm_gain9: 'False' + num_mboards: '1' + otw: '' + rx_agc0: Default + rx_agc1: Default + rx_agc10: Default + rx_agc11: Default + rx_agc12: Default + rx_agc13: Default + rx_agc14: Default + rx_agc15: Default + rx_agc16: Default + rx_agc17: Default + rx_agc18: Default + rx_agc19: Default + rx_agc2: Default + rx_agc20: Default + rx_agc21: Default + rx_agc22: Default + rx_agc23: Default + rx_agc24: Default + rx_agc25: Default + rx_agc26: Default + rx_agc27: Default + rx_agc28: Default + rx_agc29: Default + rx_agc3: Default + rx_agc30: Default + rx_agc31: Default + rx_agc4: Default + rx_agc5: Default + rx_agc6: Default + rx_agc7: Default + rx_agc8: Default + rx_agc9: Default + samp_rate: samp_rate + sd_spec0: '' + sd_spec1: '' + sd_spec2: '' + sd_spec3: '' + sd_spec4: '' + sd_spec5: '' + sd_spec6: '' + sd_spec7: '' + show_lo_controls: 'False' + stream_args: '' + stream_chans: '[]' + sync: sync + time_source0: '' + time_source1: '' + time_source2: '' + time_source3: '' + time_source4: '' + time_source5: '' + time_source6: '' + time_source7: '' + type: fc32 + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [82, 742] + rotation: 0 + state: disabled +- name: video_sdl_sink_0_0_0 + id: video_sdl_sink + parameters: + affinity: '' + alias: '' + comment: "Enable this path when you are sure what the \nresolution is (and defaut\ + \ to those values on \nthe chooser)." + display_height: '517' + display_width: '1088' + fps: '0' + height: Vsize + num_channels: '1' + type: short + width: interpolatedHsize + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1711, 1227] + rotation: 270 + state: disabled + +connections: +- [FFT_autocorrelation_0_0, '0', tempest_fft_peak_fine_sampling_sync_0_0, '0'] +- [Keep_1_in_N_Frames_0, '0', FFT_autocorrelation_0_0, '0'] +- [Keep_1_in_N_Frames_0, '0', blocks_delay_1, '0'] +- [Keep_1_in_N_Frames_0, '0', blocks_multiply_conjugate_cc_0, '0'] +- [Keep_1_in_N_Frames_0, '0', interp_fir_filter_xxx_1, '0'] +- [analog_sig_source_x_0_0, '0', blocks_multiply_xx_0_0, '1'] +- [blocks_complex_to_arg_0, '0', qtgui_time_sink_x_0, '0'] +- [blocks_complex_to_real_0, '0', tempest_normalize_flow_0, '0'] +- [blocks_delay_0, '0', blocks_multiply_xx_0_0, '0'] +- [blocks_delay_1, '0', blocks_multiply_conjugate_cc_0, '1'] +- [blocks_file_source_0, '0', blocks_throttle_0, '0'] +- [blocks_float_to_short_0, '0', video_sdl_sink_0_0_0, '0'] +- [blocks_multiply_conjugate_cc_0, '0', single_pole_iir_filter_xx_0, '0'] +- [blocks_multiply_xx_0_0, '0', blocks_complex_to_real_0, '0'] +- [blocks_throttle_0, '0', Keep_1_in_N_Frames_0, '0'] +- [interp_fir_filter_xxx_1, '0', tempest_sync_detector_0, '0'] +- [single_pole_iir_filter_xx_0, '0', blocks_complex_to_arg_0, '0'] +- [tempest_fft_peak_fine_sampling_sync_0_0, '0', qtgui_time_sink_x_1, '0'] +- [tempest_fft_peak_fine_sampling_sync_0_0, en, tempest_sync_detector_0, en] +- [tempest_fft_peak_fine_sampling_sync_0_0, rate, uhd_usrp_source_0, command] +- [tempest_normalize_flow_0, '0', blocks_float_to_short_0, '0'] +- [tempest_sync_detector_0, '0', blocks_delay_0, '0'] +- [tempest_tempest_msgbtn_0, pressed, tempest_fft_peak_fine_sampling_sync_0_0, en] +- [uhd_usrp_source_0, '0', Keep_1_in_N_Frames_0, '0'] + +metadata: + file_format: 1 diff --git a/examples/EQtaps1080p.txt b/examples/EQtaps1080p.txt new file mode 100644 index 0000000..acb9afc --- /dev/null +++ b/examples/EQtaps1080p.txt @@ -0,0 +1,512 @@ +-0.0004 + 0j +-0.0000 + 0.0000j +-0.0004 - 0.0000j +-0.0000 + 0.0001j +-0.0004 - 0.0001j +-0.0000 + 0.0001j +-0.0004 - 0.0001j +-0.0000 + 0.0002j +-0.0004 - 0.0001j +-0.0001 + 0.0002j +-0.0003 - 0.0001j +-0.0001 + 0.0003j +-0.0003 - 0.0001j +-0.0002 + 0.0003j +-0.0003 - 0.0001j +-0.0002 + 0.0004j +-0.0002 - 0.0001j +-0.0002 + 0.0004j +-0.0002 - 0.0001j +-0.0003 + 0.0004j +-0.0001 - 0.0001j +-0.0003 + 0.0004j +-0.0001 - 0.0001j +-0.0004 + 0.0004j +-0.0000 - 0.0000j +-0.0004 + 0.0004j + 0.0000 + 0.0000j +-0.0005 + 0.0004j + 0.0000 + 0.0001j +-0.0005 + 0.0004j + 0.0001 + 0.0001j +-0.0006 + 0.0003j + 0.0001 + 0.0002j +-0.0006 + 0.0003j + 0.0001 + 0.0002j +-0.0006 + 0.0003j + 0.0001 + 0.0003j +-0.0006 + 0.0002j + 0.0001 + 0.0004j +-0.0006 + 0.0002j + 0.0001 + 0.0005j +-0.0006 + 0.0001j + 0.0001 + 0.0005j +-0.0006 + 0.0001j + 0.0001 + 0.0006j +-0.0006 + 0.0000j + 0.0000 + 0.0007j +-0.0006 - 0.0000j +-0.0000 + 0.0008j +-0.0005 - 0.0000j +-0.0001 + 0.0008j +-0.0005 - 0.0001j +-0.0002 + 0.0009j +-0.0004 - 0.0001j +-0.0002 + 0.0009j +-0.0004 - 0.0001j +-0.0003 + 0.0010j +-0.0003 - 0.0001j +-0.0004 + 0.0010j +-0.0002 - 0.0001j +-0.0005 + 0.0010j +-0.0002 - 0.0001j +-0.0006 + 0.0011j +-0.0001 - 0.0001j +-0.0007 + 0.0011j +-0.0000 - 0.0000j +-0.0008 + 0.0010j + 0.0000 + 0.0000j +-0.0009 + 0.0010j + 0.0001 + 0.0001j +-0.0010 + 0.0010j + 0.0002 + 0.0002j +-0.0011 + 0.0009j + 0.0002 + 0.0003j +-0.0011 + 0.0009j + 0.0003 + 0.0004j +-0.0012 + 0.0008j + 0.0003 + 0.0005j +-0.0013 + 0.0007j + 0.0003 + 0.0006j +-0.0013 + 0.0006j + 0.0003 + 0.0007j +-0.0014 + 0.0005j + 0.0003 + 0.0008j +-0.0014 + 0.0004j + 0.0003 + 0.0010j +-0.0014 + 0.0003j + 0.0002 + 0.0011j +-0.0014 + 0.0002j + 0.0002 + 0.0013j +-0.0015 + 0.0002j + 0.0001 + 0.0019j +-0.0038 + 0.0001j + 0.0001 + 0.0198j + 0.0603 + 0.0018j + 0.0091 - 0.1418j +-0.2643 - 0.0260j +-0.0543 + 0.4093j + 0.5602 + 0.0937j + 0.1441 - 0.7130j +-0.8669 - 0.2059j +-0.2777 + 1.0157j + 1.1535 + 0.3576j + 0.4438 - 1.2773j +-1.3776 - 0.5314j +-0.6122 + 1.4403j + 1.4636 + 0.6813j + 0.7425 - 1.4640j +-1.4577 - 0.8023j +-0.8613 + 1.4470j + 1.4300 + 0.9179j + 0.9747 - 1.4114j +-1.3954 - 1.0349j +-1.0955 + 1.3775j + 1.3531 + 1.1528j + 1.2096 - 1.3263j +-1.3019 - 1.2703j +-1.3319 + 1.2759j + 1.2436 + 1.3891j + 1.4451 - 1.2084j +-1.1749 - 1.5056j +-1.5673 + 1.1402j + 1.0995 + 1.6238j + 1.6782 - 1.0555j +-1.0126 - 1.7375j +-1.7986 + 0.9685j + 0.9189 + 1.8538j + 1.9057 - 0.8658j +-0.8130 - 1.9627j +-2.0224 + 0.7588j + 0.6998 + 2.0754j + 2.1239 - 0.6372j +-0.5739 - 2.1776j +-2.2347 + 0.5090j + 0.4399 + 2.2848j + 2.3289 - 0.3674j +-0.2933 - 2.3781j +-2.4316 + 0.2169j + 0.1370 + 2.4778j + 2.5165 - 0.0541j + 0.0314 - 2.5599j +-2.6085 - 0.1201j +-0.2118 + 2.6496j + 2.6819 + 0.3057j + 0.4032 - 2.7181j +-2.7604 - 0.5052j +-0.6097 + 2.7952j + 2.8196 + 0.7155j + 0.8257 - 2.8472j +-2.8814 - 0.9421j +-1.0608 + 2.9083j + 2.9235 + 1.1796j + 1.3035 - 2.9407j +-2.9648 - 1.4358j +-1.5705 + 2.9820j + 2.9863 + 1.7038j + 1.8430 - 2.9910j +-3.0027 - 1.9930j +-2.1461 + 3.0078j + 2.9988 + 2.2962j + 2.4527 - 2.9886j +-2.9849 - 2.6231j +-2.7977 + 2.9749j + 2.9497 + 2.9679j + 3.1448 - 2.9214j +-2.8985 - 3.3394j +-3.5403 + 2.8692j + 2.8239 + 3.7352j + 3.9374 - 2.7730j +-2.7258 - 4.1619j +-4.3958 + 2.6715j + 2.6001 + 4.6228j + 4.8579 - 2.5204j +-2.4414 - 5.1213j +-5.3988 + 2.3536j + 2.2471 + 5.6694j + 5.9499 - 2.1289j +-2.0065 - 6.2670j +-6.6056 + 1.8717j + 1.7156 + 6.9393j + 7.2870 - 1.5427j +-1.3575 - 7.6836j +-8.1142 + 1.1528j + 0.9212 + 8.5461j + 9.0016 - 0.6640j +-0.3802 - 9.5270j +10.1094 + 0.0620j +-0.2958 + 10.7103j +11.3586 + 0.6978j + 1.1560 - 12.1183j +12.9856 - 1.6826j +-2.2839 + 13.9218j +14.9722 + 2.9782j + 3.8038 - 16.2383j +17.7577 - 4.7971j +-5.9920 + 19.5370j +21.6829 + 7.4594j + 9.3348 - 24.4225j +28.1470 - 11.8617j +15.4831 + 33.5314j +40.9709 + 20.6230j +26.6688 - 48.8079j +52.0219 - 30.7484j +28.2403 + 44.2950j +23.3522 + 16.0214j +-3.8869 + 5.2747j +30.8124 + 24.3519j +37.7829 - 44.6248j +45.5825 - 41.3136j +37.7025 + 38.8773j +30.6655 + 31.8158j +26.8368 - 24.1739j +19.7007 - 23.4135j +21.0374 + 16.5218j +14.0970 + 19.2534j +17.8348 - 12.1558j +10.5339 - 16.6349j +15.6016 + 9.1571j + 8.0025 + 14.7531j +14.0496 - 7.0180j +-6.1378 - 13.4003j +12.7899 + 5.3438j + 4.6462 + 12.2684j +11.8264 - 4.0280j +-3.4572 - 11.3969j +10.9712 + 2.9277j + 2.4483 + 10.5981j +10.2775 - 2.0116j +-1.6020 - 9.9561j +-9.6259 + 1.2172j + 0.8612 + 9.3302j + 9.0735 - 0.5295j +-0.2163 - 8.8117j +-8.5362 - 0.0786j +-0.3561 + 8.2845j + 8.0638 + 0.6197j + 0.8691 - 7.8372j +-7.5953 - 1.1029j +-1.3255 + 7.3701j + 7.1703 + 1.5410j + 1.7448 - 6.9655j +-6.7452 - 1.9337j +-2.1150 + 6.5365j + 6.3493 + 2.2938j + 2.4627 - 6.1581j +-5.9524 - 2.6167j +-2.7650 + 5.7545j + 5.5747 + 2.9141j + 3.0547 - 5.3922j +-5.1967 - 3.1801j +-3.3007 + 5.0061j + 4.8306 + 3.4243j + 3.5409 - 4.6538j +-4.4656 - 3.6420j +-3.7384 + 4.2804j + 4.1076 + 3.8393j + 3.9345 - 3.9345j +-3.7519 - 4.0141j +-4.0887 + 3.5709j + 3.3999 + 4.1688j + 4.2445 - 3.2294j +-3.0514 - 4.3046j +-4.3591 + 2.8742j + 2.7047 + 4.4197j + 4.4769 - 2.5361j +-2.3622 - 4.5189j +-4.5547 + 2.1885j + 2.0207 + 4.5966j + 4.6361 - 1.8540j +-1.6839 - 4.6609j +-4.6790 + 1.5140j + 1.3482 + 4.7029j + 4.7252 - 1.1836j +-1.0173 - 4.7335j +-4.7347 + 0.8515j + 0.6884 + 4.7411j + 4.7465 - 0.5264j +-0.3642 - 4.7389j +-4.7239 + 0.2030j + 0.0434 + 4.7133j + 4.7021 + 0.1154j + 0.2730 - 4.6788j +-4.6481 - 0.4290j +-0.5844 + 4.6211j + 4.5934 + 0.7391j + 0.8915 - 4.5546j +-4.5088 - 1.0416j +-1.1917 + 4.4659j + 4.4220 + 1.3414j + 1.4877 - 4.3679j +-4.3074 - 1.6313j +-1.7754 + 4.2492j + 4.1893 + 1.9189j + 2.0580 - 4.1200j +-4.0452 - 2.1942j +-2.3315 + 3.9723j + 3.8968 + 2.4676j + 2.5985 - 3.8124j +-3.7237 - 2.7264j +-2.8561 + 3.6366j + 3.5461 + 2.9838j + 3.1047 - 3.4467j +-3.3444 - 3.2235j +-3.3448 + 3.2438j + 3.1387 + 3.4630j + 3.5729 - 3.0251j +-2.9091 - 3.6809j +-3.7913 + 2.7939j + 2.6757 + 3.9000j + 4.0096 - 2.5563j +-2.4240 - 4.1010j +-4.0498 + 2.2128j + 1.8310 + 3.6375j + 2.7604 - 1.2746j +-0.6875 - 1.6313j +-0.6705 + 0.2563j + 0.0515 + 0.1497j + 0.0019 - 0.0006j + 0.0015 + 0.0056j + 0.0078 - 0.0018j +-0.0011 - 0.0057j + 0.0080 - 0.0013j +-0.0010 - 0.0077j + 0.0073 - 0.0007j +-0.0005 - 0.0080j + 0.0065 - 0.0002j + 0.0000 - 0.0078j + 0.0057 + 0.0002j + 0.0006 - 0.0076j + 0.0050 + 0.0005j + 0.0010 - 0.0073j + 0.0044 + 0.0008j + 0.0015 - 0.0071j + 0.0038 + 0.0009j + 0.0019 - 0.0068j + 0.0032 + 0.0010j + 0.0023 - 0.0065j + 0.0027 + 0.0011j + 0.0027 - 0.0062j + 0.0022 + 0.0011j + 0.0031 - 0.0059j + 0.0018 + 0.0010j + 0.0034 - 0.0056j + 0.0014 + 0.0009j + 0.0037 - 0.0052j + 0.0010 + 0.0008j + 0.0040 - 0.0049j + 0.0007 + 0.0006j + 0.0042 - 0.0045j + 0.0004 + 0.0004j + 0.0044 - 0.0042j + 0.0002 + 0.0002j + 0.0046 - 0.0038j +-0.0001 - 0.0001j + 0.0047 - 0.0034j +-0.0002 - 0.0003j + 0.0048 - 0.0030j +-0.0003 - 0.0006j + 0.0049 - 0.0026j +-0.0004 - 0.0009j + 0.0049 - 0.0022j +-0.0005 - 0.0012j + 0.0049 - 0.0018j +-0.0005 - 0.0015j + 0.0048 - 0.0014j +-0.0004 - 0.0017j + 0.0047 - 0.0010j +-0.0004 - 0.0020j + 0.0046 - 0.0007j +-0.0003 - 0.0023j + 0.0044 - 0.0004j +-0.0001 - 0.0025j + 0.0043 - 0.0001j + 0.0001 - 0.0027j + 0.0040 + 0.0002j + 0.0003 - 0.0029j + 0.0038 + 0.0005j + 0.0005 - 0.0030j + 0.0035 + 0.0007j + 0.0007 - 0.0032j + 0.0033 + 0.0009j + 0.0010 - 0.0033j + 0.0030 + 0.0010j + 0.0012 - 0.0033j + 0.0027 + 0.0011j + 0.0015 - 0.0033j + 0.0024 + 0.0012j + 0.0018 - 0.0033j + 0.0021 + 0.0012j + 0.0021 - 0.0033j + 0.0018 + 0.0012j + 0.0023 - 0.0032j + 0.0015 + 0.0012j + 0.0026 - 0.0031j + 0.0012 + 0.0011j + 0.0029 - 0.0030j + 0.0010 + 0.0010j + 0.0031 - 0.0028j + 0.0007 + 0.0009j + 0.0033 - 0.0026j + 0.0005 + 0.0007j + 0.0035 - 0.0024j + 0.0003 + 0.0005j + 0.0036 - 0.0022j + 0.0002 + 0.0003j + 0.0038 - 0.0019j + 0.0001 + 0.0001j + 0.0039 - 0.0016j +-0.0000 - 0.0001j + 0.0039 - 0.0014j +-0.0001 - 0.0003j + 0.0040 - 0.0011j +-0.0001 - 0.0006j + 0.0040 - 0.0008j +-0.0001 - 0.0008j + 0.0039 - 0.0005j +-0.0001 - 0.0011j + 0.0039 - 0.0002j +-0.0000 - 0.0013j + 0.0038 + 0.0000j + 0.0001 - 0.0015j + 0.0037 + 0.0003j + 0.0002 - 0.0017j + 0.0035 + 0.0005j + 0.0003 - 0.0019j + 0.0033 + 0.0007j + 0.0005 - 0.0020j + 0.0032 + 0.0009j + 0.0007 - 0.0022j + 0.0029 + 0.0010j + 0.0009 - 0.0023j + 0.0027 + 0.0012j + 0.0011 - 0.0024j + 0.0025 + 0.0013j + 0.0014 - 0.0024j + 0.0022 + 0.0013j + 0.0016 - 0.0024j + 0.0020 + 0.0014j + 0.0018 - 0.0024j + 0.0017 + 0.0014j + 0.0021 - 0.0024j + 0.0015 + 0.0014j + 0.0023 - 0.0023j + 0.0013 + 0.0013j + 0.0025 - 0.0022j + 0.0010 + 0.0012j + 0.0027 - 0.0021j + 0.0008 + 0.0011j + 0.0029 - 0.0020j + 0.0006 + 0.0010j + 0.0031 - 0.0018j + 0.0005 + 0.0009j + 0.0033 - 0.0016j + 0.0003 + 0.0007j + 0.0034 - 0.0014j + 0.0002 + 0.0005j + 0.0035 - 0.0012j + 0.0001 + 0.0003j + 0.0036 - 0.0009j + 0.0000 + 0.0001j + 0.0036 - 0.0007j +-0.0000 - 0.0001j + 0.0036 - 0.0004j +-0.0000 - 0.0004j + 0.0036 - 0.0002j +-0.0000 - 0.0006j + 0.0036 + 0.0001j + 0.0000 - 0.0008j + 0.0035 + 0.0003j + 0.0001 - 0.0010j + 0.0034 + 0.0005j + 0.0002 - 0.0012j + 0.0033 + 0.0007j + 0.0004 - 0.0014j + 0.0032 + 0.0009j + 0.0005 - 0.0015j + 0.0030 + 0.0011j + 0.0007 - 0.0017j + 0.0028 + 0.0013j + 0.0009 - 0.0018j + 0.0026 + 0.0014j + 0.0011 - 0.0019j + 0.0024 + 0.0015j + 0.0013 - 0.0019j + 0.0022 + 0.0016j + 0.0015 - 0.0020j + 0.0019 + 0.0016j + 0.0017 - 0.0020j + 0.0017 + 0.0016j + 0.0020 - 0.0019j + 0.0015 + 0.0016j + 0.0022 - 0.0019j + 0.0013 + 0.0016j + 0.0024 - 0.0018j + 0.0011 + 0.0015j + 0.0026 - 0.0017j + 0.0008 + 0.0014j + 0.0028 - 0.0016j + 0.0007 + 0.0013j + 0.0030 - 0.0014j + 0.0005 + 0.0012j + 0.0031 - 0.0012j + 0.0003 + 0.0010j + 0.0033 - 0.0010j + 0.0002 + 0.0008j + 0.0034 - 0.0008j + 0.0001 + 0.0006j + 0.0035 - 0.0006j + 0.0001 + 0.0004j + 0.0035 - 0.0004j + 0.0000 + 0.0002j + 0.0036 - 0.0001j \ No newline at end of file diff --git a/examples/FFT_autocorrelate.grc b/examples/FFT_autocorrelate.grc new file mode 100644 index 0000000..4410550 --- /dev/null +++ b/examples/FFT_autocorrelate.grc @@ -0,0 +1,348 @@ +options: + parameters: + author: tempest + category: '[Tempest]' + cmake_opt: '' + comment: '' + copyright: '' + description: '' + gen_cmake: 'On' + gen_linking: dynamic + generate_options: hb + hier_block_src_path: '.:' + id: FFT_autocorrelation + max_nouts: '0' + output_language: python + placement: (0,0) + qt_qss_theme: '' + realtime_scheduling: '' + run: 'True' + run_command: '{python} -u {filename}' + run_options: prompt + sizing_mode: fixed + thread_safe_setters: '' + title: FFT_autocorrelation_ + window_size: '' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [7, 7] + rotation: 0 + state: enabled + +blocks: +- name: fac_size + id: variable + parameters: + comment: '' + value: fft_size + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [346, 28] + rotation: 0 + state: true +- name: klog + id: variable + parameters: + comment: '' + value: -20*log10(fac_size) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [586, 10] + rotation: 0 + state: true +- name: alpha + id: parameter + parameters: + alias: '' + comment: '' + hide: none + label: '' + short_id: '' + type: '' + value: '1.0' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [167, 218] + rotation: 0 + state: true +- name: blocks_complex_to_mag_0 + id: blocks_complex_to_mag + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + vlen: fac_size + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [634, 76] + rotation: 0 + state: true +- name: blocks_complex_to_mag_0_0 + id: blocks_complex_to_mag + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + vlen: fac_size + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [702, 272] + rotation: 0 + state: true +- name: blocks_nlog10_ff_1 + id: blocks_nlog10_ff + parameters: + affinity: '' + alias: '' + comment: '' + k: klog + maxoutbuf: '0' + minoutbuf: '0' + n: '20' + vlen: fac_size + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [751, 446] + rotation: 0 + state: true +- name: blocks_selector_0 + id: blocks_selector + parameters: + affinity: '' + alias: '' + comment: '' + enabled: 'True' + input_index: '0' + maxoutbuf: '0' + minoutbuf: '0' + num_inputs: '1' + num_outputs: '1' + output_index: '0' + showports: 'True' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [218, 355] + rotation: 0 + state: true +- name: blocks_stream_to_vector_0 + id: blocks_stream_to_vector + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + num_items: fac_size + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [313, 283] + rotation: 0 + state: enabled +- name: blocks_vector_to_stream_0 + id: blocks_vector_to_stream + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + num_items: fft_size + type: float + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [967, 367] + rotation: 0 + state: true +- name: fft_size + id: parameter + parameters: + alias: '' + comment: '' + hide: none + label: fft_size + short_id: '' + type: intx + value: int(4096*512) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [65, 230] + rotation: 0 + state: true +- name: fft_vxx_0 + id: fft_vxx + parameters: + affinity: '' + alias: '' + comment: '' + fft_size: fac_size + forward: 'True' + maxoutbuf: '0' + minoutbuf: '0' + nthreads: '4' + shift: 'False' + type: complex + window: () + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [470, 123] + rotation: 0 + state: enabled +- name: fft_vxx_1 + id: fft_vxx + parameters: + affinity: '' + alias: '' + comment: '' + fft_size: fac_size + forward: 'False' + maxoutbuf: '0' + minoutbuf: '0' + nthreads: '4' + shift: 'True' + type: float + window: () + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [702, 151] + rotation: 0 + state: enabled +- name: import_0 + id: import + parameters: + alias: '' + comment: '' + imports: from math import log10 + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [689, 8] + rotation: 0 + state: true +- name: pad_sink_0 + id: pad_sink + parameters: + affinity: '' + alias: '' + comment: '' + label: out + num_streams: '1' + optional: 'False' + type: float + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [973, 214] + rotation: 0 + state: true +- name: pad_source_0 + id: pad_source + parameters: + affinity: '' + alias: '' + comment: '' + label: in + maxoutbuf: '0' + minoutbuf: '0' + num_streams: '1' + optional: 'False' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [47, 429] + rotation: 0 + state: true +- name: pad_source_0_0 + id: pad_source + parameters: + affinity: '' + alias: '' + comment: '' + label: en + maxoutbuf: '0' + minoutbuf: '0' + num_streams: '1' + optional: 'True' + type: message + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [53, 474] + rotation: 0 + state: true +- name: single_pole_iir_filter_xx_0 + id: single_pole_iir_filter_xx + parameters: + affinity: '' + alias: '' + alpha: alpha + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + type: float + vlen: fac_size + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [683, 362] + rotation: 0 + state: true + +connections: +- [blocks_complex_to_mag_0, '0', fft_vxx_1, '0'] +- [blocks_complex_to_mag_0_0, '0', single_pole_iir_filter_xx_0, '0'] +- [blocks_nlog10_ff_1, '0', blocks_vector_to_stream_0, '0'] +- [blocks_selector_0, '0', blocks_stream_to_vector_0, '0'] +- [blocks_stream_to_vector_0, '0', fft_vxx_0, '0'] +- [blocks_vector_to_stream_0, '0', pad_sink_0, '0'] +- [fft_vxx_0, '0', blocks_complex_to_mag_0, '0'] +- [fft_vxx_1, '0', blocks_complex_to_mag_0_0, '0'] +- [pad_source_0, '0', blocks_selector_0, '0'] +- [pad_source_0_0, out, blocks_selector_0, en] +- [single_pole_iir_filter_xx_0, '0', blocks_nlog10_ff_1, '0'] + +metadata: + file_format: 1 diff --git a/examples/FFT_crosscorrelate.grc b/examples/FFT_crosscorrelate.grc new file mode 100644 index 0000000..8bcce97 --- /dev/null +++ b/examples/FFT_crosscorrelate.grc @@ -0,0 +1,487 @@ +options: + parameters: + author: tempest + category: '[Tempest]' + cmake_opt: '' + comment: '' + copyright: '' + description: '' + gen_cmake: 'On' + gen_linking: dynamic + generate_options: hb + hier_block_src_path: '.:' + id: FFT_crosscorrelation_ + max_nouts: '0' + output_language: python + placement: (0,0) + qt_qss_theme: '' + realtime_scheduling: '' + run: 'True' + run_command: '{python} -u {filename}' + run_options: prompt + sizing_mode: fixed + thread_safe_setters: '' + title: FFT_crosscorrelation + window_size: '' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [45, 15] + rotation: 0 + state: enabled + +blocks: +- name: delay_samples_var + id: variable + parameters: + comment: '' + value: delay_samples + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [443, 34] + rotation: 0 + state: true +- name: fac_size + id: variable + parameters: + comment: '' + value: fft_size + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [319, 34] + rotation: 0 + state: true +- name: klog + id: variable + parameters: + comment: '' + value: -20*log10(fac_size) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [586, 10] + rotation: 0 + state: true +- name: blocks_complex_to_mag_0_0 + id: blocks_complex_to_mag + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + vlen: fac_size + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [780, 351] + rotation: 0 + state: disabled +- name: blocks_complex_to_mag_squared_0 + id: blocks_complex_to_mag_squared + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + vlen: fac_size + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [759, 325] + rotation: 0 + state: enabled +- name: blocks_delay_0 + id: blocks_delay + parameters: + affinity: '' + alias: '' + comment: '' + delay: delay_samples_var + maxoutbuf: '0' + minoutbuf: '0' + num_ports: '1' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [243, 402] + rotation: 0 + state: enabled +- name: blocks_keep_one_in_n_0 + id: blocks_keep_one_in_n + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + n: fac_decimation + type: complex + vlen: fac_size + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [374, 215] + rotation: 0 + state: true +- name: blocks_keep_one_in_n_0_0 + id: blocks_keep_one_in_n + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + n: fac_decimation + type: complex + vlen: fac_size + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [368, 471] + rotation: 0 + state: true +- name: blocks_multiply_conjugate_cc_0 + id: blocks_multiply_conjugate_cc + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + vlen: fac_size + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [635, 261] + rotation: 0 + state: true +- name: blocks_nlog10_ff_1 + id: blocks_nlog10_ff + parameters: + affinity: '' + alias: '' + comment: '' + k: klog + maxoutbuf: '0' + minoutbuf: '0' + n: '20' + vlen: fac_size + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [947, 312] + rotation: 0 + state: enabled +- name: blocks_stream_to_vector_0 + id: blocks_stream_to_vector + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + num_items: fac_size + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [288, 292] + rotation: 0 + state: enabled +- name: blocks_stream_to_vector_0_0 + id: blocks_stream_to_vector + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + num_items: fac_size + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [394, 391] + rotation: 0 + state: enabled +- name: blocks_vector_to_stream_0 + id: blocks_vector_to_stream + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + num_items: fft_size + type: float + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [993, 234] + rotation: 0 + state: true +- name: delay_samples + id: parameter + parameters: + alias: '' + comment: '' + hide: none + label: delay_samples + short_id: '' + type: intx + value: '0' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [48, 384] + rotation: 0 + state: true +- name: fac_decimation + id: parameter + parameters: + alias: '' + comment: '' + hide: none + label: fac_decimation + short_id: '' + type: intx + value: '10' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [198, 113] + rotation: 0 + state: true +- name: fft_size + id: parameter + parameters: + alias: '' + comment: '' + hide: none + label: fft_size + short_id: '' + type: intx + value: int(4096*512) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [65, 230] + rotation: 0 + state: true +- name: fft_vxx_0 + id: fft_vxx + parameters: + affinity: '' + alias: '' + comment: '' + fft_size: fac_size + forward: 'True' + maxoutbuf: '0' + minoutbuf: '0' + nthreads: '4' + shift: 'False' + type: complex + window: () + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [487, 119] + rotation: 0 + state: enabled +- name: fft_vxx_0_0 + id: fft_vxx + parameters: + affinity: '' + alias: '' + comment: '' + fft_size: fac_size + forward: 'True' + maxoutbuf: '0' + minoutbuf: '0' + nthreads: '4' + shift: 'False' + type: complex + window: () + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [475, 538] + rotation: 0 + state: enabled +- name: fft_vxx_1 + id: fft_vxx + parameters: + affinity: '' + alias: '' + comment: '' + fft_size: fac_size + forward: 'False' + maxoutbuf: '0' + minoutbuf: '0' + nthreads: '4' + shift: 'True' + type: complex + window: () + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [824, 176] + rotation: 0 + state: enabled +- name: import_0 + id: import + parameters: + alias: '' + comment: '' + imports: from math import log10 + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [689, 8] + rotation: 0 + state: true +- name: pad_sink_0 + id: pad_sink + parameters: + affinity: '' + alias: '' + comment: '' + label: out + num_streams: '1' + optional: 'False' + type: float + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1071, 134] + rotation: 0 + state: true +- name: pad_source_0 + id: pad_source + parameters: + affinity: '' + alias: '' + comment: '' + label: in + maxoutbuf: '0' + minoutbuf: '0' + num_streams: '1' + optional: 'False' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [80, 335] + rotation: 0 + state: true +- name: pad_source_0_0 + id: pad_source + parameters: + affinity: '' + alias: '' + comment: '' + label: in + maxoutbuf: '0' + minoutbuf: '0' + num_streams: '1' + optional: 'False' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [102, 569] + rotation: 0 + state: true +- name: sample_rate + id: parameter + parameters: + alias: '' + comment: '' + hide: none + label: sample_rate + short_id: '' + type: intx + value: int(50e6) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [84, 137] + rotation: 0 + state: true +- name: single_pole_iir_filter_xx_0 + id: single_pole_iir_filter_xx + parameters: + affinity: '' + alias: '' + alpha: '1' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + type: float + vlen: fac_size + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [870, 429] + rotation: 0 + state: true + +connections: +- [blocks_complex_to_mag_0_0, '0', single_pole_iir_filter_xx_0, '0'] +- [blocks_complex_to_mag_squared_0, '0', single_pole_iir_filter_xx_0, '0'] +- [blocks_delay_0, '0', blocks_stream_to_vector_0_0, '0'] +- [blocks_keep_one_in_n_0, '0', fft_vxx_0, '0'] +- [blocks_keep_one_in_n_0_0, '0', fft_vxx_0_0, '0'] +- [blocks_multiply_conjugate_cc_0, '0', fft_vxx_1, '0'] +- [blocks_nlog10_ff_1, '0', blocks_vector_to_stream_0, '0'] +- [blocks_stream_to_vector_0, '0', blocks_keep_one_in_n_0, '0'] +- [blocks_stream_to_vector_0_0, '0', blocks_keep_one_in_n_0_0, '0'] +- [blocks_vector_to_stream_0, '0', pad_sink_0, '0'] +- [fft_vxx_0, '0', blocks_multiply_conjugate_cc_0, '0'] +- [fft_vxx_0_0, '0', blocks_multiply_conjugate_cc_0, '1'] +- [fft_vxx_1, '0', blocks_complex_to_mag_0_0, '0'] +- [fft_vxx_1, '0', blocks_complex_to_mag_squared_0, '0'] +- [pad_source_0, '0', blocks_stream_to_vector_0, '0'] +- [pad_source_0_0, '0', blocks_delay_0, '0'] +- [single_pole_iir_filter_xx_0, '0', blocks_nlog10_ff_1, '0'] + +metadata: + file_format: 1 diff --git a/examples/Keep_1_in_N_frames.grc b/examples/Keep_1_in_N_frames.grc new file mode 100644 index 0000000..a93d3b0 --- /dev/null +++ b/examples/Keep_1_in_N_frames.grc @@ -0,0 +1,181 @@ +options: + parameters: + author: tempest + category: '[Tempest]' + cmake_opt: '' + comment: '' + copyright: '' + description: '' + gen_cmake: 'On' + gen_linking: dynamic + generate_options: hb + hier_block_src_path: '.:' + id: Keep_1_in_N_Frames + max_nouts: '0' + output_language: python + placement: (0,0) + qt_qss_theme: '' + realtime_scheduling: '' + run: 'True' + run_command: '{python} -u {filename}' + run_options: prompt + sizing_mode: fixed + thread_safe_setters: '' + title: Keep_1_in_N_Frames + window_size: '' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [7, 7] + rotation: 0 + state: enabled + +blocks: +- name: fac_size + id: variable + parameters: + comment: '' + value: fft_size + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [310, 109] + rotation: 0 + state: true +- name: blocks_keep_one_in_n_0 + id: blocks_keep_one_in_n + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + n: fac_decimation + type: complex + vlen: fac_size + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [498, 265] + rotation: 0 + state: true +- name: blocks_stream_to_vector_0 + id: blocks_stream_to_vector + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + num_items: fac_size + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [274, 314] + rotation: 0 + state: enabled +- name: blocks_vector_to_stream_0 + id: blocks_vector_to_stream + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + num_items: fac_size + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [718, 309] + rotation: 0 + state: true +- name: fac_decimation + id: parameter + parameters: + alias: '' + comment: '' + hide: none + label: N Frames + short_id: '' + type: intx + value: '10' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [162, 132] + rotation: 0 + state: true +- name: fft_size + id: parameter + parameters: + alias: '' + comment: '' + hide: none + label: Frame Size + short_id: '' + type: intx + value: int(4096*512) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [42, 161] + rotation: 0 + state: true +- name: pad_sink_0 + id: pad_sink + parameters: + affinity: '' + alias: '' + comment: '' + label: out + num_streams: '1' + optional: 'False' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [927, 306] + rotation: 0 + state: true +- name: pad_source_0 + id: pad_source + parameters: + affinity: '' + alias: '' + comment: '' + label: in + maxoutbuf: '0' + minoutbuf: '0' + num_streams: '1' + optional: 'False' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [88, 306] + rotation: 0 + state: true + +connections: +- [blocks_keep_one_in_n_0, '0', blocks_vector_to_stream_0, '0'] +- [blocks_stream_to_vector_0, '0', blocks_keep_one_in_n_0, '0'] +- [blocks_vector_to_stream_0, '0', pad_sink_0, '0'] +- [pad_source_0, '0', blocks_stream_to_vector_0, '0'] + +metadata: + file_format: 1 diff --git a/examples/README b/examples/README new file mode 100644 index 0000000..c012bdf --- /dev/null +++ b/examples/README @@ -0,0 +1,4 @@ +It is considered good practice to add examples in here to demonstrate the +functionality of your OOT module. Python scripts, GRC flow graphs or other +code can go here. + diff --git a/examples/automatic_tempest_example.grc b/examples/automatic_tempest_example.grc new file mode 100644 index 0000000..524ba86 --- /dev/null +++ b/examples/automatic_tempest_example.grc @@ -0,0 +1,946 @@ +options: + parameters: + author: '' + category: '[GRC Hier Blocks]' + cmake_opt: '' + comment: '' + copyright: '' + description: '' + gen_cmake: 'On' + gen_linking: dynamic + generate_options: qt_gui + hier_block_src_path: '.:' + id: automatic_tempest_example + max_nouts: '0' + output_language: python + placement: (0,0) + qt_qss_theme: '' + realtime_scheduling: '' + run: 'True' + run_command: '{python} -u {filename}' + run_options: prompt + sizing_mode: fixed + thread_safe_setters: '' + title: '' + window_size: '' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [8, 8] + rotation: 0 + state: enabled + +blocks: +- name: Hblank + id: variable + parameters: + comment: '' + value: Hsize-Hvisible + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [480, 28] + rotation: 0 + state: enabled +- name: Hsize + id: variable + parameters: + comment: '' + value: Hsizes[mode] + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [560, 28] + rotation: 0 + state: enabled +- name: Hsizes + id: variable + parameters: + comment: '' + value: '[832, 936, 800, 848, 832, 840, 832, 976, 992, 1008, 1008, 1024, 1024, + 1056, 1040, 1056, 1048, 1072, 1312, 1264, 1344, 1328, 1312, 1376, 1392, 1408, + 1520, 1600, 1552, 1568, 1680, 1680, 1800, 1728, 1728, 1760, 1688, 1688, 1728, + 1760, 1776, 1800, 1880, 1896, 1896, 1912, 1928, 1904, 1936, 2144, 2160, 2176, + 2192, 2144, 2176, 2096, 2176, 2160, 2160, 2160, 2160, 2160, 2208, 1840, 2240, + 2256, 2448, 2456, 2528, 2560, 2576, 2608, 2592, 2624, 2600, 2640, 2048, 2044, + 2800]' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [624, 164] + rotation: 0 + state: enabled +- name: Hvisible + id: variable + parameters: + comment: '' + value: Hvisibles[mode] + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [656, 28] + rotation: 0 + state: enabled +- name: Hvisibles + id: variable + parameters: + comment: '' + value: '[640, 720, 640, 640, 640, 640, 640, 768, 768, 768, 768, 768, 800, 800, + 800, 800, 800, 800, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1152, 1152, + 1152, 1152, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, + 1368, 1400, 1400, 1400, 1400, 1400, 1440, 1440, 1600, 1600, 1600, 1600, 1600, + 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1680, 1680, 1680, 1792, + 1792, 1856, 1856, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 2048]' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [304, 228] + rotation: 0 + state: enabled +- name: Vblank + id: variable + parameters: + comment: '' + value: Vsize-Vvisible + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [480, 92] + rotation: 0 + state: enabled +- name: Vsize + id: variable + parameters: + comment: '' + value: Vsizes[mode] + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [560, 92] + rotation: 0 + state: enabled +- name: Vsizes + id: variable + parameters: + comment: '' + value: '[445, 446, 525, 509, 520, 500, 509, 597, 601, 602, 605, 611, 625, 628, + 666, 625, 631, 636, 622, 817, 806, 806, 800, 808, 814, 823, 895, 900, 907, 915, + 795, 828, 1000, 1002, 1011, 1017, 1066, 1066, 1072, 1085, 1097, 795, 1082, 1094, + 1096, 1103, 1112, 932, 1087, 1035, 1044, 1050, 1059, 1060, 1069, 1070, 1075, + 1250, 1250, 1250, 1250, 1250, 1271, 1080, 1089, 1087, 1394, 1417, 1439, 1500, + 1125, 1126, 1242, 1253, 1500, 1500, 2434, 2434, 1589]' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [624, 228] + rotation: 0 + state: enabled +- name: Vvisible + id: variable + parameters: + comment: '' + value: Vvisibles[mode] + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [656, 92] + rotation: 0 + state: enabled +- name: Vvisibles + id: variable + parameters: + comment: '' + value: '[400, 400, 480, 480, 480, 480, 480, 576, 576, 576, 576, 576, 600, 600, + 600, 600, 600, 600, 600, 768, 768, 768, 768, 768, 768, 768, 864, 864, 864, 864, + 768, 800, 960, 960, 960, 960, 1024, 1024, 1024, 1024, 1024, 768 , 1050, 1050, + 1050, 1050, 1050, 900 , 1050, 1000, 1000, 1000, 1000, 1024, 1024, 1024, 1024, + 1200, 1200, 1200, 1200, 1200, 1200, 1050, 1050, 1050, 1344, 1344, 1392, 1392, + 1080, 1080, 1200, 1200, 1440, 1440, 2400, 2400, 1536] ' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [464, 228] + rotation: 0 + state: enabled +- name: delay + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Hsync delay + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: int(Hblank/float(px_rate)*samp_rate)*2 + value: int(136/float(px_rate)*samp_rate) + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1088, 84] + rotation: 0 + state: enabled +- name: harmonic + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Harmonic + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '1' + step: '1' + stop: '10' + value: '1' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [976, 156] + rotation: 0 + state: enabled +- name: interpolatedHsize + id: variable + parameters: + comment: '' + value: int(Hsize/float(px_rate)*samp_rate) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1088, 20] + rotation: 0 + state: enabled +- name: inverted + id: variable_qtgui_chooser + parameters: + comment: '' + gui_hint: '' + label: Inverted colors? + label0: 'Yes' + label1: 'No' + label2: '' + label3: '' + label4: '' + labels: '[]' + num_opts: '2' + option1: '1' + option2: '2' + option3: '3' + option4: '4' + options: '[0, 1, 2]' + orient: Qt.QHBoxLayout + type: real + value: '1' + widget: radio_buttons + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [816, 28] + rotation: 0 + state: enabled +- name: lines_offset + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Vertical offset + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: Vsize + value: int(Vsize/2) + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [960, 28] + rotation: 0 + state: enabled +- name: mode + id: variable_qtgui_chooser + parameters: + comment: '' + gui_hint: '' + label: Display's resolution + label0: '' + label1: '' + label2: '' + label3: '' + label4: '' + labels: modes + num_opts: '0' + option1: '1' + option2: '2' + option3: '3' + option4: '4' + options: range(len(modes)) + orient: Qt.QVBoxLayout + type: int + value: '20' + widget: combo_box + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [112, 164] + rotation: 0 + state: enabled +- name: modes + id: variable + parameters: + comment: '' + value: '["640x400 @ 85Hz", "720x400 @ 85Hz", "640x480 @ 60Hz", "640x480 @ 100Hz", + "640x480 @ 72Hz", "640x480 @ 75Hz", "640x480 @ 85Hz", "768x576 @ 60 Hz", "768x576 + @ 72 Hz", "768x576 @ 75 Hz", "768x576 @ 85 Hz", "768x576 @ 100 Hz", "800x600 + @ 56Hz", "800x600 @ 60Hz", "800x600 @ 72Hz", "800x600 @ 75Hz", "800x600 @ 85Hz", + "800x600 @ 100Hz", "1024x600 @ 60 Hz", "1024x768i @ 43Hz", "1024x768 @ 60Hz", + "1024x768 @ 70Hz", "1024x768 @ 75Hz", "1024x768 @ 85Hz", "1024x768 @ 100Hz", + "1024x768 @ 120Hz", "1152x864 @ 60Hz", "1152x864 @ 75Hz", "1152x864 @ 85Hz", + "1152x864 @ 100Hz", "1280x768 @ 60 Hz", "1280x800 @ 60 Hz", "1280x960 @ 60Hz", + "1280x960 @ 75Hz", "1280x960 @ 85Hz", "1280x960 @ 100Hz", "1280x1024 @ 60Hz", + "1280x1024 @ 75Hz", "1280x1024 @ 85Hz", "1280x1024 @ 100Hz", "1280x1024 @ 120Hz", + "1368x768 @ 60 Hz", "1400x1050 @ 60Hz", "1400x1050 @ 72 Hz", "1400x1050 @ 75 + Hz", "1400x1050 @ 85 Hz", "1400x1050 @ 100 Hz", "1440x900 @ 60 Hz", "1440x1050 + @ 60 Hz", "1600x1000 @ 60Hz", "1600x1000 @ 75Hz", "1600x1000 @ 85Hz", "1600x1000 + @ 100Hz", "1600x1024 @ 60Hz", "1600x1024 @ 75Hz", "1600x1024 @ 76Hz", "1600x1024 + @ 85Hz", "1600x1200 @ 60Hz", "1600x1200 @ 65Hz", "1600x1200 @ 70Hz", "1600x1200 + @ 75Hz", "1600x1200 @ 85Hz", "1600x1200 @ 100 Hz", "1680x1050 @ 60Hz reduced + blanking ", "1680x1050 @ 60Hz non-interlaced ", "1680x1050 @ 60 Hz", "1792x1344 + @ 60Hz", "1792x1344 @ 75Hz", "1856x1392 @ 60Hz", "1856x1392 @ 75Hz", "1920x1080 + @ 60Hz", "1920x1080 @ 75Hz", "1920x1200 @ 60Hz", "1920x1200 @ 75Hz", "1920x1440 + @ 60Hz", "1920x1440 @ 75Hz", "1920x2400 @ 25Hz", "1920x2400 @ 30Hz", "2048x1536 + @ 60Hz"]' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [288, 164] + rotation: 0 + state: enabled +- name: px_rate + id: variable + parameters: + comment: '' + value: Hsize*Vsize*refresh_rate + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [264, 28] + rotation: 0 + state: enabled +- name: refresh_rate + id: variable + parameters: + comment: '' + value: refresh_rates[mode] + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [376, 28] + rotation: 0 + state: enabled +- name: refresh_rates + id: variable + parameters: + comment: '' + value: '[85, 85, 60, 100, 72, 75, 85, 60, 72, 75, 85, 100, 56, 60, 72, 75, 85, + 100, 60, 43, 60, 70, 75, 85, 100, 120, 60, 75, 85, 100, 60, 60, 60, 75, 85, + 100, 60, 75, 85, 100, 120, 60, 60, 72, 75, 85, 100 , 60, 60, 60, 75, 85, 100, 60, 75, 76, 85, 60, 65, 70, 75, 85, 100 + , 60, 60, 60, 60, 75, 60, 75, 60, 75, 60, 75, 60, 75, 25, 30, 60]' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [464, 164] + rotation: 0 + state: enabled +- name: samp_rate + id: variable + parameters: + comment: '' + value: int(30e6) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [280, 92] + rotation: 0 + state: enabled +- name: blocks_complex_to_mag_0 + id: blocks_complex_to_mag + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1356, 402] + rotation: 0 + state: enabled +- name: blocks_delay_0 + id: blocks_delay + parameters: + affinity: '' + alias: '' + comment: '' + delay: interpolatedHsize*lines_offset + maxoutbuf: '0' + minoutbuf: '0' + num_ports: '1' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1100, 398] + rotation: 0 + state: enabled +- name: blocks_file_source_0 + id: blocks_file_source + parameters: + affinity: '' + alias: '' + begin_tag: pmt.PMT_NIL + comment: '' + file: /home/gnuradio/persistent/30M_tv_g50_v2.dat + length: '0' + maxoutbuf: '0' + minoutbuf: '0' + offset: '0' + repeat: 'True' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [0, 380] + rotation: 0 + state: enabled +- name: blocks_float_to_short_0 + id: blocks_float_to_short + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + scale: inverted + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1092, 574] + rotation: 180 + state: enabled +- name: blocks_throttle_0 + id: blocks_throttle + parameters: + affinity: '' + alias: '' + comment: '' + ignoretag: 'True' + maxoutbuf: '0' + minoutbuf: '0' + samples_per_second: samp_rate + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [358, 404] + rotation: 0 + state: enabled +- name: tempest_Hsync_0 + id: tempest_Hsync + parameters: + Htotal: interpolatedHsize + affinity: '' + alias: '' + comment: '' + delay: delay + maxoutbuf: '0' + minoutbuf: '0' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [876, 390] + rotation: 0 + state: enabled +- name: tempest_fine_sampling_synchronization_0 + id: tempest_fine_sampling_synchronization + parameters: + Htotal: interpolatedHsize + Vtotal: Vsize + affinity: '' + alias: '' + comment: '' + correct_sampling: '1' + max_deviation: 10.0/interpolatedHsize + maxoutbuf: '0' + minoutbuf: '0' + update_proba: 1e-2/(Hsize*Vsize) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [620, 382] + rotation: 0 + state: enabled +- name: tempest_normalize_flow_0 + id: tempest_normalize_flow + parameters: + affinity: '' + alias: '' + alpha_avg: 1e-2 + comment: '' + max: '245' + maxoutbuf: '0' + min: '10' + minoutbuf: '0' + update_proba: '0.1' + window: interpolatedHsize + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1292, 550] + rotation: 180 + state: enabled +- name: uhd_usrp_source_0 + id: uhd_usrp_source + parameters: + affinity: '' + alias: '' + ant0: '' + ant1: '' + ant10: '' + ant11: '' + ant12: '' + ant13: '' + ant14: '' + ant15: '' + ant16: '' + ant17: '' + ant18: '' + ant19: '' + ant2: '' + ant20: '' + ant21: '' + ant22: '' + ant23: '' + ant24: '' + ant25: '' + ant26: '' + ant27: '' + ant28: '' + ant29: '' + ant3: '' + ant30: '' + ant31: '' + ant4: '' + ant5: '' + ant6: '' + ant7: '' + ant8: '' + ant9: '' + bw0: '0' + bw1: '0' + bw10: '0' + bw11: '0' + bw12: '0' + bw13: '0' + bw14: '0' + bw15: '0' + bw16: '0' + bw17: '0' + bw18: '0' + bw19: '0' + bw2: '0' + bw20: '0' + bw21: '0' + bw22: '0' + bw23: '0' + bw24: '0' + bw25: '0' + bw26: '0' + bw27: '0' + bw28: '0' + bw29: '0' + bw3: '0' + bw30: '0' + bw31: '0' + bw4: '0' + bw5: '0' + bw6: '0' + bw7: '0' + bw8: '0' + bw9: '0' + center_freq0: px_rate*harmonic + center_freq1: '0' + center_freq10: '0' + center_freq11: '0' + center_freq12: '0' + center_freq13: '0' + center_freq14: '0' + center_freq15: '0' + center_freq16: '0' + center_freq17: '0' + center_freq18: '0' + center_freq19: '0' + center_freq2: '0' + center_freq20: '0' + center_freq21: '0' + center_freq22: '0' + center_freq23: '0' + center_freq24: '0' + center_freq25: '0' + center_freq26: '0' + center_freq27: '0' + center_freq28: '0' + center_freq29: '0' + center_freq3: '0' + center_freq30: '0' + center_freq31: '0' + center_freq4: '0' + center_freq5: '0' + center_freq6: '0' + center_freq7: '0' + center_freq8: '0' + center_freq9: '0' + clock_rate: '0.0' + clock_source0: '' + clock_source1: '' + clock_source2: '' + clock_source3: '' + clock_source4: '' + clock_source5: '' + clock_source6: '' + clock_source7: '' + comment: '' + dc_offs_enb0: '""' + dc_offs_enb1: '""' + dc_offs_enb10: '""' + dc_offs_enb11: '""' + dc_offs_enb12: '""' + dc_offs_enb13: '""' + dc_offs_enb14: '""' + dc_offs_enb15: '""' + dc_offs_enb16: '""' + dc_offs_enb17: '""' + dc_offs_enb18: '""' + dc_offs_enb19: '""' + dc_offs_enb2: '""' + dc_offs_enb20: '""' + dc_offs_enb21: '""' + dc_offs_enb22: '""' + dc_offs_enb23: '""' + dc_offs_enb24: '""' + dc_offs_enb25: '""' + dc_offs_enb26: '""' + dc_offs_enb27: '""' + dc_offs_enb28: '""' + dc_offs_enb29: '""' + dc_offs_enb3: '""' + dc_offs_enb30: '""' + dc_offs_enb31: '""' + dc_offs_enb4: '""' + dc_offs_enb5: '""' + dc_offs_enb6: '""' + dc_offs_enb7: '""' + dc_offs_enb8: '""' + dc_offs_enb9: '""' + dev_addr: '""' + dev_args: '""' + gain0: '50' + gain1: '0' + gain10: '0' + gain11: '0' + gain12: '0' + gain13: '0' + gain14: '0' + gain15: '0' + gain16: '0' + gain17: '0' + gain18: '0' + gain19: '0' + gain2: '0' + gain20: '0' + gain21: '0' + gain22: '0' + gain23: '0' + gain24: '0' + gain25: '0' + gain26: '0' + gain27: '0' + gain28: '0' + gain29: '0' + gain3: '0' + gain30: '0' + gain31: '0' + gain4: '0' + gain5: '0' + gain6: '0' + gain7: '0' + gain8: '0' + gain9: '0' + iq_imbal_enb0: '""' + iq_imbal_enb1: '""' + iq_imbal_enb10: '""' + iq_imbal_enb11: '""' + iq_imbal_enb12: '""' + iq_imbal_enb13: '""' + iq_imbal_enb14: '""' + iq_imbal_enb15: '""' + iq_imbal_enb16: '""' + iq_imbal_enb17: '""' + iq_imbal_enb18: '""' + iq_imbal_enb19: '""' + iq_imbal_enb2: '""' + iq_imbal_enb20: '""' + iq_imbal_enb21: '""' + iq_imbal_enb22: '""' + iq_imbal_enb23: '""' + iq_imbal_enb24: '""' + iq_imbal_enb25: '""' + iq_imbal_enb26: '""' + iq_imbal_enb27: '""' + iq_imbal_enb28: '""' + iq_imbal_enb29: '""' + iq_imbal_enb3: '""' + iq_imbal_enb30: '""' + iq_imbal_enb31: '""' + iq_imbal_enb4: '""' + iq_imbal_enb5: '""' + iq_imbal_enb6: '""' + iq_imbal_enb7: '""' + iq_imbal_enb8: '""' + iq_imbal_enb9: '""' + lo_export0: 'False' + lo_export1: 'False' + lo_export10: 'False' + lo_export11: 'False' + lo_export12: 'False' + lo_export13: 'False' + lo_export14: 'False' + lo_export15: 'False' + lo_export16: 'False' + lo_export17: 'False' + lo_export18: 'False' + lo_export19: 'False' + lo_export2: 'False' + lo_export20: 'False' + lo_export21: 'False' + lo_export22: 'False' + lo_export23: 'False' + lo_export24: 'False' + lo_export25: 'False' + lo_export26: 'False' + lo_export27: 'False' + lo_export28: 'False' + lo_export29: 'False' + lo_export3: 'False' + lo_export30: 'False' + lo_export31: 'False' + lo_export4: 'False' + lo_export5: 'False' + lo_export6: 'False' + lo_export7: 'False' + lo_export8: 'False' + lo_export9: 'False' + lo_source0: internal + lo_source1: internal + lo_source10: internal + lo_source11: internal + lo_source12: internal + lo_source13: internal + lo_source14: internal + lo_source15: internal + lo_source16: internal + lo_source17: internal + lo_source18: internal + lo_source19: internal + lo_source2: internal + lo_source20: internal + lo_source21: internal + lo_source22: internal + lo_source23: internal + lo_source24: internal + lo_source25: internal + lo_source26: internal + lo_source27: internal + lo_source28: internal + lo_source29: internal + lo_source3: internal + lo_source30: internal + lo_source31: internal + lo_source4: internal + lo_source5: internal + lo_source6: internal + lo_source7: internal + lo_source8: internal + lo_source9: internal + maxoutbuf: '0' + minoutbuf: '0' + nchan: '1' + norm_gain0: 'False' + norm_gain1: 'False' + norm_gain10: 'False' + norm_gain11: 'False' + norm_gain12: 'False' + norm_gain13: 'False' + norm_gain14: 'False' + norm_gain15: 'False' + norm_gain16: 'False' + norm_gain17: 'False' + norm_gain18: 'False' + norm_gain19: 'False' + norm_gain2: 'False' + norm_gain20: 'False' + norm_gain21: 'False' + norm_gain22: 'False' + norm_gain23: 'False' + norm_gain24: 'False' + norm_gain25: 'False' + norm_gain26: 'False' + norm_gain27: 'False' + norm_gain28: 'False' + norm_gain29: 'False' + norm_gain3: 'False' + norm_gain30: 'False' + norm_gain31: 'False' + norm_gain4: 'False' + norm_gain5: 'False' + norm_gain6: 'False' + norm_gain7: 'False' + norm_gain8: 'False' + norm_gain9: 'False' + num_mboards: '1' + otw: '' + rx_agc0: Default + rx_agc1: Default + rx_agc10: Default + rx_agc11: Default + rx_agc12: Default + rx_agc13: Default + rx_agc14: Default + rx_agc15: Default + rx_agc16: Default + rx_agc17: Default + rx_agc18: Default + rx_agc19: Default + rx_agc2: Default + rx_agc20: Default + rx_agc21: Default + rx_agc22: Default + rx_agc23: Default + rx_agc24: Default + rx_agc25: Default + rx_agc26: Default + rx_agc27: Default + rx_agc28: Default + rx_agc29: Default + rx_agc3: Default + rx_agc30: Default + rx_agc31: Default + rx_agc4: Default + rx_agc5: Default + rx_agc6: Default + rx_agc7: Default + rx_agc8: Default + rx_agc9: Default + samp_rate: samp_rate + sd_spec0: '' + sd_spec1: '' + sd_spec2: '' + sd_spec3: '' + sd_spec4: '' + sd_spec5: '' + sd_spec6: '' + sd_spec7: '' + show_lo_controls: 'False' + stream_args: '' + stream_chans: '[]' + sync: sync + time_source0: '' + time_source1: '' + time_source2: '' + time_source3: '' + time_source4: '' + time_source5: '' + time_source6: '' + time_source7: '' + type: fc32 + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [183, 496] + rotation: 0 + state: disabled +- name: video_sdl_sink_0 + id: video_sdl_sink + parameters: + affinity: '' + alias: '' + comment: '' + display_height: Vsize + display_width: Hsize + fps: '0' + height: Vsize + num_channels: '1' + type: short + width: interpolatedHsize + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [820, 542] + rotation: 180 + state: enabled + +connections: +- [blocks_complex_to_mag_0, '0', tempest_normalize_flow_0, '0'] +- [blocks_delay_0, '0', blocks_complex_to_mag_0, '0'] +- [blocks_file_source_0, '0', blocks_throttle_0, '0'] +- [blocks_float_to_short_0, '0', video_sdl_sink_0, '0'] +- [blocks_throttle_0, '0', tempest_fine_sampling_synchronization_0, '0'] +- [tempest_Hsync_0, '0', blocks_delay_0, '0'] +- [tempest_fine_sampling_synchronization_0, '0', tempest_Hsync_0, '0'] +- [tempest_normalize_flow_0, '0', blocks_float_to_short_0, '0'] +- [uhd_usrp_source_0, '0', tempest_fine_sampling_synchronization_0, '0'] + +metadata: + file_format: 1 diff --git a/examples/automatic_tempest_example_equalization_hd.grc b/examples/automatic_tempest_example_equalization_hd.grc new file mode 100644 index 0000000..2b71b48 --- /dev/null +++ b/examples/automatic_tempest_example_equalization_hd.grc @@ -0,0 +1,1239 @@ +options: + parameters: + author: '' + category: '[GRC Hier Blocks]' + cmake_opt: '' + comment: '' + copyright: '' + description: '' + gen_cmake: 'On' + gen_linking: dynamic + generate_options: qt_gui + hier_block_src_path: '.:' + id: manual_tempest_example + max_nouts: '0' + output_language: python + placement: (0,0) + qt_qss_theme: '' + realtime_scheduling: '' + run: 'True' + run_command: '{python} -u {filename}' + run_options: prompt + sizing_mode: fixed + thread_safe_setters: '' + title: '' + window_size: '' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [8, 8] + rotation: 0 + state: enabled + +blocks: +- name: Hblank + id: variable + parameters: + comment: '' + value: Hsize-Hvisible + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1170, 137] + rotation: 0 + state: enabled +- name: Hsize + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Horizontal resolution (total) + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: int(4096*1.5) + value: '2200' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1102, 278] + rotation: 0 + state: enabled +- name: Hvisible + id: variable + parameters: + comment: '' + value: '1920' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1171, 33] + rotation: 0 + state: enabled +- name: Vblank + id: variable + parameters: + comment: '' + value: Vsize-Vvisible + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1284, 85] + rotation: 0 + state: enabled +- name: Vsize + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Vertical resolution (total) + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: int(2160*1.5) + value: '1125' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [978, 277] + rotation: 0 + state: enabled +- name: Vvisible + id: variable + parameters: + comment: '' + value: '1080' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1284, 33] + rotation: 0 + state: enabled +- name: delay + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Hsync delay + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: int(Hsize/float(px_rate)*samp_rate)*2 + value: int(136/float(px_rate)*samp_rate) + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [352, 4] + rotation: 0 + state: enabled +- name: delay_fase + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Delay fase + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: 2*interpolatedHsize*Vsize + value: interpolatedHsize*Vsize + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [704, 12] + rotation: 0 + state: enabled +- name: epsilon + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Fine sampling correction + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: (interpolatedHsize-2)/float(interpolatedHsize)-1 + step: 1e-7 + stop: (interpolatedHsize+2)/float(interpolatedHsize)-1 + value: '0.00101' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1016, 84] + rotation: 0 + state: enabled +- name: eq_fir_1080p + id: variable + parameters: + comment: '' + value: '[-0.0004 + 0j,-0.0000 + 0.0000j,-0.0004 - 0.0000j,-0.0000 + 0.0001j,-0.0004 + - 0.0001j,-0.0000 + 0.0001j,-0.0004 - 0.0001j,-0.0000 + 0.0002j,-0.0004 + - 0.0001j,-0.0001 + 0.0002j,-0.0003 - 0.0001j,-0.0001 + 0.0003j,-0.0003 + - 0.0001j,-0.0002 + 0.0003j,-0.0003 - 0.0001j,-0.0002 + 0.0004j,-0.0002 + - 0.0001j,-0.0002 + 0.0004j,-0.0002 - 0.0001j,-0.0003 + 0.0004j,-0.0001 + - 0.0001j,-0.0003 + 0.0004j,-0.0001 - 0.0001j,-0.0004 + 0.0004j,-0.0000 + - 0.0000j,-0.0004 + 0.0004j, 0.0000 + 0.0000j,-0.0005 + 0.0004j, 0.0000 + + 0.0001j,-0.0005 + 0.0004j, 0.0001 + 0.0001j,-0.0006 + 0.0003j, 0.0001 + + 0.0002j,-0.0006 + 0.0003j, 0.0001 + 0.0002j,-0.0006 + 0.0003j, 0.0001 + + 0.0003j,-0.0006 + 0.0002j, 0.0001 + 0.0004j,-0.0006 + 0.0002j, 0.0001 + + 0.0005j,-0.0006 + 0.0001j, 0.0001 + 0.0005j,-0.0006 + 0.0001j, 0.0001 + + 0.0006j,-0.0006 + 0.0000j, 0.0000 + 0.0007j,-0.0006 - 0.0000j,-0.0000 + + 0.0008j,-0.0005 - 0.0000j,-0.0001 + 0.0008j,-0.0005 - 0.0001j,-0.0002 + + 0.0009j,-0.0004 - 0.0001j,-0.0002 + 0.0009j,-0.0004 - 0.0001j,-0.0003 + + 0.0010j,-0.0003 - 0.0001j,-0.0004 + 0.0010j,-0.0002 - 0.0001j,-0.0005 + + 0.0010j,-0.0002 - 0.0001j,-0.0006 + 0.0011j,-0.0001 - 0.0001j,-0.0007 + + 0.0011j,-0.0000 - 0.0000j,-0.0008 + 0.0010j, 0.0000 + 0.0000j,-0.0009 + + 0.0010j, 0.0001 + 0.0001j,-0.0010 + 0.0010j, 0.0002 + 0.0002j,-0.0011 + + 0.0009j, 0.0002 + 0.0003j,-0.0011 + 0.0009j, 0.0003 + 0.0004j,-0.0012 + + 0.0008j, 0.0003 + 0.0005j,-0.0013 + 0.0007j, 0.0003 + 0.0006j,-0.0013 + + 0.0006j, 0.0003 + 0.0007j,-0.0014 + 0.0005j, 0.0003 + 0.0008j,-0.0014 + + 0.0004j, 0.0003 + 0.0010j,-0.0014 + 0.0003j, 0.0002 + 0.0011j,-0.0014 + + 0.0002j, 0.0002 + 0.0013j,-0.0015 + 0.0002j, 0.0001 + 0.0019j,-0.0038 + + 0.0001j, 0.0001 + 0.0198j, 0.0603 + 0.0018j, 0.0091 - 0.1418j,-0.2643 + - 0.0260j,-0.0543 + 0.4093j, 0.5602 + 0.0937j, 0.1441 - 0.7130j,-0.8669 + - 0.2059j,-0.2777 + 1.0157j, 1.1535 + 0.3576j, 0.4438 - 1.2773j,-1.3776 + - 0.5314j,-0.6122 + 1.4403j, 1.4636 + 0.6813j, 0.7425 - 1.4640j,-1.4577 + - 0.8023j,-0.8613 + 1.4470j, 1.4300 + 0.9179j, 0.9747 - 1.4114j,-1.3954 + - 1.0349j,-1.0955 + 1.3775j, 1.3531 + 1.1528j, 1.2096 - 1.3263j,-1.3019 + - 1.2703j,-1.3319 + 1.2759j, 1.2436 + 1.3891j, 1.4451 - 1.2084j,-1.1749 + - 1.5056j,-1.5673 + 1.1402j, 1.0995 + 1.6238j, 1.6782 - 1.0555j,-1.0126 + - 1.7375j,-1.7986 + 0.9685j, 0.9189 + 1.8538j, 1.9057 - 0.8658j,-0.8130 + - 1.9627j,-2.0224 + 0.7588j, 0.6998 + 2.0754j, 2.1239 - 0.6372j,-0.5739 + - 2.1776j,-2.2347 + 0.5090j, 0.4399 + 2.2848j, 2.3289 - 0.3674j,-0.2933 + - 2.3781j,-2.4316 + 0.2169j, 0.1370 + 2.4778j, 2.5165 - 0.0541j, 0.0314 + - 2.5599j,-2.6085 - 0.1201j,-0.2118 + 2.6496j, 2.6819 + 0.3057j, 0.4032 + - 2.7181j,-2.7604 - 0.5052j,-0.6097 + 2.7952j, 2.8196 + 0.7155j, 0.8257 + - 2.8472j,-2.8814 - 0.9421j,-1.0608 + 2.9083j, 2.9235 + 1.1796j, 1.3035 + - 2.9407j,-2.9648 - 1.4358j,-1.5705 + 2.9820j, 2.9863 + 1.7038j, 1.8430 + - 2.9910j,-3.0027 - 1.9930j,-2.1461 + 3.0078j, 2.9988 + 2.2962j, 2.4527 + - 2.9886j,-2.9849 - 2.6231j,-2.7977 + 2.9749j, 2.9497 + 2.9679j, 3.1448 + - 2.9214j,-2.8985 - 3.3394j,-3.5403 + 2.8692j, 2.8239 + 3.7352j, 3.9374 + - 2.7730j,-2.7258 - 4.1619j,-4.3958 + 2.6715j, 2.6001 + 4.6228j, 4.8579 + - 2.5204j,-2.4414 - 5.1213j,-5.3988 + 2.3536j, 2.2471 + 5.6694j, 5.9499 + - 2.1289j,-2.0065 - 6.2670j,-6.6056 + 1.8717j, 1.7156 + 6.9393j, 7.2870 + - 1.5427j,-1.3575 - 7.6836j,-8.1142 + 1.1528j, 0.9212 + 8.5461j, 9.0016 + - 0.6640j,-0.3802 - 9.5270j,10.1094 + 0.0620j,-0.2958 + 10.7103j,11.3586 + + 0.6978j, 1.1560 - 12.1183j,12.9856 - 1.6826j,-2.2839 + 13.9218j,14.9722 + + 2.9782j, 3.8038 - 16.2383j,17.7577 - 4.7971j,-5.9920 + 19.5370j,21.6829 + + 7.4594j, 9.3348 - 24.4225j,28.1470 - 11.8617j,15.4831 + 33.5314j,40.9709 + + 20.6230j,26.6688 - 48.8079j,52.0219 - 30.7484j,28.2403 + 44.2950j,23.3522 + + 16.0214j,-3.8869 + 5.2747j,30.8124 + 24.3519j,37.7829 - 44.6248j,45.5825 + - 41.3136j,37.7025 + 38.8773j,30.6655 + 31.8158j,26.8368 - 24.1739j,19.7007 + - 23.4135j,21.0374 + 16.5218j,14.0970 + 19.2534j,17.8348 - 12.1558j,10.5339 + - 16.6349j,15.6016 + 9.1571j, 8.0025 + 14.7531j,14.0496 - 7.0180j,-6.1378 + - 13.4003j,12.7899 + 5.3438j, 4.6462 + 12.2684j,11.8264 - 4.0280j,-3.4572 + - 11.3969j,10.9712 + 2.9277j, 2.4483 + 10.5981j,10.2775 - 2.0116j,-1.6020 + - 9.9561j,-9.6259 + 1.2172j, 0.8612 + 9.3302j, 9.0735 - 0.5295j,-0.2163 + - 8.8117j,-8.5362 - 0.0786j,-0.3561 + 8.2845j, 8.0638 + 0.6197j, 0.8691 + - 7.8372j,-7.5953 - 1.1029j,-1.3255 + 7.3701j, 7.1703 + 1.5410j, 1.7448 + - 6.9655j,-6.7452 - 1.9337j,-2.1150 + 6.5365j, 6.3493 + 2.2938j, 2.4627 + - 6.1581j,-5.9524 - 2.6167j,-2.7650 + 5.7545j, 5.5747 + 2.9141j, 3.0547 + - 5.3922j,-5.1967 - 3.1801j,-3.3007 + 5.0061j, 4.8306 + 3.4243j, 3.5409 + - 4.6538j,-4.4656 - 3.6420j,-3.7384 + 4.2804j, 4.1076 + 3.8393j, 3.9345 + - 3.9345j,-3.7519 - 4.0141j,-4.0887 + 3.5709j, 3.3999 + 4.1688j, 4.2445 + - 3.2294j,-3.0514 - 4.3046j,-4.3591 + 2.8742j, 2.7047 + 4.4197j, 4.4769 + - 2.5361j,-2.3622 - 4.5189j,-4.5547 + 2.1885j, 2.0207 + 4.5966j, 4.6361 + - 1.8540j,-1.6839 - 4.6609j,-4.6790 + 1.5140j, 1.3482 + 4.7029j, 4.7252 + - 1.1836j,-1.0173 - 4.7335j,-4.7347 + 0.8515j, 0.6884 + 4.7411j, 4.7465 + - 0.5264j,-0.3642 - 4.7389j,-4.7239 + 0.2030j, 0.0434 + 4.7133j, 4.7021 + + 0.1154j, 0.2730 - 4.6788j,-4.6481 - 0.4290j,-0.5844 + 4.6211j, 4.5934 + + 0.7391j, 0.8915 - 4.5546j,-4.5088 - 1.0416j,-1.1917 + 4.4659j, 4.4220 + + 1.3414j, 1.4877 - 4.3679j,-4.3074 - 1.6313j,-1.7754 + 4.2492j, 4.1893 + + 1.9189j, 2.0580 - 4.1200j,-4.0452 - 2.1942j,-2.3315 + 3.9723j, 3.8968 + + 2.4676j, 2.5985 - 3.8124j,-3.7237 - 2.7264j,-2.8561 + 3.6366j, 3.5461 + + 2.9838j, 3.1047 - 3.4467j,-3.3444 - 3.2235j,-3.3448 + 3.2438j, 3.1387 + + 3.4630j, 3.5729 - 3.0251j,-2.9091 - 3.6809j,-3.7913 + 2.7939j, 2.6757 + + 3.9000j, 4.0096 - 2.5563j,-2.4240 - 4.1010j,-4.0498 + 2.2128j, 1.8310 + + 3.6375j, 2.7604 - 1.2746j,-0.6875 - 1.6313j,-0.6705 + 0.2563j, 0.0515 + + 0.1497j, 0.0019 - 0.0006j, 0.0015 + 0.0056j, 0.0078 - 0.0018j,-0.0011 + - 0.0057j, 0.0080 - 0.0013j,-0.0010 - 0.0077j, 0.0073 - 0.0007j,-0.0005 + - 0.0080j, 0.0065 - 0.0002j, 0.0000 - 0.0078j, 0.0057 + 0.0002j, 0.0006 + - 0.0076j, 0.0050 + 0.0005j, 0.0010 - 0.0073j, 0.0044 + 0.0008j, 0.0015 + - 0.0071j, 0.0038 + 0.0009j, 0.0019 - 0.0068j, 0.0032 + 0.0010j, 0.0023 + - 0.0065j, 0.0027 + 0.0011j, 0.0027 - 0.0062j, 0.0022 + 0.0011j, 0.0031 + - 0.0059j, 0.0018 + 0.0010j, 0.0034 - 0.0056j, 0.0014 + 0.0009j, 0.0037 + - 0.0052j, 0.0010 + 0.0008j, 0.0040 - 0.0049j, 0.0007 + 0.0006j, 0.0042 + - 0.0045j, 0.0004 + 0.0004j, 0.0044 - 0.0042j, 0.0002 + 0.0002j, 0.0046 + - 0.0038j,-0.0001 - 0.0001j, 0.0047 - 0.0034j,-0.0002 - 0.0003j, 0.0048 + - 0.0030j,-0.0003 - 0.0006j, 0.0049 - 0.0026j,-0.0004 - 0.0009j, 0.0049 + - 0.0022j,-0.0005 - 0.0012j, 0.0049 - 0.0018j,-0.0005 - 0.0015j, 0.0048 + - 0.0014j,-0.0004 - 0.0017j, 0.0047 - 0.0010j,-0.0004 - 0.0020j, 0.0046 + - 0.0007j,-0.0003 - 0.0023j, 0.0044 - 0.0004j,-0.0001 - 0.0025j, 0.0043 + - 0.0001j, 0.0001 - 0.0027j, 0.0040 + 0.0002j, 0.0003 - 0.0029j, 0.0038 + + 0.0005j, 0.0005 - 0.0030j, 0.0035 + 0.0007j, 0.0007 - 0.0032j, 0.0033 + + 0.0009j, 0.0010 - 0.0033j, 0.0030 + 0.0010j, 0.0012 - 0.0033j, 0.0027 + + 0.0011j, 0.0015 - 0.0033j, 0.0024 + 0.0012j, 0.0018 - 0.0033j, 0.0021 + + 0.0012j, 0.0021 - 0.0033j, 0.0018 + 0.0012j, 0.0023 - 0.0032j, 0.0015 + + 0.0012j, 0.0026 - 0.0031j, 0.0012 + 0.0011j, 0.0029 - 0.0030j, 0.0010 + + 0.0010j, 0.0031 - 0.0028j, 0.0007 + 0.0009j, 0.0033 - 0.0026j, 0.0005 + + 0.0007j, 0.0035 - 0.0024j, 0.0003 + 0.0005j, 0.0036 - 0.0022j, 0.0002 + + 0.0003j, 0.0038 - 0.0019j, 0.0001 + 0.0001j, 0.0039 - 0.0016j,-0.0000 + - 0.0001j, 0.0039 - 0.0014j,-0.0001 - 0.0003j, 0.0040 - 0.0011j,-0.0001 + - 0.0006j, 0.0040 - 0.0008j,-0.0001 - 0.0008j, 0.0039 - 0.0005j,-0.0001 + - 0.0011j, 0.0039 - 0.0002j,-0.0000 - 0.0013j, 0.0038 + 0.0000j, 0.0001 + - 0.0015j, 0.0037 + 0.0003j, 0.0002 - 0.0017j, 0.0035 + 0.0005j, 0.0003 + - 0.0019j, 0.0033 + 0.0007j, 0.0005 - 0.0020j, 0.0032 + 0.0009j, 0.0007 + - 0.0022j, 0.0029 + 0.0010j, 0.0009 - 0.0023j, 0.0027 + 0.0012j, 0.0011 + - 0.0024j, 0.0025 + 0.0013j, 0.0014 - 0.0024j, 0.0022 + 0.0013j, 0.0016 + - 0.0024j, 0.0020 + 0.0014j, 0.0018 - 0.0024j, 0.0017 + 0.0014j, 0.0021 + - 0.0024j, 0.0015 + 0.0014j, 0.0023 - 0.0023j, 0.0013 + 0.0013j, 0.0025 + - 0.0022j, 0.0010 + 0.0012j, 0.0027 - 0.0021j, 0.0008 + 0.0011j, 0.0029 + - 0.0020j, 0.0006 + 0.0010j, 0.0031 - 0.0018j, 0.0005 + 0.0009j, 0.0033 + - 0.0016j, 0.0003 + 0.0007j, 0.0034 - 0.0014j, 0.0002 + 0.0005j, 0.0035 + - 0.0012j, 0.0001 + 0.0003j, 0.0036 - 0.0009j, 0.0000 + 0.0001j, 0.0036 + - 0.0007j,-0.0000 - 0.0001j, 0.0036 - 0.0004j,-0.0000 - 0.0004j, 0.0036 + - 0.0002j,-0.0000 - 0.0006j, 0.0036 + 0.0001j, 0.0000 - 0.0008j, 0.0035 + + 0.0003j, 0.0001 - 0.0010j, 0.0034 + 0.0005j, 0.0002 - 0.0012j, 0.0033 + + 0.0007j, 0.0004 - 0.0014j, 0.0032 + 0.0009j, 0.0005 - 0.0015j, 0.0030 + + 0.0011j, 0.0007 - 0.0017j, 0.0028 + 0.0013j, 0.0009 - 0.0018j, 0.0026 + + 0.0014j, 0.0011 - 0.0019j, 0.0024 + 0.0015j, 0.0013 - 0.0019j, 0.0022 + + 0.0016j, 0.0015 - 0.0020j, 0.0019 + 0.0016j, 0.0017 - 0.0020j, 0.0017 + + 0.0016j, 0.0020 - 0.0019j, 0.0015 + 0.0016j, 0.0022 - 0.0019j, 0.0013 + + 0.0016j, 0.0024 - 0.0018j, 0.0011 + 0.0015j, 0.0026 - 0.0017j, 0.0008 + + 0.0014j, 0.0028 - 0.0016j, 0.0007 + 0.0013j, 0.0030 - 0.0014j, 0.0005 + + 0.0012j, 0.0031 - 0.0012j, 0.0003 + 0.0010j, 0.0033 - 0.0010j, 0.0002 + + 0.0008j, 0.0034 - 0.0008j, 0.0001 + 0.0006j, 0.0035 - 0.0006j, 0.0001 + + 0.0004j, 0.0035 - 0.0004j, 0.0000 + 0.0002j, 0.0036 - 0.0001j]' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1281, 156] + rotation: 0 + state: true +- name: fft_size + id: variable + parameters: + comment: '' + value: 4096*1024 + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1209, 228] + rotation: 0 + state: true +- name: filtro_ecualizador_1st + id: variable + parameters: + comment: '' + value: "[-3.11363682e-06+6.75278918e-06j, 2.23797433e-05+3.63850305e-04j,\n \ + \ 1.24424796e-04+2.07552626e-03j, 9.13369821e-05+1.23922328e-03j,\n \ + \ 9.17470541e-06-1.27599772e-03j, -1.89672336e-04-7.66449364e-03j,\n \ + \ -6.04326364e-04-2.07456042e-02j, -1.03016890e-03-4.52780337e-02j,\n \ + \ -2.24322298e-03-7.65338416e-02j, -2.59317061e-03-1.35562197e-01j,\n \ + \ -5.05937146e-03-1.88184719e-01j, -4.40754770e-03-2.95364441e-01j,\n \ + \ -8.83183526e-03-3.55251606e-01j, -5.10069889e-03-5.21066895e-01j,\n \ + \ -1.41464771e-02-5.38323401e-01j, 2.42260390e-03-8.16748190e-01j,\n \ + \ 4.49687679e-02+2.68517170e-01j, -1.78853630e-02+7.82072975e-01j,\n \ + \ -4.44448737e-03+4.96178030e-01j, -1.02738240e-02+4.81143615e-01j,\n \ + \ -4.81582961e-03+3.17597516e-01j, -6.18209100e-03+2.63011491e-01j,\n \ + \ -3.16653758e-03+1.61327366e-01j, -3.01959070e-03+1.15054664e-01j,\n \ + \ -1.44674044e-03+6.17245262e-02j, -9.99648902e-04+3.55652006e-02j,\n \ + \ -3.99929733e-04+1.49286935e-02j, -9.70523497e-05+4.64566966e-03j,\n \ + \ 4.45207677e-05+1.15474691e-04j, 1.16728796e-04-1.83264974e-03j,\n \ + \ 9.57920774e-05-1.59212307e-03j, -3.78999089e-06+4.47966583e-05j]" + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1024, 228] + rotation: 0 + state: enabled +- name: filtro_ecualizador_viejo + id: variable + parameters: + comment: '' + value: '[ 3.5209e-07 - 1.0836e-06*1j, 1.4076e-06 - 2.3919e-06*1j, 5.9650e-06 + - 6.1506e-06*1j, 1.5271e-05 - 1.4326e-05*1j, 4.1151e-05 - 3.6713e-05*1j , + 3.9905e-04 - 6.3391e-04*1j, 1.4256e-03 - 4.2010e-04*1j, 1.7775e-03 - 1.1448e-03*1j, 2.6252e-03 + - 8.9501e-04*1j, 2.9812e-03 - 1.6801e-03*1j , 4.3656e-03 - 1.5903e-03*1j, 4.8418e-03 + - 2.4404e-03*1j, 6.9685e-03 - 2.6534e-03*1j, 7.6915e-03 - 3.5182e-03*1j, 1.0749e-02 + - 4.2291e-03*1j , 1.1902e-02 - 5.0055e-03*1j, 1.6024e-02 - 6.4526e-03*1j, 1.7878e-02 + - 7.0057e-03*1j, 2.3102e-02 - 9.4388e-03*1j, 2.6038e-02 - 9.6422e-03*1j , + 3.2280e-02 - 1.3269e-02*1j, 3.6789e-02 - 1.3061e-02*1j, 4.3841e-02 - 1.7982e-02*1j, 5.0495e-02 + - 1.7431e-02*1j, 5.8052e-02 - 2.3569e-02*1j , 6.7444e-02 - 2.2930e-02*1j, 7.5169e-02 + - 2.9981e-02*1j, 8.7819e-02 - 2.9736e-02*1j, 9.5427e-02 - 3.7136e-02*1j, 1.1167e-01 + - 3.8000e-02*1j , 1.1904e-01 - 4.4941e-02*1j, 1.3890e-01 - 4.7822e-02*1j, 1.4617e-01 + - 5.3309e-02*1j, 1.6926e-01 - 5.9221e-02*1j, 1.7695e-01 - 6.2182e-02*1j , + 2.0235e-01 - 7.2116e-02*1j, 2.1140e-01 - 7.1549e-02*1j, 2.3765e-01 - 8.6305e-02*1j, 2.4944e-01 + - 8.1456e-02*1j, 2.7453e-01 - 1.0146e-01*1j , 2.9088e-01 - 9.2017e-02*1j, 3.1227e-01 + - 1.1711e-01*1j, 3.3535e-01 - 1.0341e-01*1j, 3.5009e-01 - 1.3267e-01*1j, 3.8238e-01 + - 1.1587e-01*1j , 3.8713e-01 - 1.4742e-01*1j, 4.3146e-01 - 1.2974e-01*1j, 4.2233e-01 + - 1.6044e-01*1j, 4.8222e-01 - 1.4561e-01*1j, 4.5414e-01 - 1.7040e-01*1j , + 5.3510e-01 - 1.6460e-01*1j, 4.8020e-01 - 1.7358e-01*1j, 5.9455e-01 - 1.9170e-01*1j, 4.8669e-01 + - 1.5965e-01*1j, 6.9081e-01 - 2.6218e-01*1j , 3.1530e-01 + 9.3424e-02*1j, -7.1052e-01 + + 2.8833e-01*1j, -5.1861e-01 + 1.1433e-01*1j, -5.7535e-01 + 2.2141e-01*1j, -5.2124e-01 + + 1.3015e-01*1j , -5.1574e-01 + 1.9092e-01*1j, -4.9507e-01 + 1.3022e-01*1j, + -4.6700e-01 + 1.6704e-01*1j, -4.5921e-01 + 1.2586e-01*1j, -4.2136e-01 + 1.4550e-01*1j + , -4.1873e-01 + 1.1899e-01*1j, -3.7785e-01 + 1.2562e-01*1j, -3.7593e-01 + 1.1045e-01*1j, + -3.3620e-01 + 1.0737e-01*1j, -3.3244e-01 + 1.0068e-01*1j , -2.9648e-01 + 9.0865e-02*1j, + -2.8954e-01 + 9.0026e-02*1j, -2.5879e-01 + 7.6211e-02*1j, -2.4833e-01 + 7.8847e-02*1j, + -2.2331e-01 + 6.3414e-02*1j , -2.0968e-01 + 6.7517e-02*1j, -1.9019e-01 + 5.2395e-02*1j, + -1.7425e-01 + 5.6423e-02*1j, -1.5960e-01 + 4.2999e-02*1j, -1.4246e-01 + 4.5930e-02*1j + , -1.3169e-01 + 3.5031e-02*1j, -1.1454e-01 + 3.6352e-02*1j, -1.0661e-01 + 2.8282e-02*1j, + -9.0505e-02 + 2.7922e-02*1j, -8.4485e-02 + 2.2562e-02*1j , -7.0222e-02 + 2.0778e-02*1j, + -6.5365e-02 + 1.7714e-02*1j, -5.3441e-02 + 1.4956e-02*1j, -4.9242e-02 + 1.3619e-02*1j, + -3.9832e-02 + 1.0400e-02*1j , -3.6019e-02 + 1.0195e-02*1j, -2.9025e-02 + 6.9842e-03*1j, + -2.5513e-02 + 7.3869e-03*1j, -2.0639e-02 + 4.5335e-03*1j, -1.7457e-02 + 5.1469e-03*1j + , -1.4300e-02 + 2.8536e-03*1j, -1.1520e-02 + 3.4260e-03*1j, -9.6508e-03 + 1.7541e-03*1j, + -7.3304e-03 + 2.1628e-03*1j, -6.3552e-03 + 1.0661e-03*1j , -4.5025e-03 + 1.2798e-03*1j, + -4.1002e-03 + 6.5174e-04*1j, -2.6663e-03 + 6.8397e-04*1j, -2.5965e-03 + 4.0387e-04*1j, + -1.4935e-03 + 2.7171e-04*1j , -1.6079e-03 + 2.1239e-04*1j, 8.5832e-05 + 6.1758e-05*1j, 2.4841e-05 + + 1.8521e-05*1j, 9.8862e-06 + 7.4457e-06*1j, 3.4696e-06 + 2.6799e-06*1j , + 7.2346e-07 + 6.5333e-07*1j ]' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [224, 140] + rotation: 0 + state: enabled +- name: fine_freq + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Fine frequency correction + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '-100' + step: 1e-5 + stop: '100' + value: '10' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [216, 204] + rotation: 0 + state: enabled +- name: freq + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Frequency Error (normalized) + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '-1' + step: 1e-7 + stop: '1' + value: '0.0' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [392, 148] + rotation: 0 + state: enabled +- name: harmonic + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Harmonic + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '1' + step: '1' + stop: '10' + value: '1' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [728, 148] + rotation: 0 + state: enabled +- name: horizontal_offset + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Horizontal offset + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: interpolatedHsize + value: '0' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [848, 148] + rotation: 0 + state: enabled +- name: interpolatedHblank + id: variable + parameters: + comment: '' + value: int(Hblank/float(px_rate)*samp_rate) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1446, 192] + rotation: 0 + state: enabled +- name: interpolatedHscreen + id: variable + parameters: + comment: '' + value: int(Hvisible/float(px_rate)*samp_rate) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1169, 85] + rotation: 0 + state: enabled +- name: interpolatedHsize + id: variable + parameters: + comment: '' + value: int(Hsize/float(px_rate)*samp_rate) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [984, 12] + rotation: 0 + state: enabled +- name: inverted + id: variable_qtgui_chooser + parameters: + comment: '' + gui_hint: '' + label: Inverted colors? + label0: 'Yes' + label1: 'No' + label2: '' + label3: '' + label4: '' + labels: '[]' + num_opts: '2' + option1: '1' + option2: '2' + option3: '3' + option4: '4' + options: '[0, 1, 2]' + orient: Qt.QHBoxLayout + type: real + value: '1' + widget: radio_buttons + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [72, 156] + rotation: 0 + state: enabled +- name: lines_offset + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Vertical offset + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: Vsize + value: int(Vsize/2) + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [848, 12] + rotation: 0 + state: enabled +- name: offset + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: '' + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '0' + step: '1' + stop: 1024*2 + value: '50' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1321, 227] + rotation: 0 + state: disabled +- name: px_rate + id: variable + parameters: + comment: '' + value: Hsize*Vsize*refresh_rate + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [0, 76] + rotation: 0 + state: enabled +- name: refresh_rate + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Refresh Rate (Hz) + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '0' + step: '1' + stop: '240' + value: '60' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [208, 12] + rotation: 0 + state: enabled +- name: samp_rate + id: variable + parameters: + comment: '' + value: int(19.98e6) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [0, 140] + rotation: 0 + state: enabled +- name: FFT_autocorrelation_0 + id: FFT_autocorrelation + parameters: + affinity: '' + alias: '' + alpha: '1.0' + comment: '' + fac_decimation: '10' + fft_size: int(fft_size) + maxoutbuf: '0' + minoutbuf: '0' + sample_rate: samp_rate + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [680, 650] + rotation: 270 + state: disabled +- name: FFT_autocorrelation_0_0 + id: FFT_autocorrelation + parameters: + affinity: '' + alias: '' + alpha: '1.0' + comment: '' + fac_decimation: '10' + fft_size: int(fft_size/2) + maxoutbuf: '0' + minoutbuf: '0' + sample_rate: samp_rate + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [305, 662] + rotation: 270 + state: enabled +- name: blocks_complex_to_mag_0 + id: blocks_complex_to_mag + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1173, 438] + rotation: 0 + state: enabled +- name: blocks_file_source_0 + id: blocks_file_source + parameters: + affinity: '' + alias: '' + begin_tag: pmt.PMT_NIL + comment: '' + file: /home/felipe/gnuradio/git/grabaciones_local/test2_19980KHz_1920_1080.dat + length: '0' + maxoutbuf: '0' + minoutbuf: '0' + offset: '0' + repeat: 'True' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [33, 354] + rotation: 0 + state: enabled +- name: blocks_float_to_short_0 + id: blocks_float_to_short + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + scale: inverted + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1011, 628] + rotation: 180 + state: enabled +- name: blocks_null_sink_0 + id: blocks_null_sink + parameters: + affinity: '' + alias: '' + bus_structure_sink: '[[0,],]' + comment: '' + num_inputs: '1' + type: float + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [519, 645] + rotation: 270 + state: disabled +- name: blocks_null_sink_0_0 + id: blocks_null_sink + parameters: + affinity: '' + alias: '' + bus_structure_sink: '[[0,],]' + comment: '' + num_inputs: '1' + type: float + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [135, 474] + rotation: 90 + state: disabled +- name: blocks_throttle_0 + id: blocks_throttle + parameters: + affinity: '' + alias: '' + comment: '' + ignoretag: 'True' + maxoutbuf: '0' + minoutbuf: '0' + samples_per_second: samp_rate + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [274, 386] + rotation: 0 + state: enabled +- name: qtgui_time_sink_x_0 + id: qtgui_time_sink_x + parameters: + affinity: '' + alias: '' + alpha1: '1.0' + alpha10: '1.0' + alpha2: '1.0' + alpha3: '1.0' + alpha4: '1.0' + alpha5: '1.0' + alpha6: '1.0' + alpha7: '1.0' + alpha8: '1.0' + alpha9: '1.0' + autoscale: 'False' + axislabels: 'True' + color1: blue + color10: dark blue + color2: red + color3: green + color4: black + color5: cyan + color6: magenta + color7: yellow + color8: dark red + color9: dark green + comment: '' + ctrlpanel: 'False' + entags: 'True' + grid: 'False' + gui_hint: '' + label1: Signal 1 + label10: Signal 10 + label2: Signal 2 + label3: Signal 3 + label4: Signal 4 + label5: Signal 5 + label6: Signal 6 + label7: Signal 7 + label8: Signal 8 + label9: Signal 9 + legend: 'True' + marker1: '-1' + marker10: '-1' + marker2: '-1' + marker3: '-1' + marker4: '-1' + marker5: '-1' + marker6: '-1' + marker7: '-1' + marker8: '-1' + marker9: '-1' + name: '""' + nconnections: '1' + size: int(fft_size) + srate: fft_size + stemplot: 'False' + style1: '1' + style10: '1' + style2: '1' + style3: '1' + style4: '1' + style5: '1' + style6: '1' + style7: '1' + style8: '1' + style9: '1' + tr_chan: '0' + tr_delay: '0' + tr_level: '0.0' + tr_mode: qtgui.TRIG_MODE_FREE + tr_slope: qtgui.TRIG_SLOPE_POS + tr_tag: '""' + type: float + update_time: '0.10' + width1: '1' + width10: '1' + width2: '1' + width3: '1' + width4: '1' + width5: '1' + width6: '1' + width7: '1' + width8: '1' + width9: '1' + ylabel: Amplitude + ymax: '1' + ymin: '-1' + yunit: '""' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [440, 644] + rotation: 270 + state: disabled +- name: qtgui_time_sink_x_1 + id: qtgui_time_sink_x + parameters: + affinity: '' + alias: '' + alpha1: '1.0' + alpha10: '1.0' + alpha2: '1.0' + alpha3: '1.0' + alpha4: '1.0' + alpha5: '1.0' + alpha6: '1.0' + alpha7: '1.0' + alpha8: '1.0' + alpha9: '1.0' + autoscale: 'False' + axislabels: 'True' + color1: blue + color10: dark blue + color2: red + color3: green + color4: black + color5: cyan + color6: magenta + color7: yellow + color8: dark red + color9: dark green + comment: '' + ctrlpanel: 'False' + entags: 'True' + grid: 'False' + gui_hint: tab_m@1 + label1: Signal 1 + label10: Signal 10 + label2: Signal 2 + label3: Signal 3 + label4: Signal 4 + label5: Signal 5 + label6: Signal 6 + label7: Signal 7 + label8: Signal 8 + label9: Signal 9 + legend: 'True' + marker1: '-1' + marker10: '-1' + marker2: '-1' + marker3: '-1' + marker4: '-1' + marker5: '-1' + marker6: '-1' + marker7: '-1' + marker8: '-1' + marker9: '-1' + name: '""' + nconnections: '1' + size: fft_size + srate: samp_rate + stemplot: 'False' + style1: '1' + style10: '1' + style2: '1' + style3: '1' + style4: '1' + style5: '1' + style6: '1' + style7: '1' + style8: '1' + style9: '1' + tr_chan: '0' + tr_delay: '0' + tr_level: '0.0' + tr_mode: qtgui.TRIG_MODE_FREE + tr_slope: qtgui.TRIG_SLOPE_POS + tr_tag: '""' + type: float + update_time: '0.10' + width1: '1' + width10: '1' + width2: '1' + width3: '1' + width4: '1' + width5: '1' + width6: '1' + width7: '1' + width8: '1' + width9: '1' + ylabel: Amplitude + ymax: '1' + ymin: '-1' + yunit: '""' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [201, 466] + rotation: 0 + state: enabled +- name: ratio_finder_toggle_on_and_off + id: variable_qtgui_msg_push_button + parameters: + comment: '' + gui_hint: '' + label: Ratio Finder toggle ON or OFF (FFT peaks). + msgName: pressed + relBackgroundColor: default + relFontColor: default + type: int + value: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [166, 868] + rotation: 0 + state: true +- name: sync_detector_start + id: variable_qtgui_msg_push_button + parameters: + comment: '' + gui_hint: '' + label: '' + msgName: pressed + relBackgroundColor: default + relFontColor: default + type: bool + value: 'True' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [758, 315] + rotation: 0 + state: disabled +- name: tab_m + id: qtgui_tab_widget + parameters: + alias: '' + comment: '' + gui_hint: '' + label0: Tempest Main Tab + label1: Autocorrelation Plot Tab + label10: Tab 10 + label11: Tab 11 + label12: Tab 12 + label13: Tab 13 + label14: Tab 14 + label15: Tab 15 + label16: Tab 16 + label17: Tab 17 + label18: Tab 18 + label19: Tab 19 + label2: Tab 2 + label3: Tab 3 + label4: Tab 4 + label5: Tab 5 + label6: Tab 6 + label7: Tab 7 + label8: Tab 8 + label9: Tab 9 + num_tabs: '2' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [542, 205] + rotation: 0 + state: true +- name: tempest_fft_peak_fine_sampling_sync_0 + id: tempest_fft_peak_fine_sampling_sync + parameters: + Hvisible: interpolatedHsize + Vvisible: Vsize + affinity: '' + alias: '' + automatic_mode: 'True' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + refresh_rate: refresh_rate + sample_rate: samp_rate + size: int(fft_size/1) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [555, 645] + rotation: 90 + state: disabled +- name: tempest_fft_peak_fine_sampling_sync_0_0 + id: tempest_fft_peak_fine_sampling_sync + parameters: + Hvisible: interpolatedHsize + Vvisible: Vsize + affinity: '' + alias: '' + automatic_mode: 'True' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + refresh_rate: refresh_rate + sample_rate: samp_rate + size: int(fft_size/2) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [113, 645] + rotation: 90 + state: enabled +- name: tempest_fine_sampling_synchronization_0 + id: tempest_fine_sampling_synchronization + parameters: + Htotal: interpolatedHsize + Vtotal: Vsize + affinity: '' + alias: '' + comment: '' + correct_sampling: '1' + max_deviation: 100.0/interpolatedHsize + maxoutbuf: '0' + minoutbuf: '0' + update_proba: 1.2e-1/(interpolatedHsize*Vsize) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [723, 434] + rotation: 0 + state: enabled +- name: tempest_frame_drop_0 + id: tempest_frame_drop + parameters: + Htotal: interpolatedHsize + Vtotal: Vsize + actual_samp_rate: samp_rate + affinity: '' + alias: '' + comment: '' + correct_sampling: '1' + max_deviation: 100.0/interpolatedHsize + maxoutbuf: '0' + minoutbuf: '0' + update_proba: 1.2e-1/(interpolatedHsize*Vsize) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [466, 362] + rotation: 0 + state: disabled +- name: tempest_normalize_flow_0 + id: tempest_normalize_flow + parameters: + affinity: '' + alias: '' + alpha_avg: 1e-2 + comment: '' + max: '245' + maxoutbuf: '0' + min: '10' + minoutbuf: '0' + update_proba: '0.1' + window: interpolatedHsize + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1175, 596] + rotation: 180 + state: enabled +- name: tempest_sync_detector_0 + id: tempest_sync_detector + parameters: + affinity: '' + alias: '' + comment: '' + hblanking: interpolatedHblank + hscreen: interpolatedHscreen + maxoutbuf: '0' + minoutbuf: '0' + vblanking: Vblank + vscreen: Vsize + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1010, 410] + rotation: 0 + state: disabled +- name: video_sdl_sink_0_0_0 + id: video_sdl_sink + parameters: + affinity: '' + alias: '' + comment: "Enable this path when you are sure what the \nresolution is (and defaut\ + \ to those values on \nthe chooser)." + display_height: Vsize + display_width: Hsize + fps: '0' + height: Vsize + num_channels: '1' + type: short + width: interpolatedHsize + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [808, 596] + rotation: 180 + state: enabled + +connections: +- [FFT_autocorrelation_0, '0', tempest_fft_peak_fine_sampling_sync_0, '0'] +- [FFT_autocorrelation_0_0, '0', tempest_fft_peak_fine_sampling_sync_0_0, '0'] +- [blocks_complex_to_mag_0, '0', tempest_normalize_flow_0, '0'] +- [blocks_file_source_0, '0', blocks_throttle_0, '0'] +- [blocks_float_to_short_0, '0', video_sdl_sink_0_0_0, '0'] +- [blocks_throttle_0, '0', FFT_autocorrelation_0_0, '0'] +- [blocks_throttle_0, '0', tempest_fine_sampling_synchronization_0, '0'] +- [blocks_throttle_0, '0', tempest_frame_drop_0, '0'] +- [ratio_finder_toggle_on_and_off, pressed, tempest_fft_peak_fine_sampling_sync_0, + en] +- [ratio_finder_toggle_on_and_off, pressed, tempest_fft_peak_fine_sampling_sync_0_0, + en] +- [sync_detector_start, pressed, tempest_sync_detector_0, en] +- [tempest_fft_peak_fine_sampling_sync_0, '0', blocks_null_sink_0, '0'] +- [tempest_fft_peak_fine_sampling_sync_0, '0', qtgui_time_sink_x_0, '0'] +- [tempest_fft_peak_fine_sampling_sync_0, en, FFT_autocorrelation_0, en] +- [tempest_fft_peak_fine_sampling_sync_0, en, tempest_frame_drop_0, en] +- [tempest_fft_peak_fine_sampling_sync_0, en, tempest_sync_detector_0, en] +- [tempest_fft_peak_fine_sampling_sync_0_0, '0', blocks_null_sink_0_0, '0'] +- [tempest_fft_peak_fine_sampling_sync_0_0, '0', qtgui_time_sink_x_1, '0'] +- [tempest_fft_peak_fine_sampling_sync_0_0, en, FFT_autocorrelation_0_0, en] +- [tempest_fft_peak_fine_sampling_sync_0_0, ratio, tempest_fine_sampling_synchronization_0, + ratio] +- [tempest_fft_peak_fine_sampling_sync_0_0, smpl, tempest_frame_drop_0, smpl] +- [tempest_fine_sampling_synchronization_0, '0', FFT_autocorrelation_0, '0'] +- [tempest_fine_sampling_synchronization_0, '0', blocks_complex_to_mag_0, '0'] +- [tempest_fine_sampling_synchronization_0, '0', tempest_sync_detector_0, '0'] +- [tempest_frame_drop_0, '0', tempest_fine_sampling_synchronization_0, '0'] +- [tempest_frame_drop_0, ratio, tempest_fine_sampling_synchronization_0, ratio] +- [tempest_normalize_flow_0, '0', blocks_float_to_short_0, '0'] +- [tempest_sync_detector_0, '0', blocks_complex_to_mag_0, '0'] + +metadata: + file_format: 1 diff --git a/examples/gr_tempest_v2-0-0_HDMI_fs_50MHz_fc_148-5MHz.grc b/examples/gr_tempest_v2-0-0_HDMI_fs_50MHz_fc_148-5MHz.grc new file mode 100644 index 0000000..5cf21c4 --- /dev/null +++ b/examples/gr_tempest_v2-0-0_HDMI_fs_50MHz_fc_148-5MHz.grc @@ -0,0 +1,1052 @@ +options: + parameters: + author: '' + category: '[GRC Hier Blocks]' + cmake_opt: '' + comment: '' + copyright: '' + description: '' + gen_cmake: 'On' + gen_linking: dynamic + generate_options: qt_gui + hier_block_src_path: '.:' + id: manual_tempest_example + max_nouts: '0' + output_language: python + placement: (0,0) + qt_qss_theme: '' + realtime_scheduling: '1' + run: 'True' + run_command: '{python} -u {filename}' + run_options: prompt + sizing_mode: fixed + thread_safe_setters: '' + title: '' + window_size: '' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [15, 12] + rotation: 0 + state: enabled + +blocks: +- name: DelaySyncDetector + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: '' + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '0' + step: interpolatedHsize*1 + stop: Vsize*interpolatedHsize + value: interpolatedHsize*1 + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1061, 35] + rotation: 0 + state: enabled +- name: DroppedFrames + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: '' + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '1' + step: '1' + stop: '100' + value: '50' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [859, 34] + rotation: 0 + state: true +- name: Hblank + id: variable + parameters: + comment: '' + value: Hsize-Hvisible + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [740, 220] + rotation: 0 + state: enabled +- name: Hsize + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: Horizontal resolution (total) + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: int(4096*1.5) + value: '2200' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [505, 34] + rotation: 0 + state: enabled +- name: Hvisible + id: variable + parameters: + comment: '' + value: '1920' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [740, 156] + rotation: 0 + state: enabled +- name: Vblank + id: variable + parameters: + comment: '' + value: Vsize-Vvisible + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [656, 220] + rotation: 0 + state: enabled +- name: Vsize + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: Vertical resolution (total) + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: int(2160*1.5) + value: '1125' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [649, 34] + rotation: 0 + state: enabled +- name: Vvisible + id: variable + parameters: + comment: '' + value: '1080' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [649, 157] + rotation: 0 + state: enabled +- name: fft_size + id: variable + parameters: + comment: '' + value: 2**21 + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [226, 244] + rotation: 0 + state: true +- name: harmonic + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: Harmonic + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '1' + step: '1' + stop: '10' + value: '1' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [226, 127] + rotation: 0 + state: enabled +- name: interpolatedHblank + id: variable + parameters: + comment: '' + value: int(Hblank/float(px_rate)*samp_rate) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [506, 215] + rotation: 0 + state: enabled +- name: interpolatedHscreen + id: variable + parameters: + comment: '' + value: int(Hvisible/float(px_rate)*samp_rate) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [506, 278] + rotation: 0 + state: enabled +- name: interpolatedHsize + id: variable + parameters: + comment: '' + value: int(Hsize/float(px_rate)*samp_rate) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [506, 154] + rotation: 0 + state: enabled +- name: inverted + id: variable_qtgui_chooser + parameters: + comment: '' + gui_hint: tab_m@0 + label: Inverted colors? + label0: 'Yes' + label1: 'No' + label2: '' + label3: '' + label4: '' + labels: '[]' + num_opts: '2' + option0: '0' + option1: '1' + option2: '2' + option3: '3' + option4: '4' + options: '[0, 1, 2]' + orient: Qt.QHBoxLayout + type: real + value: '1' + widget: combo_box + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [21, 235] + rotation: 0 + state: enabled +- name: px_rate + id: variable + parameters: + comment: '' + value: Hsize*Vsize*refresh_rate + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [332, 244] + rotation: 0 + state: enabled +- name: refresh_rate + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: Refresh Rate (Hz) + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '0' + step: '1' + stop: '240' + value: '60' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [331, 126] + rotation: 0 + state: enabled +- name: samp_rate + id: variable + parameters: + comment: '' + value: int(50e6) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [225, 61] + rotation: 0 + state: enabled +- name: variable_qtgui_push_button_0 + id: variable_qtgui_push_button + parameters: + comment: '' + gui_hint: '' + label: '' + pressed: '1' + released: '0' + type: bool + value: '0' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [248, 692.0] + rotation: 0 + state: true +- name: FFT_autocorrelation_0_0 + id: FFT_autocorrelation + parameters: + affinity: '' + alias: '' + alpha: '1.0' + comment: '' + fft_size: int(fft_size) + maxoutbuf: '0' + minoutbuf: '0' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [597, 634] + rotation: 270 + state: enabled +- name: Keep_1_in_N_Frames_0 + id: Keep_1_in_N_Frames + parameters: + affinity: '' + alias: '' + comment: '' + fac_decimation: DroppedFrames + fft_size: interpolatedHsize*Vsize*4 + maxoutbuf: '0' + minoutbuf: '0' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [506, 470] + rotation: 0 + state: enabled +- name: blocks_complex_to_mag_0 + id: blocks_complex_to_mag + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1336, 493] + rotation: 0 + state: enabled +- name: blocks_delay_0_0 + id: blocks_delay + parameters: + affinity: '' + alias: '' + comment: '' + delay: DelaySyncDetector + maxoutbuf: '0' + minoutbuf: '0' + num_ports: '1' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1099, 491] + rotation: 0 + state: enabled +- name: blocks_float_to_short_0 + id: blocks_float_to_short + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + scale: inverted + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1496, 796] + rotation: 270 + state: enabled +- name: import_0 + id: import + parameters: + alias: '' + comment: '' + imports: from math import pi + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [22, 185] + rotation: 0 + state: true +- name: qtgui_time_sink_x_1 + id: qtgui_time_sink_x + parameters: + affinity: '' + alias: '' + alpha1: '1.0' + alpha10: '1.0' + alpha2: '1.0' + alpha3: '1.0' + alpha4: '1.0' + alpha5: '1.0' + alpha6: '1.0' + alpha7: '1.0' + alpha8: '1.0' + alpha9: '1.0' + autoscale: 'False' + axislabels: 'True' + color1: blue + color10: dark blue + color2: red + color3: green + color4: black + color5: cyan + color6: magenta + color7: yellow + color8: dark red + color9: dark green + comment: '' + ctrlpanel: 'False' + entags: 'True' + grid: 'True' + gui_hint: tab_m@1 + label1: Signal 1 + label10: Signal 10 + label2: Signal 2 + label3: Signal 3 + label4: Signal 4 + label5: Signal 5 + label6: Signal 6 + label7: Signal 7 + label8: Signal 8 + label9: Signal 9 + legend: 'True' + marker1: '-1' + marker10: '-1' + marker2: '-1' + marker3: '-1' + marker4: '-1' + marker5: '-1' + marker6: '-1' + marker7: '-1' + marker8: '-1' + marker9: '-1' + name: '""' + nconnections: '1' + size: int(fft_size/2) + srate: samp_rate + stemplot: 'False' + style1: '1' + style10: '1' + style2: '1' + style3: '1' + style4: '1' + style5: '1' + style6: '1' + style7: '1' + style8: '1' + style9: '1' + tr_chan: '0' + tr_delay: '0' + tr_level: '15.0' + tr_mode: qtgui.TRIG_MODE_NORM + tr_slope: qtgui.TRIG_SLOPE_POS + tr_tag: '"peak_1"' + type: float + update_time: '2.0' + width1: '1' + width10: '1' + width2: '1' + width3: '1' + width4: '1' + width5: '1' + width6: '1' + width7: '1' + width8: '1' + width9: '1' + ylabel: Amplitude + ymax: '1' + ymin: '-1' + yunit: '""' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [868, 623] + rotation: 270 + state: enabled +- name: ratio_finder_toggle_on_and_off + id: tempest_tempest_msgbtn + parameters: + affinity: '' + alias: '' + comment: '' + gui_hint: '' + label: Ratio Finder Toggle ON or OFF (FFT peaks) + maxoutbuf: '0' + minoutbuf: '0' + msgName: pressed + relBackgroundColor: default + relFontColor: default + type: bool + value: 'True' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [488, 884.0] + rotation: 0 + state: true +- name: tab_m + id: qtgui_tab_widget + parameters: + alias: '' + comment: '' + gui_hint: '' + label0: Tempest Main Tab + label1: Autocorrelation Plot Tab + label10: Tab 10 + label11: Tab 11 + label12: Tab 12 + label13: Tab 13 + label14: Tab 14 + label15: Tab 15 + label16: Tab 16 + label17: Tab 17 + label18: Tab 18 + label19: Tab 19 + label2: Tab 2 + label3: Tab 3 + label4: Tab 4 + label5: Tab 5 + label6: Tab 6 + label7: Tab 7 + label8: Tab 8 + label9: Tab 9 + num_tabs: '2' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [17, 92] + rotation: 0 + state: true +- name: tempest_fft_peak_fine_sampling_sync_0_0 + id: tempest_fft_peak_fine_sampling_sync + parameters: + Hvisible: interpolatedHsize + Vvisible: Vsize + affinity: '' + alias: '' + automatic_mode: 'True' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + refresh_rate: refresh_rate + sample_rate: samp_rate + size: int(fft_size) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [706, 628] + rotation: 90 + state: enabled +- name: tempest_normalize_flow_0 + id: tempest_normalize_flow + parameters: + affinity: '' + alias: '' + alpha_avg: 1e-2 + comment: '' + max: '245' + maxoutbuf: '0' + min: '10' + minoutbuf: '0' + update_proba: '0.1' + window: interpolatedHsize + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1472, 578] + rotation: 270 + state: enabled +- name: tempest_sync_detector_0_0 + id: tempest_sync_detector + parameters: + affinity: '' + alias: '' + comment: '' + hblanking: interpolatedHblank + hscreen: interpolatedHscreen + maxoutbuf: '0' + minoutbuf: '0' + vblanking: Vblank + vscreen: Vsize-Vblank + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [842, 473] + rotation: 0 + state: enabled +- name: uhd_usrp_source_0 + id: uhd_usrp_source + parameters: + affinity: '' + alias: '' + ant0: '' + ant1: '' + ant10: '' + ant11: '' + ant12: '' + ant13: '' + ant14: '' + ant15: '' + ant16: '' + ant17: '' + ant18: '' + ant19: '' + ant2: '' + ant20: '' + ant21: '' + ant22: '' + ant23: '' + ant24: '' + ant25: '' + ant26: '' + ant27: '' + ant28: '' + ant29: '' + ant3: '' + ant30: '' + ant31: '' + ant4: '' + ant5: '' + ant6: '' + ant7: '' + ant8: '' + ant9: '' + bw0: '0' + bw1: '0' + bw10: '0' + bw11: '0' + bw12: '0' + bw13: '0' + bw14: '0' + bw15: '0' + bw16: '0' + bw17: '0' + bw18: '0' + bw19: '0' + bw2: '0' + bw20: '0' + bw21: '0' + bw22: '0' + bw23: '0' + bw24: '0' + bw25: '0' + bw26: '0' + bw27: '0' + bw28: '0' + bw29: '0' + bw3: '0' + bw30: '0' + bw31: '0' + bw4: '0' + bw5: '0' + bw6: '0' + bw7: '0' + bw8: '0' + bw9: '0' + center_freq0: px_rate*harmonic + center_freq1: '0' + center_freq10: '0' + center_freq11: '0' + center_freq12: '0' + center_freq13: '0' + center_freq14: '0' + center_freq15: '0' + center_freq16: '0' + center_freq17: '0' + center_freq18: '0' + center_freq19: '0' + center_freq2: '0' + center_freq20: '0' + center_freq21: '0' + center_freq22: '0' + center_freq23: '0' + center_freq24: '0' + center_freq25: '0' + center_freq26: '0' + center_freq27: '0' + center_freq28: '0' + center_freq29: '0' + center_freq3: '0' + center_freq30: '0' + center_freq31: '0' + center_freq4: '0' + center_freq5: '0' + center_freq6: '0' + center_freq7: '0' + center_freq8: '0' + center_freq9: '0' + clock_rate: '0.0' + clock_source0: '' + clock_source1: '' + clock_source2: '' + clock_source3: '' + clock_source4: '' + clock_source5: '' + clock_source6: '' + clock_source7: '' + comment: '' + dc_offs_enb0: '""' + dc_offs_enb1: '""' + dc_offs_enb10: '""' + dc_offs_enb11: '""' + dc_offs_enb12: '""' + dc_offs_enb13: '""' + dc_offs_enb14: '""' + dc_offs_enb15: '""' + dc_offs_enb16: '""' + dc_offs_enb17: '""' + dc_offs_enb18: '""' + dc_offs_enb19: '""' + dc_offs_enb2: '""' + dc_offs_enb20: '""' + dc_offs_enb21: '""' + dc_offs_enb22: '""' + dc_offs_enb23: '""' + dc_offs_enb24: '""' + dc_offs_enb25: '""' + dc_offs_enb26: '""' + dc_offs_enb27: '""' + dc_offs_enb28: '""' + dc_offs_enb29: '""' + dc_offs_enb3: '""' + dc_offs_enb30: '""' + dc_offs_enb31: '""' + dc_offs_enb4: '""' + dc_offs_enb5: '""' + dc_offs_enb6: '""' + dc_offs_enb7: '""' + dc_offs_enb8: '""' + dc_offs_enb9: '""' + dev_addr: '""' + dev_args: '"recv_frame_size= 65536, num_recv_frames=128"' + gain0: '50' + gain1: '0' + gain10: '0' + gain11: '0' + gain12: '0' + gain13: '0' + gain14: '0' + gain15: '0' + gain16: '0' + gain17: '0' + gain18: '0' + gain19: '0' + gain2: '0' + gain20: '0' + gain21: '0' + gain22: '0' + gain23: '0' + gain24: '0' + gain25: '0' + gain26: '0' + gain27: '0' + gain28: '0' + gain29: '0' + gain3: '0' + gain30: '0' + gain31: '0' + gain4: '0' + gain5: '0' + gain6: '0' + gain7: '0' + gain8: '0' + gain9: '0' + iq_imbal_enb0: '""' + iq_imbal_enb1: '""' + iq_imbal_enb10: '""' + iq_imbal_enb11: '""' + iq_imbal_enb12: '""' + iq_imbal_enb13: '""' + iq_imbal_enb14: '""' + iq_imbal_enb15: '""' + iq_imbal_enb16: '""' + iq_imbal_enb17: '""' + iq_imbal_enb18: '""' + iq_imbal_enb19: '""' + iq_imbal_enb2: '""' + iq_imbal_enb20: '""' + iq_imbal_enb21: '""' + iq_imbal_enb22: '""' + iq_imbal_enb23: '""' + iq_imbal_enb24: '""' + iq_imbal_enb25: '""' + iq_imbal_enb26: '""' + iq_imbal_enb27: '""' + iq_imbal_enb28: '""' + iq_imbal_enb29: '""' + iq_imbal_enb3: '""' + iq_imbal_enb30: '""' + iq_imbal_enb31: '""' + iq_imbal_enb4: '""' + iq_imbal_enb5: '""' + iq_imbal_enb6: '""' + iq_imbal_enb7: '""' + iq_imbal_enb8: '""' + iq_imbal_enb9: '""' + lo_export0: 'False' + lo_export1: 'False' + lo_export10: 'False' + lo_export11: 'False' + lo_export12: 'False' + lo_export13: 'False' + lo_export14: 'False' + lo_export15: 'False' + lo_export16: 'False' + lo_export17: 'False' + lo_export18: 'False' + lo_export19: 'False' + lo_export2: 'False' + lo_export20: 'False' + lo_export21: 'False' + lo_export22: 'False' + lo_export23: 'False' + lo_export24: 'False' + lo_export25: 'False' + lo_export26: 'False' + lo_export27: 'False' + lo_export28: 'False' + lo_export29: 'False' + lo_export3: 'False' + lo_export30: 'False' + lo_export31: 'False' + lo_export4: 'False' + lo_export5: 'False' + lo_export6: 'False' + lo_export7: 'False' + lo_export8: 'False' + lo_export9: 'False' + lo_source0: internal + lo_source1: internal + lo_source10: internal + lo_source11: internal + lo_source12: internal + lo_source13: internal + lo_source14: internal + lo_source15: internal + lo_source16: internal + lo_source17: internal + lo_source18: internal + lo_source19: internal + lo_source2: internal + lo_source20: internal + lo_source21: internal + lo_source22: internal + lo_source23: internal + lo_source24: internal + lo_source25: internal + lo_source26: internal + lo_source27: internal + lo_source28: internal + lo_source29: internal + lo_source3: internal + lo_source30: internal + lo_source31: internal + lo_source4: internal + lo_source5: internal + lo_source6: internal + lo_source7: internal + lo_source8: internal + lo_source9: internal + maxoutbuf: '0' + minoutbuf: '0' + nchan: '1' + norm_gain0: 'False' + norm_gain1: 'False' + norm_gain10: 'False' + norm_gain11: 'False' + norm_gain12: 'False' + norm_gain13: 'False' + norm_gain14: 'False' + norm_gain15: 'False' + norm_gain16: 'False' + norm_gain17: 'False' + norm_gain18: 'False' + norm_gain19: 'False' + norm_gain2: 'False' + norm_gain20: 'False' + norm_gain21: 'False' + norm_gain22: 'False' + norm_gain23: 'False' + norm_gain24: 'False' + norm_gain25: 'False' + norm_gain26: 'False' + norm_gain27: 'False' + norm_gain28: 'False' + norm_gain29: 'False' + norm_gain3: 'False' + norm_gain30: 'False' + norm_gain31: 'False' + norm_gain4: 'False' + norm_gain5: 'False' + norm_gain6: 'False' + norm_gain7: 'False' + norm_gain8: 'False' + norm_gain9: 'False' + num_mboards: '1' + otw: '' + rx_agc0: Default + rx_agc1: Default + rx_agc10: Default + rx_agc11: Default + rx_agc12: Default + rx_agc13: Default + rx_agc14: Default + rx_agc15: Default + rx_agc16: Default + rx_agc17: Default + rx_agc18: Default + rx_agc19: Default + rx_agc2: Default + rx_agc20: Default + rx_agc21: Default + rx_agc22: Default + rx_agc23: Default + rx_agc24: Default + rx_agc25: Default + rx_agc26: Default + rx_agc27: Default + rx_agc28: Default + rx_agc29: Default + rx_agc3: Default + rx_agc30: Default + rx_agc31: Default + rx_agc4: Default + rx_agc5: Default + rx_agc6: Default + rx_agc7: Default + rx_agc8: Default + rx_agc9: Default + samp_rate: samp_rate + sd_spec0: '' + sd_spec1: '' + sd_spec2: '' + sd_spec3: '' + sd_spec4: '' + sd_spec5: '' + sd_spec6: '' + sd_spec7: '' + show_lo_controls: 'False' + start_time: '-1.0' + stream_args: '' + stream_chans: '[]' + sync: sync + time_source0: '' + time_source1: '' + time_source2: '' + time_source3: '' + time_source4: '' + time_source5: '' + time_source6: '' + time_source7: '' + type: fc32 + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [240, 438] + rotation: 0 + state: enabled +- name: video_sdl_sink_0_0_0 + id: video_sdl_sink + parameters: + affinity: '' + alias: '' + comment: "Enable this path when you are sure what the \nresolution is (and defaut\ + \ to those values on \nthe chooser)." + display_height: '517' + display_width: '1088' + fps: '0' + height: Vsize + num_channels: '1' + type: short + width: interpolatedHsize + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1473, 1001] + rotation: 270 + state: enabled + +connections: +- [FFT_autocorrelation_0_0, '0', tempest_fft_peak_fine_sampling_sync_0_0, '0'] +- [Keep_1_in_N_Frames_0, '0', FFT_autocorrelation_0_0, '0'] +- [Keep_1_in_N_Frames_0, '0', tempest_sync_detector_0_0, '0'] +- [blocks_complex_to_mag_0, '0', tempest_normalize_flow_0, '0'] +- [blocks_delay_0_0, '0', blocks_complex_to_mag_0, '0'] +- [blocks_float_to_short_0, '0', video_sdl_sink_0_0_0, '0'] +- [ratio_finder_toggle_on_and_off, pressed, tempest_fft_peak_fine_sampling_sync_0_0, + en] +- [tempest_fft_peak_fine_sampling_sync_0_0, '0', qtgui_time_sink_x_1, '0'] +- [tempest_fft_peak_fine_sampling_sync_0_0, en, FFT_autocorrelation_0_0, en] +- [tempest_fft_peak_fine_sampling_sync_0_0, en, tempest_sync_detector_0_0, en] +- [tempest_fft_peak_fine_sampling_sync_0_0, rate, uhd_usrp_source_0, command] +- [tempest_normalize_flow_0, '0', blocks_float_to_short_0, '0'] +- [tempest_sync_detector_0_0, '0', blocks_delay_0_0, '0'] +- [uhd_usrp_source_0, '0', Keep_1_in_N_Frames_0, '0'] + +metadata: + file_format: 1 diff --git a/examples/gr_tempest_v2-0-0_HDMI_fs_50MHz_fc_300MHz.grc b/examples/gr_tempest_v2-0-0_HDMI_fs_50MHz_fc_300MHz.grc new file mode 100644 index 0000000..0519ea2 --- /dev/null +++ b/examples/gr_tempest_v2-0-0_HDMI_fs_50MHz_fc_300MHz.grc @@ -0,0 +1,1054 @@ +options: + parameters: + author: '' + category: '[GRC Hier Blocks]' + cmake_opt: '' + comment: '' + copyright: '' + description: '' + gen_cmake: 'On' + gen_linking: dynamic + generate_options: qt_gui + hier_block_src_path: '.:' + id: manual_tempest_example + max_nouts: '0' + output_language: python + placement: (0,0) + qt_qss_theme: '' + realtime_scheduling: '1' + run: 'True' + run_command: '{python} -u {filename}' + run_options: prompt + sizing_mode: fixed + thread_safe_setters: '' + title: '' + window_size: '' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [15, 12] + rotation: 0 + state: enabled + +blocks: +- name: DelaySyncDetector + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: '' + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '0' + step: interpolatedHsize*1 + stop: Vsize*interpolatedHsize + value: interpolatedHsize*1 + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1061, 35] + rotation: 0 + state: enabled +- name: DroppedFrames + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: '' + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '1' + step: '1' + stop: '100' + value: '50' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [859, 34] + rotation: 0 + state: true +- name: Hblank + id: variable + parameters: + comment: '' + value: Hsize-Hvisible + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [740, 220] + rotation: 0 + state: enabled +- name: Hsize + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: Horizontal resolution (total) + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: int(4096*1.5) + value: '1800' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [505, 34] + rotation: 0 + state: enabled +- name: Hvisible + id: variable + parameters: + comment: '' + value: '1920' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [740, 156] + rotation: 0 + state: enabled +- name: Vblank + id: variable + parameters: + comment: '' + value: Vsize-Vvisible + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [656, 220] + rotation: 0 + state: enabled +- name: Vsize + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: Vertical resolution (total) + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: int(2160*1.5) + value: '1000' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [649, 34] + rotation: 0 + state: enabled +- name: Vvisible + id: variable + parameters: + comment: '' + value: '1080' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [649, 157] + rotation: 0 + state: enabled +- name: fft_size + id: variable + parameters: + comment: '' + value: 2**21 + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [226, 244] + rotation: 0 + state: true +- name: harmonic + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: Harmonic + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '1' + step: '1' + stop: '10' + value: '1' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [226, 127] + rotation: 0 + state: enabled +- name: interpolatedHblank + id: variable + parameters: + comment: '' + value: int(Hblank/float(px_rate)*samp_rate) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [506, 215] + rotation: 0 + state: enabled +- name: interpolatedHscreen + id: variable + parameters: + comment: '' + value: int(Hvisible/float(px_rate)*samp_rate) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [506, 278] + rotation: 0 + state: enabled +- name: interpolatedHsize + id: variable + parameters: + comment: '' + value: int(Hsize/float(px_rate)*samp_rate) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [506, 154] + rotation: 0 + state: enabled +- name: inverted + id: variable_qtgui_chooser + parameters: + comment: '' + gui_hint: tab_m@0 + label: Inverted colors? + label0: 'Yes' + label1: 'No' + label2: '' + label3: '' + label4: '' + labels: '[]' + num_opts: '5' + option0: '0' + option1: '1' + option2: '2' + option3: '3' + option4: '4' + options: '[0, 1, 2]' + orient: Qt.QHBoxLayout + type: real + value: '1' + widget: radio_buttons + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [21, 235] + rotation: 0 + state: enabled +- name: px_rate + id: variable + parameters: + comment: '' + value: Hsize*Vsize*refresh_rate + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [332, 244] + rotation: 0 + state: enabled +- name: refresh_rate + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: Refresh Rate (Hz) + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '0' + step: '1' + stop: '240' + value: '60' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [331, 126] + rotation: 0 + state: enabled +- name: samp_rate + id: variable + parameters: + comment: '' + value: int(50e6) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [225, 61] + rotation: 0 + state: enabled +- name: FFT_autocorrelation_0_0 + id: FFT_autocorrelation + parameters: + affinity: '' + alias: '' + alpha: '1.0' + comment: '' + fft_size: int(fft_size) + maxoutbuf: '0' + minoutbuf: '0' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [648, 809] + rotation: 270 + state: enabled +- name: Keep_1_in_N_Frames_0 + id: Keep_1_in_N_Frames + parameters: + affinity: '' + alias: '' + comment: '' + fac_decimation: DroppedFrames + fft_size: interpolatedHsize*Vsize*4 + maxoutbuf: '0' + minoutbuf: '0' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [506, 470] + rotation: 0 + state: enabled +- name: blocks_complex_to_mag_0 + id: blocks_complex_to_mag + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1336, 493] + rotation: 0 + state: enabled +- name: blocks_delay_0_0 + id: blocks_delay + parameters: + affinity: '' + alias: '' + comment: '' + delay: DelaySyncDetector + maxoutbuf: '0' + minoutbuf: '0' + num_ports: '1' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1099, 491] + rotation: 0 + state: enabled +- name: blocks_float_to_short_0 + id: blocks_float_to_short + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + scale: inverted + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1501, 796] + rotation: 270 + state: enabled +- name: import_0 + id: import + parameters: + alias: '' + comment: '' + imports: from math import pi + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [22, 185] + rotation: 0 + state: true +- name: qtgui_time_sink_x_1 + id: qtgui_time_sink_x + parameters: + affinity: '' + alias: '' + alpha1: '1.0' + alpha10: '1.0' + alpha2: '1.0' + alpha3: '1.0' + alpha4: '1.0' + alpha5: '1.0' + alpha6: '1.0' + alpha7: '1.0' + alpha8: '1.0' + alpha9: '1.0' + autoscale: 'False' + axislabels: 'True' + color1: blue + color10: dark blue + color2: red + color3: green + color4: black + color5: cyan + color6: magenta + color7: yellow + color8: dark red + color9: dark green + comment: '' + ctrlpanel: 'False' + entags: 'True' + grid: 'True' + gui_hint: tab_m@1 + label1: Signal 1 + label10: Signal 10 + label2: Signal 2 + label3: Signal 3 + label4: Signal 4 + label5: Signal 5 + label6: Signal 6 + label7: Signal 7 + label8: Signal 8 + label9: Signal 9 + legend: 'True' + marker1: '-1' + marker10: '-1' + marker2: '-1' + marker3: '-1' + marker4: '-1' + marker5: '-1' + marker6: '-1' + marker7: '-1' + marker8: '-1' + marker9: '-1' + name: '""' + nconnections: '1' + size: int(fft_size/2) + srate: samp_rate + stemplot: 'False' + style1: '1' + style10: '1' + style2: '1' + style3: '1' + style4: '1' + style5: '1' + style6: '1' + style7: '1' + style8: '1' + style9: '1' + tr_chan: '0' + tr_delay: '0' + tr_level: '19.0' + tr_mode: qtgui.TRIG_MODE_FREE + tr_slope: qtgui.TRIG_SLOPE_POS + tr_tag: '"peak_1"' + type: float + update_time: '2.0' + width1: '1' + width10: '1' + width2: '1' + width3: '1' + width4: '1' + width5: '1' + width6: '1' + width7: '1' + width8: '1' + width9: '1' + ylabel: Amplitude + ymax: '1' + ymin: '-1' + yunit: '""' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [919, 798] + rotation: 270 + state: enabled +- name: ratio_finder_toggle_on_and_off + id: variable_qtgui_msg_push_button + parameters: + alias: '' + comment: '' + gui_hint: '' + label: Ratio Finder toggle ON or OFF (FFT peaks). + msgName: pressed + relBackgroundColor: default + relFontColor: default + type: bool + value: 'True' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1000, 1008.0] + rotation: 180 + state: disabled +- name: ratio_finder_toggle_on_and_off + id: tempest_tempest_msgbtn + parameters: + affinity: '' + alias: '' + comment: '' + gui_hint: '' + label: '' + maxoutbuf: '0' + minoutbuf: '0' + msgName: pressed + relBackgroundColor: default + relFontColor: default + type: bool + value: 'True' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [256, 1056.0] + rotation: 0 + state: true +- name: tab_m + id: qtgui_tab_widget + parameters: + alias: '' + comment: '' + gui_hint: '' + label0: Tempest Main Tab + label1: Autocorrelation Plot Tab + label10: Tab 10 + label11: Tab 11 + label12: Tab 12 + label13: Tab 13 + label14: Tab 14 + label15: Tab 15 + label16: Tab 16 + label17: Tab 17 + label18: Tab 18 + label19: Tab 19 + label2: Tab 2 + label3: Tab 3 + label4: Tab 4 + label5: Tab 5 + label6: Tab 6 + label7: Tab 7 + label8: Tab 8 + label9: Tab 9 + num_tabs: '2' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [17, 92] + rotation: 0 + state: true +- name: tempest_fft_peak_fine_sampling_sync_0_0 + id: tempest_fft_peak_fine_sampling_sync + parameters: + Hvisible: interpolatedHsize + Vvisible: Vsize + affinity: '' + alias: '' + automatic_mode: 'True' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + refresh_rate: refresh_rate + sample_rate: samp_rate + size: int(fft_size) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [757, 803] + rotation: 90 + state: enabled +- name: tempest_normalize_flow_0 + id: tempest_normalize_flow + parameters: + affinity: '' + alias: '' + alpha_avg: 1e-2 + comment: '' + max: '245' + maxoutbuf: '0' + min: '10' + minoutbuf: '0' + update_proba: '0.1' + window: interpolatedHsize + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1472, 578] + rotation: 270 + state: enabled +- name: tempest_sync_detector_0_0 + id: tempest_sync_detector + parameters: + affinity: '' + alias: '' + comment: '' + hblanking: interpolatedHblank + hscreen: interpolatedHscreen + maxoutbuf: '0' + minoutbuf: '0' + vblanking: Vblank + vscreen: Vsize-Vblank + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [842, 473] + rotation: 0 + state: enabled +- name: uhd_usrp_source_0 + id: uhd_usrp_source + parameters: + affinity: '' + alias: '' + ant0: '' + ant1: '' + ant10: '' + ant11: '' + ant12: '' + ant13: '' + ant14: '' + ant15: '' + ant16: '' + ant17: '' + ant18: '' + ant19: '' + ant2: '' + ant20: '' + ant21: '' + ant22: '' + ant23: '' + ant24: '' + ant25: '' + ant26: '' + ant27: '' + ant28: '' + ant29: '' + ant3: '' + ant30: '' + ant31: '' + ant4: '' + ant5: '' + ant6: '' + ant7: '' + ant8: '' + ant9: '' + bw0: '0' + bw1: '0' + bw10: '0' + bw11: '0' + bw12: '0' + bw13: '0' + bw14: '0' + bw15: '0' + bw16: '0' + bw17: '0' + bw18: '0' + bw19: '0' + bw2: '0' + bw20: '0' + bw21: '0' + bw22: '0' + bw23: '0' + bw24: '0' + bw25: '0' + bw26: '0' + bw27: '0' + bw28: '0' + bw29: '0' + bw3: '0' + bw30: '0' + bw31: '0' + bw4: '0' + bw5: '0' + bw6: '0' + bw7: '0' + bw8: '0' + bw9: '0' + center_freq0: (px_rate*9)*harmonic + center_freq1: '0' + center_freq10: '0' + center_freq11: '0' + center_freq12: '0' + center_freq13: '0' + center_freq14: '0' + center_freq15: '0' + center_freq16: '0' + center_freq17: '0' + center_freq18: '0' + center_freq19: '0' + center_freq2: '0' + center_freq20: '0' + center_freq21: '0' + center_freq22: '0' + center_freq23: '0' + center_freq24: '0' + center_freq25: '0' + center_freq26: '0' + center_freq27: '0' + center_freq28: '0' + center_freq29: '0' + center_freq3: '0' + center_freq30: '0' + center_freq31: '0' + center_freq4: '0' + center_freq5: '0' + center_freq6: '0' + center_freq7: '0' + center_freq8: '0' + center_freq9: '0' + clock_rate: '0.0' + clock_source0: '' + clock_source1: '' + clock_source2: '' + clock_source3: '' + clock_source4: '' + clock_source5: '' + clock_source6: '' + clock_source7: '' + comment: '' + dc_offs_enb0: '""' + dc_offs_enb1: '""' + dc_offs_enb10: '""' + dc_offs_enb11: '""' + dc_offs_enb12: '""' + dc_offs_enb13: '""' + dc_offs_enb14: '""' + dc_offs_enb15: '""' + dc_offs_enb16: '""' + dc_offs_enb17: '""' + dc_offs_enb18: '""' + dc_offs_enb19: '""' + dc_offs_enb2: '""' + dc_offs_enb20: '""' + dc_offs_enb21: '""' + dc_offs_enb22: '""' + dc_offs_enb23: '""' + dc_offs_enb24: '""' + dc_offs_enb25: '""' + dc_offs_enb26: '""' + dc_offs_enb27: '""' + dc_offs_enb28: '""' + dc_offs_enb29: '""' + dc_offs_enb3: '""' + dc_offs_enb30: '""' + dc_offs_enb31: '""' + dc_offs_enb4: '""' + dc_offs_enb5: '""' + dc_offs_enb6: '""' + dc_offs_enb7: '""' + dc_offs_enb8: '""' + dc_offs_enb9: '""' + dev_addr: '""' + dev_args: '"recv_frame_size= 65536, num_recv_frames=128"' + gain0: '50' + gain1: '0' + gain10: '0' + gain11: '0' + gain12: '0' + gain13: '0' + gain14: '0' + gain15: '0' + gain16: '0' + gain17: '0' + gain18: '0' + gain19: '0' + gain2: '0' + gain20: '0' + gain21: '0' + gain22: '0' + gain23: '0' + gain24: '0' + gain25: '0' + gain26: '0' + gain27: '0' + gain28: '0' + gain29: '0' + gain3: '0' + gain30: '0' + gain31: '0' + gain4: '0' + gain5: '0' + gain6: '0' + gain7: '0' + gain8: '0' + gain9: '0' + iq_imbal_enb0: '""' + iq_imbal_enb1: '""' + iq_imbal_enb10: '""' + iq_imbal_enb11: '""' + iq_imbal_enb12: '""' + iq_imbal_enb13: '""' + iq_imbal_enb14: '""' + iq_imbal_enb15: '""' + iq_imbal_enb16: '""' + iq_imbal_enb17: '""' + iq_imbal_enb18: '""' + iq_imbal_enb19: '""' + iq_imbal_enb2: '""' + iq_imbal_enb20: '""' + iq_imbal_enb21: '""' + iq_imbal_enb22: '""' + iq_imbal_enb23: '""' + iq_imbal_enb24: '""' + iq_imbal_enb25: '""' + iq_imbal_enb26: '""' + iq_imbal_enb27: '""' + iq_imbal_enb28: '""' + iq_imbal_enb29: '""' + iq_imbal_enb3: '""' + iq_imbal_enb30: '""' + iq_imbal_enb31: '""' + iq_imbal_enb4: '""' + iq_imbal_enb5: '""' + iq_imbal_enb6: '""' + iq_imbal_enb7: '""' + iq_imbal_enb8: '""' + iq_imbal_enb9: '""' + lo_export0: 'False' + lo_export1: 'False' + lo_export10: 'False' + lo_export11: 'False' + lo_export12: 'False' + lo_export13: 'False' + lo_export14: 'False' + lo_export15: 'False' + lo_export16: 'False' + lo_export17: 'False' + lo_export18: 'False' + lo_export19: 'False' + lo_export2: 'False' + lo_export20: 'False' + lo_export21: 'False' + lo_export22: 'False' + lo_export23: 'False' + lo_export24: 'False' + lo_export25: 'False' + lo_export26: 'False' + lo_export27: 'False' + lo_export28: 'False' + lo_export29: 'False' + lo_export3: 'False' + lo_export30: 'False' + lo_export31: 'False' + lo_export4: 'False' + lo_export5: 'False' + lo_export6: 'False' + lo_export7: 'False' + lo_export8: 'False' + lo_export9: 'False' + lo_source0: internal + lo_source1: internal + lo_source10: internal + lo_source11: internal + lo_source12: internal + lo_source13: internal + lo_source14: internal + lo_source15: internal + lo_source16: internal + lo_source17: internal + lo_source18: internal + lo_source19: internal + lo_source2: internal + lo_source20: internal + lo_source21: internal + lo_source22: internal + lo_source23: internal + lo_source24: internal + lo_source25: internal + lo_source26: internal + lo_source27: internal + lo_source28: internal + lo_source29: internal + lo_source3: internal + lo_source30: internal + lo_source31: internal + lo_source4: internal + lo_source5: internal + lo_source6: internal + lo_source7: internal + lo_source8: internal + lo_source9: internal + maxoutbuf: '0' + minoutbuf: '0' + nchan: '1' + norm_gain0: 'False' + norm_gain1: 'False' + norm_gain10: 'False' + norm_gain11: 'False' + norm_gain12: 'False' + norm_gain13: 'False' + norm_gain14: 'False' + norm_gain15: 'False' + norm_gain16: 'False' + norm_gain17: 'False' + norm_gain18: 'False' + norm_gain19: 'False' + norm_gain2: 'False' + norm_gain20: 'False' + norm_gain21: 'False' + norm_gain22: 'False' + norm_gain23: 'False' + norm_gain24: 'False' + norm_gain25: 'False' + norm_gain26: 'False' + norm_gain27: 'False' + norm_gain28: 'False' + norm_gain29: 'False' + norm_gain3: 'False' + norm_gain30: 'False' + norm_gain31: 'False' + norm_gain4: 'False' + norm_gain5: 'False' + norm_gain6: 'False' + norm_gain7: 'False' + norm_gain8: 'False' + norm_gain9: 'False' + num_mboards: '1' + otw: '' + rx_agc0: Default + rx_agc1: Default + rx_agc10: Default + rx_agc11: Default + rx_agc12: Default + rx_agc13: Default + rx_agc14: Default + rx_agc15: Default + rx_agc16: Default + rx_agc17: Default + rx_agc18: Default + rx_agc19: Default + rx_agc2: Default + rx_agc20: Default + rx_agc21: Default + rx_agc22: Default + rx_agc23: Default + rx_agc24: Default + rx_agc25: Default + rx_agc26: Default + rx_agc27: Default + rx_agc28: Default + rx_agc29: Default + rx_agc3: Default + rx_agc30: Default + rx_agc31: Default + rx_agc4: Default + rx_agc5: Default + rx_agc6: Default + rx_agc7: Default + rx_agc8: Default + rx_agc9: Default + samp_rate: samp_rate + sd_spec0: '' + sd_spec1: '' + sd_spec2: '' + sd_spec3: '' + sd_spec4: '' + sd_spec5: '' + sd_spec6: '' + sd_spec7: '' + show_lo_controls: 'False' + start_time: '-1.0' + stream_args: '' + stream_chans: '[]' + sync: sync + time_source0: '' + time_source1: '' + time_source2: '' + time_source3: '' + time_source4: '' + time_source5: '' + time_source6: '' + time_source7: '' + type: fc32 + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [240, 438] + rotation: 0 + state: enabled +- name: video_sdl_sink_0_0_0 + id: video_sdl_sink + parameters: + affinity: '' + alias: '' + comment: "Enable this path when you are sure what the \nresolution is (and defaut\ + \ to those values on \nthe chooser)." + display_height: '1080' + display_width: '1920' + fps: '0' + height: Vsize + num_channels: '1' + type: short + width: interpolatedHsize + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1468.0, 1008] + rotation: 270 + state: enabled + +connections: +- [FFT_autocorrelation_0_0, '0', tempest_fft_peak_fine_sampling_sync_0_0, '0'] +- [Keep_1_in_N_Frames_0, '0', FFT_autocorrelation_0_0, '0'] +- [Keep_1_in_N_Frames_0, '0', tempest_sync_detector_0_0, '0'] +- [blocks_complex_to_mag_0, '0', tempest_normalize_flow_0, '0'] +- [blocks_delay_0_0, '0', blocks_complex_to_mag_0, '0'] +- [blocks_float_to_short_0, '0', video_sdl_sink_0_0_0, '0'] +- [ratio_finder_toggle_on_and_off, pressed, tempest_fft_peak_fine_sampling_sync_0_0, + en] +- [tempest_fft_peak_fine_sampling_sync_0_0, '0', qtgui_time_sink_x_1, '0'] +- [tempest_fft_peak_fine_sampling_sync_0_0, en, FFT_autocorrelation_0_0, en] +- [tempest_fft_peak_fine_sampling_sync_0_0, en, tempest_sync_detector_0_0, en] +- [tempest_fft_peak_fine_sampling_sync_0_0, rate, uhd_usrp_source_0, command] +- [tempest_normalize_flow_0, '0', blocks_float_to_short_0, '0'] +- [tempest_sync_detector_0_0, '0', blocks_delay_0_0, '0'] +- [uhd_usrp_source_0, '0', Keep_1_in_N_Frames_0, '0'] + +metadata: + file_format: 1 diff --git a/examples/gr_tempest_v2-0-0_InferScreenResolution_fs_50MHz_fc_300MHz.grc b/examples/gr_tempest_v2-0-0_InferScreenResolution_fs_50MHz_fc_300MHz.grc new file mode 100644 index 0000000..b8a9b42 --- /dev/null +++ b/examples/gr_tempest_v2-0-0_InferScreenResolution_fs_50MHz_fc_300MHz.grc @@ -0,0 +1,705 @@ +options: + parameters: + author: '' + category: '[GRC Hier Blocks]' + cmake_opt: '' + comment: '' + copyright: '' + description: '' + gen_cmake: 'On' + gen_linking: dynamic + generate_options: qt_gui + hier_block_src_path: '.:' + id: manual_tempest_example + max_nouts: '0' + output_language: python + placement: (0,0) + qt_qss_theme: '' + realtime_scheduling: '1' + run: 'True' + run_command: '{python} -u {filename}' + run_options: prompt + sizing_mode: fixed + thread_safe_setters: '' + title: '' + window_size: '' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [52, 17] + rotation: 0 + state: enabled + +blocks: +- name: DroppedFrames + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: '' + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '0' + step: '1' + stop: '100' + value: '50' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [493, 427] + rotation: 0 + state: enabled +- name: Hsize + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Horizontal resolution (total) + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: int(4096*1.5) + value: '2200' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [296, 37] + rotation: 0 + state: enabled +- name: Vsize + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Vertical resolution (total) + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: int(2160*1.5) + value: '1125' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [439, 37] + rotation: 0 + state: enabled +- name: fft_size + id: variable + parameters: + comment: '' + value: 2**21 + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [192, 102] + rotation: 0 + state: true +- name: harmonic + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Harmonic + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '1' + step: '1' + stop: '10' + value: '2' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [54, 214] + rotation: 0 + state: enabled +- name: px_rate + id: variable + parameters: + comment: '' + value: Hsize*Vsize*refresh_rate + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [192, 172] + rotation: 0 + state: enabled +- name: refresh_rate + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: refr + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: '100' + value: '60' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [53, 97] + rotation: 0 + state: true +- name: samp_rate + id: variable + parameters: + comment: '' + value: int(50e6) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [192, 35] + rotation: 0 + state: enabled +- name: FFT_autocorrelation_0_0 + id: FFT_autocorrelation + parameters: + affinity: '' + alias: '' + alpha: '1.0' + comment: '' + fft_size: int(fft_size) + maxoutbuf: '0' + minoutbuf: '0' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [640, 371] + rotation: 0 + state: enabled +- name: Keep_1_in_N_Frames_0 + id: Keep_1_in_N_Frames + parameters: + affinity: '' + alias: '' + comment: '' + fac_decimation: DroppedFrames + fft_size: fft_size + maxoutbuf: '0' + minoutbuf: '0' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [425, 363] + rotation: 0 + state: enabled +- name: qtgui_time_sink_x_1 + id: qtgui_time_sink_x + parameters: + affinity: '' + alias: '' + alpha1: '1.0' + alpha10: '1.0' + alpha2: '1.0' + alpha3: '1.0' + alpha4: '1.0' + alpha5: '1.0' + alpha6: '1.0' + alpha7: '1.0' + alpha8: '1.0' + alpha9: '1.0' + autoscale: 'False' + axislabels: 'True' + color1: blue + color10: dark blue + color2: red + color3: green + color4: black + color5: cyan + color6: magenta + color7: yellow + color8: dark red + color9: dark green + comment: '' + ctrlpanel: 'False' + entags: 'True' + grid: 'True' + gui_hint: '' + label1: Signal 1 + label10: Signal 10 + label2: Signal 2 + label3: Signal 3 + label4: Signal 4 + label5: Signal 5 + label6: Signal 6 + label7: Signal 7 + label8: Signal 8 + label9: Signal 9 + legend: 'True' + marker1: '-1' + marker10: '-1' + marker2: '-1' + marker3: '-1' + marker4: '-1' + marker5: '-1' + marker6: '-1' + marker7: '-1' + marker8: '-1' + marker9: '-1' + name: '""' + nconnections: '1' + size: int(fft_size) + srate: samp_rate + stemplot: 'False' + style1: '1' + style10: '1' + style2: '1' + style3: '1' + style4: '1' + style5: '1' + style6: '1' + style7: '1' + style8: '1' + style9: '1' + tr_chan: '0' + tr_delay: '0' + tr_level: '15.0' + tr_mode: qtgui.TRIG_MODE_NORM + tr_slope: qtgui.TRIG_SLOPE_POS + tr_tag: '"peak_1"' + type: float + update_time: '2.0' + width1: '1' + width10: '1' + width2: '1' + width3: '1' + width4: '1' + width5: '1' + width6: '1' + width7: '1' + width8: '1' + width9: '1' + ylabel: Amplitude + ymax: '1' + ymin: '-1' + yunit: '""' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1048, 476] + rotation: 270 + state: enabled +- name: tempest_infer_screen_resolution_0 + id: tempest_infer_screen_resolution + parameters: + affinity: '' + alias: '' + automatic_mode: 'True' + comment: '' + fft_size: int(fft_size) + maxoutbuf: '0' + minoutbuf: '0' + refresh_rate: refresh_rate + sample_rate: samp_rate + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [848, 363] + rotation: 0 + state: enabled +- name: uhd_usrp_source_0 + id: uhd_usrp_source + parameters: + affinity: '' + alias: '' + ant0: '' + ant1: '' + ant10: '' + ant11: '' + ant12: '' + ant13: '' + ant14: '' + ant15: '' + ant16: '' + ant17: '' + ant18: '' + ant19: '' + ant2: '' + ant20: '' + ant21: '' + ant22: '' + ant23: '' + ant24: '' + ant25: '' + ant26: '' + ant27: '' + ant28: '' + ant29: '' + ant3: '' + ant30: '' + ant31: '' + ant4: '' + ant5: '' + ant6: '' + ant7: '' + ant8: '' + ant9: '' + bw0: '0' + bw1: '0' + bw10: '0' + bw11: '0' + bw12: '0' + bw13: '0' + bw14: '0' + bw15: '0' + bw16: '0' + bw17: '0' + bw18: '0' + bw19: '0' + bw2: '0' + bw20: '0' + bw21: '0' + bw22: '0' + bw23: '0' + bw24: '0' + bw25: '0' + bw26: '0' + bw27: '0' + bw28: '0' + bw29: '0' + bw3: '0' + bw30: '0' + bw31: '0' + bw4: '0' + bw5: '0' + bw6: '0' + bw7: '0' + bw8: '0' + bw9: '0' + center_freq0: px_rate*harmonic + center_freq1: '0' + center_freq10: '0' + center_freq11: '0' + center_freq12: '0' + center_freq13: '0' + center_freq14: '0' + center_freq15: '0' + center_freq16: '0' + center_freq17: '0' + center_freq18: '0' + center_freq19: '0' + center_freq2: '0' + center_freq20: '0' + center_freq21: '0' + center_freq22: '0' + center_freq23: '0' + center_freq24: '0' + center_freq25: '0' + center_freq26: '0' + center_freq27: '0' + center_freq28: '0' + center_freq29: '0' + center_freq3: '0' + center_freq30: '0' + center_freq31: '0' + center_freq4: '0' + center_freq5: '0' + center_freq6: '0' + center_freq7: '0' + center_freq8: '0' + center_freq9: '0' + clock_rate: '0.0' + clock_source0: '' + clock_source1: '' + clock_source2: '' + clock_source3: '' + clock_source4: '' + clock_source5: '' + clock_source6: '' + clock_source7: '' + comment: '' + dc_offs_enb0: '""' + dc_offs_enb1: '""' + dc_offs_enb10: '""' + dc_offs_enb11: '""' + dc_offs_enb12: '""' + dc_offs_enb13: '""' + dc_offs_enb14: '""' + dc_offs_enb15: '""' + dc_offs_enb16: '""' + dc_offs_enb17: '""' + dc_offs_enb18: '""' + dc_offs_enb19: '""' + dc_offs_enb2: '""' + dc_offs_enb20: '""' + dc_offs_enb21: '""' + dc_offs_enb22: '""' + dc_offs_enb23: '""' + dc_offs_enb24: '""' + dc_offs_enb25: '""' + dc_offs_enb26: '""' + dc_offs_enb27: '""' + dc_offs_enb28: '""' + dc_offs_enb29: '""' + dc_offs_enb3: '""' + dc_offs_enb30: '""' + dc_offs_enb31: '""' + dc_offs_enb4: '""' + dc_offs_enb5: '""' + dc_offs_enb6: '""' + dc_offs_enb7: '""' + dc_offs_enb8: '""' + dc_offs_enb9: '""' + dev_addr: '""' + dev_args: '"recv_frame_size= 65536, num_recv_frames=128"' + gain0: '50' + gain1: '0' + gain10: '0' + gain11: '0' + gain12: '0' + gain13: '0' + gain14: '0' + gain15: '0' + gain16: '0' + gain17: '0' + gain18: '0' + gain19: '0' + gain2: '0' + gain20: '0' + gain21: '0' + gain22: '0' + gain23: '0' + gain24: '0' + gain25: '0' + gain26: '0' + gain27: '0' + gain28: '0' + gain29: '0' + gain3: '0' + gain30: '0' + gain31: '0' + gain4: '0' + gain5: '0' + gain6: '0' + gain7: '0' + gain8: '0' + gain9: '0' + iq_imbal_enb0: '""' + iq_imbal_enb1: '""' + iq_imbal_enb10: '""' + iq_imbal_enb11: '""' + iq_imbal_enb12: '""' + iq_imbal_enb13: '""' + iq_imbal_enb14: '""' + iq_imbal_enb15: '""' + iq_imbal_enb16: '""' + iq_imbal_enb17: '""' + iq_imbal_enb18: '""' + iq_imbal_enb19: '""' + iq_imbal_enb2: '""' + iq_imbal_enb20: '""' + iq_imbal_enb21: '""' + iq_imbal_enb22: '""' + iq_imbal_enb23: '""' + iq_imbal_enb24: '""' + iq_imbal_enb25: '""' + iq_imbal_enb26: '""' + iq_imbal_enb27: '""' + iq_imbal_enb28: '""' + iq_imbal_enb29: '""' + iq_imbal_enb3: '""' + iq_imbal_enb30: '""' + iq_imbal_enb31: '""' + iq_imbal_enb4: '""' + iq_imbal_enb5: '""' + iq_imbal_enb6: '""' + iq_imbal_enb7: '""' + iq_imbal_enb8: '""' + iq_imbal_enb9: '""' + lo_export0: 'False' + lo_export1: 'False' + lo_export10: 'False' + lo_export11: 'False' + lo_export12: 'False' + lo_export13: 'False' + lo_export14: 'False' + lo_export15: 'False' + lo_export16: 'False' + lo_export17: 'False' + lo_export18: 'False' + lo_export19: 'False' + lo_export2: 'False' + lo_export20: 'False' + lo_export21: 'False' + lo_export22: 'False' + lo_export23: 'False' + lo_export24: 'False' + lo_export25: 'False' + lo_export26: 'False' + lo_export27: 'False' + lo_export28: 'False' + lo_export29: 'False' + lo_export3: 'False' + lo_export30: 'False' + lo_export31: 'False' + lo_export4: 'False' + lo_export5: 'False' + lo_export6: 'False' + lo_export7: 'False' + lo_export8: 'False' + lo_export9: 'False' + lo_source0: internal + lo_source1: internal + lo_source10: internal + lo_source11: internal + lo_source12: internal + lo_source13: internal + lo_source14: internal + lo_source15: internal + lo_source16: internal + lo_source17: internal + lo_source18: internal + lo_source19: internal + lo_source2: internal + lo_source20: internal + lo_source21: internal + lo_source22: internal + lo_source23: internal + lo_source24: internal + lo_source25: internal + lo_source26: internal + lo_source27: internal + lo_source28: internal + lo_source29: internal + lo_source3: internal + lo_source30: internal + lo_source31: internal + lo_source4: internal + lo_source5: internal + lo_source6: internal + lo_source7: internal + lo_source8: internal + lo_source9: internal + maxoutbuf: '0' + minoutbuf: '0' + nchan: '1' + norm_gain0: 'False' + norm_gain1: 'False' + norm_gain10: 'False' + norm_gain11: 'False' + norm_gain12: 'False' + norm_gain13: 'False' + norm_gain14: 'False' + norm_gain15: 'False' + norm_gain16: 'False' + norm_gain17: 'False' + norm_gain18: 'False' + norm_gain19: 'False' + norm_gain2: 'False' + norm_gain20: 'False' + norm_gain21: 'False' + norm_gain22: 'False' + norm_gain23: 'False' + norm_gain24: 'False' + norm_gain25: 'False' + norm_gain26: 'False' + norm_gain27: 'False' + norm_gain28: 'False' + norm_gain29: 'False' + norm_gain3: 'False' + norm_gain30: 'False' + norm_gain31: 'False' + norm_gain4: 'False' + norm_gain5: 'False' + norm_gain6: 'False' + norm_gain7: 'False' + norm_gain8: 'False' + norm_gain9: 'False' + num_mboards: '1' + otw: '' + rx_agc0: Default + rx_agc1: Default + rx_agc10: Default + rx_agc11: Default + rx_agc12: Default + rx_agc13: Default + rx_agc14: Default + rx_agc15: Default + rx_agc16: Default + rx_agc17: Default + rx_agc18: Default + rx_agc19: Default + rx_agc2: Default + rx_agc20: Default + rx_agc21: Default + rx_agc22: Default + rx_agc23: Default + rx_agc24: Default + rx_agc25: Default + rx_agc26: Default + rx_agc27: Default + rx_agc28: Default + rx_agc29: Default + rx_agc3: Default + rx_agc30: Default + rx_agc31: Default + rx_agc4: Default + rx_agc5: Default + rx_agc6: Default + rx_agc7: Default + rx_agc8: Default + rx_agc9: Default + samp_rate: samp_rate + sd_spec0: '' + sd_spec1: '' + sd_spec2: '' + sd_spec3: '' + sd_spec4: '' + sd_spec5: '' + sd_spec6: '' + sd_spec7: '' + show_lo_controls: 'False' + stream_args: '' + stream_chans: '[]' + sync: sync + time_source0: '' + time_source1: '' + time_source2: '' + time_source3: '' + time_source4: '' + time_source5: '' + time_source6: '' + time_source7: '' + type: fc32 + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [129, 331] + rotation: 0 + state: enabled + +connections: +- [FFT_autocorrelation_0_0, '0', tempest_infer_screen_resolution_0, '0'] +- [Keep_1_in_N_Frames_0, '0', FFT_autocorrelation_0_0, '0'] +- [tempest_infer_screen_resolution_0, '0', qtgui_time_sink_x_1, '0'] +- [uhd_usrp_source_0, '0', Keep_1_in_N_Frames_0, '0'] + +metadata: + file_format: 1 diff --git a/examples/gr_tempest_v2-0-0_VGA_fs_50MHz_fc_300MHz.grc b/examples/gr_tempest_v2-0-0_VGA_fs_50MHz_fc_300MHz.grc new file mode 100644 index 0000000..e652ba8 --- /dev/null +++ b/examples/gr_tempest_v2-0-0_VGA_fs_50MHz_fc_300MHz.grc @@ -0,0 +1,1032 @@ +options: + parameters: + author: '' + category: '[GRC Hier Blocks]' + cmake_opt: '' + comment: '' + copyright: '' + description: '' + gen_cmake: 'On' + gen_linking: dynamic + generate_options: qt_gui + hier_block_src_path: '.:' + id: manual_tempest_example + max_nouts: '0' + output_language: python + placement: (0,0) + qt_qss_theme: '' + realtime_scheduling: '1' + run: 'True' + run_command: '{python} -u {filename}' + run_options: prompt + sizing_mode: fixed + thread_safe_setters: '' + title: '' + window_size: '' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [15, 12] + rotation: 0 + state: enabled + +blocks: +- name: DelaySyncDetector + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: '' + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '0' + step: interpolatedHsize*1 + stop: Vsize*interpolatedHsize + value: interpolatedHsize*1 + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1061, 35] + rotation: 0 + state: enabled +- name: DroppedFrames + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: '' + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '1' + step: '1' + stop: '100' + value: '50' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [859, 34] + rotation: 0 + state: true +- name: Hblank + id: variable + parameters: + comment: '' + value: Hsize-Hvisible + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [740, 220] + rotation: 0 + state: enabled +- name: Hsize + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: Horizontal resolution (total) + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: int(4096*1.5) + value: '2200' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [505, 34] + rotation: 0 + state: enabled +- name: Hvisible + id: variable + parameters: + comment: '' + value: '1920' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [740, 156] + rotation: 0 + state: enabled +- name: Vblank + id: variable + parameters: + comment: '' + value: Vsize-Vvisible + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [656, 220] + rotation: 0 + state: enabled +- name: Vsize + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: Vertical resolution (total) + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: int(2160*1.5) + value: '1125' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [649, 34] + rotation: 0 + state: enabled +- name: Vvisible + id: variable + parameters: + comment: '' + value: '1080' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [649, 157] + rotation: 0 + state: enabled +- name: fft_size + id: variable + parameters: + comment: '' + value: 2**21 + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [226, 244] + rotation: 0 + state: true +- name: harmonic + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: Harmonic + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '1' + step: '1' + stop: '10' + value: '2' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [226, 127] + rotation: 0 + state: enabled +- name: interpolatedHblank + id: variable + parameters: + comment: '' + value: int(Hblank/float(px_rate)*samp_rate) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [506, 215] + rotation: 0 + state: enabled +- name: interpolatedHscreen + id: variable + parameters: + comment: '' + value: int(Hvisible/float(px_rate)*samp_rate) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [506, 278] + rotation: 0 + state: enabled +- name: interpolatedHsize + id: variable + parameters: + comment: '' + value: int(Hsize/float(px_rate)*samp_rate) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [506, 154] + rotation: 0 + state: enabled +- name: inverted + id: variable_qtgui_chooser + parameters: + comment: '' + gui_hint: tab_m@0 + label: Inverted colors? + label0: 'Yes' + label1: 'No' + label2: '' + label3: '' + label4: '' + labels: '[]' + num_opts: '2' + option1: '1' + option2: '2' + option3: '3' + option4: '4' + options: '[0, 1, 2]' + orient: Qt.QHBoxLayout + type: real + value: '-1' + widget: radio_buttons + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [21, 235] + rotation: 0 + state: enabled +- name: px_rate + id: variable + parameters: + comment: '' + value: Hsize*Vsize*refresh_rate + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [332, 244] + rotation: 0 + state: enabled +- name: refresh_rate + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: Refresh Rate (Hz) + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '0' + step: '1' + stop: '240' + value: '60' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [331, 126] + rotation: 0 + state: enabled +- name: samp_rate + id: variable + parameters: + comment: '' + value: int(50e6) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [225, 61] + rotation: 0 + state: enabled +- name: FFT_autocorrelation_0_0 + id: FFT_autocorrelation + parameters: + affinity: '' + alias: '' + alpha: '1.0' + comment: '' + fft_size: int(fft_size) + maxoutbuf: '0' + minoutbuf: '0' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [648, 809] + rotation: 270 + state: enabled +- name: Keep_1_in_N_Frames_0 + id: Keep_1_in_N_Frames + parameters: + affinity: '' + alias: '' + comment: '' + fac_decimation: DroppedFrames + fft_size: interpolatedHsize*Vsize*4 + maxoutbuf: '0' + minoutbuf: '0' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [506, 470] + rotation: 0 + state: enabled +- name: blocks_complex_to_mag_0 + id: blocks_complex_to_mag + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1336, 493] + rotation: 0 + state: enabled +- name: blocks_delay_0_0 + id: blocks_delay + parameters: + affinity: '' + alias: '' + comment: '' + delay: DelaySyncDetector + maxoutbuf: '0' + minoutbuf: '0' + num_ports: '1' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1099, 491] + rotation: 0 + state: enabled +- name: blocks_float_to_short_0 + id: blocks_float_to_short + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + scale: inverted + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1501, 796] + rotation: 270 + state: enabled +- name: import_0 + id: import + parameters: + alias: '' + comment: '' + imports: from math import pi + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [22, 185] + rotation: 0 + state: true +- name: qtgui_time_sink_x_1 + id: qtgui_time_sink_x + parameters: + affinity: '' + alias: '' + alpha1: '1.0' + alpha10: '1.0' + alpha2: '1.0' + alpha3: '1.0' + alpha4: '1.0' + alpha5: '1.0' + alpha6: '1.0' + alpha7: '1.0' + alpha8: '1.0' + alpha9: '1.0' + autoscale: 'False' + axislabels: 'True' + color1: blue + color10: dark blue + color2: red + color3: green + color4: black + color5: cyan + color6: magenta + color7: yellow + color8: dark red + color9: dark green + comment: '' + ctrlpanel: 'False' + entags: 'True' + grid: 'True' + gui_hint: tab_m@1 + label1: Signal 1 + label10: Signal 10 + label2: Signal 2 + label3: Signal 3 + label4: Signal 4 + label5: Signal 5 + label6: Signal 6 + label7: Signal 7 + label8: Signal 8 + label9: Signal 9 + legend: 'True' + marker1: '-1' + marker10: '-1' + marker2: '-1' + marker3: '-1' + marker4: '-1' + marker5: '-1' + marker6: '-1' + marker7: '-1' + marker8: '-1' + marker9: '-1' + name: '""' + nconnections: '1' + size: int(fft_size/2) + srate: samp_rate + stemplot: 'False' + style1: '1' + style10: '1' + style2: '1' + style3: '1' + style4: '1' + style5: '1' + style6: '1' + style7: '1' + style8: '1' + style9: '1' + tr_chan: '0' + tr_delay: '0' + tr_level: '19.0' + tr_mode: qtgui.TRIG_MODE_FREE + tr_slope: qtgui.TRIG_SLOPE_POS + tr_tag: '"peak_1"' + type: float + update_time: '2.0' + width1: '1' + width10: '1' + width2: '1' + width3: '1' + width4: '1' + width5: '1' + width6: '1' + width7: '1' + width8: '1' + width9: '1' + ylabel: Amplitude + ymax: '1' + ymin: '-1' + yunit: '""' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [919, 798] + rotation: 270 + state: enabled +- name: tab_m + id: qtgui_tab_widget + parameters: + alias: '' + comment: '' + gui_hint: '' + label0: Tempest Main Tab + label1: Autocorrelation Plot Tab + label10: Tab 10 + label11: Tab 11 + label12: Tab 12 + label13: Tab 13 + label14: Tab 14 + label15: Tab 15 + label16: Tab 16 + label17: Tab 17 + label18: Tab 18 + label19: Tab 19 + label2: Tab 2 + label3: Tab 3 + label4: Tab 4 + label5: Tab 5 + label6: Tab 6 + label7: Tab 7 + label8: Tab 8 + label9: Tab 9 + num_tabs: '2' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [17, 92] + rotation: 0 + state: true +- name: tempest_fft_peak_fine_sampling_sync_0_0 + id: tempest_fft_peak_fine_sampling_sync + parameters: + Hvisible: interpolatedHsize + Vvisible: Vsize + affinity: '' + alias: '' + automatic_mode: 'True' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + refresh_rate: refresh_rate + sample_rate: samp_rate + size: int(fft_size) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [757, 803] + rotation: 90 + state: enabled +- name: tempest_normalize_flow_0 + id: tempest_normalize_flow + parameters: + affinity: '' + alias: '' + alpha_avg: 1e-2 + comment: '' + max: '245' + maxoutbuf: '0' + min: '10' + minoutbuf: '0' + update_proba: '0.1' + window: interpolatedHsize + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1472, 578] + rotation: 270 + state: enabled +- name: tempest_sync_detector_0_0 + id: tempest_sync_detector + parameters: + affinity: '' + alias: '' + comment: '' + hblanking: interpolatedHblank + hscreen: interpolatedHscreen + maxoutbuf: '0' + minoutbuf: '0' + vblanking: Vblank + vscreen: Vsize-Vblank + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [842, 473] + rotation: 0 + state: enabled +- name: tempest_tempest_msgbtn_0 + id: tempest_tempest_msgbtn + parameters: + affinity: '' + alias: '' + comment: '' + gui_hint: '' + label: Ratio Finder toggle ON or OFF (FFT peaks). + maxoutbuf: '0' + minoutbuf: '0' + msgName: pressed + relBackgroundColor: default + relFontColor: default + type: bool + value: 'True' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [609, 1015] + rotation: 0 + state: true +- name: uhd_usrp_source_0 + id: uhd_usrp_source + parameters: + affinity: '' + alias: '' + ant0: '' + ant1: '' + ant10: '' + ant11: '' + ant12: '' + ant13: '' + ant14: '' + ant15: '' + ant16: '' + ant17: '' + ant18: '' + ant19: '' + ant2: '' + ant20: '' + ant21: '' + ant22: '' + ant23: '' + ant24: '' + ant25: '' + ant26: '' + ant27: '' + ant28: '' + ant29: '' + ant3: '' + ant30: '' + ant31: '' + ant4: '' + ant5: '' + ant6: '' + ant7: '' + ant8: '' + ant9: '' + bw0: '0' + bw1: '0' + bw10: '0' + bw11: '0' + bw12: '0' + bw13: '0' + bw14: '0' + bw15: '0' + bw16: '0' + bw17: '0' + bw18: '0' + bw19: '0' + bw2: '0' + bw20: '0' + bw21: '0' + bw22: '0' + bw23: '0' + bw24: '0' + bw25: '0' + bw26: '0' + bw27: '0' + bw28: '0' + bw29: '0' + bw3: '0' + bw30: '0' + bw31: '0' + bw4: '0' + bw5: '0' + bw6: '0' + bw7: '0' + bw8: '0' + bw9: '0' + center_freq0: px_rate*harmonic + center_freq1: '0' + center_freq10: '0' + center_freq11: '0' + center_freq12: '0' + center_freq13: '0' + center_freq14: '0' + center_freq15: '0' + center_freq16: '0' + center_freq17: '0' + center_freq18: '0' + center_freq19: '0' + center_freq2: '0' + center_freq20: '0' + center_freq21: '0' + center_freq22: '0' + center_freq23: '0' + center_freq24: '0' + center_freq25: '0' + center_freq26: '0' + center_freq27: '0' + center_freq28: '0' + center_freq29: '0' + center_freq3: '0' + center_freq30: '0' + center_freq31: '0' + center_freq4: '0' + center_freq5: '0' + center_freq6: '0' + center_freq7: '0' + center_freq8: '0' + center_freq9: '0' + clock_rate: '0.0' + clock_source0: '' + clock_source1: '' + clock_source2: '' + clock_source3: '' + clock_source4: '' + clock_source5: '' + clock_source6: '' + clock_source7: '' + comment: '' + dc_offs_enb0: '""' + dc_offs_enb1: '""' + dc_offs_enb10: '""' + dc_offs_enb11: '""' + dc_offs_enb12: '""' + dc_offs_enb13: '""' + dc_offs_enb14: '""' + dc_offs_enb15: '""' + dc_offs_enb16: '""' + dc_offs_enb17: '""' + dc_offs_enb18: '""' + dc_offs_enb19: '""' + dc_offs_enb2: '""' + dc_offs_enb20: '""' + dc_offs_enb21: '""' + dc_offs_enb22: '""' + dc_offs_enb23: '""' + dc_offs_enb24: '""' + dc_offs_enb25: '""' + dc_offs_enb26: '""' + dc_offs_enb27: '""' + dc_offs_enb28: '""' + dc_offs_enb29: '""' + dc_offs_enb3: '""' + dc_offs_enb30: '""' + dc_offs_enb31: '""' + dc_offs_enb4: '""' + dc_offs_enb5: '""' + dc_offs_enb6: '""' + dc_offs_enb7: '""' + dc_offs_enb8: '""' + dc_offs_enb9: '""' + dev_addr: '""' + dev_args: '"recv_frame_size= 65536, num_recv_frames=128"' + gain0: '50' + gain1: '0' + gain10: '0' + gain11: '0' + gain12: '0' + gain13: '0' + gain14: '0' + gain15: '0' + gain16: '0' + gain17: '0' + gain18: '0' + gain19: '0' + gain2: '0' + gain20: '0' + gain21: '0' + gain22: '0' + gain23: '0' + gain24: '0' + gain25: '0' + gain26: '0' + gain27: '0' + gain28: '0' + gain29: '0' + gain3: '0' + gain30: '0' + gain31: '0' + gain4: '0' + gain5: '0' + gain6: '0' + gain7: '0' + gain8: '0' + gain9: '0' + iq_imbal_enb0: '""' + iq_imbal_enb1: '""' + iq_imbal_enb10: '""' + iq_imbal_enb11: '""' + iq_imbal_enb12: '""' + iq_imbal_enb13: '""' + iq_imbal_enb14: '""' + iq_imbal_enb15: '""' + iq_imbal_enb16: '""' + iq_imbal_enb17: '""' + iq_imbal_enb18: '""' + iq_imbal_enb19: '""' + iq_imbal_enb2: '""' + iq_imbal_enb20: '""' + iq_imbal_enb21: '""' + iq_imbal_enb22: '""' + iq_imbal_enb23: '""' + iq_imbal_enb24: '""' + iq_imbal_enb25: '""' + iq_imbal_enb26: '""' + iq_imbal_enb27: '""' + iq_imbal_enb28: '""' + iq_imbal_enb29: '""' + iq_imbal_enb3: '""' + iq_imbal_enb30: '""' + iq_imbal_enb31: '""' + iq_imbal_enb4: '""' + iq_imbal_enb5: '""' + iq_imbal_enb6: '""' + iq_imbal_enb7: '""' + iq_imbal_enb8: '""' + iq_imbal_enb9: '""' + lo_export0: 'False' + lo_export1: 'False' + lo_export10: 'False' + lo_export11: 'False' + lo_export12: 'False' + lo_export13: 'False' + lo_export14: 'False' + lo_export15: 'False' + lo_export16: 'False' + lo_export17: 'False' + lo_export18: 'False' + lo_export19: 'False' + lo_export2: 'False' + lo_export20: 'False' + lo_export21: 'False' + lo_export22: 'False' + lo_export23: 'False' + lo_export24: 'False' + lo_export25: 'False' + lo_export26: 'False' + lo_export27: 'False' + lo_export28: 'False' + lo_export29: 'False' + lo_export3: 'False' + lo_export30: 'False' + lo_export31: 'False' + lo_export4: 'False' + lo_export5: 'False' + lo_export6: 'False' + lo_export7: 'False' + lo_export8: 'False' + lo_export9: 'False' + lo_source0: internal + lo_source1: internal + lo_source10: internal + lo_source11: internal + lo_source12: internal + lo_source13: internal + lo_source14: internal + lo_source15: internal + lo_source16: internal + lo_source17: internal + lo_source18: internal + lo_source19: internal + lo_source2: internal + lo_source20: internal + lo_source21: internal + lo_source22: internal + lo_source23: internal + lo_source24: internal + lo_source25: internal + lo_source26: internal + lo_source27: internal + lo_source28: internal + lo_source29: internal + lo_source3: internal + lo_source30: internal + lo_source31: internal + lo_source4: internal + lo_source5: internal + lo_source6: internal + lo_source7: internal + lo_source8: internal + lo_source9: internal + maxoutbuf: '0' + minoutbuf: '0' + nchan: '1' + norm_gain0: 'False' + norm_gain1: 'False' + norm_gain10: 'False' + norm_gain11: 'False' + norm_gain12: 'False' + norm_gain13: 'False' + norm_gain14: 'False' + norm_gain15: 'False' + norm_gain16: 'False' + norm_gain17: 'False' + norm_gain18: 'False' + norm_gain19: 'False' + norm_gain2: 'False' + norm_gain20: 'False' + norm_gain21: 'False' + norm_gain22: 'False' + norm_gain23: 'False' + norm_gain24: 'False' + norm_gain25: 'False' + norm_gain26: 'False' + norm_gain27: 'False' + norm_gain28: 'False' + norm_gain29: 'False' + norm_gain3: 'False' + norm_gain30: 'False' + norm_gain31: 'False' + norm_gain4: 'False' + norm_gain5: 'False' + norm_gain6: 'False' + norm_gain7: 'False' + norm_gain8: 'False' + norm_gain9: 'False' + num_mboards: '1' + otw: '' + rx_agc0: Default + rx_agc1: Default + rx_agc10: Default + rx_agc11: Default + rx_agc12: Default + rx_agc13: Default + rx_agc14: Default + rx_agc15: Default + rx_agc16: Default + rx_agc17: Default + rx_agc18: Default + rx_agc19: Default + rx_agc2: Default + rx_agc20: Default + rx_agc21: Default + rx_agc22: Default + rx_agc23: Default + rx_agc24: Default + rx_agc25: Default + rx_agc26: Default + rx_agc27: Default + rx_agc28: Default + rx_agc29: Default + rx_agc3: Default + rx_agc30: Default + rx_agc31: Default + rx_agc4: Default + rx_agc5: Default + rx_agc6: Default + rx_agc7: Default + rx_agc8: Default + rx_agc9: Default + samp_rate: samp_rate + sd_spec0: '' + sd_spec1: '' + sd_spec2: '' + sd_spec3: '' + sd_spec4: '' + sd_spec5: '' + sd_spec6: '' + sd_spec7: '' + show_lo_controls: 'False' + stream_args: '' + stream_chans: '[]' + sync: sync + time_source0: '' + time_source1: '' + time_source2: '' + time_source3: '' + time_source4: '' + time_source5: '' + time_source6: '' + time_source7: '' + type: fc32 + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [240, 438] + rotation: 0 + state: enabled +- name: video_sdl_sink_0_0_0 + id: video_sdl_sink + parameters: + affinity: '' + alias: '' + comment: "Enable this path when you are sure what the \nresolution is (and defaut\ + \ to those values on \nthe chooser)." + display_height: '517' + display_width: '1088' + fps: '0' + height: Vsize + num_channels: '1' + type: short + width: interpolatedHsize + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1474, 1001] + rotation: 270 + state: enabled + +connections: +- [FFT_autocorrelation_0_0, '0', tempest_fft_peak_fine_sampling_sync_0_0, '0'] +- [Keep_1_in_N_Frames_0, '0', FFT_autocorrelation_0_0, '0'] +- [Keep_1_in_N_Frames_0, '0', tempest_sync_detector_0_0, '0'] +- [blocks_complex_to_mag_0, '0', tempest_normalize_flow_0, '0'] +- [blocks_delay_0_0, '0', blocks_complex_to_mag_0, '0'] +- [blocks_float_to_short_0, '0', video_sdl_sink_0_0_0, '0'] +- [tempest_fft_peak_fine_sampling_sync_0_0, '0', qtgui_time_sink_x_1, '0'] +- [tempest_fft_peak_fine_sampling_sync_0_0, en, FFT_autocorrelation_0_0, en] +- [tempest_fft_peak_fine_sampling_sync_0_0, en, tempest_sync_detector_0_0, en] +- [tempest_fft_peak_fine_sampling_sync_0_0, rate, uhd_usrp_source_0, command] +- [tempest_normalize_flow_0, '0', blocks_float_to_short_0, '0'] +- [tempest_sync_detector_0_0, '0', blocks_delay_0_0, '0'] +- [tempest_tempest_msgbtn_0, pressed, tempest_fft_peak_fine_sampling_sync_0_0, en] +- [uhd_usrp_source_0, '0', Keep_1_in_N_Frames_0, '0'] + +metadata: + file_format: 1 diff --git a/examples/gr_tempest_v2-0-0_VGA_fs_50MHz_fc_300MHz_TakesRealPartOutput.grc b/examples/gr_tempest_v2-0-0_VGA_fs_50MHz_fc_300MHz_TakesRealPartOutput.grc new file mode 100644 index 0000000..897bcf2 --- /dev/null +++ b/examples/gr_tempest_v2-0-0_VGA_fs_50MHz_fc_300MHz_TakesRealPartOutput.grc @@ -0,0 +1,1427 @@ +options: + parameters: + author: '' + category: '[GRC Hier Blocks]' + cmake_opt: '' + comment: '' + copyright: '' + description: '' + gen_cmake: 'On' + gen_linking: dynamic + generate_options: qt_gui + hier_block_src_path: '.:' + id: manual_tempest_example + max_nouts: '0' + output_language: python + placement: (0,0) + qt_qss_theme: '' + realtime_scheduling: '1' + run: 'True' + run_command: '{python} -u {filename}' + run_options: prompt + sizing_mode: fixed + thread_safe_setters: '' + title: '' + window_size: '' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [81, 12] + rotation: 0 + state: enabled + +blocks: +- name: DelaySyncDetector + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: '' + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '0' + step: interpolatedHsize*1 + stop: Vsize*interpolatedHsize + value: interpolatedHsize*1 + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [963, 571] + rotation: 0 + state: enabled +- name: DroppedFrames + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: '' + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '1' + step: '1' + stop: '100' + value: '50' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [766, 252] + rotation: 0 + state: true +- name: Hblank + id: variable + parameters: + comment: '' + value: Hsize-Hvisible + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [623, 168] + rotation: 0 + state: enabled +- name: Hsize + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: Horizontal resolution (total) + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: int(4096*1.5) + value: '2200' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [350, 102] + rotation: 0 + state: enabled +- name: Hvisible + id: variable + parameters: + comment: '' + value: '1920' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [624, 64] + rotation: 0 + state: enabled +- name: Vblank + id: variable + parameters: + comment: '' + value: Vsize-Vvisible + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [750, 178] + rotation: 0 + state: enabled +- name: Vsize + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: Vertical resolution (total) + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: int(2160*1.5) + value: '1125' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [493, 104] + rotation: 0 + state: enabled +- name: Vvisible + id: variable + parameters: + comment: '' + value: '1080' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [750, 126] + rotation: 0 + state: enabled +- name: ferror + id: variable + parameters: + comment: '' + value: (samp_rate*fine_freq)/(2*pi*interpolatedHsize) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1114, 42] + rotation: 0 + state: true +- name: fft_size + id: variable + parameters: + comment: '' + value: 2**21 + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [592, 224] + rotation: 0 + state: true +- name: filtro_ecualizador_1st + id: variable + parameters: + comment: '' + value: '[-6.13e-05-1.22e-05j, + + 6.18e-04-2.02e-04j, + + 3.84e-03-2.43e-03j, + + 5.50e-03-3.87e-03j, + + 7.65e-03-5.51e-03j, + + 8.36e-03-6.47e-03j, + + 3.42e-03-3.78e-03j, + + -7.81e-03+2.35e-03j, + + -3.86e-02+2.21e-02j, + + -8.12e-02+4.68e-02j, + + -1.62e-01+9.94e-02j, + + -2.48e-01+1.48e-01j, + + -3.92e-01+2.43e-01j, + + -5.04e-01+2.99e-01j, + + -7.22e-01+4.49e-01j, + + -6.65e-01+3.56e-01j, + + 7.83e-01-4.68e-01j, + + 6.76e-01-3.60e-01j, + + 5.19e-01-2.92e-01j, + + 3.70e-01-1.98e-01j, + + 2.48e-01-1.39e-01j, + + 1.48e-01-8.02e-02j, + + 7.74e-02-4.50e-02j, + + 3.09e-02-1.83e-02j, + + 4.68e-03-4.89e-03j, + + -6.43e-03+1.92e-03j, + + -9.85e-03+4.10e-03j, + + -8.23e-03+3.73e-03j, + + -5.86e-03+2.73e-03j, + + -3.57e-03+1.94e-03j, + + -1.81e-04+2.41e-04j, + + ]' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [975, 120] + rotation: 0 + state: enabled +- name: fine_freq + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: Sine multiply Freq correction + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '-50000' + step: '0.1' + stop: '50000' + value: '19215.22' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [972, 5] + rotation: 0 + state: enabled +- name: harmonic + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: Harmonic + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '1' + step: '1' + stop: '10' + value: '2' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [207, 318] + rotation: 0 + state: enabled +- name: interpolatedHblank + id: variable + parameters: + comment: '' + value: int(Hblank/float(px_rate)*samp_rate) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [740, 7] + rotation: 0 + state: enabled +- name: interpolatedHscreen + id: variable + parameters: + comment: '' + value: int(Hvisible/float(px_rate)*samp_rate) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [622, 116] + rotation: 0 + state: enabled +- name: interpolatedHsize + id: variable + parameters: + comment: '' + value: int(Hsize/float(px_rate)*samp_rate) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [747, 64] + rotation: 0 + state: enabled +- name: inverted + id: variable_qtgui_chooser + parameters: + comment: '' + gui_hint: tab_m@0 + label: Inverted colors? + label0: 'Yes' + label1: 'No' + label2: '' + label3: '' + label4: '' + labels: '[]' + num_opts: '2' + option1: '1' + option2: '2' + option3: '3' + option4: '4' + options: '[0, 1, 2]' + orient: Qt.QHBoxLayout + type: real + value: '-1' + widget: radio_buttons + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [850, 6] + rotation: 0 + state: enabled +- name: px_rate + id: variable + parameters: + comment: '' + value: Hsize*Vsize*refresh_rate + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [68, 105] + rotation: 0 + state: enabled +- name: ratio_correct + id: variable + parameters: + comment: '' + value: (1.0/(1+0.000935)) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [157, 127] + rotation: 0 + state: true +- name: refresh_rate + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: Refresh Rate (Hz) + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '0' + step: '1' + stop: '240' + value: '60' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [77, 317] + rotation: 0 + state: enabled +- name: samp_rate + id: variable + parameters: + comment: '' + value: int(50e6) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [73, 175] + rotation: 0 + state: enabled +- name: FFT_autocorrelation_0_0 + id: FFT_autocorrelation + parameters: + affinity: '' + alias: '' + alpha: '1.0' + comment: '' + fft_size: int(fft_size) + maxoutbuf: '0' + minoutbuf: '0' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [509, 1038] + rotation: 270 + state: enabled +- name: Keep_1_in_N_Frames_0 + id: Keep_1_in_N_Frames + parameters: + affinity: '' + alias: '' + comment: '' + fac_decimation: DroppedFrames + fft_size: interpolatedHsize*Vsize*4 + maxoutbuf: '0' + minoutbuf: '0' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [349, 773] + rotation: 0 + state: enabled +- name: analog_sig_source_x_0_0 + id: analog_sig_source_x + parameters: + affinity: '' + alias: '' + amp: '1' + comment: '' + freq: -fine_freq + maxoutbuf: '0' + minoutbuf: '0' + offset: '0' + phase: '0' + samp_rate: samp_rate + type: complex + waveform: analog.GR_COS_WAVE + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1147, 819] + rotation: 0 + state: disabled +- name: blocks_complex_to_arg_0 + id: blocks_complex_to_arg + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [787, 359] + rotation: 0 + state: disabled +- name: blocks_complex_to_real_0 + id: blocks_complex_to_real + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1563, 705] + rotation: 0 + state: disabled +- name: blocks_delay_0 + id: blocks_delay + parameters: + affinity: '' + alias: '' + comment: '' + delay: DelaySyncDetector + maxoutbuf: '0' + minoutbuf: '0' + num_ports: '1' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1164, 685] + rotation: 0 + state: disabled +- name: blocks_delay_1 + id: blocks_delay + parameters: + affinity: '' + alias: '' + comment: '' + delay: interpolatedHsize + maxoutbuf: '0' + minoutbuf: '0' + num_ports: '1' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [512, 600] + rotation: 90 + state: disabled +- name: blocks_file_source_0 + id: blocks_file_source + parameters: + affinity: '' + alias: '' + begin_tag: pmt.PMT_NIL + comment: '' + file: /home/felipe/gnuradio/git/grabaciones_local/DEMO_VGA_recording_1080p_60Hz_50MHz.dat + length: '0' + maxoutbuf: '0' + minoutbuf: '0' + offset: '0' + repeat: 'True' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [69, 626] + rotation: 0 + state: enabled +- name: blocks_float_to_short_0 + id: blocks_float_to_short + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + scale: inverted + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1735, 1082] + rotation: 270 + state: disabled +- name: blocks_multiply_conjugate_cc_0 + id: blocks_multiply_conjugate_cc + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [470, 392] + rotation: 90 + state: disabled +- name: blocks_multiply_xx_0_0 + id: blocks_multiply_xx + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + num_inputs: '2' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1385, 689] + rotation: 0 + state: disabled +- name: blocks_throttle_0 + id: blocks_throttle + parameters: + affinity: '' + alias: '' + comment: '' + ignoretag: 'True' + maxoutbuf: '0' + minoutbuf: '0' + samples_per_second: samp_rate + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [271, 650] + rotation: 0 + state: enabled +- name: import_0 + id: import + parameters: + alias: '' + comment: '' + imports: from math import pi + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [87, 242] + rotation: 0 + state: true +- name: interp_fir_filter_xxx_1 + id: interp_fir_filter_xxx + parameters: + affinity: '' + alias: '' + comment: '' + interp: '1' + maxoutbuf: '0' + minoutbuf: '0' + samp_delay: '0' + taps: filtro_ecualizador_1st + type: ccc + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [627, 665] + rotation: 0 + state: disabled +- name: qtgui_time_sink_x_0 + id: qtgui_time_sink_x + parameters: + affinity: '' + alias: '' + alpha1: '1.0' + alpha10: '1.0' + alpha2: '1.0' + alpha3: '1.0' + alpha4: '1.0' + alpha5: '1.0' + alpha6: '1.0' + alpha7: '1.0' + alpha8: '1.0' + alpha9: '1.0' + autoscale: 'True' + axislabels: 'True' + color1: blue + color10: dark blue + color2: red + color3: green + color4: black + color5: cyan + color6: magenta + color7: yellow + color8: dark red + color9: dark green + comment: '' + ctrlpanel: 'False' + entags: 'True' + grid: 'False' + gui_hint: tab_m@0 + label1: Signal 1 + label10: Signal 10 + label2: Signal 2 + label3: Signal 3 + label4: Signal 4 + label5: Signal 5 + label6: Signal 6 + label7: Signal 7 + label8: Signal 8 + label9: Signal 9 + legend: 'True' + marker1: '-1' + marker10: '-1' + marker2: '-1' + marker3: '-1' + marker4: '-1' + marker5: '-1' + marker6: '-1' + marker7: '-1' + marker8: '-1' + marker9: '-1' + name: '""' + nconnections: '1' + size: '1024' + srate: samp_rate + stemplot: 'False' + style1: '1' + style10: '1' + style2: '1' + style3: '1' + style4: '1' + style5: '1' + style6: '1' + style7: '1' + style8: '1' + style9: '1' + tr_chan: '0' + tr_delay: '0' + tr_level: '0.0' + tr_mode: qtgui.TRIG_MODE_FREE + tr_slope: qtgui.TRIG_SLOPE_POS + tr_tag: '""' + type: float + update_time: '0.5' + width1: '1' + width10: '1' + width2: '1' + width3: '1' + width4: '1' + width5: '1' + width6: '1' + width7: '1' + width8: '1' + width9: '1' + ylabel: Phase difference (rad). + ymax: '1' + ymin: '-1' + yunit: '""' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [963, 352] + rotation: 0 + state: disabled +- name: qtgui_time_sink_x_1 + id: qtgui_time_sink_x + parameters: + affinity: '' + alias: '' + alpha1: '1.0' + alpha10: '1.0' + alpha2: '1.0' + alpha3: '1.0' + alpha4: '1.0' + alpha5: '1.0' + alpha6: '1.0' + alpha7: '1.0' + alpha8: '1.0' + alpha9: '1.0' + autoscale: 'False' + axislabels: 'True' + color1: blue + color10: dark blue + color2: red + color3: green + color4: black + color5: cyan + color6: magenta + color7: yellow + color8: dark red + color9: dark green + comment: '' + ctrlpanel: 'False' + entags: 'True' + grid: 'True' + gui_hint: tab_m@1 + label1: Signal 1 + label10: Signal 10 + label2: Signal 2 + label3: Signal 3 + label4: Signal 4 + label5: Signal 5 + label6: Signal 6 + label7: Signal 7 + label8: Signal 8 + label9: Signal 9 + legend: 'True' + marker1: '-1' + marker10: '-1' + marker2: '-1' + marker3: '-1' + marker4: '-1' + marker5: '-1' + marker6: '-1' + marker7: '-1' + marker8: '-1' + marker9: '-1' + name: '""' + nconnections: '1' + size: int(fft_size/2) + srate: samp_rate + stemplot: 'False' + style1: '1' + style10: '1' + style2: '1' + style3: '1' + style4: '1' + style5: '1' + style6: '1' + style7: '1' + style8: '1' + style9: '1' + tr_chan: '0' + tr_delay: '0' + tr_level: '20.0' + tr_mode: qtgui.TRIG_MODE_NORM + tr_slope: qtgui.TRIG_SLOPE_POS + tr_tag: '"peak_1"' + type: float + update_time: '3.0' + width1: '1' + width10: '1' + width2: '1' + width3: '1' + width4: '1' + width5: '1' + width6: '1' + width7: '1' + width8: '1' + width9: '1' + ylabel: Amplitude + ymax: '1' + ymin: '-1' + yunit: '""' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [756, 1022] + rotation: 270 + state: enabled +- name: single_pole_iir_filter_xx_0 + id: single_pole_iir_filter_xx + parameters: + affinity: '' + alias: '' + alpha: '0.001' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [578, 355] + rotation: 0 + state: disabled +- name: tab_m + id: qtgui_tab_widget + parameters: + alias: '' + comment: '' + gui_hint: '' + label0: Tempest Main Tab + label1: Autocorrelation Plot Tab + label10: Tab 10 + label11: Tab 11 + label12: Tab 12 + label13: Tab 13 + label14: Tab 14 + label15: Tab 15 + label16: Tab 16 + label17: Tab 17 + label18: Tab 18 + label19: Tab 19 + label2: Tab 2 + label3: Tab 3 + label4: Tab 4 + label5: Tab 5 + label6: Tab 6 + label7: Tab 7 + label8: Tab 8 + label9: Tab 9 + num_tabs: '2' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [353, 8] + rotation: 0 + state: true +- name: tempest_fft_peak_fine_sampling_sync_0_0 + id: tempest_fft_peak_fine_sampling_sync + parameters: + Hvisible: interpolatedHsize + Vvisible: Vsize + affinity: '' + alias: '' + automatic_mode: 'True' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + refresh_rate: refresh_rate + sample_rate: samp_rate + size: int(fft_size) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [599, 1018] + rotation: 90 + state: enabled +- name: tempest_normalize_flow_0 + id: tempest_normalize_flow + parameters: + affinity: '' + alias: '' + alpha_avg: 1e-2 + comment: '' + max: '245' + maxoutbuf: '0' + min: '10' + minoutbuf: '0' + update_proba: '0.1' + window: interpolatedHsize + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1711, 893] + rotation: 270 + state: disabled +- name: tempest_sync_detector_0 + id: tempest_sync_detector + parameters: + affinity: '' + alias: '' + comment: '' + hblanking: interpolatedHblank + hscreen: interpolatedHscreen + maxoutbuf: '0' + minoutbuf: '0' + vblanking: Vblank + vscreen: Vsize-Vblank + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [842, 817] + rotation: 0 + state: disabled +- name: tempest_tempest_msgbtn_0 + id: tempest_tempest_msgbtn + parameters: + affinity: '' + alias: '' + comment: '' + gui_hint: tab_m@1 + label: 'Ratio Finder toggle ON or OFF (FFT peaks). ' + maxoutbuf: '0' + minoutbuf: '0' + msgName: pressed + relBackgroundColor: default + relFontColor: default + type: bool + value: 'True' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [309, 999] + rotation: 270 + state: true +- name: uhd_usrp_source_0 + id: uhd_usrp_source + parameters: + affinity: '' + alias: '' + ant0: '' + ant1: '' + ant10: '' + ant11: '' + ant12: '' + ant13: '' + ant14: '' + ant15: '' + ant16: '' + ant17: '' + ant18: '' + ant19: '' + ant2: '' + ant20: '' + ant21: '' + ant22: '' + ant23: '' + ant24: '' + ant25: '' + ant26: '' + ant27: '' + ant28: '' + ant29: '' + ant3: '' + ant30: '' + ant31: '' + ant4: '' + ant5: '' + ant6: '' + ant7: '' + ant8: '' + ant9: '' + bw0: '0' + bw1: '0' + bw10: '0' + bw11: '0' + bw12: '0' + bw13: '0' + bw14: '0' + bw15: '0' + bw16: '0' + bw17: '0' + bw18: '0' + bw19: '0' + bw2: '0' + bw20: '0' + bw21: '0' + bw22: '0' + bw23: '0' + bw24: '0' + bw25: '0' + bw26: '0' + bw27: '0' + bw28: '0' + bw29: '0' + bw3: '0' + bw30: '0' + bw31: '0' + bw4: '0' + bw5: '0' + bw6: '0' + bw7: '0' + bw8: '0' + bw9: '0' + center_freq0: px_rate*harmonic + center_freq1: '0' + center_freq10: '0' + center_freq11: '0' + center_freq12: '0' + center_freq13: '0' + center_freq14: '0' + center_freq15: '0' + center_freq16: '0' + center_freq17: '0' + center_freq18: '0' + center_freq19: '0' + center_freq2: '0' + center_freq20: '0' + center_freq21: '0' + center_freq22: '0' + center_freq23: '0' + center_freq24: '0' + center_freq25: '0' + center_freq26: '0' + center_freq27: '0' + center_freq28: '0' + center_freq29: '0' + center_freq3: '0' + center_freq30: '0' + center_freq31: '0' + center_freq4: '0' + center_freq5: '0' + center_freq6: '0' + center_freq7: '0' + center_freq8: '0' + center_freq9: '0' + clock_rate: '0.0' + clock_source0: '' + clock_source1: '' + clock_source2: '' + clock_source3: '' + clock_source4: '' + clock_source5: '' + clock_source6: '' + clock_source7: '' + comment: '' + dc_offs_enb0: '""' + dc_offs_enb1: '""' + dc_offs_enb10: '""' + dc_offs_enb11: '""' + dc_offs_enb12: '""' + dc_offs_enb13: '""' + dc_offs_enb14: '""' + dc_offs_enb15: '""' + dc_offs_enb16: '""' + dc_offs_enb17: '""' + dc_offs_enb18: '""' + dc_offs_enb19: '""' + dc_offs_enb2: '""' + dc_offs_enb20: '""' + dc_offs_enb21: '""' + dc_offs_enb22: '""' + dc_offs_enb23: '""' + dc_offs_enb24: '""' + dc_offs_enb25: '""' + dc_offs_enb26: '""' + dc_offs_enb27: '""' + dc_offs_enb28: '""' + dc_offs_enb29: '""' + dc_offs_enb3: '""' + dc_offs_enb30: '""' + dc_offs_enb31: '""' + dc_offs_enb4: '""' + dc_offs_enb5: '""' + dc_offs_enb6: '""' + dc_offs_enb7: '""' + dc_offs_enb8: '""' + dc_offs_enb9: '""' + dev_addr: '""' + dev_args: '"recv_frame_size= 65536, num_recv_frames=128"' + gain0: '50' + gain1: '0' + gain10: '0' + gain11: '0' + gain12: '0' + gain13: '0' + gain14: '0' + gain15: '0' + gain16: '0' + gain17: '0' + gain18: '0' + gain19: '0' + gain2: '0' + gain20: '0' + gain21: '0' + gain22: '0' + gain23: '0' + gain24: '0' + gain25: '0' + gain26: '0' + gain27: '0' + gain28: '0' + gain29: '0' + gain3: '0' + gain30: '0' + gain31: '0' + gain4: '0' + gain5: '0' + gain6: '0' + gain7: '0' + gain8: '0' + gain9: '0' + iq_imbal_enb0: '""' + iq_imbal_enb1: '""' + iq_imbal_enb10: '""' + iq_imbal_enb11: '""' + iq_imbal_enb12: '""' + iq_imbal_enb13: '""' + iq_imbal_enb14: '""' + iq_imbal_enb15: '""' + iq_imbal_enb16: '""' + iq_imbal_enb17: '""' + iq_imbal_enb18: '""' + iq_imbal_enb19: '""' + iq_imbal_enb2: '""' + iq_imbal_enb20: '""' + iq_imbal_enb21: '""' + iq_imbal_enb22: '""' + iq_imbal_enb23: '""' + iq_imbal_enb24: '""' + iq_imbal_enb25: '""' + iq_imbal_enb26: '""' + iq_imbal_enb27: '""' + iq_imbal_enb28: '""' + iq_imbal_enb29: '""' + iq_imbal_enb3: '""' + iq_imbal_enb30: '""' + iq_imbal_enb31: '""' + iq_imbal_enb4: '""' + iq_imbal_enb5: '""' + iq_imbal_enb6: '""' + iq_imbal_enb7: '""' + iq_imbal_enb8: '""' + iq_imbal_enb9: '""' + lo_export0: 'False' + lo_export1: 'False' + lo_export10: 'False' + lo_export11: 'False' + lo_export12: 'False' + lo_export13: 'False' + lo_export14: 'False' + lo_export15: 'False' + lo_export16: 'False' + lo_export17: 'False' + lo_export18: 'False' + lo_export19: 'False' + lo_export2: 'False' + lo_export20: 'False' + lo_export21: 'False' + lo_export22: 'False' + lo_export23: 'False' + lo_export24: 'False' + lo_export25: 'False' + lo_export26: 'False' + lo_export27: 'False' + lo_export28: 'False' + lo_export29: 'False' + lo_export3: 'False' + lo_export30: 'False' + lo_export31: 'False' + lo_export4: 'False' + lo_export5: 'False' + lo_export6: 'False' + lo_export7: 'False' + lo_export8: 'False' + lo_export9: 'False' + lo_source0: internal + lo_source1: internal + lo_source10: internal + lo_source11: internal + lo_source12: internal + lo_source13: internal + lo_source14: internal + lo_source15: internal + lo_source16: internal + lo_source17: internal + lo_source18: internal + lo_source19: internal + lo_source2: internal + lo_source20: internal + lo_source21: internal + lo_source22: internal + lo_source23: internal + lo_source24: internal + lo_source25: internal + lo_source26: internal + lo_source27: internal + lo_source28: internal + lo_source29: internal + lo_source3: internal + lo_source30: internal + lo_source31: internal + lo_source4: internal + lo_source5: internal + lo_source6: internal + lo_source7: internal + lo_source8: internal + lo_source9: internal + maxoutbuf: '0' + minoutbuf: '0' + nchan: '1' + norm_gain0: 'False' + norm_gain1: 'False' + norm_gain10: 'False' + norm_gain11: 'False' + norm_gain12: 'False' + norm_gain13: 'False' + norm_gain14: 'False' + norm_gain15: 'False' + norm_gain16: 'False' + norm_gain17: 'False' + norm_gain18: 'False' + norm_gain19: 'False' + norm_gain2: 'False' + norm_gain20: 'False' + norm_gain21: 'False' + norm_gain22: 'False' + norm_gain23: 'False' + norm_gain24: 'False' + norm_gain25: 'False' + norm_gain26: 'False' + norm_gain27: 'False' + norm_gain28: 'False' + norm_gain29: 'False' + norm_gain3: 'False' + norm_gain30: 'False' + norm_gain31: 'False' + norm_gain4: 'False' + norm_gain5: 'False' + norm_gain6: 'False' + norm_gain7: 'False' + norm_gain8: 'False' + norm_gain9: 'False' + num_mboards: '1' + otw: '' + rx_agc0: Default + rx_agc1: Default + rx_agc10: Default + rx_agc11: Default + rx_agc12: Default + rx_agc13: Default + rx_agc14: Default + rx_agc15: Default + rx_agc16: Default + rx_agc17: Default + rx_agc18: Default + rx_agc19: Default + rx_agc2: Default + rx_agc20: Default + rx_agc21: Default + rx_agc22: Default + rx_agc23: Default + rx_agc24: Default + rx_agc25: Default + rx_agc26: Default + rx_agc27: Default + rx_agc28: Default + rx_agc29: Default + rx_agc3: Default + rx_agc30: Default + rx_agc31: Default + rx_agc4: Default + rx_agc5: Default + rx_agc6: Default + rx_agc7: Default + rx_agc8: Default + rx_agc9: Default + samp_rate: samp_rate + sd_spec0: '' + sd_spec1: '' + sd_spec2: '' + sd_spec3: '' + sd_spec4: '' + sd_spec5: '' + sd_spec6: '' + sd_spec7: '' + show_lo_controls: 'False' + stream_args: '' + stream_chans: '[]' + sync: sync + time_source0: '' + time_source1: '' + time_source2: '' + time_source3: '' + time_source4: '' + time_source5: '' + time_source6: '' + time_source7: '' + type: fc32 + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [82, 742] + rotation: 0 + state: disabled +- name: video_sdl_sink_0_0_0 + id: video_sdl_sink + parameters: + affinity: '' + alias: '' + comment: "Enable this path when you are sure what the \nresolution is (and defaut\ + \ to those values on \nthe chooser)." + display_height: '517' + display_width: '1088' + fps: '0' + height: Vsize + num_channels: '1' + type: short + width: interpolatedHsize + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1711, 1227] + rotation: 270 + state: disabled + +connections: +- [FFT_autocorrelation_0_0, '0', tempest_fft_peak_fine_sampling_sync_0_0, '0'] +- [Keep_1_in_N_Frames_0, '0', FFT_autocorrelation_0_0, '0'] +- [Keep_1_in_N_Frames_0, '0', blocks_delay_1, '0'] +- [Keep_1_in_N_Frames_0, '0', blocks_multiply_conjugate_cc_0, '0'] +- [Keep_1_in_N_Frames_0, '0', interp_fir_filter_xxx_1, '0'] +- [analog_sig_source_x_0_0, '0', blocks_multiply_xx_0_0, '1'] +- [blocks_complex_to_arg_0, '0', qtgui_time_sink_x_0, '0'] +- [blocks_complex_to_real_0, '0', tempest_normalize_flow_0, '0'] +- [blocks_delay_0, '0', blocks_multiply_xx_0_0, '0'] +- [blocks_delay_1, '0', blocks_multiply_conjugate_cc_0, '1'] +- [blocks_file_source_0, '0', blocks_throttle_0, '0'] +- [blocks_float_to_short_0, '0', video_sdl_sink_0_0_0, '0'] +- [blocks_multiply_conjugate_cc_0, '0', single_pole_iir_filter_xx_0, '0'] +- [blocks_multiply_xx_0_0, '0', blocks_complex_to_real_0, '0'] +- [blocks_throttle_0, '0', Keep_1_in_N_Frames_0, '0'] +- [interp_fir_filter_xxx_1, '0', tempest_sync_detector_0, '0'] +- [single_pole_iir_filter_xx_0, '0', blocks_complex_to_arg_0, '0'] +- [tempest_fft_peak_fine_sampling_sync_0_0, '0', qtgui_time_sink_x_1, '0'] +- [tempest_fft_peak_fine_sampling_sync_0_0, en, tempest_sync_detector_0, en] +- [tempest_fft_peak_fine_sampling_sync_0_0, rate, uhd_usrp_source_0, command] +- [tempest_normalize_flow_0, '0', blocks_float_to_short_0, '0'] +- [tempest_sync_detector_0, '0', blocks_delay_0, '0'] +- [tempest_tempest_msgbtn_0, pressed, tempest_fft_peak_fine_sampling_sync_0_0, en] +- [uhd_usrp_source_0, '0', Keep_1_in_N_Frames_0, '0'] + +metadata: + file_format: 1 diff --git a/examples/infer_screen_example.grc b/examples/infer_screen_example.grc new file mode 100644 index 0000000..e0e6a7b --- /dev/null +++ b/examples/infer_screen_example.grc @@ -0,0 +1,767 @@ +options: + parameters: + author: '' + category: '[GRC Hier Blocks]' + cmake_opt: '' + comment: '' + copyright: '' + description: '' + gen_cmake: 'On' + gen_linking: dynamic + generate_options: qt_gui + hier_block_src_path: '.:' + id: manual_tempest_example + max_nouts: '0' + output_language: python + placement: (0,0) + qt_qss_theme: '' + realtime_scheduling: '1' + run: 'True' + run_command: '{python} -u {filename}' + run_options: prompt + sizing_mode: fixed + thread_safe_setters: '' + title: '' + window_size: '' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [417, 14] + rotation: 0 + state: enabled + +blocks: +- name: DroppedFrames + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: '' + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '0' + step: '1' + stop: '100' + value: '50' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [493, 427] + rotation: 0 + state: enabled +- name: Hsize + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Horizontal resolution (total) + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: int(4096*1.5) + value: '2200' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [402, 131] + rotation: 0 + state: enabled +- name: Vsize + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Vertical resolution (total) + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: int(2160*1.5) + value: '1125' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [545, 133] + rotation: 0 + state: enabled +- name: fft_size + id: variable + parameters: + comment: '' + value: 2**21 + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [688, 15] + rotation: 0 + state: true +- name: harmonic + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Harmonic + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '1' + step: '1' + stop: '10' + value: '2' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [298, 106] + rotation: 0 + state: enabled +- name: px_rate + id: variable + parameters: + comment: '' + value: Hsize*Vsize*refresh_rate + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [205, 38] + rotation: 0 + state: enabled +- name: refresh_rate + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: refr + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: '100' + value: '60' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [576, 23] + rotation: 0 + state: true +- name: samp_rate + id: variable + parameters: + comment: '' + value: int(50e6) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [791, 15] + rotation: 0 + state: enabled +- name: FFT_autocorrelation_0_0 + id: FFT_autocorrelation + parameters: + affinity: '' + alias: '' + alpha: '1.0' + comment: '' + fft_size: int(fft_size) + maxoutbuf: '0' + minoutbuf: '0' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [640, 371] + rotation: 0 + state: enabled +- name: Keep_1_in_N_Frames_0 + id: Keep_1_in_N_Frames + parameters: + affinity: '' + alias: '' + comment: '' + fac_decimation: DroppedFrames + fft_size: fft_size + maxoutbuf: '0' + minoutbuf: '0' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [425, 363] + rotation: 0 + state: enabled +- name: blocks_file_sink_0 + id: blocks_file_sink + parameters: + affinity: '' + alias: '' + append: 'False' + comment: '' + file: /home/felipe/gnuradio/git/grabaciones_local/autoespia.dat + type: complex + unbuffered: 'False' + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [305, 525] + rotation: 0 + state: disabled +- name: blocks_file_source_0 + id: blocks_file_source + parameters: + affinity: '' + alias: '' + begin_tag: pmt.PMT_NIL + comment: '' + file: /home/felipe/gnuradio/git/grabaciones_local/autoespia.dat + length: '0' + maxoutbuf: '0' + minoutbuf: '0' + offset: '0' + repeat: 'True' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [57, 198] + rotation: 0 + state: disabled +- name: blocks_throttle_0 + id: blocks_throttle + parameters: + affinity: '' + alias: '' + comment: '' + ignoretag: 'True' + maxoutbuf: '0' + minoutbuf: '0' + samples_per_second: samp_rate + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [306, 230] + rotation: 0 + state: disabled +- name: qtgui_time_sink_x_1 + id: qtgui_time_sink_x + parameters: + affinity: '' + alias: '' + alpha1: '1.0' + alpha10: '1.0' + alpha2: '1.0' + alpha3: '1.0' + alpha4: '1.0' + alpha5: '1.0' + alpha6: '1.0' + alpha7: '1.0' + alpha8: '1.0' + alpha9: '1.0' + autoscale: 'False' + axislabels: 'True' + color1: blue + color10: dark blue + color2: red + color3: green + color4: black + color5: cyan + color6: magenta + color7: yellow + color8: dark red + color9: dark green + comment: '' + ctrlpanel: 'False' + entags: 'True' + grid: 'True' + gui_hint: '' + label1: Signal 1 + label10: Signal 10 + label2: Signal 2 + label3: Signal 3 + label4: Signal 4 + label5: Signal 5 + label6: Signal 6 + label7: Signal 7 + label8: Signal 8 + label9: Signal 9 + legend: 'True' + marker1: '-1' + marker10: '-1' + marker2: '-1' + marker3: '-1' + marker4: '-1' + marker5: '-1' + marker6: '-1' + marker7: '-1' + marker8: '-1' + marker9: '-1' + name: '""' + nconnections: '1' + size: int(fft_size) + srate: samp_rate + stemplot: 'False' + style1: '1' + style10: '1' + style2: '1' + style3: '1' + style4: '1' + style5: '1' + style6: '1' + style7: '1' + style8: '1' + style9: '1' + tr_chan: '0' + tr_delay: '0' + tr_level: '15.0' + tr_mode: qtgui.TRIG_MODE_NORM + tr_slope: qtgui.TRIG_SLOPE_POS + tr_tag: '"peak_1"' + type: float + update_time: '2.0' + width1: '1' + width10: '1' + width2: '1' + width3: '1' + width4: '1' + width5: '1' + width6: '1' + width7: '1' + width8: '1' + width9: '1' + ylabel: Amplitude + ymax: '1' + ymin: '-1' + yunit: '""' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1048, 476] + rotation: 270 + state: enabled +- name: tempest_infer_screen_resolution_0 + id: tempest_infer_screen_resolution + parameters: + affinity: '' + alias: '' + automatic_mode: 'True' + comment: '' + fft_size: int(fft_size) + maxoutbuf: '0' + minoutbuf: '0' + refresh_rate: refresh_rate + sample_rate: samp_rate + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [848, 363] + rotation: 0 + state: enabled +- name: uhd_usrp_source_0 + id: uhd_usrp_source + parameters: + affinity: '' + alias: '' + ant0: '' + ant1: '' + ant10: '' + ant11: '' + ant12: '' + ant13: '' + ant14: '' + ant15: '' + ant16: '' + ant17: '' + ant18: '' + ant19: '' + ant2: '' + ant20: '' + ant21: '' + ant22: '' + ant23: '' + ant24: '' + ant25: '' + ant26: '' + ant27: '' + ant28: '' + ant29: '' + ant3: '' + ant30: '' + ant31: '' + ant4: '' + ant5: '' + ant6: '' + ant7: '' + ant8: '' + ant9: '' + bw0: '0' + bw1: '0' + bw10: '0' + bw11: '0' + bw12: '0' + bw13: '0' + bw14: '0' + bw15: '0' + bw16: '0' + bw17: '0' + bw18: '0' + bw19: '0' + bw2: '0' + bw20: '0' + bw21: '0' + bw22: '0' + bw23: '0' + bw24: '0' + bw25: '0' + bw26: '0' + bw27: '0' + bw28: '0' + bw29: '0' + bw3: '0' + bw30: '0' + bw31: '0' + bw4: '0' + bw5: '0' + bw6: '0' + bw7: '0' + bw8: '0' + bw9: '0' + center_freq0: px_rate*harmonic + center_freq1: '0' + center_freq10: '0' + center_freq11: '0' + center_freq12: '0' + center_freq13: '0' + center_freq14: '0' + center_freq15: '0' + center_freq16: '0' + center_freq17: '0' + center_freq18: '0' + center_freq19: '0' + center_freq2: '0' + center_freq20: '0' + center_freq21: '0' + center_freq22: '0' + center_freq23: '0' + center_freq24: '0' + center_freq25: '0' + center_freq26: '0' + center_freq27: '0' + center_freq28: '0' + center_freq29: '0' + center_freq3: '0' + center_freq30: '0' + center_freq31: '0' + center_freq4: '0' + center_freq5: '0' + center_freq6: '0' + center_freq7: '0' + center_freq8: '0' + center_freq9: '0' + clock_rate: '0.0' + clock_source0: '' + clock_source1: '' + clock_source2: '' + clock_source3: '' + clock_source4: '' + clock_source5: '' + clock_source6: '' + clock_source7: '' + comment: '' + dc_offs_enb0: '""' + dc_offs_enb1: '""' + dc_offs_enb10: '""' + dc_offs_enb11: '""' + dc_offs_enb12: '""' + dc_offs_enb13: '""' + dc_offs_enb14: '""' + dc_offs_enb15: '""' + dc_offs_enb16: '""' + dc_offs_enb17: '""' + dc_offs_enb18: '""' + dc_offs_enb19: '""' + dc_offs_enb2: '""' + dc_offs_enb20: '""' + dc_offs_enb21: '""' + dc_offs_enb22: '""' + dc_offs_enb23: '""' + dc_offs_enb24: '""' + dc_offs_enb25: '""' + dc_offs_enb26: '""' + dc_offs_enb27: '""' + dc_offs_enb28: '""' + dc_offs_enb29: '""' + dc_offs_enb3: '""' + dc_offs_enb30: '""' + dc_offs_enb31: '""' + dc_offs_enb4: '""' + dc_offs_enb5: '""' + dc_offs_enb6: '""' + dc_offs_enb7: '""' + dc_offs_enb8: '""' + dc_offs_enb9: '""' + dev_addr: '""' + dev_args: '"recv_frame_size= 65536, num_recv_frames=128"' + gain0: '50' + gain1: '0' + gain10: '0' + gain11: '0' + gain12: '0' + gain13: '0' + gain14: '0' + gain15: '0' + gain16: '0' + gain17: '0' + gain18: '0' + gain19: '0' + gain2: '0' + gain20: '0' + gain21: '0' + gain22: '0' + gain23: '0' + gain24: '0' + gain25: '0' + gain26: '0' + gain27: '0' + gain28: '0' + gain29: '0' + gain3: '0' + gain30: '0' + gain31: '0' + gain4: '0' + gain5: '0' + gain6: '0' + gain7: '0' + gain8: '0' + gain9: '0' + iq_imbal_enb0: '""' + iq_imbal_enb1: '""' + iq_imbal_enb10: '""' + iq_imbal_enb11: '""' + iq_imbal_enb12: '""' + iq_imbal_enb13: '""' + iq_imbal_enb14: '""' + iq_imbal_enb15: '""' + iq_imbal_enb16: '""' + iq_imbal_enb17: '""' + iq_imbal_enb18: '""' + iq_imbal_enb19: '""' + iq_imbal_enb2: '""' + iq_imbal_enb20: '""' + iq_imbal_enb21: '""' + iq_imbal_enb22: '""' + iq_imbal_enb23: '""' + iq_imbal_enb24: '""' + iq_imbal_enb25: '""' + iq_imbal_enb26: '""' + iq_imbal_enb27: '""' + iq_imbal_enb28: '""' + iq_imbal_enb29: '""' + iq_imbal_enb3: '""' + iq_imbal_enb30: '""' + iq_imbal_enb31: '""' + iq_imbal_enb4: '""' + iq_imbal_enb5: '""' + iq_imbal_enb6: '""' + iq_imbal_enb7: '""' + iq_imbal_enb8: '""' + iq_imbal_enb9: '""' + lo_export0: 'False' + lo_export1: 'False' + lo_export10: 'False' + lo_export11: 'False' + lo_export12: 'False' + lo_export13: 'False' + lo_export14: 'False' + lo_export15: 'False' + lo_export16: 'False' + lo_export17: 'False' + lo_export18: 'False' + lo_export19: 'False' + lo_export2: 'False' + lo_export20: 'False' + lo_export21: 'False' + lo_export22: 'False' + lo_export23: 'False' + lo_export24: 'False' + lo_export25: 'False' + lo_export26: 'False' + lo_export27: 'False' + lo_export28: 'False' + lo_export29: 'False' + lo_export3: 'False' + lo_export30: 'False' + lo_export31: 'False' + lo_export4: 'False' + lo_export5: 'False' + lo_export6: 'False' + lo_export7: 'False' + lo_export8: 'False' + lo_export9: 'False' + lo_source0: internal + lo_source1: internal + lo_source10: internal + lo_source11: internal + lo_source12: internal + lo_source13: internal + lo_source14: internal + lo_source15: internal + lo_source16: internal + lo_source17: internal + lo_source18: internal + lo_source19: internal + lo_source2: internal + lo_source20: internal + lo_source21: internal + lo_source22: internal + lo_source23: internal + lo_source24: internal + lo_source25: internal + lo_source26: internal + lo_source27: internal + lo_source28: internal + lo_source29: internal + lo_source3: internal + lo_source30: internal + lo_source31: internal + lo_source4: internal + lo_source5: internal + lo_source6: internal + lo_source7: internal + lo_source8: internal + lo_source9: internal + maxoutbuf: '0' + minoutbuf: '0' + nchan: '1' + norm_gain0: 'False' + norm_gain1: 'False' + norm_gain10: 'False' + norm_gain11: 'False' + norm_gain12: 'False' + norm_gain13: 'False' + norm_gain14: 'False' + norm_gain15: 'False' + norm_gain16: 'False' + norm_gain17: 'False' + norm_gain18: 'False' + norm_gain19: 'False' + norm_gain2: 'False' + norm_gain20: 'False' + norm_gain21: 'False' + norm_gain22: 'False' + norm_gain23: 'False' + norm_gain24: 'False' + norm_gain25: 'False' + norm_gain26: 'False' + norm_gain27: 'False' + norm_gain28: 'False' + norm_gain29: 'False' + norm_gain3: 'False' + norm_gain30: 'False' + norm_gain31: 'False' + norm_gain4: 'False' + norm_gain5: 'False' + norm_gain6: 'False' + norm_gain7: 'False' + norm_gain8: 'False' + norm_gain9: 'False' + num_mboards: '1' + otw: '' + rx_agc0: Default + rx_agc1: Default + rx_agc10: Default + rx_agc11: Default + rx_agc12: Default + rx_agc13: Default + rx_agc14: Default + rx_agc15: Default + rx_agc16: Default + rx_agc17: Default + rx_agc18: Default + rx_agc19: Default + rx_agc2: Default + rx_agc20: Default + rx_agc21: Default + rx_agc22: Default + rx_agc23: Default + rx_agc24: Default + rx_agc25: Default + rx_agc26: Default + rx_agc27: Default + rx_agc28: Default + rx_agc29: Default + rx_agc3: Default + rx_agc30: Default + rx_agc31: Default + rx_agc4: Default + rx_agc5: Default + rx_agc6: Default + rx_agc7: Default + rx_agc8: Default + rx_agc9: Default + samp_rate: samp_rate + sd_spec0: '' + sd_spec1: '' + sd_spec2: '' + sd_spec3: '' + sd_spec4: '' + sd_spec5: '' + sd_spec6: '' + sd_spec7: '' + show_lo_controls: 'False' + stream_args: '' + stream_chans: '[]' + sync: sync + time_source0: '' + time_source1: '' + time_source2: '' + time_source3: '' + time_source4: '' + time_source5: '' + time_source6: '' + time_source7: '' + type: fc32 + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [129, 331] + rotation: 0 + state: enabled + +connections: +- [FFT_autocorrelation_0_0, '0', tempest_infer_screen_resolution_0, '0'] +- [Keep_1_in_N_Frames_0, '0', FFT_autocorrelation_0_0, '0'] +- [blocks_file_source_0, '0', blocks_throttle_0, '0'] +- [blocks_throttle_0, '0', Keep_1_in_N_Frames_0, '0'] +- [tempest_infer_screen_resolution_0, '0', qtgui_time_sink_x_1, '0'] +- [uhd_usrp_source_0, '0', Keep_1_in_N_Frames_0, '0'] +- [uhd_usrp_source_0, '0', blocks_file_sink_0, '0'] + +metadata: + file_format: 1 diff --git a/examples/manual_simulated_tempest_example.grc b/examples/manual_simulated_tempest_example.grc new file mode 100644 index 0000000..8e261f0 --- /dev/null +++ b/examples/manual_simulated_tempest_example.grc @@ -0,0 +1,688 @@ +options: + parameters: + author: '' + category: '[GRC Hier Blocks]' + cmake_opt: '' + comment: '' + copyright: '' + description: '' + gen_cmake: 'On' + gen_linking: dynamic + generate_options: qt_gui + hier_block_src_path: '.:' + id: manual_simulated_tempest_example + max_nouts: '0' + output_language: python + placement: (0,0) + qt_qss_theme: '' + realtime_scheduling: '' + run: 'True' + run_command: '{python} -u {filename}' + run_options: prompt + sizing_mode: fixed + thread_safe_setters: '' + title: '' + window_size: '' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [8, 8] + rotation: 0 + state: enabled + +blocks: +- name: Hdisplay + id: variable + parameters: + comment: '' + value: '1024' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [464, 148] + rotation: 0 + state: enabled +- name: Hsize + id: variable + parameters: + comment: '' + value: '1024' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [440, 20] + rotation: 0 + state: enabled +- name: Hvisible + id: variable + parameters: + comment: '' + value: '800' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [352, 20] + rotation: 0 + state: enabled +- name: Vdisplay + id: variable + parameters: + comment: '' + value: '768' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [384, 148] + rotation: 0 + state: enabled +- name: Vsize + id: variable + parameters: + comment: '' + value: '624' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [440, 84] + rotation: 0 + state: enabled +- name: Vvisible + id: variable + parameters: + comment: '' + value: '600' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [352, 84] + rotation: 0 + state: enabled +- name: decim + id: variable + parameters: + comment: '' + value: inter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [304, 148] + rotation: 0 + state: enabled +- name: epsilon_channel + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: 1,0,1,1 + label: Sampling error + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '-0.1' + step: 10e-6 + stop: '0.1' + value: '0' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [904, 180] + rotation: 0 + state: enabled +- name: freq + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: 0,0,1,1 + label: Frequency Error (normalized) + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '-1' + step: 1e-5 + stop: '1' + value: '0' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [584, 180] + rotation: 0 + state: enabled +- name: harmonic + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: 1,1,1,1 + label: Harmonic + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '1' + step: '1' + stop: '10' + value: '1' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1048, 180] + rotation: 0 + state: enabled +- name: horizontal_offset + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: 3,0,1,1 + label: Horizontal offset + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: interpolatedHsize + value: '0' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [728, 12] + rotation: 0 + state: enabled +- name: inter + id: variable + parameters: + comment: '' + value: '10' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [232, 148] + rotation: 0 + state: enabled +- name: interpolatedHsize + id: variable + parameters: + comment: '' + value: int(Hsize/float(px_rate)*usrp_rate) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1008, 20] + rotation: 0 + state: enabled +- name: inverted + id: variable_qtgui_chooser + parameters: + comment: '' + gui_hint: 2,1,1,1 + label: Inverted colors? + label0: 'Yes' + label1: 'No' + label2: '' + label3: '' + label4: '' + labels: '[]' + num_opts: '2' + option0: '0' + option1: '1' + option2: '2' + option3: '3' + option4: '4' + options: '[0, 1, 2]' + orient: Qt.QHBoxLayout + type: real + value: '1' + widget: radio_buttons + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [592, 12] + rotation: 0 + state: enabled +- name: lines_offset + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: 3,1,1,1 + label: Vertical offset + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: Vsize + value: int(Vsize/2) + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [872, 12] + rotation: 0 + state: enabled +- name: noise + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: 0,1,1,1 + label: Noise Power + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '0' + step: 1e-4 + stop: 2e-2 + value: 1e-3 + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [768, 180] + rotation: 0 + state: enabled +- name: px_rate + id: variable + parameters: + comment: '' + value: Hsize*Vsize*refresh_rate + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [0, 76] + rotation: 0 + state: enabled +- name: rectangular_pulse + id: variable + parameters: + comment: '' + value: '[0.7/255]*inter' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [224, 84] + rotation: 0 + state: enabled +- name: refresh_rate + id: variable + parameters: + comment: '' + value: '60' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [248, 20] + rotation: 0 + state: enabled +- name: samp_rate + id: variable + parameters: + comment: '' + value: px_rate*inter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [8, 204] + rotation: 0 + state: enabled +- name: usrp_rate + id: variable + parameters: + comment: '' + value: int(50e6) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [8, 140] + rotation: 0 + state: enabled +- name: analog_sig_source_x_0 + id: analog_sig_source_x + parameters: + affinity: '' + alias: '' + amp: '1' + comment: '' + freq: px_rate*harmonic + maxoutbuf: '0' + minoutbuf: '0' + offset: '0' + phase: '0' + samp_rate: samp_rate + type: complex + waveform: analog.GR_COS_WAVE + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [568, 580] + rotation: 0 + state: enabled +- name: blocks_complex_to_mag_0 + id: blocks_complex_to_mag + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [923, 797] + rotation: 180 + state: enabled +- name: blocks_delay_0 + id: blocks_delay + parameters: + affinity: '' + alias: '' + comment: '' + delay: interpolatedHsize*lines_offset+horizontal_offset + maxoutbuf: '0' + minoutbuf: '0' + num_ports: '1' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1091, 793] + rotation: 180 + state: enabled +- name: blocks_float_to_short_0 + id: blocks_float_to_short + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + scale: inverted + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [412, 714] + rotation: 180 + state: enabled +- name: blocks_float_to_short_0_0 + id: blocks_float_to_short + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + scale: inverted + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [235, 893] + rotation: 180 + state: disabled +- name: blocks_multiply_xx_0 + id: blocks_multiply_xx + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + num_inputs: '2' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [867, 498] + rotation: 0 + state: enabled +- name: blocks_throttle_0_0 + id: blocks_throttle + parameters: + affinity: '' + alias: '' + comment: '' + ignoretag: 'True' + maxoutbuf: '0' + minoutbuf: '0' + samples_per_second: samp_rate + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [576, 492] + rotation: 0 + state: enabled +- name: channels_channel_model_0 + id: channels_channel_model + parameters: + affinity: '' + alias: '' + block_tags: 'False' + comment: '' + epsilon: epsilon_channel+1 + freq_offset: freq + maxoutbuf: '0' + minoutbuf: '0' + noise_voltage: noise + seed: '0' + taps: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1305, 469] + rotation: 0 + state: enabled +- name: interp_fir_filter_xxx_0 + id: interp_fir_filter_xxx + parameters: + affinity: '' + alias: '' + comment: genero la forma de onda en el cable + interp: inter + maxoutbuf: '0' + minoutbuf: '0' + samp_delay: '0' + taps: rectangular_pulse + type: fcc + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [296, 492] + rotation: 0 + state: enabled +- name: rational_resampler_xxx_0 + id: rational_resampler_xxx + parameters: + affinity: '' + alias: '' + comment: '' + decim: samp_rate + fbw: '0.4' + interp: usrp_rate + maxoutbuf: '0' + minoutbuf: '0' + taps: '' + type: ccc + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1049, 486] + rotation: 0 + state: enabled +- name: tempest_fine_sampling_synchronization_0 + id: tempest_fine_sampling_synchronization + parameters: + Htotal: interpolatedHsize + Vtotal: Vsize + affinity: '' + alias: '' + comment: '' + correct_sampling: '1' + max_deviation: 100.0/interpolatedHsize + maxoutbuf: '0' + minoutbuf: '0' + update_proba: 1.0/(interpolatedHsize*Vsize) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1243, 761] + rotation: 180 + state: enabled +- name: tempest_framing_0 + id: tempest_framing + parameters: + Hdisplay: Hdisplay + Htotal: interpolatedHsize + Vdisplay: Vdisplay + Vtotal: Vsize + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [379, 869] + rotation: 180 + state: disabled +- name: tempest_image_source_0 + id: tempest_image_source + parameters: + Htotal: '1024' + Hvisible: '800' + Vtotal: '624' + Vvisible: '600' + affinity: '' + alias: '' + comment: '' + image_file: /home/emidan19/Downloads/Imagen_800_600.png + maxoutbuf: '0' + minoutbuf: '0' + repeatmode: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [0, 460] + rotation: 0 + state: enabled +- name: tempest_normalize_flow_0 + id: tempest_normalize_flow + parameters: + affinity: '' + alias: '' + alpha_avg: 1e-2 + comment: '' + max: '245' + maxoutbuf: '0' + min: '10' + minoutbuf: '0' + update_proba: '0.1' + window: interpolatedHsize + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [620, 762] + rotation: 180 + state: enabled +- name: video_sdl_sink_0_0 + id: video_sdl_sink + parameters: + affinity: '' + alias: '' + comment: "Enable this path when you are not sure what the \nresolution is and\ + \ you want to try several ones \non run-time. Then, enable the other path." + display_height: Vdisplay + display_width: Hdisplay + fps: '0' + height: Vdisplay + num_channels: '1' + type: short + width: Hdisplay + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [51, 861] + rotation: 180 + state: disabled +- name: video_sdl_sink_0_0_0 + id: video_sdl_sink + parameters: + affinity: '' + alias: '' + comment: "Enable this path when you are sure what the \nresolution is (and defaut\ + \ to those values on \nthe chooser)." + display_height: Vsize + display_width: Hsize + fps: '0' + height: Vsize + num_channels: '1' + type: short + width: interpolatedHsize + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [204, 682] + rotation: 180 + state: enabled + +connections: +- [analog_sig_source_x_0, '0', blocks_multiply_xx_0, '1'] +- [blocks_complex_to_mag_0, '0', tempest_normalize_flow_0, '0'] +- [blocks_delay_0, '0', blocks_complex_to_mag_0, '0'] +- [blocks_float_to_short_0, '0', video_sdl_sink_0_0_0, '0'] +- [blocks_float_to_short_0_0, '0', video_sdl_sink_0_0, '0'] +- [blocks_multiply_xx_0, '0', rational_resampler_xxx_0, '0'] +- [blocks_throttle_0_0, '0', blocks_multiply_xx_0, '0'] +- [channels_channel_model_0, '0', tempest_fine_sampling_synchronization_0, '0'] +- [interp_fir_filter_xxx_0, '0', blocks_throttle_0_0, '0'] +- [rational_resampler_xxx_0, '0', channels_channel_model_0, '0'] +- [tempest_fine_sampling_synchronization_0, '0', blocks_delay_0, '0'] +- [tempest_framing_0, '0', blocks_float_to_short_0_0, '0'] +- [tempest_image_source_0, '0', interp_fir_filter_xxx_0, '0'] +- [tempest_normalize_flow_0, '0', blocks_float_to_short_0, '0'] +- [tempest_normalize_flow_0, '0', tempest_framing_0, '0'] + +metadata: + file_format: 1 diff --git a/examples/manual_simulated_tempest_example.py b/examples/manual_simulated_tempest_example.py new file mode 100755 index 0000000..6ceb66a --- /dev/null +++ b/examples/manual_simulated_tempest_example.py @@ -0,0 +1,401 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +# +# SPDX-License-Identifier: GPL-3.0 +# +# GNU Radio Python Flow Graph +# Title: Manual Simulated Tempest Example +# GNU Radio version: 3.8.5.0 + +from distutils.version import StrictVersion + +if __name__ == '__main__': + import ctypes + import sys + if sys.platform.startswith('linux'): + try: + x11 = ctypes.cdll.LoadLibrary('libX11.so') + x11.XInitThreads() + except: + print("Warning: failed to XInitThreads()") + +from PyQt5 import Qt +from PyQt5.QtCore import QObject, pyqtSlot +from gnuradio import analog +from gnuradio import blocks +from gnuradio import channels +from gnuradio.filter import firdes +from gnuradio import filter +from gnuradio import gr +import sys +import signal +from argparse import ArgumentParser +from gnuradio.eng_arg import eng_float, intx +from gnuradio import eng_notation +from gnuradio import video_sdl +from gnuradio.qtgui import Range, RangeWidget +import tempest + +from gnuradio import qtgui + +class manual_simulated_tempest_example(gr.top_block, Qt.QWidget): + + def __init__(self): + gr.top_block.__init__(self, "Manual Simulated Tempest Example") + Qt.QWidget.__init__(self) + self.setWindowTitle("Manual Simulated Tempest Example") + qtgui.util.check_set_qss() + try: + self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc')) + except: + pass + self.top_scroll_layout = Qt.QVBoxLayout() + self.setLayout(self.top_scroll_layout) + self.top_scroll = Qt.QScrollArea() + self.top_scroll.setFrameStyle(Qt.QFrame.NoFrame) + self.top_scroll_layout.addWidget(self.top_scroll) + self.top_scroll.setWidgetResizable(True) + self.top_widget = Qt.QWidget() + self.top_scroll.setWidget(self.top_widget) + self.top_layout = Qt.QVBoxLayout(self.top_widget) + self.top_grid_layout = Qt.QGridLayout() + self.top_layout.addLayout(self.top_grid_layout) + + self.settings = Qt.QSettings("GNU Radio", "manual_simulated_tempest_example") + + try: + if StrictVersion(Qt.qVersion()) < StrictVersion("5.0.0"): + self.restoreGeometry(self.settings.value("geometry").toByteArray()) + else: + self.restoreGeometry(self.settings.value("geometry")) + except: + pass + + ################################################## + # Variables + ################################################## + self.refresh_rate = refresh_rate = 60 + self.Vsize = Vsize = 624 + self.Hsize = Hsize = 1024 + self.usrp_rate = usrp_rate = int(50e6) + self.px_rate = px_rate = Hsize*Vsize*refresh_rate + self.inter = inter = 10 + self.samp_rate = samp_rate = px_rate*inter + self.rectangular_pulse = rectangular_pulse = [0.7/255]*inter + self.noise = noise = 1e-3 + self.lines_offset = lines_offset = int(Vsize/2) + self.inverted = inverted = 1 + self.interpolatedHsize = interpolatedHsize = int(Hsize/float(px_rate)*usrp_rate) + self.horizontal_offset = horizontal_offset = 0 + self.harmonic = harmonic = 1 + self.freq = freq = 0 + self.epsilon_channel = epsilon_channel = 0 + self.decim = decim = inter + self.Vvisible = Vvisible = 600 + self.Vdisplay = Vdisplay = 768 + self.Hvisible = Hvisible = 800 + self.Hdisplay = Hdisplay = 1024 + + ################################################## + # Blocks + ################################################## + self._lines_offset_range = Range(0, Vsize, 1, int(Vsize/2), 200) + self._lines_offset_win = RangeWidget(self._lines_offset_range, self.set_lines_offset, 'Vertical offset', "counter_slider", int) + self.top_grid_layout.addWidget(self._lines_offset_win, 3, 1, 1, 1) + for r in range(3, 4): + self.top_grid_layout.setRowStretch(r, 1) + for c in range(1, 2): + self.top_grid_layout.setColumnStretch(c, 1) + # Create the options list + self._inverted_options = [0, 1] + # Create the labels list + self._inverted_labels = ['Yes', 'No'] + # Create the combo box + # Create the radio buttons + self._inverted_group_box = Qt.QGroupBox('Inverted colors?' + ": ") + self._inverted_box = Qt.QHBoxLayout() + class variable_chooser_button_group(Qt.QButtonGroup): + def __init__(self, parent=None): + Qt.QButtonGroup.__init__(self, parent) + @pyqtSlot(int) + def updateButtonChecked(self, button_id): + self.button(button_id).setChecked(True) + self._inverted_button_group = variable_chooser_button_group() + self._inverted_group_box.setLayout(self._inverted_box) + for i, _label in enumerate(self._inverted_labels): + radio_button = Qt.QRadioButton(_label) + self._inverted_box.addWidget(radio_button) + self._inverted_button_group.addButton(radio_button, i) + self._inverted_callback = lambda i: Qt.QMetaObject.invokeMethod(self._inverted_button_group, "updateButtonChecked", Qt.Q_ARG("int", self._inverted_options.index(i))) + self._inverted_callback(self.inverted) + self._inverted_button_group.buttonClicked[int].connect( + lambda i: self.set_inverted(self._inverted_options[i])) + self.top_grid_layout.addWidget(self._inverted_group_box, 2, 1, 1, 1) + for r in range(2, 3): + self.top_grid_layout.setRowStretch(r, 1) + for c in range(1, 2): + self.top_grid_layout.setColumnStretch(c, 1) + self._horizontal_offset_range = Range(0, interpolatedHsize, 1, 0, 200) + self._horizontal_offset_win = RangeWidget(self._horizontal_offset_range, self.set_horizontal_offset, 'Horizontal offset', "counter_slider", int) + self.top_grid_layout.addWidget(self._horizontal_offset_win, 3, 0, 1, 1) + for r in range(3, 4): + self.top_grid_layout.setRowStretch(r, 1) + for c in range(0, 1): + self.top_grid_layout.setColumnStretch(c, 1) + self._harmonic_range = Range(1, 10, 1, 1, 200) + self._harmonic_win = RangeWidget(self._harmonic_range, self.set_harmonic, 'Harmonic', "counter_slider", float) + self.top_grid_layout.addWidget(self._harmonic_win, 1, 1, 1, 1) + for r in range(1, 2): + self.top_grid_layout.setRowStretch(r, 1) + for c in range(1, 2): + self.top_grid_layout.setColumnStretch(c, 1) + self.video_sdl_sink_0_0_0 = video_sdl.sink_s(0, interpolatedHsize, Vsize, 0, Hsize, Vsize) + self.tempest_normalize_flow_0 = tempest.normalize_flow(10, 245, interpolatedHsize, 1e-2, 0.1) + self.tempest_image_source_0 = tempest.image_source('/home/emidan19/Downloads/Imagen_800_600.png', 800, 600, 1024, 624, 1) + self.tempest_fine_sampling_synchronization_0 = tempest.fine_sampling_synchronization(interpolatedHsize, Vsize, 1, 100.0/interpolatedHsize, 1.0/(interpolatedHsize*Vsize)) + self.rational_resampler_xxx_0 = filter.rational_resampler_ccc( + interpolation=usrp_rate, + decimation=samp_rate, + taps=None, + fractional_bw=0.4) + self._noise_range = Range(0, 2e-2, 1e-4, 1e-3, 200) + self._noise_win = RangeWidget(self._noise_range, self.set_noise, 'Noise Power', "counter_slider", float) + self.top_grid_layout.addWidget(self._noise_win, 0, 1, 1, 1) + for r in range(0, 1): + self.top_grid_layout.setRowStretch(r, 1) + for c in range(1, 2): + self.top_grid_layout.setColumnStretch(c, 1) + self.interp_fir_filter_xxx_0 = filter.interp_fir_filter_fcc(inter, rectangular_pulse) + self.interp_fir_filter_xxx_0.declare_sample_delay(0) + self._freq_range = Range(-1, 1, 1e-5, 0, 200) + self._freq_win = RangeWidget(self._freq_range, self.set_freq, 'Frequency Error (normalized)', "counter_slider", float) + self.top_grid_layout.addWidget(self._freq_win, 0, 0, 1, 1) + for r in range(0, 1): + self.top_grid_layout.setRowStretch(r, 1) + for c in range(0, 1): + self.top_grid_layout.setColumnStretch(c, 1) + self._epsilon_channel_range = Range(-0.1, 0.1, 10e-6, 0, 200) + self._epsilon_channel_win = RangeWidget(self._epsilon_channel_range, self.set_epsilon_channel, 'Sampling error', "counter_slider", float) + self.top_grid_layout.addWidget(self._epsilon_channel_win, 1, 0, 1, 1) + for r in range(1, 2): + self.top_grid_layout.setRowStretch(r, 1) + for c in range(0, 1): + self.top_grid_layout.setColumnStretch(c, 1) + self.blocks_throttle_0_0 = blocks.throttle(gr.sizeof_gr_complex*1, samp_rate,True) + self.blocks_multiply_xx_0 = blocks.multiply_vcc(1) + self.blocks_float_to_short_0 = blocks.float_to_short(1, inverted) + self.blocks_delay_0 = blocks.delay(gr.sizeof_gr_complex*1, interpolatedHsize*lines_offset+horizontal_offset) + self.blocks_complex_to_mag_0 = blocks.complex_to_mag(1) + self.analog_sig_source_x_0 = analog.sig_source_c(samp_rate, analog.GR_COS_WAVE, px_rate*harmonic, 1, 0, 0) + + + ################################################## + # Connections + ################################################## + self.connect((self.analog_sig_source_x_0, 0), (self.blocks_multiply_xx_0, 1)) + self.connect((self.blocks_complex_to_mag_0, 0), (self.tempest_normalize_flow_0, 0)) + self.connect((self.blocks_delay_0, 0), (self.blocks_complex_to_mag_0, 0)) + self.connect((self.blocks_float_to_short_0, 0), (self.video_sdl_sink_0_0_0, 0)) + self.connect((self.blocks_multiply_xx_0, 0), (self.rational_resampler_xxx_0, 0)) + self.connect((self.blocks_throttle_0_0, 0), (self.blocks_multiply_xx_0, 0)) + self.connect((self.interp_fir_filter_xxx_0, 0), (self.blocks_throttle_0_0, 0)) + self.connect((self.rational_resampler_xxx_0, 0), (self.tempest_fine_sampling_synchronization_0, 0)) + self.connect((self.tempest_fine_sampling_synchronization_0, 0), (self.blocks_delay_0, 0)) + self.connect((self.tempest_image_source_0, 0), (self.interp_fir_filter_xxx_0, 0)) + self.connect((self.tempest_normalize_flow_0, 0), (self.blocks_float_to_short_0, 0)) + + + def closeEvent(self, event): + self.settings = Qt.QSettings("GNU Radio", "manual_simulated_tempest_example") + self.settings.setValue("geometry", self.saveGeometry()) + event.accept() + + def get_refresh_rate(self): + return self.refresh_rate + + def set_refresh_rate(self, refresh_rate): + self.refresh_rate = refresh_rate + self.set_px_rate(self.Hsize*self.Vsize*self.refresh_rate) + + def get_Vsize(self): + return self.Vsize + + def set_Vsize(self, Vsize): + self.Vsize = Vsize + self.set_lines_offset(int(self.Vsize/2)) + self.set_px_rate(self.Hsize*self.Vsize*self.refresh_rate) + self.tempest_fine_sampling_synchronization_0.set_Htotal_Vtotal(self.interpolatedHsize, self.Vsize) + + def get_Hsize(self): + return self.Hsize + + def set_Hsize(self, Hsize): + self.Hsize = Hsize + self.set_interpolatedHsize(int(self.Hsize/float(self.px_rate)*self.usrp_rate)) + self.set_px_rate(self.Hsize*self.Vsize*self.refresh_rate) + + def get_usrp_rate(self): + return self.usrp_rate + + def set_usrp_rate(self, usrp_rate): + self.usrp_rate = usrp_rate + self.set_interpolatedHsize(int(self.Hsize/float(self.px_rate)*self.usrp_rate)) + + def get_px_rate(self): + return self.px_rate + + def set_px_rate(self, px_rate): + self.px_rate = px_rate + self.set_interpolatedHsize(int(self.Hsize/float(self.px_rate)*self.usrp_rate)) + self.set_samp_rate(self.px_rate*self.inter) + self.analog_sig_source_x_0.set_frequency(self.px_rate*self.harmonic) + + def get_inter(self): + return self.inter + + def set_inter(self, inter): + self.inter = inter + self.set_decim(self.inter) + self.set_rectangular_pulse([0.7/255]*self.inter) + self.set_samp_rate(self.px_rate*self.inter) + + def get_samp_rate(self): + return self.samp_rate + + def set_samp_rate(self, samp_rate): + self.samp_rate = samp_rate + self.analog_sig_source_x_0.set_sampling_freq(self.samp_rate) + self.blocks_throttle_0_0.set_sample_rate(self.samp_rate) + + def get_rectangular_pulse(self): + return self.rectangular_pulse + + def set_rectangular_pulse(self, rectangular_pulse): + self.rectangular_pulse = rectangular_pulse + self.interp_fir_filter_xxx_0.set_taps(self.rectangular_pulse) + + def get_noise(self): + return self.noise + + def set_noise(self, noise): + self.noise = noise + self.channels_channel_model_0.set_noise_voltage(self.noise) + + def get_lines_offset(self): + return self.lines_offset + + def set_lines_offset(self, lines_offset): + self.lines_offset = lines_offset + self.blocks_delay_0.set_dly(self.interpolatedHsize*self.lines_offset+self.horizontal_offset) + + def get_inverted(self): + return self.inverted + + def set_inverted(self, inverted): + self.inverted = inverted + self._inverted_callback(self.inverted) + self.blocks_float_to_short_0.set_scale(self.inverted) + + def get_interpolatedHsize(self): + return self.interpolatedHsize + + def set_interpolatedHsize(self, interpolatedHsize): + self.interpolatedHsize = interpolatedHsize + self.blocks_delay_0.set_dly(self.interpolatedHsize*self.lines_offset+self.horizontal_offset) + self.tempest_fine_sampling_synchronization_0.set_Htotal_Vtotal(self.interpolatedHsize, self.Vsize) + + def get_horizontal_offset(self): + return self.horizontal_offset + + def set_horizontal_offset(self, horizontal_offset): + self.horizontal_offset = horizontal_offset + self.blocks_delay_0.set_dly(self.interpolatedHsize*self.lines_offset+self.horizontal_offset) + + def get_harmonic(self): + return self.harmonic + + def set_harmonic(self, harmonic): + self.harmonic = harmonic + self.analog_sig_source_x_0.set_frequency(self.px_rate*self.harmonic) + + def get_freq(self): + return self.freq + + def set_freq(self, freq): + self.freq = freq + self.channels_channel_model_0.set_frequency_offset(self.freq) + + def get_epsilon_channel(self): + return self.epsilon_channel + + def set_epsilon_channel(self, epsilon_channel): + self.epsilon_channel = epsilon_channel + self.channels_channel_model_0.set_timing_offset(self.epsilon_channel+1) + + def get_decim(self): + return self.decim + + def set_decim(self, decim): + self.decim = decim + + def get_Vvisible(self): + return self.Vvisible + + def set_Vvisible(self, Vvisible): + self.Vvisible = Vvisible + + def get_Vdisplay(self): + return self.Vdisplay + + def set_Vdisplay(self, Vdisplay): + self.Vdisplay = Vdisplay + + def get_Hvisible(self): + return self.Hvisible + + def set_Hvisible(self, Hvisible): + self.Hvisible = Hvisible + + def get_Hdisplay(self): + return self.Hdisplay + + def set_Hdisplay(self, Hdisplay): + self.Hdisplay = Hdisplay + + + + + +def main(top_block_cls=manual_simulated_tempest_example, options=None): + + if StrictVersion("4.5.0") <= StrictVersion(Qt.qVersion()) < StrictVersion("5.0.0"): + style = gr.prefs().get_string('qtgui', 'style', 'raster') + Qt.QApplication.setGraphicsSystem(style) + qapp = Qt.QApplication(sys.argv) + + tb = top_block_cls() + + tb.start() + + tb.show() + + def sig_handler(sig=None, frame=None): + Qt.QApplication.quit() + + signal.signal(signal.SIGINT, sig_handler) + signal.signal(signal.SIGTERM, sig_handler) + + timer = Qt.QTimer() + timer.start(500) + timer.timeout.connect(lambda: None) + + def quitting(): + tb.stop() + tb.wait() + + qapp.aboutToQuit.connect(quitting) + qapp.exec_() + +if __name__ == '__main__': + main() diff --git a/examples/manual_tempest_example.grc b/examples/manual_tempest_example.grc new file mode 100644 index 0000000..b8ccbdc --- /dev/null +++ b/examples/manual_tempest_example.grc @@ -0,0 +1,847 @@ +options: + parameters: + author: '' + category: '[GRC Hier Blocks]' + cmake_opt: '' + comment: '' + copyright: '' + description: '' + gen_cmake: 'On' + gen_linking: dynamic + generate_options: qt_gui + hier_block_src_path: '.:' + id: manual_tempest_example + max_nouts: '0' + output_language: python + placement: (0,0) + qt_qss_theme: '' + realtime_scheduling: '' + run: 'True' + run_command: '{python} -u {filename}' + run_options: prompt + sizing_mode: fixed + thread_safe_setters: '' + title: '' + window_size: '' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [8, 8] + rotation: 0 + state: enabled + +blocks: +- name: Hdisplay + id: variable + parameters: + comment: '' + value: '1024' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1176, 28] + rotation: 0 + state: enabled +- name: Hsize + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: 0, 0, 1,1 + label: Horizontal resolution (total) + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: int(4096*1.5) + value: '1344' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [680, 12] + rotation: 0 + state: enabled +- name: Vdisplay + id: variable + parameters: + comment: '' + value: '768' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1176, 92] + rotation: 0 + state: enabled +- name: Vsize + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: 0, 1, 1,1 + label: Vertical resolution (total) + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: int(2160*1.5) + value: '806' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [568, 148] + rotation: 0 + state: enabled +- name: harmonic + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: 3,1,1,1 + label: Harmonic + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '1' + step: '1' + stop: '10' + value: '1' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [728, 148] + rotation: 0 + state: enabled +- name: horizontal_offset + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: 1,0,1,2 + label: Horizontal offset + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: interpolatedHsize + value: '0' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [848, 148] + rotation: 0 + state: enabled +- name: interpolatedHsize + id: variable + parameters: + comment: '' + value: int(Hsize/float(px_rate)*samp_rate) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1040, 12] + rotation: 0 + state: enabled +- name: inverted + id: variable_qtgui_chooser + parameters: + comment: '' + gui_hint: 4,0,1,1 + label: Inverted colors? + label0: 'Yes' + label1: 'No' + label2: '' + label3: '' + label4: '' + labels: '[]' + num_opts: '2' + option1: '1' + option2: '2' + option3: '3' + option4: '4' + options: '[0, 1, 2]' + orient: Qt.QHBoxLayout + type: real + value: '1' + widget: radio_buttons + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [384, 12] + rotation: 0 + state: enabled +- name: lines_offset + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: 2,0,1,2 + label: Vertical offset + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: Vsize + value: int(Vsize/2) + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [848, 12] + rotation: 0 + state: enabled +- name: px_rate + id: variable + parameters: + comment: '' + value: Hsize*Vsize*refresh_rate + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [0, 76] + rotation: 0 + state: enabled +- name: refresh_rate + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: 3,0,1,1 + label: Refresh Rate (Hz) + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '0' + step: '1' + stop: '240' + value: '60' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [536, 12] + rotation: 0 + state: enabled +- name: samp_rate + id: variable + parameters: + comment: '' + value: int(30e6) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [8, 140] + rotation: 0 + state: enabled +- name: blocks_complex_to_mag_0 + id: blocks_complex_to_mag + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1008, 354] + rotation: 0 + state: enabled +- name: blocks_delay_0 + id: blocks_delay + parameters: + affinity: '' + alias: '' + comment: '' + delay: interpolatedHsize*lines_offset+horizontal_offset + maxoutbuf: '0' + minoutbuf: '0' + num_ports: '1' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [762, 351] + rotation: 0 + state: enabled +- name: blocks_file_source_0 + id: blocks_file_source + parameters: + affinity: '' + alias: '' + begin_tag: pmt.PMT_NIL + comment: '' + file: /home/gnuradio/persistent/30M_tv_g50_v2.dat + length: '0' + maxoutbuf: '0' + minoutbuf: '0' + offset: '0' + repeat: 'True' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [22, 310] + rotation: 0 + state: enabled +- name: blocks_float_to_short_0 + id: blocks_float_to_short + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + scale: inverted + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [811, 486] + rotation: 180 + state: disabled +- name: blocks_float_to_short_0_0 + id: blocks_float_to_short + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + scale: inverted + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1348, 643] + rotation: 180 + state: enabled +- name: blocks_throttle_0 + id: blocks_throttle + parameters: + affinity: '' + alias: '' + comment: '' + ignoretag: 'True' + maxoutbuf: '0' + minoutbuf: '0' + samples_per_second: samp_rate + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [283, 350] + rotation: 0 + state: enabled +- name: tempest_fine_sampling_synchronization_0 + id: tempest_fine_sampling_synchronization + parameters: + Htotal: interpolatedHsize + Vtotal: Vsize + affinity: '' + alias: '' + comment: '' + correct_sampling: '1' + max_deviation: 10.0/interpolatedHsize + maxoutbuf: '0' + minoutbuf: '0' + update_proba: 1e-2/(Hsize*Vsize) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [459, 318] + rotation: 0 + state: enabled +- name: tempest_framing_0 + id: tempest_framing + parameters: + Hdisplay: Hdisplay + Htotal: interpolatedHsize + Vdisplay: Vdisplay + Vtotal: Vsize + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1152, 454] + rotation: 180 + state: disabled +- name: tempest_normalize_flow_0 + id: tempest_normalize_flow + parameters: + affinity: '' + alias: '' + alpha_avg: 1e-2 + comment: '' + max: '245' + maxoutbuf: '0' + min: '10' + minoutbuf: '0' + update_proba: '0.1' + window: interpolatedHsize + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1208, 326] + rotation: 0 + state: enabled +- name: uhd_usrp_source_0 + id: uhd_usrp_source + parameters: + affinity: '' + alias: '' + ant0: '' + ant1: '' + ant10: '' + ant11: '' + ant12: '' + ant13: '' + ant14: '' + ant15: '' + ant16: '' + ant17: '' + ant18: '' + ant19: '' + ant2: '' + ant20: '' + ant21: '' + ant22: '' + ant23: '' + ant24: '' + ant25: '' + ant26: '' + ant27: '' + ant28: '' + ant29: '' + ant3: '' + ant30: '' + ant31: '' + ant4: '' + ant5: '' + ant6: '' + ant7: '' + ant8: '' + ant9: '' + bw0: '0' + bw1: '0' + bw10: '0' + bw11: '0' + bw12: '0' + bw13: '0' + bw14: '0' + bw15: '0' + bw16: '0' + bw17: '0' + bw18: '0' + bw19: '0' + bw2: '0' + bw20: '0' + bw21: '0' + bw22: '0' + bw23: '0' + bw24: '0' + bw25: '0' + bw26: '0' + bw27: '0' + bw28: '0' + bw29: '0' + bw3: '0' + bw30: '0' + bw31: '0' + bw4: '0' + bw5: '0' + bw6: '0' + bw7: '0' + bw8: '0' + bw9: '0' + center_freq0: px_rate*harmonic + center_freq1: '0' + center_freq10: '0' + center_freq11: '0' + center_freq12: '0' + center_freq13: '0' + center_freq14: '0' + center_freq15: '0' + center_freq16: '0' + center_freq17: '0' + center_freq18: '0' + center_freq19: '0' + center_freq2: '0' + center_freq20: '0' + center_freq21: '0' + center_freq22: '0' + center_freq23: '0' + center_freq24: '0' + center_freq25: '0' + center_freq26: '0' + center_freq27: '0' + center_freq28: '0' + center_freq29: '0' + center_freq3: '0' + center_freq30: '0' + center_freq31: '0' + center_freq4: '0' + center_freq5: '0' + center_freq6: '0' + center_freq7: '0' + center_freq8: '0' + center_freq9: '0' + clock_rate: '0.0' + clock_source0: '' + clock_source1: '' + clock_source2: '' + clock_source3: '' + clock_source4: '' + clock_source5: '' + clock_source6: '' + clock_source7: '' + comment: '' + dc_offs_enb0: '""' + dc_offs_enb1: '""' + dc_offs_enb10: '""' + dc_offs_enb11: '""' + dc_offs_enb12: '""' + dc_offs_enb13: '""' + dc_offs_enb14: '""' + dc_offs_enb15: '""' + dc_offs_enb16: '""' + dc_offs_enb17: '""' + dc_offs_enb18: '""' + dc_offs_enb19: '""' + dc_offs_enb2: '""' + dc_offs_enb20: '""' + dc_offs_enb21: '""' + dc_offs_enb22: '""' + dc_offs_enb23: '""' + dc_offs_enb24: '""' + dc_offs_enb25: '""' + dc_offs_enb26: '""' + dc_offs_enb27: '""' + dc_offs_enb28: '""' + dc_offs_enb29: '""' + dc_offs_enb3: '""' + dc_offs_enb30: '""' + dc_offs_enb31: '""' + dc_offs_enb4: '""' + dc_offs_enb5: '""' + dc_offs_enb6: '""' + dc_offs_enb7: '""' + dc_offs_enb8: '""' + dc_offs_enb9: '""' + dev_addr: '""' + dev_args: '""' + gain0: '50' + gain1: '0' + gain10: '0' + gain11: '0' + gain12: '0' + gain13: '0' + gain14: '0' + gain15: '0' + gain16: '0' + gain17: '0' + gain18: '0' + gain19: '0' + gain2: '0' + gain20: '0' + gain21: '0' + gain22: '0' + gain23: '0' + gain24: '0' + gain25: '0' + gain26: '0' + gain27: '0' + gain28: '0' + gain29: '0' + gain3: '0' + gain30: '0' + gain31: '0' + gain4: '0' + gain5: '0' + gain6: '0' + gain7: '0' + gain8: '0' + gain9: '0' + iq_imbal_enb0: '""' + iq_imbal_enb1: '""' + iq_imbal_enb10: '""' + iq_imbal_enb11: '""' + iq_imbal_enb12: '""' + iq_imbal_enb13: '""' + iq_imbal_enb14: '""' + iq_imbal_enb15: '""' + iq_imbal_enb16: '""' + iq_imbal_enb17: '""' + iq_imbal_enb18: '""' + iq_imbal_enb19: '""' + iq_imbal_enb2: '""' + iq_imbal_enb20: '""' + iq_imbal_enb21: '""' + iq_imbal_enb22: '""' + iq_imbal_enb23: '""' + iq_imbal_enb24: '""' + iq_imbal_enb25: '""' + iq_imbal_enb26: '""' + iq_imbal_enb27: '""' + iq_imbal_enb28: '""' + iq_imbal_enb29: '""' + iq_imbal_enb3: '""' + iq_imbal_enb30: '""' + iq_imbal_enb31: '""' + iq_imbal_enb4: '""' + iq_imbal_enb5: '""' + iq_imbal_enb6: '""' + iq_imbal_enb7: '""' + iq_imbal_enb8: '""' + iq_imbal_enb9: '""' + lo_export0: 'False' + lo_export1: 'False' + lo_export10: 'False' + lo_export11: 'False' + lo_export12: 'False' + lo_export13: 'False' + lo_export14: 'False' + lo_export15: 'False' + lo_export16: 'False' + lo_export17: 'False' + lo_export18: 'False' + lo_export19: 'False' + lo_export2: 'False' + lo_export20: 'False' + lo_export21: 'False' + lo_export22: 'False' + lo_export23: 'False' + lo_export24: 'False' + lo_export25: 'False' + lo_export26: 'False' + lo_export27: 'False' + lo_export28: 'False' + lo_export29: 'False' + lo_export3: 'False' + lo_export30: 'False' + lo_export31: 'False' + lo_export4: 'False' + lo_export5: 'False' + lo_export6: 'False' + lo_export7: 'False' + lo_export8: 'False' + lo_export9: 'False' + lo_source0: internal + lo_source1: internal + lo_source10: internal + lo_source11: internal + lo_source12: internal + lo_source13: internal + lo_source14: internal + lo_source15: internal + lo_source16: internal + lo_source17: internal + lo_source18: internal + lo_source19: internal + lo_source2: internal + lo_source20: internal + lo_source21: internal + lo_source22: internal + lo_source23: internal + lo_source24: internal + lo_source25: internal + lo_source26: internal + lo_source27: internal + lo_source28: internal + lo_source29: internal + lo_source3: internal + lo_source30: internal + lo_source31: internal + lo_source4: internal + lo_source5: internal + lo_source6: internal + lo_source7: internal + lo_source8: internal + lo_source9: internal + maxoutbuf: '0' + minoutbuf: '0' + nchan: '1' + norm_gain0: 'False' + norm_gain1: 'False' + norm_gain10: 'False' + norm_gain11: 'False' + norm_gain12: 'False' + norm_gain13: 'False' + norm_gain14: 'False' + norm_gain15: 'False' + norm_gain16: 'False' + norm_gain17: 'False' + norm_gain18: 'False' + norm_gain19: 'False' + norm_gain2: 'False' + norm_gain20: 'False' + norm_gain21: 'False' + norm_gain22: 'False' + norm_gain23: 'False' + norm_gain24: 'False' + norm_gain25: 'False' + norm_gain26: 'False' + norm_gain27: 'False' + norm_gain28: 'False' + norm_gain29: 'False' + norm_gain3: 'False' + norm_gain30: 'False' + norm_gain31: 'False' + norm_gain4: 'False' + norm_gain5: 'False' + norm_gain6: 'False' + norm_gain7: 'False' + norm_gain8: 'False' + norm_gain9: 'False' + num_mboards: '1' + otw: '' + rx_agc0: Default + rx_agc1: Default + rx_agc10: Default + rx_agc11: Default + rx_agc12: Default + rx_agc13: Default + rx_agc14: Default + rx_agc15: Default + rx_agc16: Default + rx_agc17: Default + rx_agc18: Default + rx_agc19: Default + rx_agc2: Default + rx_agc20: Default + rx_agc21: Default + rx_agc22: Default + rx_agc23: Default + rx_agc24: Default + rx_agc25: Default + rx_agc26: Default + rx_agc27: Default + rx_agc28: Default + rx_agc29: Default + rx_agc3: Default + rx_agc30: Default + rx_agc31: Default + rx_agc4: Default + rx_agc5: Default + rx_agc6: Default + rx_agc7: Default + rx_agc8: Default + rx_agc9: Default + samp_rate: samp_rate + sd_spec0: '' + sd_spec1: '' + sd_spec2: '' + sd_spec3: '' + sd_spec4: '' + sd_spec5: '' + sd_spec6: '' + sd_spec7: '' + show_lo_controls: 'False' + stream_args: '' + stream_chans: '[]' + sync: sync + time_source0: '' + time_source1: '' + time_source2: '' + time_source3: '' + time_source4: '' + time_source5: '' + time_source6: '' + time_source7: '' + type: fc32 + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [83, 446] + rotation: 0 + state: disabled +- name: video_sdl_sink_0_0 + id: video_sdl_sink + parameters: + affinity: '' + alias: '' + comment: "Enable this path when you are not sure what the \nresolution is and\ + \ you want to try several ones \non run-time. Then, enable the other path." + display_height: Vdisplay + display_width: Hdisplay + fps: '0' + height: Vdisplay + num_channels: '1' + type: short + width: Hdisplay + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [571, 454] + rotation: 180 + state: disabled +- name: video_sdl_sink_0_0_0 + id: video_sdl_sink + parameters: + affinity: '' + alias: '' + comment: "Enable this path when you are sure what the \nresolution is (and defaut\ + \ to those values on \nthe chooser)." + display_height: Vsize + display_width: Hsize + fps: '0' + height: Vsize + num_channels: '1' + type: short + width: interpolatedHsize + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1156, 611] + rotation: 180 + state: enabled + +connections: +- [blocks_complex_to_mag_0, '0', tempest_normalize_flow_0, '0'] +- [blocks_delay_0, '0', blocks_complex_to_mag_0, '0'] +- [blocks_file_source_0, '0', blocks_throttle_0, '0'] +- [blocks_float_to_short_0, '0', video_sdl_sink_0_0, '0'] +- [blocks_float_to_short_0_0, '0', video_sdl_sink_0_0_0, '0'] +- [blocks_throttle_0, '0', tempest_fine_sampling_synchronization_0, '0'] +- [tempest_fine_sampling_synchronization_0, '0', blocks_delay_0, '0'] +- [tempest_framing_0, '0', blocks_float_to_short_0, '0'] +- [tempest_normalize_flow_0, '0', blocks_float_to_short_0_0, '0'] +- [tempest_normalize_flow_0, '0', tempest_framing_0, '0'] +- [uhd_usrp_source_0, '0', tempest_fine_sampling_synchronization_0, '0'] + +metadata: + file_format: 1 diff --git a/examples/manual_tempest_example.py b/examples/manual_tempest_example.py new file mode 100755 index 0000000..ca90fb8 --- /dev/null +++ b/examples/manual_tempest_example.py @@ -0,0 +1,431 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +# +# SPDX-License-Identifier: GPL-3.0 +# +# GNU Radio Python Flow Graph +# Title: Manual Tempest Example +# GNU Radio version: 3.8.5.0 + +from distutils.version import StrictVersion + +if __name__ == '__main__': + import ctypes + import sys + if sys.platform.startswith('linux'): + try: + x11 = ctypes.cdll.LoadLibrary('libX11.so') + x11.XInitThreads() + except: + print("Warning: failed to XInitThreads()") + +import os +import sys +sys.path.append(os.environ.get('GRC_HIER_PATH', os.path.expanduser('~/.grc_gnuradio'))) + +from FFT_autocorrelation import FFT_autocorrelation # grc-generated hier_block +from Keep_1_in_N_Frames import Keep_1_in_N_Frames # grc-generated hier_block +from PyQt5 import Qt +from PyQt5.QtCore import QObject, pyqtSlot +from gnuradio import qtgui +from gnuradio.filter import firdes +import sip +from gnuradio import blocks +from gnuradio import gr +import signal +from argparse import ArgumentParser +from gnuradio.eng_arg import eng_float, intx +from gnuradio import eng_notation +from gnuradio import uhd +import time +from gnuradio import video_sdl +from gnuradio.qtgui import Range, RangeWidget +from math import pi +import tempest + +from gnuradio import qtgui + +class manual_tempest_example(gr.top_block, Qt.QWidget): + + def __init__(self): + gr.top_block.__init__(self, "Manual Tempest Example") + Qt.QWidget.__init__(self) + self.setWindowTitle("Manual Tempest Example") + qtgui.util.check_set_qss() + try: + self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc')) + except: + pass + self.top_scroll_layout = Qt.QVBoxLayout() + self.setLayout(self.top_scroll_layout) + self.top_scroll = Qt.QScrollArea() + self.top_scroll.setFrameStyle(Qt.QFrame.NoFrame) + self.top_scroll_layout.addWidget(self.top_scroll) + self.top_scroll.setWidgetResizable(True) + self.top_widget = Qt.QWidget() + self.top_scroll.setWidget(self.top_widget) + self.top_layout = Qt.QVBoxLayout(self.top_widget) + self.top_grid_layout = Qt.QGridLayout() + self.top_layout.addLayout(self.top_grid_layout) + + self.settings = Qt.QSettings("GNU Radio", "manual_tempest_example") + + try: + if StrictVersion(Qt.qVersion()) < StrictVersion("5.0.0"): + self.restoreGeometry(self.settings.value("geometry").toByteArray()) + else: + self.restoreGeometry(self.settings.value("geometry")) + except: + pass + + ################################################## + # Variables + ################################################## + self.refresh_rate = refresh_rate = 60 + self.Vsize = Vsize = 1000 + self.Hsize = Hsize = 1800 + self.samp_rate = samp_rate = int(50e6) + self.px_rate = px_rate = Hsize*Vsize*refresh_rate + self.Hvisible = Hvisible = 1920 + self.interpolatedHsize = interpolatedHsize = int(Hsize/float(px_rate)*samp_rate) + self.Vvisible = Vvisible = 1080 + self.Hblank = Hblank = Hsize-Hvisible + self.inverted = inverted = 1 + self.interpolatedHscreen = interpolatedHscreen = int(Hvisible/float(px_rate)*samp_rate) + self.interpolatedHblank = interpolatedHblank = int(Hblank/float(px_rate)*samp_rate) + self.harmonic = harmonic = 1 + self.fft_size = fft_size = 2**21 + self.Vblank = Vblank = Vsize-Vvisible + self.DroppedFrames = DroppedFrames = 50 + self.DelaySyncDetector = DelaySyncDetector = interpolatedHsize*1 + + ################################################## + # Blocks + ################################################## + self.tab_m = Qt.QTabWidget() + self.tab_m_widget_0 = Qt.QWidget() + self.tab_m_layout_0 = Qt.QBoxLayout(Qt.QBoxLayout.TopToBottom, self.tab_m_widget_0) + self.tab_m_grid_layout_0 = Qt.QGridLayout() + self.tab_m_layout_0.addLayout(self.tab_m_grid_layout_0) + self.tab_m.addTab(self.tab_m_widget_0, 'Tempest Main Tab') + self.tab_m_widget_1 = Qt.QWidget() + self.tab_m_layout_1 = Qt.QBoxLayout(Qt.QBoxLayout.TopToBottom, self.tab_m_widget_1) + self.tab_m_grid_layout_1 = Qt.QGridLayout() + self.tab_m_layout_1.addLayout(self.tab_m_grid_layout_1) + self.tab_m.addTab(self.tab_m_widget_1, 'Autocorrelation Plot Tab') + self.top_layout.addWidget(self.tab_m) + self._Vsize_range = Range(0, int(2160*1.5), 1, 1000, 200) + self._Vsize_win = RangeWidget(self._Vsize_range, self.set_Vsize, 'Vertical resolution (total)', "counter", int) + self.tab_m_layout_0.addWidget(self._Vsize_win) + self._refresh_rate_range = Range(0, 240, 1, 60, 200) + self._refresh_rate_win = RangeWidget(self._refresh_rate_range, self.set_refresh_rate, 'Refresh Rate (Hz)', "counter", float) + self.tab_m_layout_0.addWidget(self._refresh_rate_win) + # Create the options list + self._inverted_options = [0, 1, 2, 3, 4] + # Create the labels list + self._inverted_labels = ['Yes', 'No', '2', '3', '4'] + # Create the combo box + # Create the radio buttons + self._inverted_group_box = Qt.QGroupBox('Inverted colors?' + ": ") + self._inverted_box = Qt.QHBoxLayout() + class variable_chooser_button_group(Qt.QButtonGroup): + def __init__(self, parent=None): + Qt.QButtonGroup.__init__(self, parent) + @pyqtSlot(int) + def updateButtonChecked(self, button_id): + self.button(button_id).setChecked(True) + self._inverted_button_group = variable_chooser_button_group() + self._inverted_group_box.setLayout(self._inverted_box) + for i, _label in enumerate(self._inverted_labels): + radio_button = Qt.QRadioButton(_label) + self._inverted_box.addWidget(radio_button) + self._inverted_button_group.addButton(radio_button, i) + self._inverted_callback = lambda i: Qt.QMetaObject.invokeMethod(self._inverted_button_group, "updateButtonChecked", Qt.Q_ARG("int", self._inverted_options.index(i))) + self._inverted_callback(self.inverted) + self._inverted_button_group.buttonClicked[int].connect( + lambda i: self.set_inverted(self._inverted_options[i])) + self.tab_m_layout_0.addWidget(self._inverted_group_box) + self._harmonic_range = Range(1, 10, 1, 1, 200) + self._harmonic_win = RangeWidget(self._harmonic_range, self.set_harmonic, 'Harmonic', "counter_slider", float) + self.tab_m_layout_0.addWidget(self._harmonic_win) + self._DroppedFrames_range = Range(1, 100, 1, 50, 200) + self._DroppedFrames_win = RangeWidget(self._DroppedFrames_range, self.set_DroppedFrames, 'DroppedFrames', "counter_slider", float) + self.tab_m_layout_0.addWidget(self._DroppedFrames_win) + self._DelaySyncDetector_range = Range(0, Vsize*interpolatedHsize, interpolatedHsize*1, interpolatedHsize*1, 200) + self._DelaySyncDetector_win = RangeWidget(self._DelaySyncDetector_range, self.set_DelaySyncDetector, 'DelaySyncDetector', "counter_slider", float) + self.tab_m_layout_0.addWidget(self._DelaySyncDetector_win) + self.video_sdl_sink_0_0_0 = video_sdl.sink_s(0, interpolatedHsize, Vsize, 0, 1920, 1080) + self.uhd_usrp_source_0 = uhd.usrp_source( + ",".join(("", "recv_frame_size= 65536, num_recv_frames=128")), + uhd.stream_args( + cpu_format="fc32", + args='', + channels=list(range(0,1)), + ), + ) + self.uhd_usrp_source_0.set_center_freq((px_rate*9)*harmonic, 0) + self.uhd_usrp_source_0.set_gain(50, 0) + self.uhd_usrp_source_0.set_samp_rate(samp_rate) + self.uhd_usrp_source_0.set_time_unknown_pps(uhd.time_spec()) + self.tempest_sync_detector_0_0 = tempest.sync_detector(interpolatedHscreen, Vsize-Vblank, interpolatedHblank, Vblank) + self.tempest_normalize_flow_0 = tempest.normalize_flow(10, 245, interpolatedHsize, 1e-2, 0.1) + self.tempest_fft_peak_fine_sampling_sync_0_0 = tempest.fft_peak_fine_sampling_sync(samp_rate, int(fft_size), refresh_rate, Vsize, interpolatedHsize, True) + self.ratio_finder_toggle_on_and_off = _ratio_finder_toggle_on_and_off_toggle_button = tempest.tempest_msgbtn('ratio_finder_toggle_on_and_off', 'pressed',True,"default","default") + self.ratio_finder_toggle_on_and_off = _ratio_finder_toggle_on_and_off_toggle_button + self.top_layout.addWidget(_ratio_finder_toggle_on_and_off_toggle_button) + self.qtgui_time_sink_x_1 = qtgui.time_sink_f( + int(fft_size/2), #size + samp_rate, #samp_rate + "", #name + 1 #number of inputs + ) + self.qtgui_time_sink_x_1.set_update_time(2.0) + self.qtgui_time_sink_x_1.set_y_axis(-1, 1) + + self.qtgui_time_sink_x_1.set_y_label('Amplitude', "") + + self.qtgui_time_sink_x_1.enable_tags(True) + self.qtgui_time_sink_x_1.set_trigger_mode(qtgui.TRIG_MODE_FREE, qtgui.TRIG_SLOPE_POS, 19.0, 0, 0, "peak_1") + self.qtgui_time_sink_x_1.enable_autoscale(False) + self.qtgui_time_sink_x_1.enable_grid(True) + self.qtgui_time_sink_x_1.enable_axis_labels(True) + self.qtgui_time_sink_x_1.enable_control_panel(False) + self.qtgui_time_sink_x_1.enable_stem_plot(False) + + + labels = ['Signal 1', 'Signal 2', 'Signal 3', 'Signal 4', 'Signal 5', + 'Signal 6', 'Signal 7', 'Signal 8', 'Signal 9', 'Signal 10'] + widths = [1, 1, 1, 1, 1, + 1, 1, 1, 1, 1] + colors = ['blue', 'red', 'green', 'black', 'cyan', + 'magenta', 'yellow', 'dark red', 'dark green', 'dark blue'] + alphas = [1.0, 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, 1.0] + styles = [1, 1, 1, 1, 1, + 1, 1, 1, 1, 1] + markers = [-1, -1, -1, -1, -1, + -1, -1, -1, -1, -1] + + + for i in range(1): + if len(labels[i]) == 0: + self.qtgui_time_sink_x_1.set_line_label(i, "Data {0}".format(i)) + else: + self.qtgui_time_sink_x_1.set_line_label(i, labels[i]) + self.qtgui_time_sink_x_1.set_line_width(i, widths[i]) + self.qtgui_time_sink_x_1.set_line_color(i, colors[i]) + self.qtgui_time_sink_x_1.set_line_style(i, styles[i]) + self.qtgui_time_sink_x_1.set_line_marker(i, markers[i]) + self.qtgui_time_sink_x_1.set_line_alpha(i, alphas[i]) + + self._qtgui_time_sink_x_1_win = sip.wrapinstance(self.qtgui_time_sink_x_1.pyqwidget(), Qt.QWidget) + self.tab_m_layout_1.addWidget(self._qtgui_time_sink_x_1_win) + self.blocks_float_to_short_0 = blocks.float_to_short(1, inverted) + self.blocks_delay_0_0 = blocks.delay(gr.sizeof_gr_complex*1, DelaySyncDetector) + self.blocks_complex_to_mag_0 = blocks.complex_to_mag(1) + self.Keep_1_in_N_Frames_0 = Keep_1_in_N_Frames( + fac_decimation=DroppedFrames, + fft_size=interpolatedHsize*Vsize*4, + ) + self._Hsize_range = Range(0, int(4096*1.5), 1, 1800, 200) + self._Hsize_win = RangeWidget(self._Hsize_range, self.set_Hsize, 'Horizontal resolution (total)', "counter", int) + self.tab_m_layout_0.addWidget(self._Hsize_win) + self.FFT_autocorrelation_0_0 = FFT_autocorrelation( + alpha=1.0, + fft_size=int(fft_size), + ) + + + ################################################## + # Connections + ################################################## + self.msg_connect((self.ratio_finder_toggle_on_and_off, 'pressed'), (self.tempest_fft_peak_fine_sampling_sync_0_0, 'en')) + self.msg_connect((self.tempest_fft_peak_fine_sampling_sync_0_0, 'en'), (self.FFT_autocorrelation_0_0, 'en')) + self.msg_connect((self.tempest_fft_peak_fine_sampling_sync_0_0, 'en'), (self.tempest_sync_detector_0_0, 'en')) + self.msg_connect((self.tempest_fft_peak_fine_sampling_sync_0_0, 'rate'), (self.uhd_usrp_source_0, 'command')) + self.connect((self.FFT_autocorrelation_0_0, 0), (self.tempest_fft_peak_fine_sampling_sync_0_0, 0)) + self.connect((self.Keep_1_in_N_Frames_0, 0), (self.FFT_autocorrelation_0_0, 0)) + self.connect((self.Keep_1_in_N_Frames_0, 0), (self.tempest_sync_detector_0_0, 0)) + self.connect((self.blocks_complex_to_mag_0, 0), (self.tempest_normalize_flow_0, 0)) + self.connect((self.blocks_delay_0_0, 0), (self.blocks_complex_to_mag_0, 0)) + self.connect((self.blocks_float_to_short_0, 0), (self.video_sdl_sink_0_0_0, 0)) + self.connect((self.tempest_fft_peak_fine_sampling_sync_0_0, 0), (self.qtgui_time_sink_x_1, 0)) + self.connect((self.tempest_normalize_flow_0, 0), (self.blocks_float_to_short_0, 0)) + self.connect((self.tempest_sync_detector_0_0, 0), (self.blocks_delay_0_0, 0)) + self.connect((self.uhd_usrp_source_0, 0), (self.Keep_1_in_N_Frames_0, 0)) + + + def closeEvent(self, event): + self.settings = Qt.QSettings("GNU Radio", "manual_tempest_example") + self.settings.setValue("geometry", self.saveGeometry()) + event.accept() + + def get_refresh_rate(self): + return self.refresh_rate + + def set_refresh_rate(self, refresh_rate): + self.refresh_rate = refresh_rate + self.set_px_rate(self.Hsize*self.Vsize*self.refresh_rate) + + def get_Vsize(self): + return self.Vsize + + def set_Vsize(self, Vsize): + self.Vsize = Vsize + self.set_Vblank(self.Vsize-self.Vvisible) + self.set_px_rate(self.Hsize*self.Vsize*self.refresh_rate) + self.Keep_1_in_N_Frames_0.set_fft_size(self.interpolatedHsize*self.Vsize*4) + + def get_Hsize(self): + return self.Hsize + + def set_Hsize(self, Hsize): + self.Hsize = Hsize + self.set_Hblank(self.Hsize-self.Hvisible) + self.set_interpolatedHsize(int(self.Hsize/float(self.px_rate)*self.samp_rate)) + self.set_px_rate(self.Hsize*self.Vsize*self.refresh_rate) + + def get_samp_rate(self): + return self.samp_rate + + def set_samp_rate(self, samp_rate): + self.samp_rate = samp_rate + self.set_interpolatedHblank(int(self.Hblank/float(self.px_rate)*self.samp_rate)) + self.set_interpolatedHscreen(int(self.Hvisible/float(self.px_rate)*self.samp_rate)) + self.set_interpolatedHsize(int(self.Hsize/float(self.px_rate)*self.samp_rate)) + self.qtgui_time_sink_x_1.set_samp_rate(self.samp_rate) + self.uhd_usrp_source_0.set_samp_rate(self.samp_rate) + + def get_px_rate(self): + return self.px_rate + + def set_px_rate(self, px_rate): + self.px_rate = px_rate + self.set_interpolatedHblank(int(self.Hblank/float(self.px_rate)*self.samp_rate)) + self.set_interpolatedHscreen(int(self.Hvisible/float(self.px_rate)*self.samp_rate)) + self.set_interpolatedHsize(int(self.Hsize/float(self.px_rate)*self.samp_rate)) + self.uhd_usrp_source_0.set_center_freq((self.px_rate*9)*self.harmonic, 0) + + def get_Hvisible(self): + return self.Hvisible + + def set_Hvisible(self, Hvisible): + self.Hvisible = Hvisible + self.set_Hblank(self.Hsize-self.Hvisible) + self.set_interpolatedHscreen(int(self.Hvisible/float(self.px_rate)*self.samp_rate)) + + def get_interpolatedHsize(self): + return self.interpolatedHsize + + def set_interpolatedHsize(self, interpolatedHsize): + self.interpolatedHsize = interpolatedHsize + self.set_DelaySyncDetector(self.interpolatedHsize*1) + self.Keep_1_in_N_Frames_0.set_fft_size(self.interpolatedHsize*self.Vsize*4) + + def get_Vvisible(self): + return self.Vvisible + + def set_Vvisible(self, Vvisible): + self.Vvisible = Vvisible + self.set_Vblank(self.Vsize-self.Vvisible) + + def get_Hblank(self): + return self.Hblank + + def set_Hblank(self, Hblank): + self.Hblank = Hblank + self.set_interpolatedHblank(int(self.Hblank/float(self.px_rate)*self.samp_rate)) + + def get_inverted(self): + return self.inverted + + def set_inverted(self, inverted): + self.inverted = inverted + self._inverted_callback(self.inverted) + self.blocks_float_to_short_0.set_scale(self.inverted) + + def get_interpolatedHscreen(self): + return self.interpolatedHscreen + + def set_interpolatedHscreen(self, interpolatedHscreen): + self.interpolatedHscreen = interpolatedHscreen + + def get_interpolatedHblank(self): + return self.interpolatedHblank + + def set_interpolatedHblank(self, interpolatedHblank): + self.interpolatedHblank = interpolatedHblank + + def get_harmonic(self): + return self.harmonic + + def set_harmonic(self, harmonic): + self.harmonic = harmonic + self.uhd_usrp_source_0.set_center_freq((self.px_rate*9)*self.harmonic, 0) + + def get_fft_size(self): + return self.fft_size + + def set_fft_size(self, fft_size): + self.fft_size = fft_size + self.FFT_autocorrelation_0_0.set_fft_size(int(self.fft_size)) + + def get_Vblank(self): + return self.Vblank + + def set_Vblank(self, Vblank): + self.Vblank = Vblank + + def get_DroppedFrames(self): + return self.DroppedFrames + + def set_DroppedFrames(self, DroppedFrames): + self.DroppedFrames = DroppedFrames + self.Keep_1_in_N_Frames_0.set_fac_decimation(self.DroppedFrames) + + def get_DelaySyncDetector(self): + return self.DelaySyncDetector + + def set_DelaySyncDetector(self, DelaySyncDetector): + self.DelaySyncDetector = DelaySyncDetector + self.blocks_delay_0_0.set_dly(self.DelaySyncDetector) + + + + + +def main(top_block_cls=manual_tempest_example, options=None): + if gr.enable_realtime_scheduling() != gr.RT_OK: + print("Error: failed to enable real-time scheduling.") + + if StrictVersion("4.5.0") <= StrictVersion(Qt.qVersion()) < StrictVersion("5.0.0"): + style = gr.prefs().get_string('qtgui', 'style', 'raster') + Qt.QApplication.setGraphicsSystem(style) + qapp = Qt.QApplication(sys.argv) + + tb = top_block_cls() + + tb.start() + + tb.show() + + def sig_handler(sig=None, frame=None): + Qt.QApplication.quit() + + signal.signal(signal.SIGINT, sig_handler) + signal.signal(signal.SIGTERM, sig_handler) + + timer = Qt.QTimer() + timer.start(500) + timer.timeout.connect(lambda: None) + + def quitting(): + tb.stop() + tb.wait() + + qapp.aboutToQuit.connect(quitting) + qapp.exec_() + +if __name__ == '__main__': + main() diff --git a/examples/manual_tempest_example_FFT_peaks_hd.grc b/examples/manual_tempest_example_FFT_peaks_hd.grc new file mode 100644 index 0000000..40429d1 --- /dev/null +++ b/examples/manual_tempest_example_FFT_peaks_hd.grc @@ -0,0 +1,1523 @@ +options: + parameters: + author: '' + category: '[GRC Hier Blocks]' + cmake_opt: '' + comment: '' + copyright: '' + description: '' + gen_cmake: 'On' + gen_linking: dynamic + generate_options: qt_gui + hier_block_src_path: '.:' + id: manual_tempest_example + max_nouts: '0' + output_language: python + placement: (0,0) + qt_qss_theme: '' + realtime_scheduling: '' + run: 'True' + run_command: '{python} -u {filename}' + run_options: prompt + sizing_mode: fixed + thread_safe_setters: '' + title: '' + window_size: '' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [81, 12] + rotation: 0 + state: enabled + +blocks: +- name: Hblank + id: variable + parameters: + comment: '' + value: Hsize-Hvisible + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1170, 137] + rotation: 0 + state: enabled +- name: Hsize + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Horizontal resolution (total) + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: int(4096*1.5) + value: '2200' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1184, 360] + rotation: 0 + state: enabled +- name: Hvisible + id: variable + parameters: + comment: '' + value: '1920' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1171, 33] + rotation: 0 + state: enabled +- name: Vblank + id: variable + parameters: + comment: '' + value: Vsize-Vvisible + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1284, 85] + rotation: 0 + state: enabled +- name: Vsize + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Vertical resolution (total) + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: int(2160*1.5) + value: '1125' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1317, 354] + rotation: 0 + state: enabled +- name: Vvisible + id: variable + parameters: + comment: '' + value: '1080' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1284, 33] + rotation: 0 + state: enabled +- name: delay + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Hsync delay + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: int(Hsize/float(px_rate)*samp_rate)*2 + value: int(136/float(px_rate)*samp_rate) + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [467, 12] + rotation: 0 + state: enabled +- name: delay_fase + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Delay fase + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: 2*interpolatedHsize*Vsize + value: interpolatedHsize*Vsize + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [704, 12] + rotation: 0 + state: enabled +- name: epsilon + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Fine sampling correction + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: (interpolatedHsize-2)/float(interpolatedHsize)-1 + step: 1e-7 + stop: (interpolatedHsize+2)/float(interpolatedHsize)-1 + value: '0.00101' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1016, 84] + rotation: 0 + state: enabled +- name: eq_fir_1080p + id: variable + parameters: + comment: '' + value: '[-0.0004 + 0j,-0.0000 + 0.0000j,-0.0004 - 0.0000j,-0.0000 + 0.0001j,-0.0004 + - 0.0001j,-0.0000 + 0.0001j,-0.0004 - 0.0001j,-0.0000 + 0.0002j,-0.0004 + - 0.0001j,-0.0001 + 0.0002j,-0.0003 - 0.0001j,-0.0001 + 0.0003j,-0.0003 + - 0.0001j,-0.0002 + 0.0003j,-0.0003 - 0.0001j,-0.0002 + 0.0004j,-0.0002 + - 0.0001j,-0.0002 + 0.0004j,-0.0002 - 0.0001j,-0.0003 + 0.0004j,-0.0001 + - 0.0001j,-0.0003 + 0.0004j,-0.0001 - 0.0001j,-0.0004 + 0.0004j,-0.0000 + - 0.0000j,-0.0004 + 0.0004j, 0.0000 + 0.0000j,-0.0005 + 0.0004j, 0.0000 + + 0.0001j,-0.0005 + 0.0004j, 0.0001 + 0.0001j,-0.0006 + 0.0003j, 0.0001 + + 0.0002j,-0.0006 + 0.0003j, 0.0001 + 0.0002j,-0.0006 + 0.0003j, 0.0001 + + 0.0003j,-0.0006 + 0.0002j, 0.0001 + 0.0004j,-0.0006 + 0.0002j, 0.0001 + + 0.0005j,-0.0006 + 0.0001j, 0.0001 + 0.0005j,-0.0006 + 0.0001j, 0.0001 + + 0.0006j,-0.0006 + 0.0000j, 0.0000 + 0.0007j,-0.0006 - 0.0000j,-0.0000 + + 0.0008j,-0.0005 - 0.0000j,-0.0001 + 0.0008j,-0.0005 - 0.0001j,-0.0002 + + 0.0009j,-0.0004 - 0.0001j,-0.0002 + 0.0009j,-0.0004 - 0.0001j,-0.0003 + + 0.0010j,-0.0003 - 0.0001j,-0.0004 + 0.0010j,-0.0002 - 0.0001j,-0.0005 + + 0.0010j,-0.0002 - 0.0001j,-0.0006 + 0.0011j,-0.0001 - 0.0001j,-0.0007 + + 0.0011j,-0.0000 - 0.0000j,-0.0008 + 0.0010j, 0.0000 + 0.0000j,-0.0009 + + 0.0010j, 0.0001 + 0.0001j,-0.0010 + 0.0010j, 0.0002 + 0.0002j,-0.0011 + + 0.0009j, 0.0002 + 0.0003j,-0.0011 + 0.0009j, 0.0003 + 0.0004j,-0.0012 + + 0.0008j, 0.0003 + 0.0005j,-0.0013 + 0.0007j, 0.0003 + 0.0006j,-0.0013 + + 0.0006j, 0.0003 + 0.0007j,-0.0014 + 0.0005j, 0.0003 + 0.0008j,-0.0014 + + 0.0004j, 0.0003 + 0.0010j,-0.0014 + 0.0003j, 0.0002 + 0.0011j,-0.0014 + + 0.0002j, 0.0002 + 0.0013j,-0.0015 + 0.0002j, 0.0001 + 0.0019j,-0.0038 + + 0.0001j, 0.0001 + 0.0198j, 0.0603 + 0.0018j, 0.0091 - 0.1418j,-0.2643 + - 0.0260j,-0.0543 + 0.4093j, 0.5602 + 0.0937j, 0.1441 - 0.7130j,-0.8669 + - 0.2059j,-0.2777 + 1.0157j, 1.1535 + 0.3576j, 0.4438 - 1.2773j,-1.3776 + - 0.5314j,-0.6122 + 1.4403j, 1.4636 + 0.6813j, 0.7425 - 1.4640j,-1.4577 + - 0.8023j,-0.8613 + 1.4470j, 1.4300 + 0.9179j, 0.9747 - 1.4114j,-1.3954 + - 1.0349j,-1.0955 + 1.3775j, 1.3531 + 1.1528j, 1.2096 - 1.3263j,-1.3019 + - 1.2703j,-1.3319 + 1.2759j, 1.2436 + 1.3891j, 1.4451 - 1.2084j,-1.1749 + - 1.5056j,-1.5673 + 1.1402j, 1.0995 + 1.6238j, 1.6782 - 1.0555j,-1.0126 + - 1.7375j,-1.7986 + 0.9685j, 0.9189 + 1.8538j, 1.9057 - 0.8658j,-0.8130 + - 1.9627j,-2.0224 + 0.7588j, 0.6998 + 2.0754j, 2.1239 - 0.6372j,-0.5739 + - 2.1776j,-2.2347 + 0.5090j, 0.4399 + 2.2848j, 2.3289 - 0.3674j,-0.2933 + - 2.3781j,-2.4316 + 0.2169j, 0.1370 + 2.4778j, 2.5165 - 0.0541j, 0.0314 + - 2.5599j,-2.6085 - 0.1201j,-0.2118 + 2.6496j, 2.6819 + 0.3057j, 0.4032 + - 2.7181j,-2.7604 - 0.5052j,-0.6097 + 2.7952j, 2.8196 + 0.7155j, 0.8257 + - 2.8472j,-2.8814 - 0.9421j,-1.0608 + 2.9083j, 2.9235 + 1.1796j, 1.3035 + - 2.9407j,-2.9648 - 1.4358j,-1.5705 + 2.9820j, 2.9863 + 1.7038j, 1.8430 + - 2.9910j,-3.0027 - 1.9930j,-2.1461 + 3.0078j, 2.9988 + 2.2962j, 2.4527 + - 2.9886j,-2.9849 - 2.6231j,-2.7977 + 2.9749j, 2.9497 + 2.9679j, 3.1448 + - 2.9214j,-2.8985 - 3.3394j,-3.5403 + 2.8692j, 2.8239 + 3.7352j, 3.9374 + - 2.7730j,-2.7258 - 4.1619j,-4.3958 + 2.6715j, 2.6001 + 4.6228j, 4.8579 + - 2.5204j,-2.4414 - 5.1213j,-5.3988 + 2.3536j, 2.2471 + 5.6694j, 5.9499 + - 2.1289j,-2.0065 - 6.2670j,-6.6056 + 1.8717j, 1.7156 + 6.9393j, 7.2870 + - 1.5427j,-1.3575 - 7.6836j,-8.1142 + 1.1528j, 0.9212 + 8.5461j, 9.0016 + - 0.6640j,-0.3802 - 9.5270j,10.1094 + 0.0620j,-0.2958 + 10.7103j,11.3586 + + 0.6978j, 1.1560 - 12.1183j,12.9856 - 1.6826j,-2.2839 + 13.9218j,14.9722 + + 2.9782j, 3.8038 - 16.2383j,17.7577 - 4.7971j,-5.9920 + 19.5370j,21.6829 + + 7.4594j, 9.3348 - 24.4225j,28.1470 - 11.8617j,15.4831 + 33.5314j,40.9709 + + 20.6230j,26.6688 - 48.8079j,52.0219 - 30.7484j,28.2403 + 44.2950j,23.3522 + + 16.0214j,-3.8869 + 5.2747j,30.8124 + 24.3519j,37.7829 - 44.6248j,45.5825 + - 41.3136j,37.7025 + 38.8773j,30.6655 + 31.8158j,26.8368 - 24.1739j,19.7007 + - 23.4135j,21.0374 + 16.5218j,14.0970 + 19.2534j,17.8348 - 12.1558j,10.5339 + - 16.6349j,15.6016 + 9.1571j, 8.0025 + 14.7531j,14.0496 - 7.0180j,-6.1378 + - 13.4003j,12.7899 + 5.3438j, 4.6462 + 12.2684j,11.8264 - 4.0280j,-3.4572 + - 11.3969j,10.9712 + 2.9277j, 2.4483 + 10.5981j,10.2775 - 2.0116j,-1.6020 + - 9.9561j,-9.6259 + 1.2172j, 0.8612 + 9.3302j, 9.0735 - 0.5295j,-0.2163 + - 8.8117j,-8.5362 - 0.0786j,-0.3561 + 8.2845j, 8.0638 + 0.6197j, 0.8691 + - 7.8372j,-7.5953 - 1.1029j,-1.3255 + 7.3701j, 7.1703 + 1.5410j, 1.7448 + - 6.9655j,-6.7452 - 1.9337j,-2.1150 + 6.5365j, 6.3493 + 2.2938j, 2.4627 + - 6.1581j,-5.9524 - 2.6167j,-2.7650 + 5.7545j, 5.5747 + 2.9141j, 3.0547 + - 5.3922j,-5.1967 - 3.1801j,-3.3007 + 5.0061j, 4.8306 + 3.4243j, 3.5409 + - 4.6538j,-4.4656 - 3.6420j,-3.7384 + 4.2804j, 4.1076 + 3.8393j, 3.9345 + - 3.9345j,-3.7519 - 4.0141j,-4.0887 + 3.5709j, 3.3999 + 4.1688j, 4.2445 + - 3.2294j,-3.0514 - 4.3046j,-4.3591 + 2.8742j, 2.7047 + 4.4197j, 4.4769 + - 2.5361j,-2.3622 - 4.5189j,-4.5547 + 2.1885j, 2.0207 + 4.5966j, 4.6361 + - 1.8540j,-1.6839 - 4.6609j,-4.6790 + 1.5140j, 1.3482 + 4.7029j, 4.7252 + - 1.1836j,-1.0173 - 4.7335j,-4.7347 + 0.8515j, 0.6884 + 4.7411j, 4.7465 + - 0.5264j,-0.3642 - 4.7389j,-4.7239 + 0.2030j, 0.0434 + 4.7133j, 4.7021 + + 0.1154j, 0.2730 - 4.6788j,-4.6481 - 0.4290j,-0.5844 + 4.6211j, 4.5934 + + 0.7391j, 0.8915 - 4.5546j,-4.5088 - 1.0416j,-1.1917 + 4.4659j, 4.4220 + + 1.3414j, 1.4877 - 4.3679j,-4.3074 - 1.6313j,-1.7754 + 4.2492j, 4.1893 + + 1.9189j, 2.0580 - 4.1200j,-4.0452 - 2.1942j,-2.3315 + 3.9723j, 3.8968 + + 2.4676j, 2.5985 - 3.8124j,-3.7237 - 2.7264j,-2.8561 + 3.6366j, 3.5461 + + 2.9838j, 3.1047 - 3.4467j,-3.3444 - 3.2235j,-3.3448 + 3.2438j, 3.1387 + + 3.4630j, 3.5729 - 3.0251j,-2.9091 - 3.6809j,-3.7913 + 2.7939j, 2.6757 + + 3.9000j, 4.0096 - 2.5563j,-2.4240 - 4.1010j,-4.0498 + 2.2128j, 1.8310 + + 3.6375j, 2.7604 - 1.2746j,-0.6875 - 1.6313j,-0.6705 + 0.2563j, 0.0515 + + 0.1497j, 0.0019 - 0.0006j, 0.0015 + 0.0056j, 0.0078 - 0.0018j,-0.0011 + - 0.0057j, 0.0080 - 0.0013j,-0.0010 - 0.0077j, 0.0073 - 0.0007j,-0.0005 + - 0.0080j, 0.0065 - 0.0002j, 0.0000 - 0.0078j, 0.0057 + 0.0002j, 0.0006 + - 0.0076j, 0.0050 + 0.0005j, 0.0010 - 0.0073j, 0.0044 + 0.0008j, 0.0015 + - 0.0071j, 0.0038 + 0.0009j, 0.0019 - 0.0068j, 0.0032 + 0.0010j, 0.0023 + - 0.0065j, 0.0027 + 0.0011j, 0.0027 - 0.0062j, 0.0022 + 0.0011j, 0.0031 + - 0.0059j, 0.0018 + 0.0010j, 0.0034 - 0.0056j, 0.0014 + 0.0009j, 0.0037 + - 0.0052j, 0.0010 + 0.0008j, 0.0040 - 0.0049j, 0.0007 + 0.0006j, 0.0042 + - 0.0045j, 0.0004 + 0.0004j, 0.0044 - 0.0042j, 0.0002 + 0.0002j, 0.0046 + - 0.0038j,-0.0001 - 0.0001j, 0.0047 - 0.0034j,-0.0002 - 0.0003j, 0.0048 + - 0.0030j,-0.0003 - 0.0006j, 0.0049 - 0.0026j,-0.0004 - 0.0009j, 0.0049 + - 0.0022j,-0.0005 - 0.0012j, 0.0049 - 0.0018j,-0.0005 - 0.0015j, 0.0048 + - 0.0014j,-0.0004 - 0.0017j, 0.0047 - 0.0010j,-0.0004 - 0.0020j, 0.0046 + - 0.0007j,-0.0003 - 0.0023j, 0.0044 - 0.0004j,-0.0001 - 0.0025j, 0.0043 + - 0.0001j, 0.0001 - 0.0027j, 0.0040 + 0.0002j, 0.0003 - 0.0029j, 0.0038 + + 0.0005j, 0.0005 - 0.0030j, 0.0035 + 0.0007j, 0.0007 - 0.0032j, 0.0033 + + 0.0009j, 0.0010 - 0.0033j, 0.0030 + 0.0010j, 0.0012 - 0.0033j, 0.0027 + + 0.0011j, 0.0015 - 0.0033j, 0.0024 + 0.0012j, 0.0018 - 0.0033j, 0.0021 + + 0.0012j, 0.0021 - 0.0033j, 0.0018 + 0.0012j, 0.0023 - 0.0032j, 0.0015 + + 0.0012j, 0.0026 - 0.0031j, 0.0012 + 0.0011j, 0.0029 - 0.0030j, 0.0010 + + 0.0010j, 0.0031 - 0.0028j, 0.0007 + 0.0009j, 0.0033 - 0.0026j, 0.0005 + + 0.0007j, 0.0035 - 0.0024j, 0.0003 + 0.0005j, 0.0036 - 0.0022j, 0.0002 + + 0.0003j, 0.0038 - 0.0019j, 0.0001 + 0.0001j, 0.0039 - 0.0016j,-0.0000 + - 0.0001j, 0.0039 - 0.0014j,-0.0001 - 0.0003j, 0.0040 - 0.0011j,-0.0001 + - 0.0006j, 0.0040 - 0.0008j,-0.0001 - 0.0008j, 0.0039 - 0.0005j,-0.0001 + - 0.0011j, 0.0039 - 0.0002j,-0.0000 - 0.0013j, 0.0038 + 0.0000j, 0.0001 + - 0.0015j, 0.0037 + 0.0003j, 0.0002 - 0.0017j, 0.0035 + 0.0005j, 0.0003 + - 0.0019j, 0.0033 + 0.0007j, 0.0005 - 0.0020j, 0.0032 + 0.0009j, 0.0007 + - 0.0022j, 0.0029 + 0.0010j, 0.0009 - 0.0023j, 0.0027 + 0.0012j, 0.0011 + - 0.0024j, 0.0025 + 0.0013j, 0.0014 - 0.0024j, 0.0022 + 0.0013j, 0.0016 + - 0.0024j, 0.0020 + 0.0014j, 0.0018 - 0.0024j, 0.0017 + 0.0014j, 0.0021 + - 0.0024j, 0.0015 + 0.0014j, 0.0023 - 0.0023j, 0.0013 + 0.0013j, 0.0025 + - 0.0022j, 0.0010 + 0.0012j, 0.0027 - 0.0021j, 0.0008 + 0.0011j, 0.0029 + - 0.0020j, 0.0006 + 0.0010j, 0.0031 - 0.0018j, 0.0005 + 0.0009j, 0.0033 + - 0.0016j, 0.0003 + 0.0007j, 0.0034 - 0.0014j, 0.0002 + 0.0005j, 0.0035 + - 0.0012j, 0.0001 + 0.0003j, 0.0036 - 0.0009j, 0.0000 + 0.0001j, 0.0036 + - 0.0007j,-0.0000 - 0.0001j, 0.0036 - 0.0004j,-0.0000 - 0.0004j, 0.0036 + - 0.0002j,-0.0000 - 0.0006j, 0.0036 + 0.0001j, 0.0000 - 0.0008j, 0.0035 + + 0.0003j, 0.0001 - 0.0010j, 0.0034 + 0.0005j, 0.0002 - 0.0012j, 0.0033 + + 0.0007j, 0.0004 - 0.0014j, 0.0032 + 0.0009j, 0.0005 - 0.0015j, 0.0030 + + 0.0011j, 0.0007 - 0.0017j, 0.0028 + 0.0013j, 0.0009 - 0.0018j, 0.0026 + + 0.0014j, 0.0011 - 0.0019j, 0.0024 + 0.0015j, 0.0013 - 0.0019j, 0.0022 + + 0.0016j, 0.0015 - 0.0020j, 0.0019 + 0.0016j, 0.0017 - 0.0020j, 0.0017 + + 0.0016j, 0.0020 - 0.0019j, 0.0015 + 0.0016j, 0.0022 - 0.0019j, 0.0013 + + 0.0016j, 0.0024 - 0.0018j, 0.0011 + 0.0015j, 0.0026 - 0.0017j, 0.0008 + + 0.0014j, 0.0028 - 0.0016j, 0.0007 + 0.0013j, 0.0030 - 0.0014j, 0.0005 + + 0.0012j, 0.0031 - 0.0012j, 0.0003 + 0.0010j, 0.0033 - 0.0010j, 0.0002 + + 0.0008j, 0.0034 - 0.0008j, 0.0001 + 0.0006j, 0.0035 - 0.0006j, 0.0001 + + 0.0004j, 0.0035 - 0.0004j, 0.0000 + 0.0002j, 0.0036 - 0.0001j]' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1281, 156] + rotation: 0 + state: true +- name: fft_size + id: variable + parameters: + comment: '' + value: 4096*512 + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1209, 228] + rotation: 0 + state: true +- name: filtro_ecualizador_1st + id: variable + parameters: + comment: '' + value: "[-3.11363682e-06+6.75278918e-06j, 2.23797433e-05+3.63850305e-04j,\n \ + \ 1.24424796e-04+2.07552626e-03j, 9.13369821e-05+1.23922328e-03j,\n \ + \ 9.17470541e-06-1.27599772e-03j, -1.89672336e-04-7.66449364e-03j,\n \ + \ -6.04326364e-04-2.07456042e-02j, -1.03016890e-03-4.52780337e-02j,\n \ + \ -2.24322298e-03-7.65338416e-02j, -2.59317061e-03-1.35562197e-01j,\n \ + \ -5.05937146e-03-1.88184719e-01j, -4.40754770e-03-2.95364441e-01j,\n \ + \ -8.83183526e-03-3.55251606e-01j, -5.10069889e-03-5.21066895e-01j,\n \ + \ -1.41464771e-02-5.38323401e-01j, 2.42260390e-03-8.16748190e-01j,\n \ + \ 4.49687679e-02+2.68517170e-01j, -1.78853630e-02+7.82072975e-01j,\n \ + \ -4.44448737e-03+4.96178030e-01j, -1.02738240e-02+4.81143615e-01j,\n \ + \ -4.81582961e-03+3.17597516e-01j, -6.18209100e-03+2.63011491e-01j,\n \ + \ -3.16653758e-03+1.61327366e-01j, -3.01959070e-03+1.15054664e-01j,\n \ + \ -1.44674044e-03+6.17245262e-02j, -9.99648902e-04+3.55652006e-02j,\n \ + \ -3.99929733e-04+1.49286935e-02j, -9.70523497e-05+4.64566966e-03j,\n \ + \ 4.45207677e-05+1.15474691e-04j, 1.16728796e-04-1.83264974e-03j,\n \ + \ 9.57920774e-05-1.59212307e-03j, -3.78999089e-06+4.47966583e-05j]" + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1024, 228] + rotation: 0 + state: enabled +- name: filtro_ecualizador_viejo + id: variable + parameters: + comment: '' + value: '[ 3.5209e-07 - 1.0836e-06*1j, 1.4076e-06 - 2.3919e-06*1j, 5.9650e-06 + - 6.1506e-06*1j, 1.5271e-05 - 1.4326e-05*1j, 4.1151e-05 - 3.6713e-05*1j , + 3.9905e-04 - 6.3391e-04*1j, 1.4256e-03 - 4.2010e-04*1j, 1.7775e-03 - 1.1448e-03*1j, 2.6252e-03 + - 8.9501e-04*1j, 2.9812e-03 - 1.6801e-03*1j , 4.3656e-03 - 1.5903e-03*1j, 4.8418e-03 + - 2.4404e-03*1j, 6.9685e-03 - 2.6534e-03*1j, 7.6915e-03 - 3.5182e-03*1j, 1.0749e-02 + - 4.2291e-03*1j , 1.1902e-02 - 5.0055e-03*1j, 1.6024e-02 - 6.4526e-03*1j, 1.7878e-02 + - 7.0057e-03*1j, 2.3102e-02 - 9.4388e-03*1j, 2.6038e-02 - 9.6422e-03*1j , + 3.2280e-02 - 1.3269e-02*1j, 3.6789e-02 - 1.3061e-02*1j, 4.3841e-02 - 1.7982e-02*1j, 5.0495e-02 + - 1.7431e-02*1j, 5.8052e-02 - 2.3569e-02*1j , 6.7444e-02 - 2.2930e-02*1j, 7.5169e-02 + - 2.9981e-02*1j, 8.7819e-02 - 2.9736e-02*1j, 9.5427e-02 - 3.7136e-02*1j, 1.1167e-01 + - 3.8000e-02*1j , 1.1904e-01 - 4.4941e-02*1j, 1.3890e-01 - 4.7822e-02*1j, 1.4617e-01 + - 5.3309e-02*1j, 1.6926e-01 - 5.9221e-02*1j, 1.7695e-01 - 6.2182e-02*1j , + 2.0235e-01 - 7.2116e-02*1j, 2.1140e-01 - 7.1549e-02*1j, 2.3765e-01 - 8.6305e-02*1j, 2.4944e-01 + - 8.1456e-02*1j, 2.7453e-01 - 1.0146e-01*1j , 2.9088e-01 - 9.2017e-02*1j, 3.1227e-01 + - 1.1711e-01*1j, 3.3535e-01 - 1.0341e-01*1j, 3.5009e-01 - 1.3267e-01*1j, 3.8238e-01 + - 1.1587e-01*1j , 3.8713e-01 - 1.4742e-01*1j, 4.3146e-01 - 1.2974e-01*1j, 4.2233e-01 + - 1.6044e-01*1j, 4.8222e-01 - 1.4561e-01*1j, 4.5414e-01 - 1.7040e-01*1j , + 5.3510e-01 - 1.6460e-01*1j, 4.8020e-01 - 1.7358e-01*1j, 5.9455e-01 - 1.9170e-01*1j, 4.8669e-01 + - 1.5965e-01*1j, 6.9081e-01 - 2.6218e-01*1j , 3.1530e-01 + 9.3424e-02*1j, -7.1052e-01 + + 2.8833e-01*1j, -5.1861e-01 + 1.1433e-01*1j, -5.7535e-01 + 2.2141e-01*1j, -5.2124e-01 + + 1.3015e-01*1j , -5.1574e-01 + 1.9092e-01*1j, -4.9507e-01 + 1.3022e-01*1j, + -4.6700e-01 + 1.6704e-01*1j, -4.5921e-01 + 1.2586e-01*1j, -4.2136e-01 + 1.4550e-01*1j + , -4.1873e-01 + 1.1899e-01*1j, -3.7785e-01 + 1.2562e-01*1j, -3.7593e-01 + 1.1045e-01*1j, + -3.3620e-01 + 1.0737e-01*1j, -3.3244e-01 + 1.0068e-01*1j , -2.9648e-01 + 9.0865e-02*1j, + -2.8954e-01 + 9.0026e-02*1j, -2.5879e-01 + 7.6211e-02*1j, -2.4833e-01 + 7.8847e-02*1j, + -2.2331e-01 + 6.3414e-02*1j , -2.0968e-01 + 6.7517e-02*1j, -1.9019e-01 + 5.2395e-02*1j, + -1.7425e-01 + 5.6423e-02*1j, -1.5960e-01 + 4.2999e-02*1j, -1.4246e-01 + 4.5930e-02*1j + , -1.3169e-01 + 3.5031e-02*1j, -1.1454e-01 + 3.6352e-02*1j, -1.0661e-01 + 2.8282e-02*1j, + -9.0505e-02 + 2.7922e-02*1j, -8.4485e-02 + 2.2562e-02*1j , -7.0222e-02 + 2.0778e-02*1j, + -6.5365e-02 + 1.7714e-02*1j, -5.3441e-02 + 1.4956e-02*1j, -4.9242e-02 + 1.3619e-02*1j, + -3.9832e-02 + 1.0400e-02*1j , -3.6019e-02 + 1.0195e-02*1j, -2.9025e-02 + 6.9842e-03*1j, + -2.5513e-02 + 7.3869e-03*1j, -2.0639e-02 + 4.5335e-03*1j, -1.7457e-02 + 5.1469e-03*1j + , -1.4300e-02 + 2.8536e-03*1j, -1.1520e-02 + 3.4260e-03*1j, -9.6508e-03 + 1.7541e-03*1j, + -7.3304e-03 + 2.1628e-03*1j, -6.3552e-03 + 1.0661e-03*1j , -4.5025e-03 + 1.2798e-03*1j, + -4.1002e-03 + 6.5174e-04*1j, -2.6663e-03 + 6.8397e-04*1j, -2.5965e-03 + 4.0387e-04*1j, + -1.4935e-03 + 2.7171e-04*1j , -1.6079e-03 + 2.1239e-04*1j, 8.5832e-05 + 6.1758e-05*1j, 2.4841e-05 + + 1.8521e-05*1j, 9.8862e-06 + 7.4457e-06*1j, 3.4696e-06 + 2.6799e-06*1j , + 7.2346e-07 + 6.5333e-07*1j ]' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [216, 12] + rotation: 0 + state: enabled +- name: fine_freq + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Fine frequency correction + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '-100' + step: 1e-5 + stop: '100' + value: '10' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [216, 204] + rotation: 0 + state: enabled +- name: frameSizeRange + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Frame Size + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '1' + step: '1' + stop: 2*Hsize*Vsize + value: 2**21+450000 + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [585, 245] + rotation: 0 + state: disabled +- name: freq + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Frequency Error (normalized) + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '-1' + step: 1e-7 + stop: '1' + value: '0.0' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [392, 148] + rotation: 0 + state: enabled +- name: harmonic + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Harmonic + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '1' + step: '1' + stop: '10' + value: '3' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [728, 148] + rotation: 0 + state: enabled +- name: horizontal_offset + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Horizontal offset + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: interpolatedHsize + value: '0' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [848, 148] + rotation: 0 + state: enabled +- name: interpolatedHblank + id: variable + parameters: + comment: '' + value: int(Hblank/float(px_rate)*samp_rate) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1446, 192] + rotation: 0 + state: enabled +- name: interpolatedHscreen + id: variable + parameters: + comment: '' + value: int(Hvisible/float(px_rate)*samp_rate) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1169, 85] + rotation: 0 + state: enabled +- name: interpolatedHsize + id: variable + parameters: + comment: '' + value: int(Hsize/float(px_rate)*samp_rate) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [984, 12] + rotation: 0 + state: enabled +- name: inverted + id: variable_qtgui_chooser + parameters: + comment: '' + gui_hint: '' + label: Inverted colors? + label0: 'Yes' + label1: 'No' + label2: '' + label3: '' + label4: '' + labels: '[]' + num_opts: '2' + option1: '1' + option2: '2' + option3: '3' + option4: '4' + options: '[0, 1, 2]' + orient: Qt.QHBoxLayout + type: real + value: '1' + widget: radio_buttons + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [216, 64] + rotation: 0 + state: enabled +- name: lines_offset + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Vertical offset + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: Vsize + value: int(Vsize/2) + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [848, 12] + rotation: 0 + state: enabled +- name: offset + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: '' + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '0' + step: '1' + stop: 1024*2 + value: '50' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1321, 227] + rotation: 0 + state: disabled +- name: px_rate + id: variable + parameters: + comment: '' + value: Hsize*Vsize*refresh_rate + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [136, 64] + rotation: 0 + state: enabled +- name: refresh_rate + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Refresh Rate (Hz) + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '0' + step: '1' + stop: '240' + value: '60' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [349, 12] + rotation: 0 + state: enabled +- name: samp_rate + id: variable + parameters: + comment: '' + value: int(19.98e6) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [137, 116] + rotation: 0 + state: enabled +- name: FFT_autocorrelation_0_0 + id: FFT_autocorrelation + parameters: + affinity: '' + alias: '' + alpha: '1.0' + comment: '' + fac_decimation: '10' + fft_size: int(fft_size/2) + maxoutbuf: '0' + minoutbuf: '0' + sample_rate: samp_rate + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [307, 532] + rotation: 0 + state: enabled +- name: Keep_1_in_N_Frames_0 + id: Keep_1_in_N_Frames + parameters: + affinity: '' + alias: '' + comment: '' + fac_decimation: '1' + fft_size: fft_size + maxoutbuf: '0' + minoutbuf: '0' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [391, 309] + rotation: 0 + state: bypassed +- name: blocks_complex_to_mag_0 + id: blocks_complex_to_mag + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [830, 422] + rotation: 0 + state: enabled +- name: blocks_file_source_0 + id: blocks_file_source + parameters: + affinity: '' + alias: '' + begin_tag: pmt.PMT_NIL + comment: '' + file: /home/felipe/gnuradio/git/grabaciones_local/test2_19980KHz_1920_1080.dat + length: '0' + maxoutbuf: '0' + minoutbuf: '0' + offset: '0' + repeat: 'True' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [33, 354] + rotation: 0 + state: enabled +- name: blocks_float_to_short_0 + id: blocks_float_to_short + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + scale: inverted + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1007, 610] + rotation: 270 + state: enabled +- name: blocks_throttle_0 + id: blocks_throttle + parameters: + affinity: '' + alias: '' + comment: '' + ignoretag: 'True' + maxoutbuf: '0' + minoutbuf: '0' + samples_per_second: samp_rate + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [212, 333] + rotation: 0 + state: enabled +- name: qtgui_time_sink_x_1 + id: qtgui_time_sink_x + parameters: + affinity: '' + alias: '' + alpha1: '1.0' + alpha10: '1.0' + alpha2: '1.0' + alpha3: '1.0' + alpha4: '1.0' + alpha5: '1.0' + alpha6: '1.0' + alpha7: '1.0' + alpha8: '1.0' + alpha9: '1.0' + autoscale: 'False' + axislabels: 'True' + color1: blue + color10: dark blue + color2: red + color3: green + color4: black + color5: cyan + color6: magenta + color7: yellow + color8: dark red + color9: dark green + comment: '' + ctrlpanel: 'False' + entags: 'True' + grid: 'False' + gui_hint: tab_m@1 + label1: Signal 1 + label10: Signal 10 + label2: Signal 2 + label3: Signal 3 + label4: Signal 4 + label5: Signal 5 + label6: Signal 6 + label7: Signal 7 + label8: Signal 8 + label9: Signal 9 + legend: 'True' + marker1: '-1' + marker10: '-1' + marker2: '-1' + marker3: '-1' + marker4: '-1' + marker5: '-1' + marker6: '-1' + marker7: '-1' + marker8: '-1' + marker9: '-1' + name: '""' + nconnections: '1' + size: int(fft_size/2) + srate: samp_rate + stemplot: 'False' + style1: '1' + style10: '1' + style2: '1' + style3: '1' + style4: '1' + style5: '1' + style6: '1' + style7: '1' + style8: '1' + style9: '1' + tr_chan: '0' + tr_delay: '0' + tr_level: '0.0' + tr_mode: qtgui.TRIG_MODE_FREE + tr_slope: qtgui.TRIG_SLOPE_POS + tr_tag: '"peak_1"' + type: float + update_time: '0.10' + width1: '1' + width10: '1' + width2: '1' + width3: '1' + width4: '1' + width5: '1' + width6: '1' + width7: '1' + width8: '1' + width9: '1' + ylabel: Amplitude + ymax: '1' + ymin: '-1' + yunit: '""' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [717, 633] + rotation: 0 + state: enabled +- name: qtgui_time_sink_x_1_0 + id: qtgui_time_sink_x + parameters: + affinity: '' + alias: '' + alpha1: '1.0' + alpha10: '1.0' + alpha2: '1.0' + alpha3: '1.0' + alpha4: '1.0' + alpha5: '1.0' + alpha6: '1.0' + alpha7: '1.0' + alpha8: '1.0' + alpha9: '1.0' + autoscale: 'False' + axislabels: 'True' + color1: blue + color10: dark blue + color2: red + color3: green + color4: black + color5: cyan + color6: magenta + color7: yellow + color8: dark red + color9: dark green + comment: '' + ctrlpanel: 'False' + entags: 'True' + grid: 'False' + gui_hint: tab_m@0 + label1: Signal 1 + label10: Signal 10 + label2: Signal 2 + label3: Signal 3 + label4: Signal 4 + label5: Signal 5 + label6: Signal 6 + label7: Signal 7 + label8: Signal 8 + label9: Signal 9 + legend: 'True' + marker1: '-1' + marker10: '-1' + marker2: '-1' + marker3: '-1' + marker4: '-1' + marker5: '-1' + marker6: '-1' + marker7: '-1' + marker8: '-1' + marker9: '-1' + name: '""' + nconnections: '1' + size: int(fft_size/2) + srate: samp_rate + stemplot: 'False' + style1: '1' + style10: '1' + style2: '1' + style3: '1' + style4: '1' + style5: '1' + style6: '1' + style7: '1' + style8: '1' + style9: '1' + tr_chan: '0' + tr_delay: '0' + tr_level: '0.0' + tr_mode: qtgui.TRIG_MODE_FREE + tr_slope: qtgui.TRIG_SLOPE_POS + tr_tag: '"peak_1"' + type: float + update_time: '1.0' + width1: '1' + width10: '1' + width2: '1' + width3: '1' + width4: '1' + width5: '1' + width6: '1' + width7: '1' + width8: '1' + width9: '1' + ylabel: Amplitude + ymax: '1' + ymin: '-1' + yunit: '""' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [577, 537] + rotation: 0 + state: enabled +- name: ratio_finder_toggle_on_and_off + id: variable_qtgui_msg_push_button + parameters: + comment: '' + gui_hint: '' + label: Ratio Finder toggle ON or OFF (FFT peaks). + msgName: pressed + relBackgroundColor: default + relFontColor: default + type: bool + value: 'True' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [116, 657] + rotation: 90 + state: enabled +- name: tab_m + id: qtgui_tab_widget + parameters: + alias: '' + comment: '' + gui_hint: '' + label0: Tempest Main Tab + label1: Autocorrelation Plot Tab + label10: Tab 10 + label11: Tab 11 + label12: Tab 12 + label13: Tab 13 + label14: Tab 14 + label15: Tab 15 + label16: Tab 16 + label17: Tab 17 + label18: Tab 18 + label19: Tab 19 + label2: Tab 2 + label3: Tab 3 + label4: Tab 4 + label5: Tab 5 + label6: Tab 6 + label7: Tab 7 + label8: Tab 8 + label9: Tab 9 + num_tabs: '2' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [570, 12] + rotation: 0 + state: true +- name: tempest_fft_peak_fine_sampling_sync_0_0 + id: tempest_fft_peak_fine_sampling_sync + parameters: + Hvisible: interpolatedHsize + Vvisible: Vsize + affinity: '' + alias: '' + automatic_mode: 'True' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + refresh_rate: refresh_rate + sample_rate: samp_rate + size: int(fft_size/2) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [403, 689] + rotation: 0 + state: enabled +- name: tempest_fine_sampling_synchronization_0 + id: tempest_fine_sampling_synchronization + parameters: + Htotal: interpolatedHsize + Vtotal: Vsize + affinity: '' + alias: '' + comment: '' + correct_sampling: '1' + max_deviation: 100.0/interpolatedHsize + maxoutbuf: '0' + minoutbuf: '0' + update_proba: 1.2e-1/(interpolatedHsize*Vsize) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [524, 389] + rotation: 0 + state: enabled +- name: tempest_normalize_flow_0 + id: tempest_normalize_flow + parameters: + affinity: '' + alias: '' + alpha_avg: 1e-2 + comment: '' + max: '245' + maxoutbuf: '0' + min: '10' + minoutbuf: '0' + update_proba: '0.1' + window: interpolatedHsize + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [983, 431] + rotation: 270 + state: enabled +- name: tempest_sync_detector_0 + id: tempest_sync_detector + parameters: + affinity: '' + alias: '' + comment: '' + hblanking: interpolatedHblank + hscreen: interpolatedHscreen + maxoutbuf: '0' + minoutbuf: '0' + vblanking: Vblank + vscreen: Vsize + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [742, 485] + rotation: 0 + state: disabled +- name: uhd_usrp_source_0 + id: uhd_usrp_source + parameters: + affinity: '' + alias: '' + ant0: '' + ant1: '' + ant10: '' + ant11: '' + ant12: '' + ant13: '' + ant14: '' + ant15: '' + ant16: '' + ant17: '' + ant18: '' + ant19: '' + ant2: '' + ant20: '' + ant21: '' + ant22: '' + ant23: '' + ant24: '' + ant25: '' + ant26: '' + ant27: '' + ant28: '' + ant29: '' + ant3: '' + ant30: '' + ant31: '' + ant4: '' + ant5: '' + ant6: '' + ant7: '' + ant8: '' + ant9: '' + bw0: 10e6 + bw1: '0' + bw10: '0' + bw11: '0' + bw12: '0' + bw13: '0' + bw14: '0' + bw15: '0' + bw16: '0' + bw17: '0' + bw18: '0' + bw19: '0' + bw2: '0' + bw20: '0' + bw21: '0' + bw22: '0' + bw23: '0' + bw24: '0' + bw25: '0' + bw26: '0' + bw27: '0' + bw28: '0' + bw29: '0' + bw3: '0' + bw30: '0' + bw31: '0' + bw4: '0' + bw5: '0' + bw6: '0' + bw7: '0' + bw8: '0' + bw9: '0' + center_freq0: px_rate*harmonic + center_freq1: '0' + center_freq10: '0' + center_freq11: '0' + center_freq12: '0' + center_freq13: '0' + center_freq14: '0' + center_freq15: '0' + center_freq16: '0' + center_freq17: '0' + center_freq18: '0' + center_freq19: '0' + center_freq2: '0' + center_freq20: '0' + center_freq21: '0' + center_freq22: '0' + center_freq23: '0' + center_freq24: '0' + center_freq25: '0' + center_freq26: '0' + center_freq27: '0' + center_freq28: '0' + center_freq29: '0' + center_freq3: '0' + center_freq30: '0' + center_freq31: '0' + center_freq4: '0' + center_freq5: '0' + center_freq6: '0' + center_freq7: '0' + center_freq8: '0' + center_freq9: '0' + clock_rate: '0.0' + clock_source0: '' + clock_source1: '' + clock_source2: '' + clock_source3: '' + clock_source4: '' + clock_source5: '' + clock_source6: '' + clock_source7: '' + comment: '' + dc_offs_enb0: '""' + dc_offs_enb1: '""' + dc_offs_enb10: '""' + dc_offs_enb11: '""' + dc_offs_enb12: '""' + dc_offs_enb13: '""' + dc_offs_enb14: '""' + dc_offs_enb15: '""' + dc_offs_enb16: '""' + dc_offs_enb17: '""' + dc_offs_enb18: '""' + dc_offs_enb19: '""' + dc_offs_enb2: '""' + dc_offs_enb20: '""' + dc_offs_enb21: '""' + dc_offs_enb22: '""' + dc_offs_enb23: '""' + dc_offs_enb24: '""' + dc_offs_enb25: '""' + dc_offs_enb26: '""' + dc_offs_enb27: '""' + dc_offs_enb28: '""' + dc_offs_enb29: '""' + dc_offs_enb3: '""' + dc_offs_enb30: '""' + dc_offs_enb31: '""' + dc_offs_enb4: '""' + dc_offs_enb5: '""' + dc_offs_enb6: '""' + dc_offs_enb7: '""' + dc_offs_enb8: '""' + dc_offs_enb9: '""' + dev_addr: '""' + dev_args: '""' + gain0: '40' + gain1: '0' + gain10: '0' + gain11: '0' + gain12: '0' + gain13: '0' + gain14: '0' + gain15: '0' + gain16: '0' + gain17: '0' + gain18: '0' + gain19: '0' + gain2: '0' + gain20: '0' + gain21: '0' + gain22: '0' + gain23: '0' + gain24: '0' + gain25: '0' + gain26: '0' + gain27: '0' + gain28: '0' + gain29: '0' + gain3: '0' + gain30: '0' + gain31: '0' + gain4: '0' + gain5: '0' + gain6: '0' + gain7: '0' + gain8: '0' + gain9: '0' + iq_imbal_enb0: '""' + iq_imbal_enb1: '""' + iq_imbal_enb10: '""' + iq_imbal_enb11: '""' + iq_imbal_enb12: '""' + iq_imbal_enb13: '""' + iq_imbal_enb14: '""' + iq_imbal_enb15: '""' + iq_imbal_enb16: '""' + iq_imbal_enb17: '""' + iq_imbal_enb18: '""' + iq_imbal_enb19: '""' + iq_imbal_enb2: '""' + iq_imbal_enb20: '""' + iq_imbal_enb21: '""' + iq_imbal_enb22: '""' + iq_imbal_enb23: '""' + iq_imbal_enb24: '""' + iq_imbal_enb25: '""' + iq_imbal_enb26: '""' + iq_imbal_enb27: '""' + iq_imbal_enb28: '""' + iq_imbal_enb29: '""' + iq_imbal_enb3: '""' + iq_imbal_enb30: '""' + iq_imbal_enb31: '""' + iq_imbal_enb4: '""' + iq_imbal_enb5: '""' + iq_imbal_enb6: '""' + iq_imbal_enb7: '""' + iq_imbal_enb8: '""' + iq_imbal_enb9: '""' + lo_export0: 'False' + lo_export1: 'False' + lo_export10: 'False' + lo_export11: 'False' + lo_export12: 'False' + lo_export13: 'False' + lo_export14: 'False' + lo_export15: 'False' + lo_export16: 'False' + lo_export17: 'False' + lo_export18: 'False' + lo_export19: 'False' + lo_export2: 'False' + lo_export20: 'False' + lo_export21: 'False' + lo_export22: 'False' + lo_export23: 'False' + lo_export24: 'False' + lo_export25: 'False' + lo_export26: 'False' + lo_export27: 'False' + lo_export28: 'False' + lo_export29: 'False' + lo_export3: 'False' + lo_export30: 'False' + lo_export31: 'False' + lo_export4: 'False' + lo_export5: 'False' + lo_export6: 'False' + lo_export7: 'False' + lo_export8: 'False' + lo_export9: 'False' + lo_source0: internal + lo_source1: internal + lo_source10: internal + lo_source11: internal + lo_source12: internal + lo_source13: internal + lo_source14: internal + lo_source15: internal + lo_source16: internal + lo_source17: internal + lo_source18: internal + lo_source19: internal + lo_source2: internal + lo_source20: internal + lo_source21: internal + lo_source22: internal + lo_source23: internal + lo_source24: internal + lo_source25: internal + lo_source26: internal + lo_source27: internal + lo_source28: internal + lo_source29: internal + lo_source3: internal + lo_source30: internal + lo_source31: internal + lo_source4: internal + lo_source5: internal + lo_source6: internal + lo_source7: internal + lo_source8: internal + lo_source9: internal + maxoutbuf: '0' + minoutbuf: '0' + nchan: '1' + norm_gain0: 'False' + norm_gain1: 'False' + norm_gain10: 'False' + norm_gain11: 'False' + norm_gain12: 'False' + norm_gain13: 'False' + norm_gain14: 'False' + norm_gain15: 'False' + norm_gain16: 'False' + norm_gain17: 'False' + norm_gain18: 'False' + norm_gain19: 'False' + norm_gain2: 'False' + norm_gain20: 'False' + norm_gain21: 'False' + norm_gain22: 'False' + norm_gain23: 'False' + norm_gain24: 'False' + norm_gain25: 'False' + norm_gain26: 'False' + norm_gain27: 'False' + norm_gain28: 'False' + norm_gain29: 'False' + norm_gain3: 'False' + norm_gain30: 'False' + norm_gain31: 'False' + norm_gain4: 'False' + norm_gain5: 'False' + norm_gain6: 'False' + norm_gain7: 'False' + norm_gain8: 'False' + norm_gain9: 'False' + num_mboards: '1' + otw: '' + rx_agc0: Default + rx_agc1: Default + rx_agc10: Default + rx_agc11: Default + rx_agc12: Default + rx_agc13: Default + rx_agc14: Default + rx_agc15: Default + rx_agc16: Default + rx_agc17: Default + rx_agc18: Default + rx_agc19: Default + rx_agc2: Default + rx_agc20: Default + rx_agc21: Default + rx_agc22: Default + rx_agc23: Default + rx_agc24: Default + rx_agc25: Default + rx_agc26: Default + rx_agc27: Default + rx_agc28: Default + rx_agc29: Default + rx_agc3: Default + rx_agc30: Default + rx_agc31: Default + rx_agc4: Default + rx_agc5: Default + rx_agc6: Default + rx_agc7: Default + rx_agc8: Default + rx_agc9: Default + samp_rate: samp_rate + sd_spec0: '' + sd_spec1: '' + sd_spec2: '' + sd_spec3: '' + sd_spec4: '' + sd_spec5: '' + sd_spec6: '' + sd_spec7: '' + show_lo_controls: 'False' + stream_args: '' + stream_chans: '[]' + sync: sync + time_source0: '' + time_source1: '' + time_source2: '' + time_source3: '' + time_source4: '' + time_source5: '' + time_source6: '' + time_source7: '' + type: fc32 + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [52, 459] + rotation: 0 + state: disabled +- name: video_sdl_sink_0_0_0 + id: video_sdl_sink + parameters: + affinity: '' + alias: '' + comment: "Enable this path when you are sure what the \nresolution is (and defaut\ + \ to those values on \nthe chooser)." + display_height: Vsize + display_width: Hsize + fps: '0' + height: Vsize + num_channels: '1' + type: short + width: interpolatedHsize + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [983, 755] + rotation: 270 + state: enabled + +connections: +- [FFT_autocorrelation_0_0, '0', qtgui_time_sink_x_1_0, '0'] +- [FFT_autocorrelation_0_0, '0', tempest_fft_peak_fine_sampling_sync_0_0, '0'] +- [Keep_1_in_N_Frames_0, '0', FFT_autocorrelation_0_0, '0'] +- [Keep_1_in_N_Frames_0, '0', tempest_fine_sampling_synchronization_0, '0'] +- [blocks_complex_to_mag_0, '0', tempest_normalize_flow_0, '0'] +- [blocks_file_source_0, '0', blocks_throttle_0, '0'] +- [blocks_float_to_short_0, '0', video_sdl_sink_0_0_0, '0'] +- [blocks_throttle_0, '0', Keep_1_in_N_Frames_0, '0'] +- [ratio_finder_toggle_on_and_off, pressed, tempest_fft_peak_fine_sampling_sync_0_0, + en] +- [tempest_fft_peak_fine_sampling_sync_0_0, '0', qtgui_time_sink_x_1, '0'] +- [tempest_fft_peak_fine_sampling_sync_0_0, en, tempest_sync_detector_0, en] +- [tempest_fft_peak_fine_sampling_sync_0_0, ratio, tempest_fine_sampling_synchronization_0, + ratio] +- [tempest_fine_sampling_synchronization_0, '0', blocks_complex_to_mag_0, '0'] +- [tempest_normalize_flow_0, '0', blocks_float_to_short_0, '0'] +- [uhd_usrp_source_0, '0', FFT_autocorrelation_0_0, '0'] +- [uhd_usrp_source_0, '0', Keep_1_in_N_Frames_0, '0'] +- [uhd_usrp_source_0, '0', tempest_fine_sampling_synchronization_0, '0'] + +metadata: + file_format: 1 diff --git a/examples/manual_tempest_example_FFT_peaks_hd_and_EQ.grc b/examples/manual_tempest_example_FFT_peaks_hd_and_EQ.grc new file mode 100644 index 0000000..5e1b7bf --- /dev/null +++ b/examples/manual_tempest_example_FFT_peaks_hd_and_EQ.grc @@ -0,0 +1,1707 @@ +options: + parameters: + author: '' + category: '[GRC Hier Blocks]' + cmake_opt: '' + comment: '' + copyright: '' + description: '' + gen_cmake: 'On' + gen_linking: dynamic + generate_options: qt_gui + hier_block_src_path: '.:' + id: manual_tempest_example + max_nouts: '0' + output_language: python + placement: (0,0) + qt_qss_theme: '' + realtime_scheduling: '1' + run: 'True' + run_command: '{python} -u {filename}' + run_options: prompt + sizing_mode: fixed + thread_safe_setters: '' + title: '' + window_size: '' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [81, 12] + rotation: 0 + state: enabled + +blocks: +- name: DelaySyncDetector + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: '' + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '0' + step: interpolatedHsize*1 + stop: Vsize*interpolatedHsize + value: interpolatedHsize*1 + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [932, 1064] + rotation: 0 + state: enabled +- name: DroppedFrames + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: '' + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '1' + step: '1' + stop: '100' + value: '50' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [766, 252] + rotation: 0 + state: true +- name: Hblank + id: variable + parameters: + comment: '' + value: Hsize-Hvisible + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [623, 168] + rotation: 0 + state: enabled +- name: Hsize + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: Horizontal resolution (total) + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: int(4096*1.5) + value: '2200' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [350, 102] + rotation: 0 + state: enabled +- name: Hvisible + id: variable + parameters: + comment: '' + value: '1920' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [624, 64] + rotation: 0 + state: enabled +- name: Vblank + id: variable + parameters: + comment: '' + value: Vsize-Vvisible + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [750, 178] + rotation: 0 + state: enabled +- name: Vsize + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: Vertical resolution (total) + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: int(2160*1.5) + value: '1125' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [493, 104] + rotation: 0 + state: enabled +- name: Vvisible + id: variable + parameters: + comment: '' + value: '1080' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [750, 126] + rotation: 0 + state: enabled +- name: eq_fir_1080p + id: variable + parameters: + comment: '' + value: '[-0.0004 + 0j,-0.0000 + 0.0000j,-0.0004 - 0.0000j,-0.0000 + 0.0001j,-0.0004 + - 0.0001j,-0.0000 + 0.0001j,-0.0004 - 0.0001j,-0.0000 + 0.0002j,-0.0004 + - 0.0001j,-0.0001 + 0.0002j,-0.0003 - 0.0001j,-0.0001 + 0.0003j,-0.0003 + - 0.0001j,-0.0002 + 0.0003j,-0.0003 - 0.0001j,-0.0002 + 0.0004j,-0.0002 + - 0.0001j,-0.0002 + 0.0004j,-0.0002 - 0.0001j,-0.0003 + 0.0004j,-0.0001 + - 0.0001j,-0.0003 + 0.0004j,-0.0001 - 0.0001j,-0.0004 + 0.0004j,-0.0000 + - 0.0000j,-0.0004 + 0.0004j, 0.0000 + 0.0000j,-0.0005 + 0.0004j, 0.0000 + + 0.0001j,-0.0005 + 0.0004j, 0.0001 + 0.0001j,-0.0006 + 0.0003j, 0.0001 + + 0.0002j,-0.0006 + 0.0003j, 0.0001 + 0.0002j,-0.0006 + 0.0003j, 0.0001 + + 0.0003j,-0.0006 + 0.0002j, 0.0001 + 0.0004j,-0.0006 + 0.0002j, 0.0001 + + 0.0005j,-0.0006 + 0.0001j, 0.0001 + 0.0005j,-0.0006 + 0.0001j, 0.0001 + + 0.0006j,-0.0006 + 0.0000j, 0.0000 + 0.0007j,-0.0006 - 0.0000j,-0.0000 + + 0.0008j,-0.0005 - 0.0000j,-0.0001 + 0.0008j,-0.0005 - 0.0001j,-0.0002 + + 0.0009j,-0.0004 - 0.0001j,-0.0002 + 0.0009j,-0.0004 - 0.0001j,-0.0003 + + 0.0010j,-0.0003 - 0.0001j,-0.0004 + 0.0010j,-0.0002 - 0.0001j,-0.0005 + + 0.0010j,-0.0002 - 0.0001j,-0.0006 + 0.0011j,-0.0001 - 0.0001j,-0.0007 + + 0.0011j,-0.0000 - 0.0000j,-0.0008 + 0.0010j, 0.0000 + 0.0000j,-0.0009 + + 0.0010j, 0.0001 + 0.0001j,-0.0010 + 0.0010j, 0.0002 + 0.0002j,-0.0011 + + 0.0009j, 0.0002 + 0.0003j,-0.0011 + 0.0009j, 0.0003 + 0.0004j,-0.0012 + + 0.0008j, 0.0003 + 0.0005j,-0.0013 + 0.0007j, 0.0003 + 0.0006j,-0.0013 + + 0.0006j, 0.0003 + 0.0007j,-0.0014 + 0.0005j, 0.0003 + 0.0008j,-0.0014 + + 0.0004j, 0.0003 + 0.0010j,-0.0014 + 0.0003j, 0.0002 + 0.0011j,-0.0014 + + 0.0002j, 0.0002 + 0.0013j,-0.0015 + 0.0002j, 0.0001 + 0.0019j,-0.0038 + + 0.0001j, 0.0001 + 0.0198j, 0.0603 + 0.0018j, 0.0091 - 0.1418j,-0.2643 + - 0.0260j,-0.0543 + 0.4093j, 0.5602 + 0.0937j, 0.1441 - 0.7130j,-0.8669 + - 0.2059j,-0.2777 + 1.0157j, 1.1535 + 0.3576j, 0.4438 - 1.2773j,-1.3776 + - 0.5314j,-0.6122 + 1.4403j, 1.4636 + 0.6813j, 0.7425 - 1.4640j,-1.4577 + - 0.8023j,-0.8613 + 1.4470j, 1.4300 + 0.9179j, 0.9747 - 1.4114j,-1.3954 + - 1.0349j,-1.0955 + 1.3775j, 1.3531 + 1.1528j, 1.2096 - 1.3263j,-1.3019 + - 1.2703j,-1.3319 + 1.2759j, 1.2436 + 1.3891j, 1.4451 - 1.2084j,-1.1749 + - 1.5056j,-1.5673 + 1.1402j, 1.0995 + 1.6238j, 1.6782 - 1.0555j,-1.0126 + - 1.7375j,-1.7986 + 0.9685j, 0.9189 + 1.8538j, 1.9057 - 0.8658j,-0.8130 + - 1.9627j,-2.0224 + 0.7588j, 0.6998 + 2.0754j, 2.1239 - 0.6372j,-0.5739 + - 2.1776j,-2.2347 + 0.5090j, 0.4399 + 2.2848j, 2.3289 - 0.3674j,-0.2933 + - 2.3781j,-2.4316 + 0.2169j, 0.1370 + 2.4778j, 2.5165 - 0.0541j, 0.0314 + - 2.5599j,-2.6085 - 0.1201j,-0.2118 + 2.6496j, 2.6819 + 0.3057j, 0.4032 + - 2.7181j,-2.7604 - 0.5052j,-0.6097 + 2.7952j, 2.8196 + 0.7155j, 0.8257 + - 2.8472j,-2.8814 - 0.9421j,-1.0608 + 2.9083j, 2.9235 + 1.1796j, 1.3035 + - 2.9407j,-2.9648 - 1.4358j,-1.5705 + 2.9820j, 2.9863 + 1.7038j, 1.8430 + - 2.9910j,-3.0027 - 1.9930j,-2.1461 + 3.0078j, 2.9988 + 2.2962j, 2.4527 + - 2.9886j,-2.9849 - 2.6231j,-2.7977 + 2.9749j, 2.9497 + 2.9679j, 3.1448 + - 2.9214j,-2.8985 - 3.3394j,-3.5403 + 2.8692j, 2.8239 + 3.7352j, 3.9374 + - 2.7730j,-2.7258 - 4.1619j,-4.3958 + 2.6715j, 2.6001 + 4.6228j, 4.8579 + - 2.5204j,-2.4414 - 5.1213j,-5.3988 + 2.3536j, 2.2471 + 5.6694j, 5.9499 + - 2.1289j,-2.0065 - 6.2670j,-6.6056 + 1.8717j, 1.7156 + 6.9393j, 7.2870 + - 1.5427j,-1.3575 - 7.6836j,-8.1142 + 1.1528j, 0.9212 + 8.5461j, 9.0016 + - 0.6640j,-0.3802 - 9.5270j,10.1094 + 0.0620j,-0.2958 + 10.7103j,11.3586 + + 0.6978j, 1.1560 - 12.1183j,12.9856 - 1.6826j,-2.2839 + 13.9218j,14.9722 + + 2.9782j, 3.8038 - 16.2383j,17.7577 - 4.7971j,-5.9920 + 19.5370j,21.6829 + + 7.4594j, 9.3348 - 24.4225j,28.1470 - 11.8617j,15.4831 + 33.5314j,40.9709 + + 20.6230j,26.6688 - 48.8079j,52.0219 - 30.7484j,28.2403 + 44.2950j,23.3522 + + 16.0214j,-3.8869 + 5.2747j,30.8124 + 24.3519j,37.7829 - 44.6248j,45.5825 + - 41.3136j,37.7025 + 38.8773j,30.6655 + 31.8158j,26.8368 - 24.1739j,19.7007 + - 23.4135j,21.0374 + 16.5218j,14.0970 + 19.2534j,17.8348 - 12.1558j,10.5339 + - 16.6349j,15.6016 + 9.1571j, 8.0025 + 14.7531j,14.0496 - 7.0180j,-6.1378 + - 13.4003j,12.7899 + 5.3438j, 4.6462 + 12.2684j,11.8264 - 4.0280j,-3.4572 + - 11.3969j,10.9712 + 2.9277j, 2.4483 + 10.5981j,10.2775 - 2.0116j,-1.6020 + - 9.9561j,-9.6259 + 1.2172j, 0.8612 + 9.3302j, 9.0735 - 0.5295j,-0.2163 + - 8.8117j,-8.5362 - 0.0786j,-0.3561 + 8.2845j, 8.0638 + 0.6197j, 0.8691 + - 7.8372j,-7.5953 - 1.1029j,-1.3255 + 7.3701j, 7.1703 + 1.5410j, 1.7448 + - 6.9655j,-6.7452 - 1.9337j,-2.1150 + 6.5365j, 6.3493 + 2.2938j, 2.4627 + - 6.1581j,-5.9524 - 2.6167j,-2.7650 + 5.7545j, 5.5747 + 2.9141j, 3.0547 + - 5.3922j,-5.1967 - 3.1801j,-3.3007 + 5.0061j, 4.8306 + 3.4243j, 3.5409 + - 4.6538j,-4.4656 - 3.6420j,-3.7384 + 4.2804j, 4.1076 + 3.8393j, 3.9345 + - 3.9345j,-3.7519 - 4.0141j,-4.0887 + 3.5709j, 3.3999 + 4.1688j, 4.2445 + - 3.2294j,-3.0514 - 4.3046j,-4.3591 + 2.8742j, 2.7047 + 4.4197j, 4.4769 + - 2.5361j,-2.3622 - 4.5189j,-4.5547 + 2.1885j, 2.0207 + 4.5966j, 4.6361 + - 1.8540j,-1.6839 - 4.6609j,-4.6790 + 1.5140j, 1.3482 + 4.7029j, 4.7252 + - 1.1836j,-1.0173 - 4.7335j,-4.7347 + 0.8515j, 0.6884 + 4.7411j, 4.7465 + - 0.5264j,-0.3642 - 4.7389j,-4.7239 + 0.2030j, 0.0434 + 4.7133j, 4.7021 + + 0.1154j, 0.2730 - 4.6788j,-4.6481 - 0.4290j,-0.5844 + 4.6211j, 4.5934 + + 0.7391j, 0.8915 - 4.5546j,-4.5088 - 1.0416j,-1.1917 + 4.4659j, 4.4220 + + 1.3414j, 1.4877 - 4.3679j,-4.3074 - 1.6313j,-1.7754 + 4.2492j, 4.1893 + + 1.9189j, 2.0580 - 4.1200j,-4.0452 - 2.1942j,-2.3315 + 3.9723j, 3.8968 + + 2.4676j, 2.5985 - 3.8124j,-3.7237 - 2.7264j,-2.8561 + 3.6366j, 3.5461 + + 2.9838j, 3.1047 - 3.4467j,-3.3444 - 3.2235j,-3.3448 + 3.2438j, 3.1387 + + 3.4630j, 3.5729 - 3.0251j,-2.9091 - 3.6809j,-3.7913 + 2.7939j, 2.6757 + + 3.9000j, 4.0096 - 2.5563j,-2.4240 - 4.1010j,-4.0498 + 2.2128j, 1.8310 + + 3.6375j, 2.7604 - 1.2746j,-0.6875 - 1.6313j,-0.6705 + 0.2563j, 0.0515 + + 0.1497j, 0.0019 - 0.0006j, 0.0015 + 0.0056j, 0.0078 - 0.0018j,-0.0011 + - 0.0057j, 0.0080 - 0.0013j,-0.0010 - 0.0077j, 0.0073 - 0.0007j,-0.0005 + - 0.0080j, 0.0065 - 0.0002j, 0.0000 - 0.0078j, 0.0057 + 0.0002j, 0.0006 + - 0.0076j, 0.0050 + 0.0005j, 0.0010 - 0.0073j, 0.0044 + 0.0008j, 0.0015 + - 0.0071j, 0.0038 + 0.0009j, 0.0019 - 0.0068j, 0.0032 + 0.0010j, 0.0023 + - 0.0065j, 0.0027 + 0.0011j, 0.0027 - 0.0062j, 0.0022 + 0.0011j, 0.0031 + - 0.0059j, 0.0018 + 0.0010j, 0.0034 - 0.0056j, 0.0014 + 0.0009j, 0.0037 + - 0.0052j, 0.0010 + 0.0008j, 0.0040 - 0.0049j, 0.0007 + 0.0006j, 0.0042 + - 0.0045j, 0.0004 + 0.0004j, 0.0044 - 0.0042j, 0.0002 + 0.0002j, 0.0046 + - 0.0038j,-0.0001 - 0.0001j, 0.0047 - 0.0034j,-0.0002 - 0.0003j, 0.0048 + - 0.0030j,-0.0003 - 0.0006j, 0.0049 - 0.0026j,-0.0004 - 0.0009j, 0.0049 + - 0.0022j,-0.0005 - 0.0012j, 0.0049 - 0.0018j,-0.0005 - 0.0015j, 0.0048 + - 0.0014j,-0.0004 - 0.0017j, 0.0047 - 0.0010j,-0.0004 - 0.0020j, 0.0046 + - 0.0007j,-0.0003 - 0.0023j, 0.0044 - 0.0004j,-0.0001 - 0.0025j, 0.0043 + - 0.0001j, 0.0001 - 0.0027j, 0.0040 + 0.0002j, 0.0003 - 0.0029j, 0.0038 + + 0.0005j, 0.0005 - 0.0030j, 0.0035 + 0.0007j, 0.0007 - 0.0032j, 0.0033 + + 0.0009j, 0.0010 - 0.0033j, 0.0030 + 0.0010j, 0.0012 - 0.0033j, 0.0027 + + 0.0011j, 0.0015 - 0.0033j, 0.0024 + 0.0012j, 0.0018 - 0.0033j, 0.0021 + + 0.0012j, 0.0021 - 0.0033j, 0.0018 + 0.0012j, 0.0023 - 0.0032j, 0.0015 + + 0.0012j, 0.0026 - 0.0031j, 0.0012 + 0.0011j, 0.0029 - 0.0030j, 0.0010 + + 0.0010j, 0.0031 - 0.0028j, 0.0007 + 0.0009j, 0.0033 - 0.0026j, 0.0005 + + 0.0007j, 0.0035 - 0.0024j, 0.0003 + 0.0005j, 0.0036 - 0.0022j, 0.0002 + + 0.0003j, 0.0038 - 0.0019j, 0.0001 + 0.0001j, 0.0039 - 0.0016j,-0.0000 + - 0.0001j, 0.0039 - 0.0014j,-0.0001 - 0.0003j, 0.0040 - 0.0011j,-0.0001 + - 0.0006j, 0.0040 - 0.0008j,-0.0001 - 0.0008j, 0.0039 - 0.0005j,-0.0001 + - 0.0011j, 0.0039 - 0.0002j,-0.0000 - 0.0013j, 0.0038 + 0.0000j, 0.0001 + - 0.0015j, 0.0037 + 0.0003j, 0.0002 - 0.0017j, 0.0035 + 0.0005j, 0.0003 + - 0.0019j, 0.0033 + 0.0007j, 0.0005 - 0.0020j, 0.0032 + 0.0009j, 0.0007 + - 0.0022j, 0.0029 + 0.0010j, 0.0009 - 0.0023j, 0.0027 + 0.0012j, 0.0011 + - 0.0024j, 0.0025 + 0.0013j, 0.0014 - 0.0024j, 0.0022 + 0.0013j, 0.0016 + - 0.0024j, 0.0020 + 0.0014j, 0.0018 - 0.0024j, 0.0017 + 0.0014j, 0.0021 + - 0.0024j, 0.0015 + 0.0014j, 0.0023 - 0.0023j, 0.0013 + 0.0013j, 0.0025 + - 0.0022j, 0.0010 + 0.0012j, 0.0027 - 0.0021j, 0.0008 + 0.0011j, 0.0029 + - 0.0020j, 0.0006 + 0.0010j, 0.0031 - 0.0018j, 0.0005 + 0.0009j, 0.0033 + - 0.0016j, 0.0003 + 0.0007j, 0.0034 - 0.0014j, 0.0002 + 0.0005j, 0.0035 + - 0.0012j, 0.0001 + 0.0003j, 0.0036 - 0.0009j, 0.0000 + 0.0001j, 0.0036 + - 0.0007j,-0.0000 - 0.0001j, 0.0036 - 0.0004j,-0.0000 - 0.0004j, 0.0036 + - 0.0002j,-0.0000 - 0.0006j, 0.0036 + 0.0001j, 0.0000 - 0.0008j, 0.0035 + + 0.0003j, 0.0001 - 0.0010j, 0.0034 + 0.0005j, 0.0002 - 0.0012j, 0.0033 + + 0.0007j, 0.0004 - 0.0014j, 0.0032 + 0.0009j, 0.0005 - 0.0015j, 0.0030 + + 0.0011j, 0.0007 - 0.0017j, 0.0028 + 0.0013j, 0.0009 - 0.0018j, 0.0026 + + 0.0014j, 0.0011 - 0.0019j, 0.0024 + 0.0015j, 0.0013 - 0.0019j, 0.0022 + + 0.0016j, 0.0015 - 0.0020j, 0.0019 + 0.0016j, 0.0017 - 0.0020j, 0.0017 + + 0.0016j, 0.0020 - 0.0019j, 0.0015 + 0.0016j, 0.0022 - 0.0019j, 0.0013 + + 0.0016j, 0.0024 - 0.0018j, 0.0011 + 0.0015j, 0.0026 - 0.0017j, 0.0008 + + 0.0014j, 0.0028 - 0.0016j, 0.0007 + 0.0013j, 0.0030 - 0.0014j, 0.0005 + + 0.0012j, 0.0031 - 0.0012j, 0.0003 + 0.0010j, 0.0033 - 0.0010j, 0.0002 + + 0.0008j, 0.0034 - 0.0008j, 0.0001 + 0.0006j, 0.0035 - 0.0006j, 0.0001 + + 0.0004j, 0.0035 - 0.0004j, 0.0000 + 0.0002j, 0.0036 - 0.0001j]' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [842, 184] + rotation: 0 + state: disabled +- name: ferror + id: variable + parameters: + comment: '' + value: (samp_rate*fine_freq)/(2*pi*interpolatedHsize) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1077, 302] + rotation: 0 + state: true +- name: fft_size + id: variable + parameters: + comment: '' + value: 2**21 + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [592, 224] + rotation: 0 + state: true +- name: filtro_ecualizador_1st + id: variable + parameters: + comment: '' + value: '[-6.13e-05-1.22e-05j, + + 6.18e-04-2.02e-04j, + + 3.84e-03-2.43e-03j, + + 5.50e-03-3.87e-03j, + + 7.65e-03-5.51e-03j, + + 8.36e-03-6.47e-03j, + + 3.42e-03-3.78e-03j, + + -7.81e-03+2.35e-03j, + + -3.86e-02+2.21e-02j, + + -8.12e-02+4.68e-02j, + + -1.62e-01+9.94e-02j, + + -2.48e-01+1.48e-01j, + + -3.92e-01+2.43e-01j, + + -5.04e-01+2.99e-01j, + + -7.22e-01+4.49e-01j, + + -6.65e-01+3.56e-01j, + + 7.83e-01-4.68e-01j, + + 6.76e-01-3.60e-01j, + + 5.19e-01-2.92e-01j, + + 3.70e-01-1.98e-01j, + + 2.48e-01-1.39e-01j, + + 1.48e-01-8.02e-02j, + + 7.74e-02-4.50e-02j, + + 3.09e-02-1.83e-02j, + + 4.68e-03-4.89e-03j, + + -6.43e-03+1.92e-03j, + + -9.85e-03+4.10e-03j, + + -8.23e-03+3.73e-03j, + + -5.86e-03+2.73e-03j, + + -3.57e-03+1.94e-03j, + + -1.81e-04+2.41e-04j, + + ]' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [976, 185] + rotation: 0 + state: enabled +- name: filtro_ecualizador_viejo + id: variable + parameters: + comment: '' + value: '[ 3.5209e-07 - 1.0836e-06*1j, 1.4076e-06 - 2.3919e-06*1j, 5.9650e-06 + - 6.1506e-06*1j, 1.5271e-05 - 1.4326e-05*1j, 4.1151e-05 - 3.6713e-05*1j , + 3.9905e-04 - 6.3391e-04*1j, 1.4256e-03 - 4.2010e-04*1j, 1.7775e-03 - 1.1448e-03*1j, 2.6252e-03 + - 8.9501e-04*1j, 2.9812e-03 - 1.6801e-03*1j , 4.3656e-03 - 1.5903e-03*1j, 4.8418e-03 + - 2.4404e-03*1j, 6.9685e-03 - 2.6534e-03*1j, 7.6915e-03 - 3.5182e-03*1j, 1.0749e-02 + - 4.2291e-03*1j , 1.1902e-02 - 5.0055e-03*1j, 1.6024e-02 - 6.4526e-03*1j, 1.7878e-02 + - 7.0057e-03*1j, 2.3102e-02 - 9.4388e-03*1j, 2.6038e-02 - 9.6422e-03*1j , + 3.2280e-02 - 1.3269e-02*1j, 3.6789e-02 - 1.3061e-02*1j, 4.3841e-02 - 1.7982e-02*1j, 5.0495e-02 + - 1.7431e-02*1j, 5.8052e-02 - 2.3569e-02*1j , 6.7444e-02 - 2.2930e-02*1j, 7.5169e-02 + - 2.9981e-02*1j, 8.7819e-02 - 2.9736e-02*1j, 9.5427e-02 - 3.7136e-02*1j, 1.1167e-01 + - 3.8000e-02*1j , 1.1904e-01 - 4.4941e-02*1j, 1.3890e-01 - 4.7822e-02*1j, 1.4617e-01 + - 5.3309e-02*1j, 1.6926e-01 - 5.9221e-02*1j, 1.7695e-01 - 6.2182e-02*1j , + 2.0235e-01 - 7.2116e-02*1j, 2.1140e-01 - 7.1549e-02*1j, 2.3765e-01 - 8.6305e-02*1j, 2.4944e-01 + - 8.1456e-02*1j, 2.7453e-01 - 1.0146e-01*1j , 2.9088e-01 - 9.2017e-02*1j, 3.1227e-01 + - 1.1711e-01*1j, 3.3535e-01 - 1.0341e-01*1j, 3.5009e-01 - 1.3267e-01*1j, 3.8238e-01 + - 1.1587e-01*1j , 3.8713e-01 - 1.4742e-01*1j, 4.3146e-01 - 1.2974e-01*1j, 4.2233e-01 + - 1.6044e-01*1j, 4.8222e-01 - 1.4561e-01*1j, 4.5414e-01 - 1.7040e-01*1j , + 5.3510e-01 - 1.6460e-01*1j, 4.8020e-01 - 1.7358e-01*1j, 5.9455e-01 - 1.9170e-01*1j, 4.8669e-01 + - 1.5965e-01*1j, 6.9081e-01 - 2.6218e-01*1j , 3.1530e-01 + 9.3424e-02*1j, -7.1052e-01 + + 2.8833e-01*1j, -5.1861e-01 + 1.1433e-01*1j, -5.7535e-01 + 2.2141e-01*1j, -5.2124e-01 + + 1.3015e-01*1j , -5.1574e-01 + 1.9092e-01*1j, -4.9507e-01 + 1.3022e-01*1j, + -4.6700e-01 + 1.6704e-01*1j, -4.5921e-01 + 1.2586e-01*1j, -4.2136e-01 + 1.4550e-01*1j + , -4.1873e-01 + 1.1899e-01*1j, -3.7785e-01 + 1.2562e-01*1j, -3.7593e-01 + 1.1045e-01*1j, + -3.3620e-01 + 1.0737e-01*1j, -3.3244e-01 + 1.0068e-01*1j , -2.9648e-01 + 9.0865e-02*1j, + -2.8954e-01 + 9.0026e-02*1j, -2.5879e-01 + 7.6211e-02*1j, -2.4833e-01 + 7.8847e-02*1j, + -2.2331e-01 + 6.3414e-02*1j , -2.0968e-01 + 6.7517e-02*1j, -1.9019e-01 + 5.2395e-02*1j, + -1.7425e-01 + 5.6423e-02*1j, -1.5960e-01 + 4.2999e-02*1j, -1.4246e-01 + 4.5930e-02*1j + , -1.3169e-01 + 3.5031e-02*1j, -1.1454e-01 + 3.6352e-02*1j, -1.0661e-01 + 2.8282e-02*1j, + -9.0505e-02 + 2.7922e-02*1j, -8.4485e-02 + 2.2562e-02*1j , -7.0222e-02 + 2.0778e-02*1j, + -6.5365e-02 + 1.7714e-02*1j, -5.3441e-02 + 1.4956e-02*1j, -4.9242e-02 + 1.3619e-02*1j, + -3.9832e-02 + 1.0400e-02*1j , -3.6019e-02 + 1.0195e-02*1j, -2.9025e-02 + 6.9842e-03*1j, + -2.5513e-02 + 7.3869e-03*1j, -2.0639e-02 + 4.5335e-03*1j, -1.7457e-02 + 5.1469e-03*1j + , -1.4300e-02 + 2.8536e-03*1j, -1.1520e-02 + 3.4260e-03*1j, -9.6508e-03 + 1.7541e-03*1j, + -7.3304e-03 + 2.1628e-03*1j, -6.3552e-03 + 1.0661e-03*1j , -4.5025e-03 + 1.2798e-03*1j, + -4.1002e-03 + 6.5174e-04*1j, -2.6663e-03 + 6.8397e-04*1j, -2.5965e-03 + 4.0387e-04*1j, + -1.4935e-03 + 2.7171e-04*1j , -1.6079e-03 + 2.1239e-04*1j, 8.5832e-05 + 6.1758e-05*1j, 2.4841e-05 + + 1.8521e-05*1j, 9.8862e-06 + 7.4457e-06*1j, 3.4696e-06 + 2.6799e-06*1j , + 7.2346e-07 + 6.5333e-07*1j ]' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [979, 246] + rotation: 0 + state: disabled +- name: fine_freq + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: Sine multiply Freq correction + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '-50000' + step: '0.1' + stop: '50000' + value: '19215.22' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [972, 5] + rotation: 0 + state: enabled +- name: harmonic + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: Harmonic + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '1' + step: '1' + stop: '10' + value: '2' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [229, 132] + rotation: 0 + state: enabled +- name: interpolatedHblank + id: variable + parameters: + comment: '' + value: int(Hblank/float(px_rate)*samp_rate) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [740, 7] + rotation: 0 + state: enabled +- name: interpolatedHscreen + id: variable + parameters: + comment: '' + value: int(Hvisible/float(px_rate)*samp_rate) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [622, 116] + rotation: 0 + state: enabled +- name: interpolatedHsize + id: variable + parameters: + comment: '' + value: int(Hsize/float(px_rate)*samp_rate) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [747, 64] + rotation: 0 + state: enabled +- name: inverted + id: variable_qtgui_chooser + parameters: + comment: '' + gui_hint: tab_m@0 + label: Inverted colors? + label0: 'Yes' + label1: 'No' + label2: '' + label3: '' + label4: '' + labels: '[]' + num_opts: '2' + option1: '1' + option2: '2' + option3: '3' + option4: '4' + options: '[0, 1, 2]' + orient: Qt.QHBoxLayout + type: real + value: '-1' + widget: radio_buttons + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [850, 6] + rotation: 0 + state: enabled +- name: px_rate + id: variable + parameters: + comment: '' + value: Hsize*Vsize*refresh_rate + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [136, 64] + rotation: 0 + state: enabled +- name: refresh_rate + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@0 + label: Refresh Rate (Hz) + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '0' + step: '1' + stop: '240' + value: '60' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [222, 8] + rotation: 0 + state: enabled +- name: samp_rate + id: variable + parameters: + comment: '' + value: int(50e6) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [137, 116] + rotation: 0 + state: enabled +- name: FFT_autocorrelation_0_0 + id: FFT_autocorrelation + parameters: + affinity: '' + alias: '' + alpha: '1.0' + comment: '' + fft_size: int(fft_size) + maxoutbuf: '0' + minoutbuf: '0' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [242, 1191] + rotation: 270 + state: enabled +- name: Keep_1_in_N_Frames_0 + id: Keep_1_in_N_Frames + parameters: + affinity: '' + alias: '' + comment: '' + fac_decimation: DroppedFrames + fft_size: interpolatedHsize*Vsize*4 + maxoutbuf: '0' + minoutbuf: '0' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [349, 773] + rotation: 0 + state: enabled +- name: analog_sig_source_x_0_0 + id: analog_sig_source_x + parameters: + affinity: '' + alias: '' + amp: '1' + comment: '' + freq: -fine_freq + maxoutbuf: '0' + minoutbuf: '0' + offset: '0' + phase: '0' + samp_rate: samp_rate + type: complex + waveform: analog.GR_COS_WAVE + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [937, 705] + rotation: 0 + state: enabled +- name: blocks_complex_to_arg_0 + id: blocks_complex_to_arg + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1059, 396] + rotation: 0 + state: disabled +- name: blocks_complex_to_mag_0 + id: blocks_complex_to_mag + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1174, 908] + rotation: 0 + state: disabled +- name: blocks_complex_to_real_0 + id: blocks_complex_to_real + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1168, 637] + rotation: 0 + state: enabled +- name: blocks_delay_0 + id: blocks_delay + parameters: + affinity: '' + alias: '' + comment: '' + delay: DelaySyncDetector + maxoutbuf: '0' + minoutbuf: '0' + num_ports: '1' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [820, 680] + rotation: 0 + state: enabled +- name: blocks_delay_0_0 + id: blocks_delay + parameters: + affinity: '' + alias: '' + comment: '' + delay: DelaySyncDetector + maxoutbuf: '0' + minoutbuf: '0' + num_ports: '1' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [937, 906] + rotation: 0 + state: disabled +- name: blocks_delay_1 + id: blocks_delay + parameters: + affinity: '' + alias: '' + comment: '' + delay: interpolatedHsize + maxoutbuf: '0' + minoutbuf: '0' + num_ports: '1' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [603, 554] + rotation: 90 + state: disabled +- name: blocks_file_source_0 + id: blocks_file_source + parameters: + affinity: '' + alias: '' + begin_tag: pmt.PMT_NIL + comment: '' + file: /home/felipe/gnuradio/git/grabaciones_local/test2_19980KHz_1920_1080.dat + length: '0' + maxoutbuf: '0' + minoutbuf: '0' + offset: '0' + repeat: 'True' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [69, 626] + rotation: 0 + state: disabled +- name: blocks_float_to_short_0 + id: blocks_float_to_short + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + scale: inverted + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1424, 1113] + rotation: 270 + state: enabled +- name: blocks_multiply_conjugate_cc_0 + id: blocks_multiply_conjugate_cc + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [576, 374] + rotation: 90 + state: disabled +- name: blocks_multiply_xx_0_0 + id: blocks_multiply_xx + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + num_inputs: '2' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1239, 688] + rotation: 0 + state: enabled +- name: blocks_throttle_0 + id: blocks_throttle + parameters: + affinity: '' + alias: '' + comment: '' + ignoretag: 'True' + maxoutbuf: '0' + minoutbuf: '0' + samples_per_second: samp_rate + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [271, 650] + rotation: 0 + state: disabled +- name: import_0 + id: import + parameters: + alias: '' + comment: '' + imports: from math import pi + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1048, 141] + rotation: 0 + state: true +- name: interp_fir_filter_xxx_1 + id: interp_fir_filter_xxx + parameters: + affinity: '' + alias: '' + comment: '' + interp: '1' + maxoutbuf: '0' + minoutbuf: '0' + samp_delay: '0' + taps: filtro_ecualizador_1st + type: ccc + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [721, 726] + rotation: 0 + state: bypassed +- name: qtgui_time_sink_x_0 + id: qtgui_time_sink_x + parameters: + affinity: '' + alias: '' + alpha1: '1.0' + alpha10: '1.0' + alpha2: '1.0' + alpha3: '1.0' + alpha4: '1.0' + alpha5: '1.0' + alpha6: '1.0' + alpha7: '1.0' + alpha8: '1.0' + alpha9: '1.0' + autoscale: 'True' + axislabels: 'True' + color1: blue + color10: dark blue + color2: red + color3: green + color4: black + color5: cyan + color6: magenta + color7: yellow + color8: dark red + color9: dark green + comment: '' + ctrlpanel: 'False' + entags: 'True' + grid: 'False' + gui_hint: tab_m@0 + label1: Signal 1 + label10: Signal 10 + label2: Signal 2 + label3: Signal 3 + label4: Signal 4 + label5: Signal 5 + label6: Signal 6 + label7: Signal 7 + label8: Signal 8 + label9: Signal 9 + legend: 'True' + marker1: '-1' + marker10: '-1' + marker2: '-1' + marker3: '-1' + marker4: '-1' + marker5: '-1' + marker6: '-1' + marker7: '-1' + marker8: '-1' + marker9: '-1' + name: '""' + nconnections: '1' + size: '1024' + srate: samp_rate + stemplot: 'False' + style1: '1' + style10: '1' + style2: '1' + style3: '1' + style4: '1' + style5: '1' + style6: '1' + style7: '1' + style8: '1' + style9: '1' + tr_chan: '0' + tr_delay: '0' + tr_level: '0.0' + tr_mode: qtgui.TRIG_MODE_FREE + tr_slope: qtgui.TRIG_SLOPE_POS + tr_tag: '""' + type: float + update_time: '0.5' + width1: '1' + width10: '1' + width2: '1' + width3: '1' + width4: '1' + width5: '1' + width6: '1' + width7: '1' + width8: '1' + width9: '1' + ylabel: Phase difference (rad). + ymax: '1' + ymin: '-1' + yunit: '""' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1341, 496] + rotation: 0 + state: disabled +- name: qtgui_time_sink_x_1 + id: qtgui_time_sink_x + parameters: + affinity: '' + alias: '' + alpha1: '1.0' + alpha10: '1.0' + alpha2: '1.0' + alpha3: '1.0' + alpha4: '1.0' + alpha5: '1.0' + alpha6: '1.0' + alpha7: '1.0' + alpha8: '1.0' + alpha9: '1.0' + autoscale: 'False' + axislabels: 'True' + color1: blue + color10: dark blue + color2: red + color3: green + color4: black + color5: cyan + color6: magenta + color7: yellow + color8: dark red + color9: dark green + comment: '' + ctrlpanel: 'False' + entags: 'True' + grid: 'True' + gui_hint: tab_m@1 + label1: Signal 1 + label10: Signal 10 + label2: Signal 2 + label3: Signal 3 + label4: Signal 4 + label5: Signal 5 + label6: Signal 6 + label7: Signal 7 + label8: Signal 8 + label9: Signal 9 + legend: 'True' + marker1: '-1' + marker10: '-1' + marker2: '-1' + marker3: '-1' + marker4: '-1' + marker5: '-1' + marker6: '-1' + marker7: '-1' + marker8: '-1' + marker9: '-1' + name: '""' + nconnections: '1' + size: int(fft_size/2) + srate: samp_rate + stemplot: 'False' + style1: '1' + style10: '1' + style2: '1' + style3: '1' + style4: '1' + style5: '1' + style6: '1' + style7: '1' + style8: '1' + style9: '1' + tr_chan: '0' + tr_delay: '0' + tr_level: '19.0' + tr_mode: qtgui.TRIG_MODE_FREE + tr_slope: qtgui.TRIG_SLOPE_POS + tr_tag: '"peak_1"' + type: float + update_time: '2.0' + width1: '1' + width10: '1' + width2: '1' + width3: '1' + width4: '1' + width5: '1' + width6: '1' + width7: '1' + width8: '1' + width9: '1' + ylabel: Amplitude + ymax: '1' + ymin: '-1' + yunit: '""' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [490, 1022] + rotation: 90 + state: enabled +- name: ratio_finder_toggle_on_and_off + id: variable_qtgui_msg_push_button + parameters: + comment: '' + gui_hint: '' + label: Ratio Finder toggle ON or OFF (FFT peaks). + msgName: pressed + relBackgroundColor: default + relFontColor: default + type: bool + value: 'True' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [441, 1471] + rotation: 180 + state: enabled +- name: single_pole_iir_filter_xx_0 + id: single_pole_iir_filter_xx + parameters: + affinity: '' + alias: '' + alpha: '0.001' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [850, 392] + rotation: 0 + state: disabled +- name: tab_m + id: qtgui_tab_widget + parameters: + alias: '' + comment: '' + gui_hint: '' + label0: Tempest Main Tab + label1: Autocorrelation Plot Tab + label10: Tab 10 + label11: Tab 11 + label12: Tab 12 + label13: Tab 13 + label14: Tab 14 + label15: Tab 15 + label16: Tab 16 + label17: Tab 17 + label18: Tab 18 + label19: Tab 19 + label2: Tab 2 + label3: Tab 3 + label4: Tab 4 + label5: Tab 5 + label6: Tab 6 + label7: Tab 7 + label8: Tab 8 + label9: Tab 9 + num_tabs: '2' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [353, 8] + rotation: 0 + state: true +- name: tempest_fft_peak_fine_sampling_sync_0_0 + id: tempest_fft_peak_fine_sampling_sync + parameters: + Hvisible: interpolatedHsize + Vvisible: Vsize + affinity: '' + alias: '' + automatic_mode: 'True' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + refresh_rate: refresh_rate + sample_rate: samp_rate + size: int(fft_size) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [325, 1201] + rotation: 90 + state: enabled +- name: tempest_fine_sampling_synchronization_0 + id: tempest_fine_sampling_synchronization + parameters: + Htotal: interpolatedHsize + Vtotal: Vsize + affinity: '' + alias: '' + comment: '' + correct_sampling: '1' + max_deviation: 10.0/interpolatedHsize + maxoutbuf: '0' + minoutbuf: '0' + update_proba: 1.2e-2/(interpolatedHsize*Vsize) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [645, 791] + rotation: 0 + state: disabled +- name: tempest_infer_screen_resolution_1 + id: tempest_infer_screen_resolution + parameters: + affinity: '' + alias: '' + automatic_mode: 'True' + comment: '' + fft_size: int(fft_size) + maxoutbuf: '0' + minoutbuf: '0' + refresh_rate: refresh_rate + sample_rate: samp_rate + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [747, 1102] + rotation: 0 + state: disabled +- name: tempest_normalize_flow_0 + id: tempest_normalize_flow + parameters: + affinity: '' + alias: '' + alpha_avg: 1e-2 + comment: '' + max: '245' + maxoutbuf: '0' + min: '10' + minoutbuf: '0' + update_proba: '0.1' + window: interpolatedHsize + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1400, 924] + rotation: 270 + state: enabled +- name: tempest_sync_detector_0 + id: tempest_sync_detector + parameters: + affinity: '' + alias: '' + comment: '' + hblanking: interpolatedHblank + hscreen: interpolatedHscreen + maxoutbuf: '0' + minoutbuf: '0' + vblanking: Vblank + vscreen: Vsize-Vblank + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [772, 590] + rotation: 0 + state: enabled +- name: tempest_sync_detector_0_0 + id: tempest_sync_detector + parameters: + affinity: '' + alias: '' + comment: '' + hblanking: interpolatedHblank + hscreen: interpolatedHscreen + maxoutbuf: '0' + minoutbuf: '0' + vblanking: Vblank + vscreen: Vsize-Vblank + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [706, 950] + rotation: 0 + state: disabled +- name: uhd_usrp_source_0 + id: uhd_usrp_source + parameters: + affinity: '' + alias: '' + ant0: '' + ant1: '' + ant10: '' + ant11: '' + ant12: '' + ant13: '' + ant14: '' + ant15: '' + ant16: '' + ant17: '' + ant18: '' + ant19: '' + ant2: '' + ant20: '' + ant21: '' + ant22: '' + ant23: '' + ant24: '' + ant25: '' + ant26: '' + ant27: '' + ant28: '' + ant29: '' + ant3: '' + ant30: '' + ant31: '' + ant4: '' + ant5: '' + ant6: '' + ant7: '' + ant8: '' + ant9: '' + bw0: '0' + bw1: '0' + bw10: '0' + bw11: '0' + bw12: '0' + bw13: '0' + bw14: '0' + bw15: '0' + bw16: '0' + bw17: '0' + bw18: '0' + bw19: '0' + bw2: '0' + bw20: '0' + bw21: '0' + bw22: '0' + bw23: '0' + bw24: '0' + bw25: '0' + bw26: '0' + bw27: '0' + bw28: '0' + bw29: '0' + bw3: '0' + bw30: '0' + bw31: '0' + bw4: '0' + bw5: '0' + bw6: '0' + bw7: '0' + bw8: '0' + bw9: '0' + center_freq0: px_rate*harmonic + center_freq1: '0' + center_freq10: '0' + center_freq11: '0' + center_freq12: '0' + center_freq13: '0' + center_freq14: '0' + center_freq15: '0' + center_freq16: '0' + center_freq17: '0' + center_freq18: '0' + center_freq19: '0' + center_freq2: '0' + center_freq20: '0' + center_freq21: '0' + center_freq22: '0' + center_freq23: '0' + center_freq24: '0' + center_freq25: '0' + center_freq26: '0' + center_freq27: '0' + center_freq28: '0' + center_freq29: '0' + center_freq3: '0' + center_freq30: '0' + center_freq31: '0' + center_freq4: '0' + center_freq5: '0' + center_freq6: '0' + center_freq7: '0' + center_freq8: '0' + center_freq9: '0' + clock_rate: '0.0' + clock_source0: '' + clock_source1: '' + clock_source2: '' + clock_source3: '' + clock_source4: '' + clock_source5: '' + clock_source6: '' + clock_source7: '' + comment: '' + dc_offs_enb0: '""' + dc_offs_enb1: '""' + dc_offs_enb10: '""' + dc_offs_enb11: '""' + dc_offs_enb12: '""' + dc_offs_enb13: '""' + dc_offs_enb14: '""' + dc_offs_enb15: '""' + dc_offs_enb16: '""' + dc_offs_enb17: '""' + dc_offs_enb18: '""' + dc_offs_enb19: '""' + dc_offs_enb2: '""' + dc_offs_enb20: '""' + dc_offs_enb21: '""' + dc_offs_enb22: '""' + dc_offs_enb23: '""' + dc_offs_enb24: '""' + dc_offs_enb25: '""' + dc_offs_enb26: '""' + dc_offs_enb27: '""' + dc_offs_enb28: '""' + dc_offs_enb29: '""' + dc_offs_enb3: '""' + dc_offs_enb30: '""' + dc_offs_enb31: '""' + dc_offs_enb4: '""' + dc_offs_enb5: '""' + dc_offs_enb6: '""' + dc_offs_enb7: '""' + dc_offs_enb8: '""' + dc_offs_enb9: '""' + dev_addr: '""' + dev_args: '"recv_frame_size= 65536, num_recv_frames=128"' + gain0: '50' + gain1: '0' + gain10: '0' + gain11: '0' + gain12: '0' + gain13: '0' + gain14: '0' + gain15: '0' + gain16: '0' + gain17: '0' + gain18: '0' + gain19: '0' + gain2: '0' + gain20: '0' + gain21: '0' + gain22: '0' + gain23: '0' + gain24: '0' + gain25: '0' + gain26: '0' + gain27: '0' + gain28: '0' + gain29: '0' + gain3: '0' + gain30: '0' + gain31: '0' + gain4: '0' + gain5: '0' + gain6: '0' + gain7: '0' + gain8: '0' + gain9: '0' + iq_imbal_enb0: '""' + iq_imbal_enb1: '""' + iq_imbal_enb10: '""' + iq_imbal_enb11: '""' + iq_imbal_enb12: '""' + iq_imbal_enb13: '""' + iq_imbal_enb14: '""' + iq_imbal_enb15: '""' + iq_imbal_enb16: '""' + iq_imbal_enb17: '""' + iq_imbal_enb18: '""' + iq_imbal_enb19: '""' + iq_imbal_enb2: '""' + iq_imbal_enb20: '""' + iq_imbal_enb21: '""' + iq_imbal_enb22: '""' + iq_imbal_enb23: '""' + iq_imbal_enb24: '""' + iq_imbal_enb25: '""' + iq_imbal_enb26: '""' + iq_imbal_enb27: '""' + iq_imbal_enb28: '""' + iq_imbal_enb29: '""' + iq_imbal_enb3: '""' + iq_imbal_enb30: '""' + iq_imbal_enb31: '""' + iq_imbal_enb4: '""' + iq_imbal_enb5: '""' + iq_imbal_enb6: '""' + iq_imbal_enb7: '""' + iq_imbal_enb8: '""' + iq_imbal_enb9: '""' + lo_export0: 'False' + lo_export1: 'False' + lo_export10: 'False' + lo_export11: 'False' + lo_export12: 'False' + lo_export13: 'False' + lo_export14: 'False' + lo_export15: 'False' + lo_export16: 'False' + lo_export17: 'False' + lo_export18: 'False' + lo_export19: 'False' + lo_export2: 'False' + lo_export20: 'False' + lo_export21: 'False' + lo_export22: 'False' + lo_export23: 'False' + lo_export24: 'False' + lo_export25: 'False' + lo_export26: 'False' + lo_export27: 'False' + lo_export28: 'False' + lo_export29: 'False' + lo_export3: 'False' + lo_export30: 'False' + lo_export31: 'False' + lo_export4: 'False' + lo_export5: 'False' + lo_export6: 'False' + lo_export7: 'False' + lo_export8: 'False' + lo_export9: 'False' + lo_source0: internal + lo_source1: internal + lo_source10: internal + lo_source11: internal + lo_source12: internal + lo_source13: internal + lo_source14: internal + lo_source15: internal + lo_source16: internal + lo_source17: internal + lo_source18: internal + lo_source19: internal + lo_source2: internal + lo_source20: internal + lo_source21: internal + lo_source22: internal + lo_source23: internal + lo_source24: internal + lo_source25: internal + lo_source26: internal + lo_source27: internal + lo_source28: internal + lo_source29: internal + lo_source3: internal + lo_source30: internal + lo_source31: internal + lo_source4: internal + lo_source5: internal + lo_source6: internal + lo_source7: internal + lo_source8: internal + lo_source9: internal + maxoutbuf: '0' + minoutbuf: '0' + nchan: '1' + norm_gain0: 'False' + norm_gain1: 'False' + norm_gain10: 'False' + norm_gain11: 'False' + norm_gain12: 'False' + norm_gain13: 'False' + norm_gain14: 'False' + norm_gain15: 'False' + norm_gain16: 'False' + norm_gain17: 'False' + norm_gain18: 'False' + norm_gain19: 'False' + norm_gain2: 'False' + norm_gain20: 'False' + norm_gain21: 'False' + norm_gain22: 'False' + norm_gain23: 'False' + norm_gain24: 'False' + norm_gain25: 'False' + norm_gain26: 'False' + norm_gain27: 'False' + norm_gain28: 'False' + norm_gain29: 'False' + norm_gain3: 'False' + norm_gain30: 'False' + norm_gain31: 'False' + norm_gain4: 'False' + norm_gain5: 'False' + norm_gain6: 'False' + norm_gain7: 'False' + norm_gain8: 'False' + norm_gain9: 'False' + num_mboards: '1' + otw: '' + rx_agc0: Default + rx_agc1: Default + rx_agc10: Default + rx_agc11: Default + rx_agc12: Default + rx_agc13: Default + rx_agc14: Default + rx_agc15: Default + rx_agc16: Default + rx_agc17: Default + rx_agc18: Default + rx_agc19: Default + rx_agc2: Default + rx_agc20: Default + rx_agc21: Default + rx_agc22: Default + rx_agc23: Default + rx_agc24: Default + rx_agc25: Default + rx_agc26: Default + rx_agc27: Default + rx_agc28: Default + rx_agc29: Default + rx_agc3: Default + rx_agc30: Default + rx_agc31: Default + rx_agc4: Default + rx_agc5: Default + rx_agc6: Default + rx_agc7: Default + rx_agc8: Default + rx_agc9: Default + samp_rate: samp_rate + sd_spec0: '' + sd_spec1: '' + sd_spec2: '' + sd_spec3: '' + sd_spec4: '' + sd_spec5: '' + sd_spec6: '' + sd_spec7: '' + show_lo_controls: 'False' + stream_args: '' + stream_chans: '[]' + sync: sync + time_source0: '' + time_source1: '' + time_source2: '' + time_source3: '' + time_source4: '' + time_source5: '' + time_source6: '' + time_source7: '' + type: fc32 + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [83, 741] + rotation: 0 + state: enabled +- name: video_sdl_sink_0_0_0 + id: video_sdl_sink + parameters: + affinity: '' + alias: '' + comment: "Enable this path when you are sure what the \nresolution is (and defaut\ + \ to those values on \nthe chooser)." + display_height: '517' + display_width: '1088' + fps: '0' + height: Vsize + num_channels: '1' + type: short + width: interpolatedHsize + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1400, 1258] + rotation: 270 + state: enabled + +connections: +- [FFT_autocorrelation_0_0, '0', tempest_fft_peak_fine_sampling_sync_0_0, '0'] +- [FFT_autocorrelation_0_0, '0', tempest_infer_screen_resolution_1, '0'] +- [Keep_1_in_N_Frames_0, '0', FFT_autocorrelation_0_0, '0'] +- [Keep_1_in_N_Frames_0, '0', blocks_delay_1, '0'] +- [Keep_1_in_N_Frames_0, '0', blocks_multiply_conjugate_cc_0, '0'] +- [Keep_1_in_N_Frames_0, '0', interp_fir_filter_xxx_1, '0'] +- [Keep_1_in_N_Frames_0, '0', tempest_fine_sampling_synchronization_0, '0'] +- [Keep_1_in_N_Frames_0, '0', tempest_sync_detector_0_0, '0'] +- [analog_sig_source_x_0_0, '0', blocks_multiply_xx_0_0, '1'] +- [blocks_complex_to_arg_0, '0', qtgui_time_sink_x_0, '0'] +- [blocks_complex_to_mag_0, '0', tempest_normalize_flow_0, '0'] +- [blocks_complex_to_real_0, '0', tempest_normalize_flow_0, '0'] +- [blocks_delay_0, '0', blocks_multiply_xx_0_0, '0'] +- [blocks_delay_0_0, '0', blocks_complex_to_mag_0, '0'] +- [blocks_delay_1, '0', blocks_multiply_conjugate_cc_0, '1'] +- [blocks_file_source_0, '0', blocks_throttle_0, '0'] +- [blocks_float_to_short_0, '0', video_sdl_sink_0_0_0, '0'] +- [blocks_multiply_conjugate_cc_0, '0', single_pole_iir_filter_xx_0, '0'] +- [blocks_multiply_xx_0_0, '0', blocks_complex_to_real_0, '0'] +- [blocks_throttle_0, '0', Keep_1_in_N_Frames_0, '0'] +- [interp_fir_filter_xxx_1, '0', tempest_sync_detector_0, '0'] +- [ratio_finder_toggle_on_and_off, pressed, tempest_fft_peak_fine_sampling_sync_0_0, + en] +- [single_pole_iir_filter_xx_0, '0', blocks_complex_to_arg_0, '0'] +- [tempest_fft_peak_fine_sampling_sync_0_0, '0', qtgui_time_sink_x_1, '0'] +- [tempest_fft_peak_fine_sampling_sync_0_0, en, FFT_autocorrelation_0_0, en] +- [tempest_fft_peak_fine_sampling_sync_0_0, en, tempest_fine_sampling_synchronization_0, + en] +- [tempest_fft_peak_fine_sampling_sync_0_0, en, tempest_sync_detector_0, en] +- [tempest_fft_peak_fine_sampling_sync_0_0, en, tempest_sync_detector_0_0, en] +- [tempest_fft_peak_fine_sampling_sync_0_0, rate, uhd_usrp_source_0, command] +- [tempest_fft_peak_fine_sampling_sync_0_0, ratio, tempest_fine_sampling_synchronization_0, + ratio] +- [tempest_fine_sampling_synchronization_0, '0', tempest_sync_detector_0_0, '0'] +- [tempest_infer_screen_resolution_1, '0', qtgui_time_sink_x_1, '0'] +- [tempest_normalize_flow_0, '0', blocks_float_to_short_0, '0'] +- [tempest_sync_detector_0, '0', blocks_delay_0, '0'] +- [tempest_sync_detector_0_0, '0', blocks_delay_0_0, '0'] +- [uhd_usrp_source_0, '0', Keep_1_in_N_Frames_0, '0'] + +metadata: + file_format: 1 diff --git a/examples/manual_tempest_example_HDMI_Real_and_CentralFreqCorrection.grc b/examples/manual_tempest_example_HDMI_Real_and_CentralFreqCorrection.grc new file mode 100644 index 0000000..a3f9653 --- /dev/null +++ b/examples/manual_tempest_example_HDMI_Real_and_CentralFreqCorrection.grc @@ -0,0 +1,1633 @@ +options: + parameters: + author: '' + category: '[GRC Hier Blocks]' + cmake_opt: '' + comment: '' + copyright: '' + description: '' + gen_cmake: 'On' + gen_linking: dynamic + generate_options: qt_gui + hier_block_src_path: '.:' + id: manual_tempest_example + max_nouts: '0' + output_language: python + placement: (0,0) + qt_qss_theme: '' + realtime_scheduling: '1' + run: 'True' + run_command: '{python} -u {filename}' + run_options: prompt + sizing_mode: fixed + thread_safe_setters: '' + title: '' + window_size: '' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [81, 12] + rotation: 0 + state: enabled + +blocks: +- name: DelaySyncDetector + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@1 + label: '' + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '0' + step: interpolatedHsize*1 + stop: Vsize*interpolatedHsize + value: '0' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [932, 1064] + rotation: 0 + state: disabled +- name: DroppedFrames + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@1 + label: '' + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '0' + step: '1' + stop: '100' + value: '50' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [16, 1125] + rotation: 0 + state: enabled +- name: Hblank + id: variable + parameters: + comment: '' + value: Hsize-Hvisible + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [623, 168] + rotation: 0 + state: enabled +- name: Hsize + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Horizontal resolution (total) + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: int(4096*1.5) + value: '2200' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [350, 102] + rotation: 0 + state: enabled +- name: Hvisible + id: variable + parameters: + comment: '' + value: '1920' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [624, 64] + rotation: 0 + state: enabled +- name: Vblank + id: variable + parameters: + comment: '' + value: Vsize-Vvisible + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [750, 178] + rotation: 0 + state: enabled +- name: Vsize + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Vertical resolution (total) + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: int(2160*1.5) + value: '1125' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [493, 104] + rotation: 0 + state: enabled +- name: Vvisible + id: variable + parameters: + comment: '' + value: '1080' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [750, 126] + rotation: 0 + state: enabled +- name: angle_error + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@1 + label: Sine angle correction + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: -pi-0.2 + step: '0.00001' + stop: pi+0.2 + value: '-2.6' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [972, 5] + rotation: 0 + state: enabled +- name: denominador + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: '' + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '0.91' + step: '0.000001' + stop: '1.1' + value: '1.0' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [144, 285] + rotation: 0 + state: true +- name: ferror + id: variable + parameters: + comment: '' + value: (samp_rate*angle_error)/(2*pi*interpolatedHsize) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1077, 302] + rotation: 0 + state: enabled +- name: fft_size + id: variable + parameters: + comment: '' + value: 2**21 + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [592, 224] + rotation: 0 + state: true +- name: filtro_ecualizador_1st + id: variable + parameters: + comment: '' + value: '[-6.13e-05-1.22e-05j, + + 6.18e-04-2.02e-04j, + + 3.84e-03-2.43e-03j, + + 5.50e-03-3.87e-03j, + + 7.65e-03-5.51e-03j, + + 8.36e-03-6.47e-03j, + + 3.42e-03-3.78e-03j, + + -7.81e-03+2.35e-03j, + + -3.86e-02+2.21e-02j, + + -8.12e-02+4.68e-02j, + + -1.62e-01+9.94e-02j, + + -2.48e-01+1.48e-01j, + + -3.92e-01+2.43e-01j, + + -5.04e-01+2.99e-01j, + + -7.22e-01+4.49e-01j, + + -6.65e-01+3.56e-01j, + + 7.83e-01-4.68e-01j, + + 6.76e-01-3.60e-01j, + + 5.19e-01-2.92e-01j, + + 3.70e-01-1.98e-01j, + + 2.48e-01-1.39e-01j, + + 1.48e-01-8.02e-02j, + + 7.74e-02-4.50e-02j, + + 3.09e-02-1.83e-02j, + + 4.68e-03-4.89e-03j, + + -6.43e-03+1.92e-03j, + + -9.85e-03+4.10e-03j, + + -8.23e-03+3.73e-03j, + + -5.86e-03+2.73e-03j, + + -3.57e-03+1.94e-03j, + + -1.81e-04+2.41e-04j, + + ]' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [976, 185] + rotation: 0 + state: enabled +- name: harmonic + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Harmonic + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '1' + step: '1' + stop: '10' + value: '2' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [229, 132] + rotation: 0 + state: enabled +- name: interpolatedHblank + id: variable + parameters: + comment: '' + value: int(Hblank/float(px_rate)*samp_rate) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [740, 7] + rotation: 0 + state: enabled +- name: interpolatedHscreen + id: variable + parameters: + comment: '' + value: int(Hvisible/float(px_rate)*samp_rate) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [622, 116] + rotation: 0 + state: enabled +- name: interpolatedHsize + id: variable + parameters: + comment: '' + value: int(Hsize/float(px_rate)*samp_rate) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [747, 64] + rotation: 0 + state: enabled +- name: inverted + id: variable_qtgui_chooser + parameters: + comment: '' + gui_hint: '' + label: Inverted colors? + label0: 'Yes' + label1: 'No' + label2: '' + label3: '' + label4: '' + labels: '[]' + num_opts: '2' + option1: '1' + option2: '2' + option3: '3' + option4: '4' + options: '[0, 1, 2]' + orient: Qt.QHBoxLayout + type: real + value: '-1' + widget: radio_buttons + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [850, 6] + rotation: 0 + state: enabled +- name: px_rate + id: variable + parameters: + comment: '' + value: Hsize*Vsize*refresh_rate + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [146, 193] + rotation: 0 + state: enabled +- name: refresh_rate + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Refresh Rate (Hz) + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '0' + step: '1' + stop: '240' + value: '60' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [222, 8] + rotation: 0 + state: enabled +- name: samp_rate + id: variable + parameters: + comment: '' + value: round(50e6) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [137, 116] + rotation: 0 + state: enabled +- name: FFT_autocorrelation_0_0 + id: FFT_autocorrelation + parameters: + affinity: '' + alias: '' + alpha: '0.5' + comment: '' + fft_size: int(fft_size) + maxoutbuf: '0' + minoutbuf: '0' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [390, 1120] + rotation: 270 + state: enabled +- name: Keep_1_in_N_Frames_0 + id: Keep_1_in_N_Frames + parameters: + affinity: '' + alias: '' + comment: '' + fac_decimation: DroppedFrames + fft_size: int(fft_size) + maxoutbuf: '0' + minoutbuf: '0' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [349, 773] + rotation: 270 + state: disabled +- name: Keep_1_in_N_Frames_0_0 + id: Keep_1_in_N_Frames + parameters: + affinity: '' + alias: '' + comment: '' + fac_decimation: DroppedFrames + fft_size: int(interpolatedHsize*Vsize*4) + maxoutbuf: '0' + minoutbuf: '0' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [452, 765] + rotation: 270 + state: enabled +- name: analog_frequency_modulator_fc_0 + id: analog_frequency_modulator_fc + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + sensitivity: 2*pi/(samp_rate) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [916, 450] + rotation: 270 + state: enabled +- name: analog_sig_source_x_0_0 + id: analog_sig_source_x + parameters: + affinity: '' + alias: '' + amp: '1' + comment: '' + freq: -ferror + maxoutbuf: '0' + minoutbuf: '0' + offset: '0' + phase: '0' + samp_rate: samp_rate + type: complex + waveform: analog.GR_COS_WAVE + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1044, 774] + rotation: 0 + state: enabled +- name: blocks_complex_to_arg_0 + id: blocks_complex_to_arg + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [869, 362] + rotation: 0 + state: enabled +- name: blocks_complex_to_arg_0_0 + id: blocks_complex_to_arg + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1923, 390] + rotation: 0 + state: enabled +- name: blocks_complex_to_mag_0 + id: blocks_complex_to_mag + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1215, 908] + rotation: 0 + state: disabled +- name: blocks_complex_to_real_0 + id: blocks_complex_to_real + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1373, 745] + rotation: 0 + state: enabled +- name: blocks_delay_0 + id: blocks_delay + parameters: + affinity: '' + alias: '' + comment: '' + delay: DelaySyncDetector + maxoutbuf: '0' + minoutbuf: '0' + num_ports: '1' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [949, 653] + rotation: 0 + state: disabled +- name: blocks_delay_1 + id: blocks_delay + parameters: + affinity: '' + alias: '' + comment: '' + delay: interpolatedHsize + maxoutbuf: '0' + minoutbuf: '0' + num_ports: '1' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [603, 554] + rotation: 90 + state: enabled +- name: blocks_delay_1_0 + id: blocks_delay + parameters: + affinity: '' + alias: '' + comment: '' + delay: interpolatedHsize + maxoutbuf: '0' + minoutbuf: '0' + num_ports: '1' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1657, 582] + rotation: 90 + state: enabled +- name: blocks_file_sink_0 + id: blocks_file_sink + parameters: + affinity: '' + alias: '' + append: 'False' + comment: '' + file: /home/felipe/gnuradio/git/grabaciones_local/DEMO_VGA_recording_1080p_60Hz_50MHz.dat + type: complex + unbuffered: 'False' + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [267, 541] + rotation: 0 + state: disabled +- name: blocks_file_source_0 + id: blocks_file_source + parameters: + affinity: '' + alias: '' + begin_tag: pmt.PMT_NIL + comment: '' + file: /home/felipe/gnuradio/git/grabaciones_local/DEMO_VGA_recording_1080p_60Hz_50MHz.dat + length: '0' + maxoutbuf: '0' + minoutbuf: '0' + offset: '0' + repeat: 'True' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [37, 625] + rotation: 0 + state: disabled +- name: blocks_float_to_short_0 + id: blocks_float_to_short + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + scale: inverted + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1422, 1154] + rotation: 270 + state: enabled +- name: blocks_multiply_conjugate_cc_0 + id: blocks_multiply_conjugate_cc + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [576, 374] + rotation: 90 + state: enabled +- name: blocks_multiply_conjugate_cc_0_0 + id: blocks_multiply_conjugate_cc + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1630, 402] + rotation: 90 + state: enabled +- name: blocks_multiply_xx_0_0 + id: blocks_multiply_xx + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + num_inputs: '2' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1239, 688] + rotation: 0 + state: enabled +- name: blocks_multiply_xx_0_0_0 + id: blocks_multiply_xx + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + num_inputs: '2' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1039, 559] + rotation: 0 + state: enabled +- name: blocks_null_sink_0 + id: blocks_null_sink + parameters: + affinity: '' + alias: '' + bus_structure_sink: '[[0,],]' + comment: '' + num_inputs: '1' + type: float + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [830, 1036] + rotation: 0 + state: disabled +- name: blocks_throttle_0 + id: blocks_throttle + parameters: + affinity: '' + alias: '' + comment: '' + ignoretag: 'True' + maxoutbuf: '0' + minoutbuf: '0' + samples_per_second: samp_rate + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [277, 619] + rotation: 0 + state: disabled +- name: import_0 + id: import + parameters: + alias: '' + comment: '' + imports: from math import pi + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1048, 141] + rotation: 0 + state: true +- name: qtgui_time_sink_x_0 + id: qtgui_time_sink_x + parameters: + affinity: '' + alias: '' + alpha1: '1.0' + alpha10: '1.0' + alpha2: '1.0' + alpha3: '1.0' + alpha4: '1.0' + alpha5: '1.0' + alpha6: '1.0' + alpha7: '1.0' + alpha8: '1.0' + alpha9: '1.0' + autoscale: 'True' + axislabels: 'True' + color1: blue + color10: dark blue + color2: red + color3: green + color4: black + color5: cyan + color6: magenta + color7: yellow + color8: dark red + color9: dark green + comment: '' + ctrlpanel: 'False' + entags: 'True' + grid: 'False' + gui_hint: tab_m@0 + label1: Signal 1 + label10: Signal 10 + label2: Signal 2 + label3: Signal 3 + label4: Signal 4 + label5: Signal 5 + label6: Signal 6 + label7: Signal 7 + label8: Signal 8 + label9: Signal 9 + legend: 'True' + marker1: '-1' + marker10: '-1' + marker2: '-1' + marker3: '-1' + marker4: '-1' + marker5: '-1' + marker6: '-1' + marker7: '-1' + marker8: '-1' + marker9: '-1' + name: '""' + nconnections: '1' + size: '1024' + srate: samp_rate + stemplot: 'False' + style1: '1' + style10: '1' + style2: '1' + style3: '1' + style4: '1' + style5: '1' + style6: '1' + style7: '1' + style8: '1' + style9: '1' + tr_chan: '0' + tr_delay: '0' + tr_level: '0.0' + tr_mode: qtgui.TRIG_MODE_FREE + tr_slope: qtgui.TRIG_SLOPE_POS + tr_tag: '""' + type: float + update_time: '0.5' + width1: '1' + width10: '1' + width2: '1' + width3: '1' + width4: '1' + width5: '1' + width6: '1' + width7: '1' + width8: '1' + width9: '1' + ylabel: Phase difference (rad). + ymax: '1' + ymin: '-1' + yunit: '""' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1906, 488] + rotation: 0 + state: enabled +- name: qtgui_time_sink_x_1 + id: qtgui_time_sink_x + parameters: + affinity: '' + alias: '' + alpha1: '1.0' + alpha10: '1.0' + alpha2: '1.0' + alpha3: '1.0' + alpha4: '1.0' + alpha5: '1.0' + alpha6: '1.0' + alpha7: '1.0' + alpha8: '1.0' + alpha9: '1.0' + autoscale: 'False' + axislabels: 'True' + color1: blue + color10: dark blue + color2: red + color3: green + color4: black + color5: cyan + color6: magenta + color7: yellow + color8: dark red + color9: dark green + comment: '' + ctrlpanel: 'False' + entags: 'True' + grid: 'True' + gui_hint: tab_m@1 + label1: Signal 1 + label10: Signal 10 + label2: Signal 2 + label3: Signal 3 + label4: Signal 4 + label5: Signal 5 + label6: Signal 6 + label7: Signal 7 + label8: Signal 8 + label9: Signal 9 + legend: 'True' + marker1: '-1' + marker10: '-1' + marker2: '-1' + marker3: '-1' + marker4: '-1' + marker5: '-1' + marker6: '-1' + marker7: '-1' + marker8: '-1' + marker9: '-1' + name: '""' + nconnections: '1' + size: int(fft_size*2) + srate: samp_rate + stemplot: 'False' + style1: '1' + style10: '1' + style2: '1' + style3: '1' + style4: '1' + style5: '1' + style6: '1' + style7: '1' + style8: '1' + style9: '1' + tr_chan: '0' + tr_delay: '0' + tr_level: '18.0' + tr_mode: qtgui.TRIG_MODE_NORM + tr_slope: qtgui.TRIG_SLOPE_POS + tr_tag: '"peak_1"' + type: float + update_time: '1.0' + width1: '1' + width10: '1' + width2: '1' + width3: '1' + width4: '1' + width5: '1' + width6: '1' + width7: '1' + width8: '1' + width9: '1' + ylabel: Amplitude + ymax: '1' + ymin: '-1' + yunit: '""' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [603, 1103] + rotation: 270 + state: enabled +- name: single_pole_iir_filter_xx_0 + id: single_pole_iir_filter_xx + parameters: + affinity: '' + alias: '' + alpha: '0.00001' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [695, 302] + rotation: 0 + state: enabled +- name: single_pole_iir_filter_xx_0_0 + id: single_pole_iir_filter_xx + parameters: + affinity: '' + alias: '' + alpha: '0.00001' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1749, 330] + rotation: 0 + state: enabled +- name: tab_m + id: qtgui_tab_widget + parameters: + alias: '' + comment: '' + gui_hint: '' + label0: Tempest Main Tab + label1: Autocorrelation Plot Tab + label10: Tab 10 + label11: Tab 11 + label12: Tab 12 + label13: Tab 13 + label14: Tab 14 + label15: Tab 15 + label16: Tab 16 + label17: Tab 17 + label18: Tab 18 + label19: Tab 19 + label2: Tab 2 + label3: Tab 3 + label4: Tab 4 + label5: Tab 5 + label6: Tab 6 + label7: Tab 7 + label8: Tab 8 + label9: Tab 9 + num_tabs: '2' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [353, 8] + rotation: 0 + state: true +- name: tempest_fft_peak_fine_sampling_sync_0_0 + id: tempest_fft_peak_fine_sampling_sync + parameters: + Hvisible: interpolatedHsize + Vvisible: Vsize + affinity: '' + alias: '' + automatic_mode: 'True' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + refresh_rate: refresh_rate + sample_rate: int(samp_rate) + size: int(fft_size) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [463, 1105] + rotation: 90 + state: enabled +- name: tempest_fine_sampling_synchronization_0 + id: tempest_fine_sampling_synchronization + parameters: + Htotal: interpolatedHsize + Vtotal: Vsize + affinity: '' + alias: '' + comment: '' + correct_sampling: '1' + max_deviation: '10' + maxoutbuf: '0' + minoutbuf: '0' + update_proba: 1e-3 + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [651, 813] + rotation: 0 + state: enabled +- name: tempest_normalize_flow_0 + id: tempest_normalize_flow + parameters: + affinity: '' + alias: '' + alpha_avg: 1e-2 + comment: '' + max: '245' + maxoutbuf: '0' + min: '10' + minoutbuf: '0' + update_proba: '0.1' + window: interpolatedHsize + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1398, 967] + rotation: 270 + state: enabled +- name: tempest_sync_detector_0 + id: tempest_sync_detector + parameters: + affinity: '' + alias: '' + comment: '' + hblanking: interpolatedHblank + hscreen: interpolatedHscreen + maxoutbuf: '0' + minoutbuf: '0' + vblanking: Vblank + vscreen: Vsize-Vblank + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [919, 856] + rotation: 0 + state: enabled +- name: tempest_tempest_msgbtn_0 + id: tempest_tempest_msgbtn + parameters: + affinity: '' + alias: '' + comment: '' + gui_hint: tab_m@1 + label: 'Ratio Finder toggle ON or OFF (FFT peaks). ' + maxoutbuf: '0' + minoutbuf: '0' + msgName: pressed + relBackgroundColor: default + relFontColor: default + type: bool + value: 'True' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [282, 1185] + rotation: 270 + state: true +- name: uhd_usrp_source_0 + id: uhd_usrp_source + parameters: + affinity: '' + alias: '' + ant0: '' + ant1: '' + ant10: '' + ant11: '' + ant12: '' + ant13: '' + ant14: '' + ant15: '' + ant16: '' + ant17: '' + ant18: '' + ant19: '' + ant2: '' + ant20: '' + ant21: '' + ant22: '' + ant23: '' + ant24: '' + ant25: '' + ant26: '' + ant27: '' + ant28: '' + ant29: '' + ant3: '' + ant30: '' + ant31: '' + ant4: '' + ant5: '' + ant6: '' + ant7: '' + ant8: '' + ant9: '' + bw0: '0' + bw1: '0' + bw10: '0' + bw11: '0' + bw12: '0' + bw13: '0' + bw14: '0' + bw15: '0' + bw16: '0' + bw17: '0' + bw18: '0' + bw19: '0' + bw2: '0' + bw20: '0' + bw21: '0' + bw22: '0' + bw23: '0' + bw24: '0' + bw25: '0' + bw26: '0' + bw27: '0' + bw28: '0' + bw29: '0' + bw3: '0' + bw30: '0' + bw31: '0' + bw4: '0' + bw5: '0' + bw6: '0' + bw7: '0' + bw8: '0' + bw9: '0' + center_freq0: 10*px_rate*harmonic + center_freq1: '0' + center_freq10: '0' + center_freq11: '0' + center_freq12: '0' + center_freq13: '0' + center_freq14: '0' + center_freq15: '0' + center_freq16: '0' + center_freq17: '0' + center_freq18: '0' + center_freq19: '0' + center_freq2: '0' + center_freq20: '0' + center_freq21: '0' + center_freq22: '0' + center_freq23: '0' + center_freq24: '0' + center_freq25: '0' + center_freq26: '0' + center_freq27: '0' + center_freq28: '0' + center_freq29: '0' + center_freq3: '0' + center_freq30: '0' + center_freq31: '0' + center_freq4: '0' + center_freq5: '0' + center_freq6: '0' + center_freq7: '0' + center_freq8: '0' + center_freq9: '0' + clock_rate: '0.0' + clock_source0: '' + clock_source1: '' + clock_source2: '' + clock_source3: '' + clock_source4: '' + clock_source5: '' + clock_source6: '' + clock_source7: '' + comment: '' + dc_offs_enb0: '""' + dc_offs_enb1: '""' + dc_offs_enb10: '""' + dc_offs_enb11: '""' + dc_offs_enb12: '""' + dc_offs_enb13: '""' + dc_offs_enb14: '""' + dc_offs_enb15: '""' + dc_offs_enb16: '""' + dc_offs_enb17: '""' + dc_offs_enb18: '""' + dc_offs_enb19: '""' + dc_offs_enb2: '""' + dc_offs_enb20: '""' + dc_offs_enb21: '""' + dc_offs_enb22: '""' + dc_offs_enb23: '""' + dc_offs_enb24: '""' + dc_offs_enb25: '""' + dc_offs_enb26: '""' + dc_offs_enb27: '""' + dc_offs_enb28: '""' + dc_offs_enb29: '""' + dc_offs_enb3: '""' + dc_offs_enb30: '""' + dc_offs_enb31: '""' + dc_offs_enb4: '""' + dc_offs_enb5: '""' + dc_offs_enb6: '""' + dc_offs_enb7: '""' + dc_offs_enb8: '""' + dc_offs_enb9: '""' + dev_addr: '""' + dev_args: '"recv_frame_size= 65536, num_recv_frames=128"' + gain0: '50' + gain1: '0' + gain10: '0' + gain11: '0' + gain12: '0' + gain13: '0' + gain14: '0' + gain15: '0' + gain16: '0' + gain17: '0' + gain18: '0' + gain19: '0' + gain2: '0' + gain20: '0' + gain21: '0' + gain22: '0' + gain23: '0' + gain24: '0' + gain25: '0' + gain26: '0' + gain27: '0' + gain28: '0' + gain29: '0' + gain3: '0' + gain30: '0' + gain31: '0' + gain4: '0' + gain5: '0' + gain6: '0' + gain7: '0' + gain8: '0' + gain9: '0' + iq_imbal_enb0: '""' + iq_imbal_enb1: '""' + iq_imbal_enb10: '""' + iq_imbal_enb11: '""' + iq_imbal_enb12: '""' + iq_imbal_enb13: '""' + iq_imbal_enb14: '""' + iq_imbal_enb15: '""' + iq_imbal_enb16: '""' + iq_imbal_enb17: '""' + iq_imbal_enb18: '""' + iq_imbal_enb19: '""' + iq_imbal_enb2: '""' + iq_imbal_enb20: '""' + iq_imbal_enb21: '""' + iq_imbal_enb22: '""' + iq_imbal_enb23: '""' + iq_imbal_enb24: '""' + iq_imbal_enb25: '""' + iq_imbal_enb26: '""' + iq_imbal_enb27: '""' + iq_imbal_enb28: '""' + iq_imbal_enb29: '""' + iq_imbal_enb3: '""' + iq_imbal_enb30: '""' + iq_imbal_enb31: '""' + iq_imbal_enb4: '""' + iq_imbal_enb5: '""' + iq_imbal_enb6: '""' + iq_imbal_enb7: '""' + iq_imbal_enb8: '""' + iq_imbal_enb9: '""' + lo_export0: 'False' + lo_export1: 'False' + lo_export10: 'False' + lo_export11: 'False' + lo_export12: 'False' + lo_export13: 'False' + lo_export14: 'False' + lo_export15: 'False' + lo_export16: 'False' + lo_export17: 'False' + lo_export18: 'False' + lo_export19: 'False' + lo_export2: 'False' + lo_export20: 'False' + lo_export21: 'False' + lo_export22: 'False' + lo_export23: 'False' + lo_export24: 'False' + lo_export25: 'False' + lo_export26: 'False' + lo_export27: 'False' + lo_export28: 'False' + lo_export29: 'False' + lo_export3: 'False' + lo_export30: 'False' + lo_export31: 'False' + lo_export4: 'False' + lo_export5: 'False' + lo_export6: 'False' + lo_export7: 'False' + lo_export8: 'False' + lo_export9: 'False' + lo_source0: internal + lo_source1: internal + lo_source10: internal + lo_source11: internal + lo_source12: internal + lo_source13: internal + lo_source14: internal + lo_source15: internal + lo_source16: internal + lo_source17: internal + lo_source18: internal + lo_source19: internal + lo_source2: internal + lo_source20: internal + lo_source21: internal + lo_source22: internal + lo_source23: internal + lo_source24: internal + lo_source25: internal + lo_source26: internal + lo_source27: internal + lo_source28: internal + lo_source29: internal + lo_source3: internal + lo_source30: internal + lo_source31: internal + lo_source4: internal + lo_source5: internal + lo_source6: internal + lo_source7: internal + lo_source8: internal + lo_source9: internal + maxoutbuf: '0' + minoutbuf: '0' + nchan: '1' + norm_gain0: 'False' + norm_gain1: 'False' + norm_gain10: 'False' + norm_gain11: 'False' + norm_gain12: 'False' + norm_gain13: 'False' + norm_gain14: 'False' + norm_gain15: 'False' + norm_gain16: 'False' + norm_gain17: 'False' + norm_gain18: 'False' + norm_gain19: 'False' + norm_gain2: 'False' + norm_gain20: 'False' + norm_gain21: 'False' + norm_gain22: 'False' + norm_gain23: 'False' + norm_gain24: 'False' + norm_gain25: 'False' + norm_gain26: 'False' + norm_gain27: 'False' + norm_gain28: 'False' + norm_gain29: 'False' + norm_gain3: 'False' + norm_gain30: 'False' + norm_gain31: 'False' + norm_gain4: 'False' + norm_gain5: 'False' + norm_gain6: 'False' + norm_gain7: 'False' + norm_gain8: 'False' + norm_gain9: 'False' + num_mboards: '1' + otw: '' + rx_agc0: Default + rx_agc1: Default + rx_agc10: Default + rx_agc11: Default + rx_agc12: Default + rx_agc13: Default + rx_agc14: Default + rx_agc15: Default + rx_agc16: Default + rx_agc17: Default + rx_agc18: Default + rx_agc19: Default + rx_agc2: Default + rx_agc20: Default + rx_agc21: Default + rx_agc22: Default + rx_agc23: Default + rx_agc24: Default + rx_agc25: Default + rx_agc26: Default + rx_agc27: Default + rx_agc28: Default + rx_agc29: Default + rx_agc3: Default + rx_agc30: Default + rx_agc31: Default + rx_agc4: Default + rx_agc5: Default + rx_agc6: Default + rx_agc7: Default + rx_agc8: Default + rx_agc9: Default + samp_rate: samp_rate + sd_spec0: '' + sd_spec1: '' + sd_spec2: '' + sd_spec3: '' + sd_spec4: '' + sd_spec5: '' + sd_spec6: '' + sd_spec7: '' + show_lo_controls: 'False' + stream_args: '' + stream_chans: '[]' + sync: sync + time_source0: '' + time_source1: '' + time_source2: '' + time_source3: '' + time_source4: '' + time_source5: '' + time_source6: '' + time_source7: '' + type: fc32 + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [83, 741] + rotation: 0 + state: enabled +- name: video_sdl_sink_0_0_0 + id: video_sdl_sink + parameters: + affinity: '' + alias: '' + comment: "Enable this path when you are sure what the \nresolution is (and defaut\ + \ to those values on \nthe chooser)." + display_height: '517' + display_width: '1088' + fps: '0' + height: Vsize + num_channels: '1' + type: short + width: interpolatedHsize + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1398, 1326] + rotation: 270 + state: enabled + +connections: +- [FFT_autocorrelation_0_0, '0', tempest_fft_peak_fine_sampling_sync_0_0, '0'] +- [Keep_1_in_N_Frames_0, '0', FFT_autocorrelation_0_0, '0'] +- [Keep_1_in_N_Frames_0, '0', blocks_delay_1, '0'] +- [Keep_1_in_N_Frames_0, '0', blocks_multiply_conjugate_cc_0, '0'] +- [Keep_1_in_N_Frames_0_0, '0', FFT_autocorrelation_0_0, '0'] +- [Keep_1_in_N_Frames_0_0, '0', blocks_complex_to_mag_0, '0'] +- [Keep_1_in_N_Frames_0_0, '0', blocks_delay_1, '0'] +- [Keep_1_in_N_Frames_0_0, '0', blocks_multiply_conjugate_cc_0, '0'] +- [Keep_1_in_N_Frames_0_0, '0', tempest_fine_sampling_synchronization_0, '0'] +- [analog_frequency_modulator_fc_0, '0', blocks_multiply_xx_0_0_0, '0'] +- [analog_sig_source_x_0_0, '0', blocks_multiply_xx_0_0, '1'] +- [blocks_complex_to_arg_0, '0', analog_frequency_modulator_fc_0, '0'] +- [blocks_complex_to_arg_0_0, '0', qtgui_time_sink_x_0, '0'] +- [blocks_complex_to_mag_0, '0', tempest_normalize_flow_0, '0'] +- [blocks_complex_to_real_0, '0', tempest_normalize_flow_0, '0'] +- [blocks_delay_0, '0', blocks_multiply_xx_0_0, '0'] +- [blocks_delay_1, '0', blocks_multiply_conjugate_cc_0, '1'] +- [blocks_delay_1_0, '0', blocks_multiply_conjugate_cc_0_0, '1'] +- [blocks_file_source_0, '0', blocks_file_sink_0, '0'] +- [blocks_file_source_0, '0', blocks_throttle_0, '0'] +- [blocks_float_to_short_0, '0', video_sdl_sink_0_0_0, '0'] +- [blocks_multiply_conjugate_cc_0, '0', single_pole_iir_filter_xx_0, '0'] +- [blocks_multiply_conjugate_cc_0_0, '0', single_pole_iir_filter_xx_0_0, '0'] +- [blocks_multiply_xx_0_0, '0', blocks_complex_to_real_0, '0'] +- [blocks_multiply_xx_0_0, '0', blocks_delay_1_0, '0'] +- [blocks_multiply_xx_0_0, '0', blocks_multiply_conjugate_cc_0_0, '0'] +- [blocks_multiply_xx_0_0_0, '0', blocks_multiply_xx_0_0, '0'] +- [blocks_throttle_0, '0', Keep_1_in_N_Frames_0, '0'] +- [blocks_throttle_0, '0', Keep_1_in_N_Frames_0_0, '0'] +- [single_pole_iir_filter_xx_0, '0', blocks_complex_to_arg_0, '0'] +- [single_pole_iir_filter_xx_0_0, '0', blocks_complex_to_arg_0_0, '0'] +- [tempest_fft_peak_fine_sampling_sync_0_0, '0', blocks_null_sink_0, '0'] +- [tempest_fft_peak_fine_sampling_sync_0_0, '0', qtgui_time_sink_x_1, '0'] +- [tempest_fft_peak_fine_sampling_sync_0_0, en, FFT_autocorrelation_0_0, en] +- [tempest_fft_peak_fine_sampling_sync_0_0, en, tempest_fine_sampling_synchronization_0, + en] +- [tempest_fft_peak_fine_sampling_sync_0_0, en, tempest_sync_detector_0, en] +- [tempest_fft_peak_fine_sampling_sync_0_0, rate, uhd_usrp_source_0, command] +- [tempest_fft_peak_fine_sampling_sync_0_0, ratio, tempest_fine_sampling_synchronization_0, + ratio] +- [tempest_fine_sampling_synchronization_0, '0', tempest_sync_detector_0, '0'] +- [tempest_normalize_flow_0, '0', blocks_float_to_short_0, '0'] +- [tempest_sync_detector_0, '0', blocks_complex_to_mag_0, '0'] +- [tempest_sync_detector_0, '0', blocks_delay_0, '0'] +- [tempest_sync_detector_0, '0', blocks_multiply_xx_0_0_0, '1'] +- [tempest_tempest_msgbtn_0, pressed, tempest_fft_peak_fine_sampling_sync_0_0, en] +- [uhd_usrp_source_0, '0', Keep_1_in_N_Frames_0, '0'] +- [uhd_usrp_source_0, '0', Keep_1_in_N_Frames_0_0, '0'] +- [uhd_usrp_source_0, '0', blocks_file_sink_0, '0'] + +metadata: + file_format: 1 diff --git a/examples/manual_tempest_hdmi_example.grc b/examples/manual_tempest_hdmi_example.grc new file mode 100644 index 0000000..de8ad00 --- /dev/null +++ b/examples/manual_tempest_hdmi_example.grc @@ -0,0 +1,849 @@ +options: + parameters: + author: '' + category: '[GRC Hier Blocks]' + cmake_opt: '' + comment: '' + copyright: '' + description: '' + gen_cmake: 'On' + gen_linking: dynamic + generate_options: qt_gui + hier_block_src_path: '.:' + id: manual_tempest_hdmi_example + max_nouts: '0' + output_language: python + placement: (0,0) + qt_qss_theme: '' + realtime_scheduling: '' + run: 'True' + run_command: '{python} -u {filename}' + run_options: prompt + sizing_mode: fixed + thread_safe_setters: '' + title: '' + window_size: '' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [8, 8] + rotation: 0 + state: enabled + +blocks: +- name: Hdisplay + id: variable + parameters: + comment: '' + value: '1024' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [992, 12] + rotation: 0 + state: enabled +- name: Hsize + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: 1, 0, 1,1 + label: Horizontal resolution (total) + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: int(4096*1.5) + value: '1344' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [544, 12] + rotation: 0 + state: enabled +- name: Vdisplay + id: variable + parameters: + comment: '' + value: '768' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [992, 76] + rotation: 0 + state: enabled +- name: Vsize + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: 1, 1, 1,1 + label: Vertical resolution (total) + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: int(2160*1.5) + value: '806' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [568, 148] + rotation: 0 + state: enabled +- name: harmonic + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Harmonic + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '1' + step: '1' + stop: '10' + value: '1' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [728, 148] + rotation: 0 + state: enabled +- name: horizontal_offset + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Horizontal offset + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: interpolatedHsize + value: '0' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [848, 148] + rotation: 0 + state: enabled +- name: interpolatedHsize + id: variable + parameters: + comment: '' + value: int(Hsize/float(px_rate)*samp_rate) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [848, 12] + rotation: 0 + state: enabled +- name: inverted + id: variable_qtgui_chooser + parameters: + comment: '' + gui_hint: '' + label: Inverted colors? + label0: 'Yes' + label1: 'No' + label2: '' + label3: '' + label4: '' + labels: '[]' + num_opts: '2' + option0: '0' + option1: '1' + option2: '2' + option3: '3' + option4: '4' + options: '[0, 1, 2]' + orient: Qt.QHBoxLayout + type: real + value: '1' + widget: radio_buttons + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [392, 12] + rotation: 0 + state: enabled +- name: lines_offset + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Vertical offset + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: Vsize + value: int(Vsize/2) + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [712, 12] + rotation: 0 + state: enabled +- name: px_rate + id: variable + parameters: + comment: '' + value: Hsize*Vsize*refresh_rate + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [0, 76] + rotation: 0 + state: enabled +- name: refresh_rate + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Refresh Rate (Hz) + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '0' + step: '1' + stop: '240' + value: '70' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [240, 12] + rotation: 0 + state: enabled +- name: samp_rate + id: variable + parameters: + comment: '' + value: int(40e6) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [8, 140] + rotation: 0 + state: enabled +- name: blocks_complex_to_mag_0 + id: blocks_complex_to_mag + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [921, 425] + rotation: 0 + state: enabled +- name: blocks_delay_0 + id: blocks_delay + parameters: + affinity: '' + alias: '' + comment: '' + delay: interpolatedHsize*lines_offset+horizontal_offset + maxoutbuf: '0' + minoutbuf: '0' + num_ports: '1' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [761, 421] + rotation: 0 + state: enabled +- name: blocks_file_source_0 + id: blocks_file_source + parameters: + affinity: '' + alias: '' + begin_tag: pmt.PMT_NIL + comment: '' + file: /home/emidan19/Downloads/grabacion_HDMI + length: '0' + maxoutbuf: '0' + minoutbuf: '0' + offset: '0' + repeat: 'True' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [40, 404.0] + rotation: 0 + state: enabled +- name: blocks_float_to_short_0_0 + id: blocks_float_to_short + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + scale: inverted + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1065, 693] + rotation: 180 + state: enabled +- name: blocks_float_to_short_0_0_0 + id: blocks_float_to_short + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + scale: inverted + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [809, 565] + rotation: 180 + state: disabled +- name: blocks_throttle_0 + id: blocks_throttle + parameters: + affinity: '' + alias: '' + comment: '' + ignoretag: 'True' + maxoutbuf: '0' + minoutbuf: '0' + samples_per_second: samp_rate + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [289, 421] + rotation: 0 + state: enabled +- name: tempest_fine_sampling_synchronization_0 + id: tempest_fine_sampling_synchronization + parameters: + Htotal: interpolatedHsize + Vtotal: Vsize + affinity: '' + alias: '' + comment: '' + correct_sampling: '1' + max_deviation: 20.0/interpolatedHsize + maxoutbuf: '0' + minoutbuf: '0' + update_proba: 1e-2/(Hsize*Vsize) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [489, 389] + rotation: 0 + state: enabled +- name: tempest_framing_0 + id: tempest_framing + parameters: + Hdisplay: Hdisplay + Htotal: interpolatedHsize + Vdisplay: Vdisplay + Vtotal: Vsize + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1009, 541] + rotation: 180 + state: disabled +- name: tempest_normalize_flow_0 + id: tempest_normalize_flow + parameters: + affinity: '' + alias: '' + alpha_avg: 1e-2 + comment: '' + max: '245' + maxoutbuf: '0' + min: '10' + minoutbuf: '0' + update_proba: '0.1' + window: interpolatedHsize + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1137, 389] + rotation: 0 + state: enabled +- name: uhd_usrp_source_0 + id: uhd_usrp_source + parameters: + affinity: '' + alias: '' + ant0: '' + ant1: '' + ant10: '' + ant11: '' + ant12: '' + ant13: '' + ant14: '' + ant15: '' + ant16: '' + ant17: '' + ant18: '' + ant19: '' + ant2: '' + ant20: '' + ant21: '' + ant22: '' + ant23: '' + ant24: '' + ant25: '' + ant26: '' + ant27: '' + ant28: '' + ant29: '' + ant3: '' + ant30: '' + ant31: '' + ant4: '' + ant5: '' + ant6: '' + ant7: '' + ant8: '' + ant9: '' + bw0: '0' + bw1: '0' + bw10: '0' + bw11: '0' + bw12: '0' + bw13: '0' + bw14: '0' + bw15: '0' + bw16: '0' + bw17: '0' + bw18: '0' + bw19: '0' + bw2: '0' + bw20: '0' + bw21: '0' + bw22: '0' + bw23: '0' + bw24: '0' + bw25: '0' + bw26: '0' + bw27: '0' + bw28: '0' + bw29: '0' + bw3: '0' + bw30: '0' + bw31: '0' + bw4: '0' + bw5: '0' + bw6: '0' + bw7: '0' + bw8: '0' + bw9: '0' + center_freq0: px_rate*harmonic*10 + center_freq1: '0' + center_freq10: '0' + center_freq11: '0' + center_freq12: '0' + center_freq13: '0' + center_freq14: '0' + center_freq15: '0' + center_freq16: '0' + center_freq17: '0' + center_freq18: '0' + center_freq19: '0' + center_freq2: '0' + center_freq20: '0' + center_freq21: '0' + center_freq22: '0' + center_freq23: '0' + center_freq24: '0' + center_freq25: '0' + center_freq26: '0' + center_freq27: '0' + center_freq28: '0' + center_freq29: '0' + center_freq3: '0' + center_freq30: '0' + center_freq31: '0' + center_freq4: '0' + center_freq5: '0' + center_freq6: '0' + center_freq7: '0' + center_freq8: '0' + center_freq9: '0' + clock_rate: '0.0' + clock_source0: '' + clock_source1: '' + clock_source2: '' + clock_source3: '' + clock_source4: '' + clock_source5: '' + clock_source6: '' + clock_source7: '' + comment: '' + dc_offs_enb0: '""' + dc_offs_enb1: '""' + dc_offs_enb10: '""' + dc_offs_enb11: '""' + dc_offs_enb12: '""' + dc_offs_enb13: '""' + dc_offs_enb14: '""' + dc_offs_enb15: '""' + dc_offs_enb16: '""' + dc_offs_enb17: '""' + dc_offs_enb18: '""' + dc_offs_enb19: '""' + dc_offs_enb2: '""' + dc_offs_enb20: '""' + dc_offs_enb21: '""' + dc_offs_enb22: '""' + dc_offs_enb23: '""' + dc_offs_enb24: '""' + dc_offs_enb25: '""' + dc_offs_enb26: '""' + dc_offs_enb27: '""' + dc_offs_enb28: '""' + dc_offs_enb29: '""' + dc_offs_enb3: '""' + dc_offs_enb30: '""' + dc_offs_enb31: '""' + dc_offs_enb4: '""' + dc_offs_enb5: '""' + dc_offs_enb6: '""' + dc_offs_enb7: '""' + dc_offs_enb8: '""' + dc_offs_enb9: '""' + dev_addr: '""' + dev_args: '""' + gain0: '50' + gain1: '0' + gain10: '0' + gain11: '0' + gain12: '0' + gain13: '0' + gain14: '0' + gain15: '0' + gain16: '0' + gain17: '0' + gain18: '0' + gain19: '0' + gain2: '0' + gain20: '0' + gain21: '0' + gain22: '0' + gain23: '0' + gain24: '0' + gain25: '0' + gain26: '0' + gain27: '0' + gain28: '0' + gain29: '0' + gain3: '0' + gain30: '0' + gain31: '0' + gain4: '0' + gain5: '0' + gain6: '0' + gain7: '0' + gain8: '0' + gain9: '0' + iq_imbal_enb0: '""' + iq_imbal_enb1: '""' + iq_imbal_enb10: '""' + iq_imbal_enb11: '""' + iq_imbal_enb12: '""' + iq_imbal_enb13: '""' + iq_imbal_enb14: '""' + iq_imbal_enb15: '""' + iq_imbal_enb16: '""' + iq_imbal_enb17: '""' + iq_imbal_enb18: '""' + iq_imbal_enb19: '""' + iq_imbal_enb2: '""' + iq_imbal_enb20: '""' + iq_imbal_enb21: '""' + iq_imbal_enb22: '""' + iq_imbal_enb23: '""' + iq_imbal_enb24: '""' + iq_imbal_enb25: '""' + iq_imbal_enb26: '""' + iq_imbal_enb27: '""' + iq_imbal_enb28: '""' + iq_imbal_enb29: '""' + iq_imbal_enb3: '""' + iq_imbal_enb30: '""' + iq_imbal_enb31: '""' + iq_imbal_enb4: '""' + iq_imbal_enb5: '""' + iq_imbal_enb6: '""' + iq_imbal_enb7: '""' + iq_imbal_enb8: '""' + iq_imbal_enb9: '""' + lo_export0: 'False' + lo_export1: 'False' + lo_export10: 'False' + lo_export11: 'False' + lo_export12: 'False' + lo_export13: 'False' + lo_export14: 'False' + lo_export15: 'False' + lo_export16: 'False' + lo_export17: 'False' + lo_export18: 'False' + lo_export19: 'False' + lo_export2: 'False' + lo_export20: 'False' + lo_export21: 'False' + lo_export22: 'False' + lo_export23: 'False' + lo_export24: 'False' + lo_export25: 'False' + lo_export26: 'False' + lo_export27: 'False' + lo_export28: 'False' + lo_export29: 'False' + lo_export3: 'False' + lo_export30: 'False' + lo_export31: 'False' + lo_export4: 'False' + lo_export5: 'False' + lo_export6: 'False' + lo_export7: 'False' + lo_export8: 'False' + lo_export9: 'False' + lo_source0: internal + lo_source1: internal + lo_source10: internal + lo_source11: internal + lo_source12: internal + lo_source13: internal + lo_source14: internal + lo_source15: internal + lo_source16: internal + lo_source17: internal + lo_source18: internal + lo_source19: internal + lo_source2: internal + lo_source20: internal + lo_source21: internal + lo_source22: internal + lo_source23: internal + lo_source24: internal + lo_source25: internal + lo_source26: internal + lo_source27: internal + lo_source28: internal + lo_source29: internal + lo_source3: internal + lo_source30: internal + lo_source31: internal + lo_source4: internal + lo_source5: internal + lo_source6: internal + lo_source7: internal + lo_source8: internal + lo_source9: internal + maxoutbuf: '0' + minoutbuf: '0' + nchan: '1' + norm_gain0: 'False' + norm_gain1: 'False' + norm_gain10: 'False' + norm_gain11: 'False' + norm_gain12: 'False' + norm_gain13: 'False' + norm_gain14: 'False' + norm_gain15: 'False' + norm_gain16: 'False' + norm_gain17: 'False' + norm_gain18: 'False' + norm_gain19: 'False' + norm_gain2: 'False' + norm_gain20: 'False' + norm_gain21: 'False' + norm_gain22: 'False' + norm_gain23: 'False' + norm_gain24: 'False' + norm_gain25: 'False' + norm_gain26: 'False' + norm_gain27: 'False' + norm_gain28: 'False' + norm_gain29: 'False' + norm_gain3: 'False' + norm_gain30: 'False' + norm_gain31: 'False' + norm_gain4: 'False' + norm_gain5: 'False' + norm_gain6: 'False' + norm_gain7: 'False' + norm_gain8: 'False' + norm_gain9: 'False' + num_mboards: '1' + otw: '' + rx_agc0: Default + rx_agc1: Default + rx_agc10: Default + rx_agc11: Default + rx_agc12: Default + rx_agc13: Default + rx_agc14: Default + rx_agc15: Default + rx_agc16: Default + rx_agc17: Default + rx_agc18: Default + rx_agc19: Default + rx_agc2: Default + rx_agc20: Default + rx_agc21: Default + rx_agc22: Default + rx_agc23: Default + rx_agc24: Default + rx_agc25: Default + rx_agc26: Default + rx_agc27: Default + rx_agc28: Default + rx_agc29: Default + rx_agc3: Default + rx_agc30: Default + rx_agc31: Default + rx_agc4: Default + rx_agc5: Default + rx_agc6: Default + rx_agc7: Default + rx_agc8: Default + rx_agc9: Default + samp_rate: samp_rate + sd_spec0: '' + sd_spec1: '' + sd_spec2: '' + sd_spec3: '' + sd_spec4: '' + sd_spec5: '' + sd_spec6: '' + sd_spec7: '' + show_lo_controls: 'False' + start_time: '-1.0' + stream_args: '' + stream_chans: '[]' + sync: sync + time_source0: '' + time_source1: '' + time_source2: '' + time_source3: '' + time_source4: '' + time_source5: '' + time_source6: '' + time_source7: '' + type: fc32 + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [210, 540] + rotation: 0 + state: disabled +- name: video_sdl_sink_0_0 + id: video_sdl_sink + parameters: + affinity: '' + alias: '' + comment: "Enable this path when you are not sure what the \nresolution is and\ + \ you want to try several ones \non run-time. Then, enable the other path." + display_height: Vdisplay + display_width: Hdisplay + fps: '0' + height: Vdisplay + num_channels: '1' + type: short + width: Hdisplay + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [561, 533] + rotation: 180 + state: disabled +- name: video_sdl_sink_0_0_0 + id: video_sdl_sink + parameters: + affinity: '' + alias: '' + comment: "Enable this path when you are sure what the \nresolution is (and defaut\ + \ to those values on \nthe chooser)." + display_height: '1080' + display_width: '1920' + fps: '0' + height: Vsize + num_channels: '1' + type: short + width: interpolatedHsize + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [841, 661] + rotation: 180 + state: enabled + +connections: +- [blocks_complex_to_mag_0, '0', tempest_normalize_flow_0, '0'] +- [blocks_delay_0, '0', blocks_complex_to_mag_0, '0'] +- [blocks_file_source_0, '0', blocks_throttle_0, '0'] +- [blocks_float_to_short_0_0, '0', video_sdl_sink_0_0_0, '0'] +- [blocks_float_to_short_0_0_0, '0', video_sdl_sink_0_0, '0'] +- [blocks_throttle_0, '0', tempest_fine_sampling_synchronization_0, '0'] +- [tempest_fine_sampling_synchronization_0, '0', blocks_delay_0, '0'] +- [tempest_framing_0, '0', blocks_float_to_short_0_0_0, '0'] +- [tempest_normalize_flow_0, '0', blocks_float_to_short_0_0, '0'] +- [tempest_normalize_flow_0, '0', tempest_framing_0, '0'] +- [uhd_usrp_source_0, '0', tempest_fine_sampling_synchronization_0, '0'] + +metadata: + file_format: 1 diff --git a/examples/manual_tempest_hdmi_example.py b/examples/manual_tempest_hdmi_example.py new file mode 100755 index 0000000..6367c07 --- /dev/null +++ b/examples/manual_tempest_hdmi_example.py @@ -0,0 +1,293 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +# +# SPDX-License-Identifier: GPL-3.0 +# +# GNU Radio Python Flow Graph +# Title: Manual Tempest Hdmi Example +# GNU Radio version: 3.8.5.0 + +from distutils.version import StrictVersion + +if __name__ == '__main__': + import ctypes + import sys + if sys.platform.startswith('linux'): + try: + x11 = ctypes.cdll.LoadLibrary('libX11.so') + x11.XInitThreads() + except: + print("Warning: failed to XInitThreads()") + +from PyQt5 import Qt +from PyQt5.QtCore import QObject, pyqtSlot +from gnuradio import blocks +import pmt +from gnuradio import gr +from gnuradio.filter import firdes +import sys +import signal +from argparse import ArgumentParser +from gnuradio.eng_arg import eng_float, intx +from gnuradio import eng_notation +from gnuradio import video_sdl +from gnuradio.qtgui import Range, RangeWidget +import tempest + +from gnuradio import qtgui + +class manual_tempest_hdmi_example(gr.top_block, Qt.QWidget): + + def __init__(self): + gr.top_block.__init__(self, "Manual Tempest Hdmi Example") + Qt.QWidget.__init__(self) + self.setWindowTitle("Manual Tempest Hdmi Example") + qtgui.util.check_set_qss() + try: + self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc')) + except: + pass + self.top_scroll_layout = Qt.QVBoxLayout() + self.setLayout(self.top_scroll_layout) + self.top_scroll = Qt.QScrollArea() + self.top_scroll.setFrameStyle(Qt.QFrame.NoFrame) + self.top_scroll_layout.addWidget(self.top_scroll) + self.top_scroll.setWidgetResizable(True) + self.top_widget = Qt.QWidget() + self.top_scroll.setWidget(self.top_widget) + self.top_layout = Qt.QVBoxLayout(self.top_widget) + self.top_grid_layout = Qt.QGridLayout() + self.top_layout.addLayout(self.top_grid_layout) + + self.settings = Qt.QSettings("GNU Radio", "manual_tempest_hdmi_example") + + try: + if StrictVersion(Qt.qVersion()) < StrictVersion("5.0.0"): + self.restoreGeometry(self.settings.value("geometry").toByteArray()) + else: + self.restoreGeometry(self.settings.value("geometry")) + except: + pass + + ################################################## + # Variables + ################################################## + self.refresh_rate = refresh_rate = 70 + self.Vsize = Vsize = 806 + self.Hsize = Hsize = 1344 + self.samp_rate = samp_rate = int(40e6) + self.px_rate = px_rate = Hsize*Vsize*refresh_rate + self.lines_offset = lines_offset = int(Vsize/2) + self.inverted = inverted = 1 + self.interpolatedHsize = interpolatedHsize = int(Hsize/float(px_rate)*samp_rate) + self.horizontal_offset = horizontal_offset = 0 + self.harmonic = harmonic = 1 + self.Vdisplay = Vdisplay = 768 + self.Hdisplay = Hdisplay = 1024 + + ################################################## + # Blocks + ################################################## + self._Vsize_range = Range(0, int(2160*1.5), 1, 806, 200) + self._Vsize_win = RangeWidget(self._Vsize_range, self.set_Vsize, 'Vertical resolution (total)', "counter", int) + self.top_grid_layout.addWidget(self._Vsize_win, 1, 1, 1, 1) + for r in range(1, 2): + self.top_grid_layout.setRowStretch(r, 1) + for c in range(1, 2): + self.top_grid_layout.setColumnStretch(c, 1) + self._lines_offset_range = Range(0, Vsize, 1, int(Vsize/2), 200) + self._lines_offset_win = RangeWidget(self._lines_offset_range, self.set_lines_offset, 'Vertical offset', "counter_slider", int) + self.top_layout.addWidget(self._lines_offset_win) + # Create the options list + self._inverted_options = [0, 1] + # Create the labels list + self._inverted_labels = ['Yes', 'No'] + # Create the combo box + # Create the radio buttons + self._inverted_group_box = Qt.QGroupBox('Inverted colors?' + ": ") + self._inverted_box = Qt.QHBoxLayout() + class variable_chooser_button_group(Qt.QButtonGroup): + def __init__(self, parent=None): + Qt.QButtonGroup.__init__(self, parent) + @pyqtSlot(int) + def updateButtonChecked(self, button_id): + self.button(button_id).setChecked(True) + self._inverted_button_group = variable_chooser_button_group() + self._inverted_group_box.setLayout(self._inverted_box) + for i, _label in enumerate(self._inverted_labels): + radio_button = Qt.QRadioButton(_label) + self._inverted_box.addWidget(radio_button) + self._inverted_button_group.addButton(radio_button, i) + self._inverted_callback = lambda i: Qt.QMetaObject.invokeMethod(self._inverted_button_group, "updateButtonChecked", Qt.Q_ARG("int", self._inverted_options.index(i))) + self._inverted_callback(self.inverted) + self._inverted_button_group.buttonClicked[int].connect( + lambda i: self.set_inverted(self._inverted_options[i])) + self.top_layout.addWidget(self._inverted_group_box) + self._horizontal_offset_range = Range(0, interpolatedHsize, 1, 0, 200) + self._horizontal_offset_win = RangeWidget(self._horizontal_offset_range, self.set_horizontal_offset, 'Horizontal offset', "counter_slider", int) + self.top_layout.addWidget(self._horizontal_offset_win) + self._Hsize_range = Range(0, int(4096*1.5), 1, 1344, 200) + self._Hsize_win = RangeWidget(self._Hsize_range, self.set_Hsize, 'Horizontal resolution (total)', "counter", int) + self.top_grid_layout.addWidget(self._Hsize_win, 1, 0, 1, 1) + for r in range(1, 2): + self.top_grid_layout.setRowStretch(r, 1) + for c in range(0, 1): + self.top_grid_layout.setColumnStretch(c, 1) + self.video_sdl_sink_0_0_0 = video_sdl.sink_s(0, interpolatedHsize, Vsize, 0, 1920, 1080) + self.tempest_normalize_flow_0 = tempest.normalize_flow(10, 245, interpolatedHsize, 1e-2, 0.1) + self.tempest_fine_sampling_synchronization_0 = tempest.fine_sampling_synchronization(interpolatedHsize, Vsize, 1, 20.0/interpolatedHsize, 1e-2/(Hsize*Vsize)) + self._refresh_rate_range = Range(0, 240, 1, 70, 200) + self._refresh_rate_win = RangeWidget(self._refresh_rate_range, self.set_refresh_rate, 'Refresh Rate (Hz)', "counter", float) + self.top_layout.addWidget(self._refresh_rate_win) + self._harmonic_range = Range(1, 10, 1, 1, 200) + self._harmonic_win = RangeWidget(self._harmonic_range, self.set_harmonic, 'Harmonic', "counter_slider", float) + self.top_layout.addWidget(self._harmonic_win) + self.blocks_throttle_0 = blocks.throttle(gr.sizeof_gr_complex*1, samp_rate,True) + self.blocks_float_to_short_0_0 = blocks.float_to_short(1, inverted) + self.blocks_file_source_0 = blocks.file_source(gr.sizeof_gr_complex*1, '/home/emidan19/Downloads/grabacion_HDMI', True, 0, 0) + self.blocks_file_source_0.set_begin_tag(pmt.PMT_NIL) + self.blocks_delay_0 = blocks.delay(gr.sizeof_gr_complex*1, interpolatedHsize*lines_offset+horizontal_offset) + self.blocks_complex_to_mag_0 = blocks.complex_to_mag(1) + + + ################################################## + # Connections + ################################################## + self.connect((self.blocks_complex_to_mag_0, 0), (self.tempest_normalize_flow_0, 0)) + self.connect((self.blocks_delay_0, 0), (self.blocks_complex_to_mag_0, 0)) + self.connect((self.blocks_file_source_0, 0), (self.blocks_throttle_0, 0)) + self.connect((self.blocks_float_to_short_0_0, 0), (self.video_sdl_sink_0_0_0, 0)) + self.connect((self.blocks_throttle_0, 0), (self.tempest_fine_sampling_synchronization_0, 0)) + self.connect((self.tempest_fine_sampling_synchronization_0, 0), (self.blocks_delay_0, 0)) + self.connect((self.tempest_normalize_flow_0, 0), (self.blocks_float_to_short_0_0, 0)) + + + def closeEvent(self, event): + self.settings = Qt.QSettings("GNU Radio", "manual_tempest_hdmi_example") + self.settings.setValue("geometry", self.saveGeometry()) + event.accept() + + def get_refresh_rate(self): + return self.refresh_rate + + def set_refresh_rate(self, refresh_rate): + self.refresh_rate = refresh_rate + self.set_px_rate(self.Hsize*self.Vsize*self.refresh_rate) + + def get_Vsize(self): + return self.Vsize + + def set_Vsize(self, Vsize): + self.Vsize = Vsize + self.set_lines_offset(int(self.Vsize/2)) + self.set_px_rate(self.Hsize*self.Vsize*self.refresh_rate) + self.tempest_fine_sampling_synchronization_0.set_Htotal_Vtotal(self.interpolatedHsize, self.Vsize) + + def get_Hsize(self): + return self.Hsize + + def set_Hsize(self, Hsize): + self.Hsize = Hsize + self.set_interpolatedHsize(int(self.Hsize/float(self.px_rate)*self.samp_rate)) + self.set_px_rate(self.Hsize*self.Vsize*self.refresh_rate) + + def get_samp_rate(self): + return self.samp_rate + + def set_samp_rate(self, samp_rate): + self.samp_rate = samp_rate + self.set_interpolatedHsize(int(self.Hsize/float(self.px_rate)*self.samp_rate)) + self.blocks_throttle_0.set_sample_rate(self.samp_rate) + + def get_px_rate(self): + return self.px_rate + + def set_px_rate(self, px_rate): + self.px_rate = px_rate + self.set_interpolatedHsize(int(self.Hsize/float(self.px_rate)*self.samp_rate)) + + def get_lines_offset(self): + return self.lines_offset + + def set_lines_offset(self, lines_offset): + self.lines_offset = lines_offset + self.blocks_delay_0.set_dly(self.interpolatedHsize*self.lines_offset+self.horizontal_offset) + + def get_inverted(self): + return self.inverted + + def set_inverted(self, inverted): + self.inverted = inverted + self._inverted_callback(self.inverted) + self.blocks_float_to_short_0_0.set_scale(self.inverted) + + def get_interpolatedHsize(self): + return self.interpolatedHsize + + def set_interpolatedHsize(self, interpolatedHsize): + self.interpolatedHsize = interpolatedHsize + self.blocks_delay_0.set_dly(self.interpolatedHsize*self.lines_offset+self.horizontal_offset) + self.tempest_fine_sampling_synchronization_0.set_Htotal_Vtotal(self.interpolatedHsize, self.Vsize) + + def get_horizontal_offset(self): + return self.horizontal_offset + + def set_horizontal_offset(self, horizontal_offset): + self.horizontal_offset = horizontal_offset + self.blocks_delay_0.set_dly(self.interpolatedHsize*self.lines_offset+self.horizontal_offset) + + def get_harmonic(self): + return self.harmonic + + def set_harmonic(self, harmonic): + self.harmonic = harmonic + + def get_Vdisplay(self): + return self.Vdisplay + + def set_Vdisplay(self, Vdisplay): + self.Vdisplay = Vdisplay + + def get_Hdisplay(self): + return self.Hdisplay + + def set_Hdisplay(self, Hdisplay): + self.Hdisplay = Hdisplay + + + + + +def main(top_block_cls=manual_tempest_hdmi_example, options=None): + + if StrictVersion("4.5.0") <= StrictVersion(Qt.qVersion()) < StrictVersion("5.0.0"): + style = gr.prefs().get_string('qtgui', 'style', 'raster') + Qt.QApplication.setGraphicsSystem(style) + qapp = Qt.QApplication(sys.argv) + + tb = top_block_cls() + + tb.start() + + tb.show() + + def sig_handler(sig=None, frame=None): + Qt.QApplication.quit() + + signal.signal(signal.SIGINT, sig_handler) + signal.signal(signal.SIGTERM, sig_handler) + + timer = Qt.QTimer() + timer.start(500) + timer.timeout.connect(lambda: None) + + def quitting(): + tb.stop() + tb.wait() + + qapp.aboutToQuit.connect(quitting) + qapp.exec_() + +if __name__ == '__main__': + main() diff --git a/examples/msg_btn_example.grc b/examples/msg_btn_example.grc new file mode 100644 index 0000000..c0d06d9 --- /dev/null +++ b/examples/msg_btn_example.grc @@ -0,0 +1,1141 @@ +options: + parameters: + author: '' + category: '[GRC Hier Blocks]' + cmake_opt: '' + comment: '' + copyright: '' + description: '' + gen_cmake: 'On' + gen_linking: dynamic + generate_options: qt_gui + hier_block_src_path: '.:' + id: manual_tempest_example + max_nouts: '0' + output_language: python + placement: (0,0) + qt_qss_theme: '' + realtime_scheduling: '1' + run: 'True' + run_command: '{python} -u {filename}' + run_options: prompt + sizing_mode: fixed + thread_safe_setters: '' + title: '' + window_size: '' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [81, 12] + rotation: 0 + state: enabled + +blocks: +- name: DelaySyncDetector + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@1 + label: '' + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '0' + step: interpolatedHsize*1 + stop: Vsize*interpolatedHsize + value: '0' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1161, 624] + rotation: 0 + state: disabled +- name: DroppedFrames + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@1 + label: '' + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '0' + step: '1' + stop: '100' + value: '50' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [127, 927] + rotation: 0 + state: enabled +- name: Hblank + id: variable + parameters: + comment: '' + value: Hsize-Hvisible + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [623, 168] + rotation: 0 + state: enabled +- name: Hsize + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Horizontal resolution (total) + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: int(4096*1.5) + value: '2200' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [350, 102] + rotation: 0 + state: enabled +- name: Hvisible + id: variable + parameters: + comment: '' + value: '1920' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [624, 64] + rotation: 0 + state: enabled +- name: Vblank + id: variable + parameters: + comment: '' + value: Vsize-Vvisible + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [750, 178] + rotation: 0 + state: enabled +- name: Vsize + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Vertical resolution (total) + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: int(2160*1.5) + value: '1125' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [493, 104] + rotation: 0 + state: enabled +- name: Vvisible + id: variable + parameters: + comment: '' + value: '1080' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [750, 126] + rotation: 0 + state: enabled +- name: angle_error + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: tab_m@1 + label: Sine angle correction + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: -pi-0.2 + step: '0.00001' + stop: pi+0.2 + value: '-2.6' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [972, 5] + rotation: 0 + state: enabled +- name: denominador + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: '' + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '0.91' + step: '0.000001' + stop: '1.1' + value: '1.0' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [144, 285] + rotation: 0 + state: true +- name: ferror + id: variable + parameters: + comment: '' + value: (samp_rate*angle_error)/(2*pi*interpolatedHsize) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1077, 302] + rotation: 0 + state: enabled +- name: fft_size + id: variable + parameters: + comment: '' + value: 2**21 + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [592, 224] + rotation: 0 + state: true +- name: filtro_ecualizador_1st + id: variable + parameters: + comment: '' + value: '[-6.13e-05-1.22e-05j, + + 6.18e-04-2.02e-04j, + + 3.84e-03-2.43e-03j, + + 5.50e-03-3.87e-03j, + + 7.65e-03-5.51e-03j, + + 8.36e-03-6.47e-03j, + + 3.42e-03-3.78e-03j, + + -7.81e-03+2.35e-03j, + + -3.86e-02+2.21e-02j, + + -8.12e-02+4.68e-02j, + + -1.62e-01+9.94e-02j, + + -2.48e-01+1.48e-01j, + + -3.92e-01+2.43e-01j, + + -5.04e-01+2.99e-01j, + + -7.22e-01+4.49e-01j, + + -6.65e-01+3.56e-01j, + + 7.83e-01-4.68e-01j, + + 6.76e-01-3.60e-01j, + + 5.19e-01-2.92e-01j, + + 3.70e-01-1.98e-01j, + + 2.48e-01-1.39e-01j, + + 1.48e-01-8.02e-02j, + + 7.74e-02-4.50e-02j, + + 3.09e-02-1.83e-02j, + + 4.68e-03-4.89e-03j, + + -6.43e-03+1.92e-03j, + + -9.85e-03+4.10e-03j, + + -8.23e-03+3.73e-03j, + + -5.86e-03+2.73e-03j, + + -3.57e-03+1.94e-03j, + + -1.81e-04+2.41e-04j, + + ]' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [976, 185] + rotation: 0 + state: enabled +- name: harmonic + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Harmonic + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '1' + step: '1' + stop: '10' + value: '2' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [229, 132] + rotation: 0 + state: enabled +- name: interpolatedHblank + id: variable + parameters: + comment: '' + value: int(Hblank/float(px_rate)*samp_rate) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [740, 7] + rotation: 0 + state: enabled +- name: interpolatedHscreen + id: variable + parameters: + comment: '' + value: int(Hvisible/float(px_rate)*samp_rate) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [622, 116] + rotation: 0 + state: enabled +- name: interpolatedHsize + id: variable + parameters: + comment: '' + value: int(Hsize/float(px_rate)*samp_rate) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [747, 64] + rotation: 0 + state: enabled +- name: inverted + id: variable_qtgui_chooser + parameters: + comment: '' + gui_hint: '' + label: Inverted colors? + label0: 'Yes' + label1: 'No' + label2: '' + label3: '' + label4: '' + labels: '[]' + num_opts: '2' + option1: '1' + option2: '2' + option3: '3' + option4: '4' + options: '[0, 1, 2]' + orient: Qt.QHBoxLayout + type: real + value: '-1' + widget: radio_buttons + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [850, 6] + rotation: 0 + state: enabled +- name: px_rate + id: variable + parameters: + comment: '' + value: Hsize*Vsize*refresh_rate + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [146, 193] + rotation: 0 + state: enabled +- name: refresh_rate + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Refresh Rate (Hz) + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '0' + step: '1' + stop: '240' + value: '60' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [222, 8] + rotation: 0 + state: enabled +- name: samp_rate + id: variable + parameters: + comment: '' + value: round(50e6) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [137, 116] + rotation: 0 + state: enabled +- name: FFT_autocorrelation_0_0 + id: FFT_autocorrelation + parameters: + affinity: '' + alias: '' + alpha: '0.5' + comment: '' + fft_size: int(fft_size) + maxoutbuf: '0' + minoutbuf: '0' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [698, 735] + rotation: 270 + state: enabled +- name: Keep_1_in_N_Frames_0_0 + id: Keep_1_in_N_Frames + parameters: + affinity: '' + alias: '' + comment: '' + fac_decimation: DroppedFrames + fft_size: int(interpolatedHsize*Vsize*4) + maxoutbuf: '0' + minoutbuf: '0' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [697, 509] + rotation: 270 + state: enabled +- name: blocks_file_sink_0 + id: blocks_file_sink + parameters: + affinity: '' + alias: '' + append: 'False' + comment: '' + file: /home/felipe/gnuradio/git/grabaciones_local/DEMO_VGA_recording_1080p_60Hz_50MHz.dat + type: complex + unbuffered: 'False' + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [378, 343] + rotation: 0 + state: disabled +- name: blocks_file_source_0 + id: blocks_file_source + parameters: + affinity: '' + alias: '' + begin_tag: pmt.PMT_NIL + comment: '' + file: /home/felipe/gnuradio/git/grabaciones_local/DEMO_VGA_recording_1080p_60Hz_50MHz.dat + length: '0' + maxoutbuf: '0' + minoutbuf: '0' + offset: '0' + repeat: 'True' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [148, 427] + rotation: 0 + state: enabled +- name: blocks_null_sink_0 + id: blocks_null_sink + parameters: + affinity: '' + alias: '' + bus_structure_sink: '[[0,],]' + comment: '' + num_inputs: '1' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1059, 596] + rotation: 0 + state: enabled +- name: blocks_throttle_0 + id: blocks_throttle + parameters: + affinity: '' + alias: '' + comment: '' + ignoretag: 'True' + maxoutbuf: '0' + minoutbuf: '0' + samples_per_second: samp_rate + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [418, 464] + rotation: 0 + state: enabled +- name: import_0 + id: import + parameters: + alias: '' + comment: '' + imports: from math import pi + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1048, 141] + rotation: 0 + state: true +- name: qtgui_time_sink_x_1 + id: qtgui_time_sink_x + parameters: + affinity: '' + alias: '' + alpha1: '1.0' + alpha10: '1.0' + alpha2: '1.0' + alpha3: '1.0' + alpha4: '1.0' + alpha5: '1.0' + alpha6: '1.0' + alpha7: '1.0' + alpha8: '1.0' + alpha9: '1.0' + autoscale: 'False' + axislabels: 'True' + color1: blue + color10: dark blue + color2: red + color3: green + color4: black + color5: cyan + color6: magenta + color7: yellow + color8: dark red + color9: dark green + comment: '' + ctrlpanel: 'False' + entags: 'True' + grid: 'True' + gui_hint: tab_m@1 + label1: Signal 1 + label10: Signal 10 + label2: Signal 2 + label3: Signal 3 + label4: Signal 4 + label5: Signal 5 + label6: Signal 6 + label7: Signal 7 + label8: Signal 8 + label9: Signal 9 + legend: 'True' + marker1: '-1' + marker10: '-1' + marker2: '-1' + marker3: '-1' + marker4: '-1' + marker5: '-1' + marker6: '-1' + marker7: '-1' + marker8: '-1' + marker9: '-1' + name: '""' + nconnections: '1' + size: int(fft_size*2) + srate: samp_rate + stemplot: 'False' + style1: '1' + style10: '1' + style2: '1' + style3: '1' + style4: '1' + style5: '1' + style6: '1' + style7: '1' + style8: '1' + style9: '1' + tr_chan: '0' + tr_delay: '0' + tr_level: '18.0' + tr_mode: qtgui.TRIG_MODE_NORM + tr_slope: qtgui.TRIG_SLOPE_POS + tr_tag: '"peak_1"' + type: float + update_time: '1.0' + width1: '1' + width10: '1' + width2: '1' + width3: '1' + width4: '1' + width5: '1' + width6: '1' + width7: '1' + width8: '1' + width9: '1' + ylabel: Amplitude + ymax: '1' + ymin: '-1' + yunit: '""' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [911, 718] + rotation: 270 + state: enabled +- name: tab_m + id: qtgui_tab_widget + parameters: + alias: '' + comment: '' + gui_hint: '' + label0: Tempest Main Tab + label1: Autocorrelation Plot Tab + label10: Tab 10 + label11: Tab 11 + label12: Tab 12 + label13: Tab 13 + label14: Tab 14 + label15: Tab 15 + label16: Tab 16 + label17: Tab 17 + label18: Tab 18 + label19: Tab 19 + label2: Tab 2 + label3: Tab 3 + label4: Tab 4 + label5: Tab 5 + label6: Tab 6 + label7: Tab 7 + label8: Tab 8 + label9: Tab 9 + num_tabs: '2' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [353, 8] + rotation: 0 + state: true +- name: tempest_fft_peak_fine_sampling_sync_0_0 + id: tempest_fft_peak_fine_sampling_sync + parameters: + Hvisible: interpolatedHsize + Vvisible: Vsize + affinity: '' + alias: '' + automatic_mode: 'True' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + refresh_rate: refresh_rate + sample_rate: int(samp_rate) + size: int(fft_size) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [771, 720] + rotation: 90 + state: enabled +- name: tempest_ssamp_correction_0 + id: tempest_ssamp_correction + parameters: + Htotal: interpolatedHsize + Vtotal: Vsize + affinity: '' + alias: '' + comment: '' + correct_sampling: '1' + max_deviation: '10' + maxoutbuf: '0' + minoutbuf: '0' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [902, 456] + rotation: 0 + state: enabled +- name: tempest_tempest_msgbtn_0 + id: tempest_tempest_msgbtn + parameters: + affinity: '' + alias: '' + comment: '' + gui_hint: tab_m@1 + label: 'Ratio Finder toggle ON or OFF (FFT peaks). ' + maxoutbuf: '0' + minoutbuf: '0' + msgName: pressed + relBackgroundColor: default + relFontColor: default + type: bool + value: 'True' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1041, 721] + rotation: 270 + state: enabled +- name: uhd_usrp_source_0 + id: uhd_usrp_source + parameters: + affinity: '' + alias: '' + ant0: '' + ant1: '' + ant10: '' + ant11: '' + ant12: '' + ant13: '' + ant14: '' + ant15: '' + ant16: '' + ant17: '' + ant18: '' + ant19: '' + ant2: '' + ant20: '' + ant21: '' + ant22: '' + ant23: '' + ant24: '' + ant25: '' + ant26: '' + ant27: '' + ant28: '' + ant29: '' + ant3: '' + ant30: '' + ant31: '' + ant4: '' + ant5: '' + ant6: '' + ant7: '' + ant8: '' + ant9: '' + bw0: '0' + bw1: '0' + bw10: '0' + bw11: '0' + bw12: '0' + bw13: '0' + bw14: '0' + bw15: '0' + bw16: '0' + bw17: '0' + bw18: '0' + bw19: '0' + bw2: '0' + bw20: '0' + bw21: '0' + bw22: '0' + bw23: '0' + bw24: '0' + bw25: '0' + bw26: '0' + bw27: '0' + bw28: '0' + bw29: '0' + bw3: '0' + bw30: '0' + bw31: '0' + bw4: '0' + bw5: '0' + bw6: '0' + bw7: '0' + bw8: '0' + bw9: '0' + center_freq0: 10*px_rate*harmonic + center_freq1: '0' + center_freq10: '0' + center_freq11: '0' + center_freq12: '0' + center_freq13: '0' + center_freq14: '0' + center_freq15: '0' + center_freq16: '0' + center_freq17: '0' + center_freq18: '0' + center_freq19: '0' + center_freq2: '0' + center_freq20: '0' + center_freq21: '0' + center_freq22: '0' + center_freq23: '0' + center_freq24: '0' + center_freq25: '0' + center_freq26: '0' + center_freq27: '0' + center_freq28: '0' + center_freq29: '0' + center_freq3: '0' + center_freq30: '0' + center_freq31: '0' + center_freq4: '0' + center_freq5: '0' + center_freq6: '0' + center_freq7: '0' + center_freq8: '0' + center_freq9: '0' + clock_rate: '0.0' + clock_source0: '' + clock_source1: '' + clock_source2: '' + clock_source3: '' + clock_source4: '' + clock_source5: '' + clock_source6: '' + clock_source7: '' + comment: '' + dc_offs_enb0: '""' + dc_offs_enb1: '""' + dc_offs_enb10: '""' + dc_offs_enb11: '""' + dc_offs_enb12: '""' + dc_offs_enb13: '""' + dc_offs_enb14: '""' + dc_offs_enb15: '""' + dc_offs_enb16: '""' + dc_offs_enb17: '""' + dc_offs_enb18: '""' + dc_offs_enb19: '""' + dc_offs_enb2: '""' + dc_offs_enb20: '""' + dc_offs_enb21: '""' + dc_offs_enb22: '""' + dc_offs_enb23: '""' + dc_offs_enb24: '""' + dc_offs_enb25: '""' + dc_offs_enb26: '""' + dc_offs_enb27: '""' + dc_offs_enb28: '""' + dc_offs_enb29: '""' + dc_offs_enb3: '""' + dc_offs_enb30: '""' + dc_offs_enb31: '""' + dc_offs_enb4: '""' + dc_offs_enb5: '""' + dc_offs_enb6: '""' + dc_offs_enb7: '""' + dc_offs_enb8: '""' + dc_offs_enb9: '""' + dev_addr: '""' + dev_args: '"recv_frame_size= 65536, num_recv_frames=128"' + gain0: '50' + gain1: '0' + gain10: '0' + gain11: '0' + gain12: '0' + gain13: '0' + gain14: '0' + gain15: '0' + gain16: '0' + gain17: '0' + gain18: '0' + gain19: '0' + gain2: '0' + gain20: '0' + gain21: '0' + gain22: '0' + gain23: '0' + gain24: '0' + gain25: '0' + gain26: '0' + gain27: '0' + gain28: '0' + gain29: '0' + gain3: '0' + gain30: '0' + gain31: '0' + gain4: '0' + gain5: '0' + gain6: '0' + gain7: '0' + gain8: '0' + gain9: '0' + iq_imbal_enb0: '""' + iq_imbal_enb1: '""' + iq_imbal_enb10: '""' + iq_imbal_enb11: '""' + iq_imbal_enb12: '""' + iq_imbal_enb13: '""' + iq_imbal_enb14: '""' + iq_imbal_enb15: '""' + iq_imbal_enb16: '""' + iq_imbal_enb17: '""' + iq_imbal_enb18: '""' + iq_imbal_enb19: '""' + iq_imbal_enb2: '""' + iq_imbal_enb20: '""' + iq_imbal_enb21: '""' + iq_imbal_enb22: '""' + iq_imbal_enb23: '""' + iq_imbal_enb24: '""' + iq_imbal_enb25: '""' + iq_imbal_enb26: '""' + iq_imbal_enb27: '""' + iq_imbal_enb28: '""' + iq_imbal_enb29: '""' + iq_imbal_enb3: '""' + iq_imbal_enb30: '""' + iq_imbal_enb31: '""' + iq_imbal_enb4: '""' + iq_imbal_enb5: '""' + iq_imbal_enb6: '""' + iq_imbal_enb7: '""' + iq_imbal_enb8: '""' + iq_imbal_enb9: '""' + lo_export0: 'False' + lo_export1: 'False' + lo_export10: 'False' + lo_export11: 'False' + lo_export12: 'False' + lo_export13: 'False' + lo_export14: 'False' + lo_export15: 'False' + lo_export16: 'False' + lo_export17: 'False' + lo_export18: 'False' + lo_export19: 'False' + lo_export2: 'False' + lo_export20: 'False' + lo_export21: 'False' + lo_export22: 'False' + lo_export23: 'False' + lo_export24: 'False' + lo_export25: 'False' + lo_export26: 'False' + lo_export27: 'False' + lo_export28: 'False' + lo_export29: 'False' + lo_export3: 'False' + lo_export30: 'False' + lo_export31: 'False' + lo_export4: 'False' + lo_export5: 'False' + lo_export6: 'False' + lo_export7: 'False' + lo_export8: 'False' + lo_export9: 'False' + lo_source0: internal + lo_source1: internal + lo_source10: internal + lo_source11: internal + lo_source12: internal + lo_source13: internal + lo_source14: internal + lo_source15: internal + lo_source16: internal + lo_source17: internal + lo_source18: internal + lo_source19: internal + lo_source2: internal + lo_source20: internal + lo_source21: internal + lo_source22: internal + lo_source23: internal + lo_source24: internal + lo_source25: internal + lo_source26: internal + lo_source27: internal + lo_source28: internal + lo_source29: internal + lo_source3: internal + lo_source30: internal + lo_source31: internal + lo_source4: internal + lo_source5: internal + lo_source6: internal + lo_source7: internal + lo_source8: internal + lo_source9: internal + maxoutbuf: '0' + minoutbuf: '0' + nchan: '1' + norm_gain0: 'False' + norm_gain1: 'False' + norm_gain10: 'False' + norm_gain11: 'False' + norm_gain12: 'False' + norm_gain13: 'False' + norm_gain14: 'False' + norm_gain15: 'False' + norm_gain16: 'False' + norm_gain17: 'False' + norm_gain18: 'False' + norm_gain19: 'False' + norm_gain2: 'False' + norm_gain20: 'False' + norm_gain21: 'False' + norm_gain22: 'False' + norm_gain23: 'False' + norm_gain24: 'False' + norm_gain25: 'False' + norm_gain26: 'False' + norm_gain27: 'False' + norm_gain28: 'False' + norm_gain29: 'False' + norm_gain3: 'False' + norm_gain30: 'False' + norm_gain31: 'False' + norm_gain4: 'False' + norm_gain5: 'False' + norm_gain6: 'False' + norm_gain7: 'False' + norm_gain8: 'False' + norm_gain9: 'False' + num_mboards: '1' + otw: '' + rx_agc0: Default + rx_agc1: Default + rx_agc10: Default + rx_agc11: Default + rx_agc12: Default + rx_agc13: Default + rx_agc14: Default + rx_agc15: Default + rx_agc16: Default + rx_agc17: Default + rx_agc18: Default + rx_agc19: Default + rx_agc2: Default + rx_agc20: Default + rx_agc21: Default + rx_agc22: Default + rx_agc23: Default + rx_agc24: Default + rx_agc25: Default + rx_agc26: Default + rx_agc27: Default + rx_agc28: Default + rx_agc29: Default + rx_agc3: Default + rx_agc30: Default + rx_agc31: Default + rx_agc4: Default + rx_agc5: Default + rx_agc6: Default + rx_agc7: Default + rx_agc8: Default + rx_agc9: Default + samp_rate: samp_rate + sd_spec0: '' + sd_spec1: '' + sd_spec2: '' + sd_spec3: '' + sd_spec4: '' + sd_spec5: '' + sd_spec6: '' + sd_spec7: '' + show_lo_controls: 'False' + stream_args: '' + stream_chans: '[]' + sync: sync + time_source0: '' + time_source1: '' + time_source2: '' + time_source3: '' + time_source4: '' + time_source5: '' + time_source6: '' + time_source7: '' + type: fc32 + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [194, 543] + rotation: 0 + state: disabled + +connections: +- [FFT_autocorrelation_0_0, '0', tempest_fft_peak_fine_sampling_sync_0_0, '0'] +- [Keep_1_in_N_Frames_0_0, '0', FFT_autocorrelation_0_0, '0'] +- [Keep_1_in_N_Frames_0_0, '0', tempest_ssamp_correction_0, '0'] +- [blocks_file_source_0, '0', blocks_file_sink_0, '0'] +- [blocks_file_source_0, '0', blocks_throttle_0, '0'] +- [blocks_throttle_0, '0', Keep_1_in_N_Frames_0_0, '0'] +- [tempest_fft_peak_fine_sampling_sync_0_0, '0', qtgui_time_sink_x_1, '0'] +- [tempest_fft_peak_fine_sampling_sync_0_0, en, FFT_autocorrelation_0_0, en] +- [tempest_fft_peak_fine_sampling_sync_0_0, en, tempest_ssamp_correction_0, en] +- [tempest_fft_peak_fine_sampling_sync_0_0, ratio, tempest_ssamp_correction_0, ratio] +- [tempest_ssamp_correction_0, '0', blocks_null_sink_0, '0'] +- [tempest_tempest_msgbtn_0, pressed, tempest_fft_peak_fine_sampling_sync_0_0, en] + +metadata: + file_format: 1 diff --git a/examples/semi_automatic_tempest_example.grc b/examples/semi_automatic_tempest_example.grc new file mode 100644 index 0000000..9ec7ec6 --- /dev/null +++ b/examples/semi_automatic_tempest_example.grc @@ -0,0 +1,1055 @@ +options: + parameters: + author: '' + category: '[GRC Hier Blocks]' + cmake_opt: '' + comment: '' + copyright: '' + description: '' + gen_cmake: 'On' + gen_linking: dynamic + generate_options: qt_gui + hier_block_src_path: '.:' + id: semi_automatic_tempest_example + max_nouts: '0' + output_language: python + placement: (0,0) + qt_qss_theme: '' + realtime_scheduling: '' + run: 'True' + run_command: '{python} -u {filename}' + run_options: prompt + sizing_mode: fixed + thread_safe_setters: '' + title: '' + window_size: '' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [8, 8] + rotation: 0 + state: enabled + +blocks: +- name: Hblank + id: variable + parameters: + comment: '' + value: Hsize-Hvisible + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [432, 28] + rotation: 0 + state: enabled +- name: Hcorrection + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: 1,0,1,1 + label: Horizontal correction + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '-20' + step: '1' + stop: '20' + value: '0' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1008, 92] + rotation: 0 + state: enabled +- name: Hdisplay + id: variable + parameters: + comment: '' + value: '1024' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1184, 28] + rotation: 0 + state: enabled +- name: Hsize + id: variable + parameters: + comment: '' + value: Hsizes[mode] + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [512, 28] + rotation: 0 + state: enabled +- name: Hsizes + id: variable + parameters: + comment: '' + value: '[832, 936, 800, 848, 832, 840, 832, 976, 992, 1008, 1008, 1024, 1024, + 1056, 1040, 1056, 1048, 1072, 1312, 1264, 1344, 1328, 1312, 1376, 1392, 1408, + 1520, 1600, 1552, 1568, 1680, 1680, 1800, 1728, 1728, 1760, 1688, 1688, 1728, + 1760, 1776, 1800, 1880, 1896, 1896, 1912, 1928, 1904, 1936, 2144, 2160, 2176, + 2192, 2144, 2176, 2096, 2176, 2160, 2160, 2160, 2160, 2160, 2208, 1840, 2240, + 2256, 2448, 2456, 2528, 2560, 2576, 2608, 2592, 2624, 2600, 2640, 2048, 2044, + 2800]' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [576, 164] + rotation: 0 + state: enabled +- name: Hvisible + id: variable + parameters: + comment: '' + value: Hvisibles[mode] + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [608, 28] + rotation: 0 + state: enabled +- name: Hvisibles + id: variable + parameters: + comment: '' + value: '[640, 720, 640, 640, 640, 640, 640, 768, 768, 768, 768, 768, 800, 800, + 800, 800, 800, 800, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1152, 1152, + 1152, 1152, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, + 1368, 1400, 1400, 1400, 1400, 1400, 1440, 1440, 1600, 1600, 1600, 1600, 1600, + 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1680, 1680, 1680, 1792, + 1792, 1856, 1856, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 2048]' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [256, 228] + rotation: 0 + state: enabled +- name: Vblank + id: variable + parameters: + comment: '' + value: Vsize-Vvisible + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [432, 92] + rotation: 0 + state: enabled +- name: Vcorrection + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: 1,1,1,1 + label: Vertical correction + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '-20' + step: '1' + stop: '20' + value: '0' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1016, 236] + rotation: 0 + state: enabled +- name: Vdisplay + id: variable + parameters: + comment: '' + value: '768' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1184, 92] + rotation: 0 + state: enabled +- name: Vsize + id: variable + parameters: + comment: '' + value: Vsizes[mode]+Vcorrection + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [512, 92] + rotation: 0 + state: enabled +- name: Vsizes + id: variable + parameters: + comment: '' + value: '[445, 446, 525, 509, 520, 500, 509, 597, 601, 602, 605, 611, 625, 628, + 666, 625, 631, 636, 622, 817, 806, 806, 800, 808, 814, 823, 895, 900, 907, 915, + 795, 828, 1000, 1002, 1011, 1017, 1066, 1066, 1072, 1085, 1097, 795, 1082, 1094, + 1096, 1103, 1112, 932, 1087, 1035, 1044, 1050, 1059, 1060, 1069, 1070, 1075, + 1250, 1250, 1250, 1250, 1250, 1271, 1080, 1089, 1087, 1394, 1417, 1439, 1500, + 1125, 1126, 1242, 1253, 1500, 1500, 2434, 2434, 1589]' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [576, 228] + rotation: 0 + state: enabled +- name: Vvisible + id: variable + parameters: + comment: '' + value: Vvisibles[mode] + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [608, 92] + rotation: 0 + state: enabled +- name: Vvisibles + id: variable + parameters: + comment: '' + value: '[400, 400, 480, 480, 480, 480, 480, 576, 576, 576, 576, 576, 600, 600, + 600, 600, 600, 600, 600, 768, 768, 768, 768, 768, 768, 768, 864, 864, 864, 864, + 768, 800, 960, 960, 960, 960, 1024, 1024, 1024, 1024, 1024, 768 , 1050, 1050, + 1050, 1050, 1050, 900 , 1050, 1000, 1000, 1000, 1000, 1024, 1024, 1024, 1024, + 1200, 1200, 1200, 1200, 1200, 1200, 1050, 1050, 1050, 1344, 1344, 1392, 1392, + 1080, 1080, 1200, 1200, 1440, 1440, 2400, 2400, 1536] ' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [416, 228] + rotation: 0 + state: enabled +- name: harmonic + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: '' + label: Harmonic + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '1' + step: '1' + stop: '10' + value: '1' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [736, 164] + rotation: 0 + state: enabled +- name: horizontal_offset + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: 2,0,1,1 + label: Horizontal offset + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: interpolatedHsize + value: '0' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [864, 156] + rotation: 0 + state: enabled +- name: interpolatedHsize + id: variable + parameters: + comment: '' + value: int(Hsize/float(px_rate)*samp_rate)+Hcorrection + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [992, 20] + rotation: 0 + state: enabled +- name: inverted + id: variable_qtgui_chooser + parameters: + comment: '' + gui_hint: '' + label: Inverted colors? + label0: 'Yes' + label1: 'No' + label2: '' + label3: '' + label4: '' + labels: '[]' + num_opts: '2' + option1: '1' + option2: '2' + option3: '3' + option4: '4' + options: '[0, 1, 2]' + orient: Qt.QHBoxLayout + type: real + value: '1' + widget: radio_buttons + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [720, 4] + rotation: 0 + state: enabled +- name: lines_offset + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: 2,1,1,1 + label: Vertical offset + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: Vsize + value: int(Vsize/2) + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [864, 28] + rotation: 0 + state: enabled +- name: mode + id: variable_qtgui_chooser + parameters: + comment: '' + gui_hint: 0,0,1,2 + label: Display's resolution + label0: '' + label1: '' + label2: '' + label3: '' + label4: '' + labels: modes + num_opts: '0' + option1: '1' + option2: '2' + option3: '3' + option4: '4' + options: range(len(modes)) + orient: Qt.QVBoxLayout + type: int + value: '20' + widget: combo_box + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [16, 84] + rotation: 0 + state: enabled +- name: modes + id: variable + parameters: + comment: '' + value: '["640x400 @ 85Hz", "720x400 @ 85Hz", "640x480 @ 60Hz", "640x480 @ 100Hz", + "640x480 @ 72Hz", "640x480 @ 75Hz", "640x480 @ 85Hz", "768x576 @ 60 Hz", "768x576 + @ 72 Hz", "768x576 @ 75 Hz", "768x576 @ 85 Hz", "768x576 @ 100 Hz", "800x600 + @ 56Hz", "800x600 @ 60Hz", "800x600 @ 72Hz", "800x600 @ 75Hz", "800x600 @ 85Hz", + "800x600 @ 100Hz", "1024x600 @ 60 Hz", "1024x768i @ 43Hz", "1024x768 @ 60Hz", + "1024x768 @ 70Hz", "1024x768 @ 75Hz", "1024x768 @ 85Hz", "1024x768 @ 100Hz", + "1024x768 @ 120Hz", "1152x864 @ 60Hz", "1152x864 @ 75Hz", "1152x864 @ 85Hz", + "1152x864 @ 100Hz", "1280x768 @ 60 Hz", "1280x800 @ 60 Hz", "1280x960 @ 60Hz", + "1280x960 @ 75Hz", "1280x960 @ 85Hz", "1280x960 @ 100Hz", "1280x1024 @ 60Hz", + "1280x1024 @ 75Hz", "1280x1024 @ 85Hz", "1280x1024 @ 100Hz", "1280x1024 @ 120Hz", + "1368x768 @ 60 Hz", "1400x1050 @ 60Hz", "1400x1050 @ 72 Hz", "1400x1050 @ 75 + Hz", "1400x1050 @ 85 Hz", "1400x1050 @ 100 Hz", "1440x900 @ 60 Hz", "1440x1050 + @ 60 Hz", "1600x1000 @ 60Hz", "1600x1000 @ 75Hz", "1600x1000 @ 85Hz", "1600x1000 + @ 100Hz", "1600x1024 @ 60Hz", "1600x1024 @ 75Hz", "1600x1024 @ 76Hz", "1600x1024 + @ 85Hz", "1600x1200 @ 60Hz", "1600x1200 @ 65Hz", "1600x1200 @ 70Hz", "1600x1200 + @ 75Hz", "1600x1200 @ 85Hz", "1600x1200 @ 100 Hz", "1680x1050 @ 60Hz reduced + blanking ", "1680x1050 @ 60Hz non-interlaced ", "1680x1050 @ 60 Hz", "1792x1344 + @ 60Hz", "1792x1344 @ 75Hz", "1856x1392 @ 60Hz", "1856x1392 @ 75Hz", "1920x1080 + @ 60Hz", "1920x1080 @ 75Hz", "1920x1200 @ 60Hz", "1920x1200 @ 75Hz", "1920x1440 + @ 60Hz", "1920x1440 @ 75Hz", "1920x2400 @ 25Hz", "1920x2400 @ 30Hz", "2048x1536 + @ 60Hz"]' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [240, 164] + rotation: 0 + state: enabled +- name: px_rate + id: variable + parameters: + comment: '' + value: Hsize*Vsize*refresh_rate + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [216, 28] + rotation: 0 + state: enabled +- name: refresh_rate + id: variable + parameters: + comment: '' + value: refresh_rates[mode] + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [328, 28] + rotation: 0 + state: enabled +- name: refresh_rates + id: variable + parameters: + comment: '' + value: '[85, 85, 60, 100, 72, 75, 85, 60, 72, 75, 85, 100, 56, 60, 72, 75, 85, + 100, 60, 43, 60, 70, 75, 85, 100, 120, 60, 75, 85, 100, 60, 60, 60, 75, 85, + 100, 60, 75, 85, 100, 120, 60, 60, 72, 75, 85, 100 , 60, 60, 60, 75, 85, 100, 60, 75, 76, 85, 60, 65, 70, 75, 85, 100 + , 60, 60, 60, 60, 75, 60, 75, 60, 75, 60, 75, 60, 75, 25, 30, 60]' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [416, 164] + rotation: 0 + state: enabled +- name: samp_rate + id: variable + parameters: + comment: '' + value: int(30e6) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [232, 92] + rotation: 0 + state: enabled +- name: blocks_complex_to_mag_0 + id: blocks_complex_to_mag + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [952, 479] + rotation: 0 + state: enabled +- name: blocks_delay_0 + id: blocks_delay + parameters: + affinity: '' + alias: '' + comment: '' + delay: interpolatedHsize*lines_offset+horizontal_offset + maxoutbuf: '0' + minoutbuf: '0' + num_ports: '1' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [768, 475] + rotation: 0 + state: enabled +- name: blocks_file_source_0 + id: blocks_file_source + parameters: + affinity: '' + alias: '' + begin_tag: pmt.PMT_NIL + comment: '' + file: /home/gnuradio/persistent/30M_tv_g50_v2.dat + length: '0' + maxoutbuf: '0' + minoutbuf: '0' + offset: '0' + repeat: 'True' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [22, 460] + rotation: 0 + state: enabled +- name: blocks_float_to_short_0_0 + id: blocks_float_to_short + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + scale: inverted + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1151, 739] + rotation: 180 + state: enabled +- name: blocks_float_to_short_0_0_0 + id: blocks_float_to_short + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + scale: inverted + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [856, 603] + rotation: 180 + state: disabled +- name: blocks_throttle_0 + id: blocks_throttle + parameters: + affinity: '' + alias: '' + comment: '' + ignoretag: 'True' + maxoutbuf: '0' + minoutbuf: '0' + samples_per_second: samp_rate + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [272, 465] + rotation: 0 + state: enabled +- name: tempest_fine_sampling_synchronization_0 + id: tempest_fine_sampling_synchronization + parameters: + Htotal: interpolatedHsize + Vtotal: Vsize + affinity: '' + alias: '' + comment: '' + correct_sampling: '1' + max_deviation: 10.0/interpolatedHsize + maxoutbuf: '0' + minoutbuf: '0' + update_proba: 1e-2/(Hsize*Vsize) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [503, 443] + rotation: 0 + state: enabled +- name: tempest_framing_0 + id: tempest_framing + parameters: + Hdisplay: Hdisplay + Htotal: interpolatedHsize + Vdisplay: Vdisplay + Vtotal: Vsize + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1072, 579] + rotation: 180 + state: disabled +- name: tempest_normalize_flow_0 + id: tempest_normalize_flow + parameters: + affinity: '' + alias: '' + alpha_avg: 1e-2 + comment: '' + max: '245' + maxoutbuf: '0' + min: '10' + minoutbuf: '0' + update_proba: '0.1' + window: interpolatedHsize + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1208, 441] + rotation: 0 + state: enabled +- name: uhd_usrp_source_0 + id: uhd_usrp_source + parameters: + affinity: '' + alias: '' + ant0: '' + ant1: '' + ant10: '' + ant11: '' + ant12: '' + ant13: '' + ant14: '' + ant15: '' + ant16: '' + ant17: '' + ant18: '' + ant19: '' + ant2: '' + ant20: '' + ant21: '' + ant22: '' + ant23: '' + ant24: '' + ant25: '' + ant26: '' + ant27: '' + ant28: '' + ant29: '' + ant3: '' + ant30: '' + ant31: '' + ant4: '' + ant5: '' + ant6: '' + ant7: '' + ant8: '' + ant9: '' + bw0: '0' + bw1: '0' + bw10: '0' + bw11: '0' + bw12: '0' + bw13: '0' + bw14: '0' + bw15: '0' + bw16: '0' + bw17: '0' + bw18: '0' + bw19: '0' + bw2: '0' + bw20: '0' + bw21: '0' + bw22: '0' + bw23: '0' + bw24: '0' + bw25: '0' + bw26: '0' + bw27: '0' + bw28: '0' + bw29: '0' + bw3: '0' + bw30: '0' + bw31: '0' + bw4: '0' + bw5: '0' + bw6: '0' + bw7: '0' + bw8: '0' + bw9: '0' + center_freq0: px_rate*harmonic + center_freq1: '0' + center_freq10: '0' + center_freq11: '0' + center_freq12: '0' + center_freq13: '0' + center_freq14: '0' + center_freq15: '0' + center_freq16: '0' + center_freq17: '0' + center_freq18: '0' + center_freq19: '0' + center_freq2: '0' + center_freq20: '0' + center_freq21: '0' + center_freq22: '0' + center_freq23: '0' + center_freq24: '0' + center_freq25: '0' + center_freq26: '0' + center_freq27: '0' + center_freq28: '0' + center_freq29: '0' + center_freq3: '0' + center_freq30: '0' + center_freq31: '0' + center_freq4: '0' + center_freq5: '0' + center_freq6: '0' + center_freq7: '0' + center_freq8: '0' + center_freq9: '0' + clock_rate: '0.0' + clock_source0: '' + clock_source1: '' + clock_source2: '' + clock_source3: '' + clock_source4: '' + clock_source5: '' + clock_source6: '' + clock_source7: '' + comment: '' + dc_offs_enb0: '""' + dc_offs_enb1: '""' + dc_offs_enb10: '""' + dc_offs_enb11: '""' + dc_offs_enb12: '""' + dc_offs_enb13: '""' + dc_offs_enb14: '""' + dc_offs_enb15: '""' + dc_offs_enb16: '""' + dc_offs_enb17: '""' + dc_offs_enb18: '""' + dc_offs_enb19: '""' + dc_offs_enb2: '""' + dc_offs_enb20: '""' + dc_offs_enb21: '""' + dc_offs_enb22: '""' + dc_offs_enb23: '""' + dc_offs_enb24: '""' + dc_offs_enb25: '""' + dc_offs_enb26: '""' + dc_offs_enb27: '""' + dc_offs_enb28: '""' + dc_offs_enb29: '""' + dc_offs_enb3: '""' + dc_offs_enb30: '""' + dc_offs_enb31: '""' + dc_offs_enb4: '""' + dc_offs_enb5: '""' + dc_offs_enb6: '""' + dc_offs_enb7: '""' + dc_offs_enb8: '""' + dc_offs_enb9: '""' + dev_addr: '""' + dev_args: '""' + gain0: '50' + gain1: '0' + gain10: '0' + gain11: '0' + gain12: '0' + gain13: '0' + gain14: '0' + gain15: '0' + gain16: '0' + gain17: '0' + gain18: '0' + gain19: '0' + gain2: '0' + gain20: '0' + gain21: '0' + gain22: '0' + gain23: '0' + gain24: '0' + gain25: '0' + gain26: '0' + gain27: '0' + gain28: '0' + gain29: '0' + gain3: '0' + gain30: '0' + gain31: '0' + gain4: '0' + gain5: '0' + gain6: '0' + gain7: '0' + gain8: '0' + gain9: '0' + iq_imbal_enb0: '""' + iq_imbal_enb1: '""' + iq_imbal_enb10: '""' + iq_imbal_enb11: '""' + iq_imbal_enb12: '""' + iq_imbal_enb13: '""' + iq_imbal_enb14: '""' + iq_imbal_enb15: '""' + iq_imbal_enb16: '""' + iq_imbal_enb17: '""' + iq_imbal_enb18: '""' + iq_imbal_enb19: '""' + iq_imbal_enb2: '""' + iq_imbal_enb20: '""' + iq_imbal_enb21: '""' + iq_imbal_enb22: '""' + iq_imbal_enb23: '""' + iq_imbal_enb24: '""' + iq_imbal_enb25: '""' + iq_imbal_enb26: '""' + iq_imbal_enb27: '""' + iq_imbal_enb28: '""' + iq_imbal_enb29: '""' + iq_imbal_enb3: '""' + iq_imbal_enb30: '""' + iq_imbal_enb31: '""' + iq_imbal_enb4: '""' + iq_imbal_enb5: '""' + iq_imbal_enb6: '""' + iq_imbal_enb7: '""' + iq_imbal_enb8: '""' + iq_imbal_enb9: '""' + lo_export0: 'False' + lo_export1: 'False' + lo_export10: 'False' + lo_export11: 'False' + lo_export12: 'False' + lo_export13: 'False' + lo_export14: 'False' + lo_export15: 'False' + lo_export16: 'False' + lo_export17: 'False' + lo_export18: 'False' + lo_export19: 'False' + lo_export2: 'False' + lo_export20: 'False' + lo_export21: 'False' + lo_export22: 'False' + lo_export23: 'False' + lo_export24: 'False' + lo_export25: 'False' + lo_export26: 'False' + lo_export27: 'False' + lo_export28: 'False' + lo_export29: 'False' + lo_export3: 'False' + lo_export30: 'False' + lo_export31: 'False' + lo_export4: 'False' + lo_export5: 'False' + lo_export6: 'False' + lo_export7: 'False' + lo_export8: 'False' + lo_export9: 'False' + lo_source0: internal + lo_source1: internal + lo_source10: internal + lo_source11: internal + lo_source12: internal + lo_source13: internal + lo_source14: internal + lo_source15: internal + lo_source16: internal + lo_source17: internal + lo_source18: internal + lo_source19: internal + lo_source2: internal + lo_source20: internal + lo_source21: internal + lo_source22: internal + lo_source23: internal + lo_source24: internal + lo_source25: internal + lo_source26: internal + lo_source27: internal + lo_source28: internal + lo_source29: internal + lo_source3: internal + lo_source30: internal + lo_source31: internal + lo_source4: internal + lo_source5: internal + lo_source6: internal + lo_source7: internal + lo_source8: internal + lo_source9: internal + maxoutbuf: '0' + minoutbuf: '0' + nchan: '1' + norm_gain0: 'False' + norm_gain1: 'False' + norm_gain10: 'False' + norm_gain11: 'False' + norm_gain12: 'False' + norm_gain13: 'False' + norm_gain14: 'False' + norm_gain15: 'False' + norm_gain16: 'False' + norm_gain17: 'False' + norm_gain18: 'False' + norm_gain19: 'False' + norm_gain2: 'False' + norm_gain20: 'False' + norm_gain21: 'False' + norm_gain22: 'False' + norm_gain23: 'False' + norm_gain24: 'False' + norm_gain25: 'False' + norm_gain26: 'False' + norm_gain27: 'False' + norm_gain28: 'False' + norm_gain29: 'False' + norm_gain3: 'False' + norm_gain30: 'False' + norm_gain31: 'False' + norm_gain4: 'False' + norm_gain5: 'False' + norm_gain6: 'False' + norm_gain7: 'False' + norm_gain8: 'False' + norm_gain9: 'False' + num_mboards: '1' + otw: '' + rx_agc0: Default + rx_agc1: Default + rx_agc10: Default + rx_agc11: Default + rx_agc12: Default + rx_agc13: Default + rx_agc14: Default + rx_agc15: Default + rx_agc16: Default + rx_agc17: Default + rx_agc18: Default + rx_agc19: Default + rx_agc2: Default + rx_agc20: Default + rx_agc21: Default + rx_agc22: Default + rx_agc23: Default + rx_agc24: Default + rx_agc25: Default + rx_agc26: Default + rx_agc27: Default + rx_agc28: Default + rx_agc29: Default + rx_agc3: Default + rx_agc30: Default + rx_agc31: Default + rx_agc4: Default + rx_agc5: Default + rx_agc6: Default + rx_agc7: Default + rx_agc8: Default + rx_agc9: Default + samp_rate: samp_rate + sd_spec0: '' + sd_spec1: '' + sd_spec2: '' + sd_spec3: '' + sd_spec4: '' + sd_spec5: '' + sd_spec6: '' + sd_spec7: '' + show_lo_controls: 'False' + stream_args: '' + stream_chans: '[]' + sync: sync + time_source0: '' + time_source1: '' + time_source2: '' + time_source3: '' + time_source4: '' + time_source5: '' + time_source6: '' + time_source7: '' + type: fc32 + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [148, 607] + rotation: 0 + state: disabled +- name: video_sdl_sink_0_0 + id: video_sdl_sink + parameters: + affinity: '' + alias: '' + comment: "Enable this path when you are not sure what the \nresolution is and\ + \ you want to try several ones \non run-time. Then, enable the other path." + display_height: Vdisplay + display_width: Hdisplay + fps: '0' + height: Vdisplay + num_channels: '1' + type: short + width: Hdisplay + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [591, 571] + rotation: 180 + state: disabled +- name: video_sdl_sink_0_0_0 + id: video_sdl_sink + parameters: + affinity: '' + alias: '' + comment: "Enable this path when you are sure what the \nresolution is (and defaut\ + \ to those values on \nthe chooser)." + display_height: Vsize + display_width: Hsize + fps: '0' + height: Vsize + num_channels: '1' + type: short + width: interpolatedHsize + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [912, 707] + rotation: 180 + state: enabled + +connections: +- [blocks_complex_to_mag_0, '0', tempest_normalize_flow_0, '0'] +- [blocks_delay_0, '0', blocks_complex_to_mag_0, '0'] +- [blocks_file_source_0, '0', blocks_throttle_0, '0'] +- [blocks_float_to_short_0_0, '0', video_sdl_sink_0_0_0, '0'] +- [blocks_float_to_short_0_0_0, '0', video_sdl_sink_0_0, '0'] +- [blocks_throttle_0, '0', tempest_fine_sampling_synchronization_0, '0'] +- [tempest_fine_sampling_synchronization_0, '0', blocks_delay_0, '0'] +- [tempest_framing_0, '0', blocks_float_to_short_0_0_0, '0'] +- [tempest_normalize_flow_0, '0', blocks_float_to_short_0_0, '0'] +- [tempest_normalize_flow_0, '0', tempest_framing_0, '0'] +- [uhd_usrp_source_0, '0', tempest_fine_sampling_synchronization_0, '0'] + +metadata: + file_format: 1 diff --git a/examples/semi_automatic_tempest_hdmi_example.grc b/examples/semi_automatic_tempest_hdmi_example.grc new file mode 100644 index 0000000..c4444b8 --- /dev/null +++ b/examples/semi_automatic_tempest_hdmi_example.grc @@ -0,0 +1,1055 @@ +options: + parameters: + author: '' + category: '[GRC Hier Blocks]' + cmake_opt: '' + comment: '' + copyright: '' + description: '' + gen_cmake: 'On' + gen_linking: dynamic + generate_options: qt_gui + hier_block_src_path: '.:' + id: semi_automatic_tempest_example + max_nouts: '0' + output_language: python + placement: (0,0) + qt_qss_theme: '' + realtime_scheduling: '' + run: 'True' + run_command: '{python} -u {filename}' + run_options: prompt + sizing_mode: fixed + thread_safe_setters: '' + title: '' + window_size: '' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [8, 8] + rotation: 0 + state: enabled + +blocks: +- name: Hblank + id: variable + parameters: + comment: '' + value: Hsize-Hvisible + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [432, 28] + rotation: 0 + state: enabled +- name: Hcorrection + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: 3,0,1,1 + label: Horizontal correction + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '-20' + step: '1' + stop: '20' + value: '0' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1000, 12] + rotation: 0 + state: enabled +- name: Hdisplay + id: variable + parameters: + comment: '' + value: Hsize + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [32, 236] + rotation: 0 + state: enabled +- name: Hsize + id: variable + parameters: + comment: '' + value: Hsizes[mode] + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [512, 28] + rotation: 0 + state: enabled +- name: Hsizes + id: variable + parameters: + comment: '' + value: '[832, 936, 800, 848, 832, 840, 832, 976, 992, 1008, 1008, 1024, 1024, + 1056, 1040, 1056, 1048, 1072, 1312, 1264, 1344, 1328, 1312, 1376, 1392, 1408, + 1520, 1600, 1552, 1568, 1680, 1680, 1800, 1728, 1728, 1760, 1688, 1688, 1728, + 1760, 1776, 1800, 1880, 1896, 1896, 1912, 1928, 1904, 1936, 2144, 2160, 2176, + 2192, 2144, 2176, 2096, 2176, 2160, 2160, 2160, 2160, 2160, 2208, 1840, 2240, + 2256, 2448, 2456, 2528, 2560, 2576, 2608, 2592, 2624, 2600, 2640, 2048, 2044, + 2800]' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [576, 164] + rotation: 0 + state: enabled +- name: Hvisible + id: variable + parameters: + comment: '' + value: Hvisibles[mode] + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [608, 28] + rotation: 0 + state: enabled +- name: Hvisibles + id: variable + parameters: + comment: '' + value: '[640, 720, 640, 640, 640, 640, 640, 768, 768, 768, 768, 768, 800, 800, + 800, 800, 800, 800, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1152, 1152, + 1152, 1152, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, + 1368, 1400, 1400, 1400, 1400, 1400, 1440, 1440, 1600, 1600, 1600, 1600, 1600, + 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1680, 1680, 1680, 1792, + 1792, 1856, 1856, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 1920, 2048]' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [256, 228] + rotation: 0 + state: enabled +- name: Vblank + id: variable + parameters: + comment: '' + value: Vsize-Vvisible + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [432, 92] + rotation: 0 + state: enabled +- name: Vcorrection + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: 3,1,1,1 + label: Vertical correction + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '-20' + step: '1' + stop: '20' + value: '0' + widget: counter + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1008, 148] + rotation: 0 + state: enabled +- name: Vdisplay + id: variable + parameters: + comment: '' + value: '768' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [128, 236] + rotation: 0 + state: enabled +- name: Vsize + id: variable + parameters: + comment: '' + value: Vsizes[mode]+Vcorrection + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [512, 92] + rotation: 0 + state: enabled +- name: Vsizes + id: variable + parameters: + comment: '' + value: '[445, 446, 525, 509, 520, 500, 509, 597, 601, 602, 605, 611, 625, 628, + 666, 625, 631, 636, 622, 817, 806, 806, 800, 808, 814, 823, 895, 900, 907, 915, + 795, 828, 1000, 1002, 1011, 1017, 1066, 1066, 1072, 1085, 1097, 795, 1082, 1094, + 1096, 1103, 1112, 932, 1087, 1035, 1044, 1050, 1059, 1060, 1069, 1070, 1075, + 1250, 1250, 1250, 1250, 1250, 1271, 1080, 1089, 1087, 1394, 1417, 1439, 1500, + 1125, 1126, 1242, 1253, 1500, 1500, 2434, 2434, 1589]' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [576, 228] + rotation: 0 + state: enabled +- name: Vvisible + id: variable + parameters: + comment: '' + value: Vvisibles[mode] + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [608, 92] + rotation: 0 + state: enabled +- name: Vvisibles + id: variable + parameters: + comment: '' + value: '[400, 400, 480, 480, 480, 480, 480, 576, 576, 576, 576, 576, 600, 600, + 600, 600, 600, 600, 600, 768, 768, 768, 768, 768, 768, 768, 864, 864, 864, 864, + 768, 800, 960, 960, 960, 960, 1024, 1024, 1024, 1024, 1024, 768 , 1050, 1050, + 1050, 1050, 1050, 900 , 1050, 1000, 1000, 1000, 1000, 1024, 1024, 1024, 1024, + 1200, 1200, 1200, 1200, 1200, 1200, 1050, 1050, 1050, 1344, 1344, 1392, 1392, + 1080, 1080, 1200, 1200, 1440, 1440, 2400, 2400, 1536] ' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [416, 228] + rotation: 0 + state: enabled +- name: harmonic + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: 4,1,1,1 + label: Harmonic + min_len: '200' + orient: Qt.Horizontal + rangeType: float + start: '1' + step: '1' + stop: '10' + value: '1' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [736, 164] + rotation: 0 + state: enabled +- name: horizontal_offset + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: 1,0,1,2 + label: Horizontal offset + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: interpolatedHsize + value: '0' + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [864, 156] + rotation: 0 + state: enabled +- name: interpolatedHsize + id: variable + parameters: + comment: '' + value: int(Hsize/float(px_rate)*samp_rate)+Hcorrection + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [24, 308] + rotation: 0 + state: enabled +- name: inverted + id: variable_qtgui_chooser + parameters: + comment: '' + gui_hint: 4,0,1,1 + label: Inverted colors? + label0: 'Yes' + label1: 'No' + label2: '' + label3: '' + label4: '' + labels: '[]' + num_opts: '2' + option1: '1' + option2: '2' + option3: '3' + option4: '4' + options: '[0, 1, 2]' + orient: Qt.QHBoxLayout + type: real + value: '1' + widget: radio_buttons + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [728, 4] + rotation: 0 + state: enabled +- name: lines_offset + id: variable_qtgui_range + parameters: + comment: '' + gui_hint: 0,0,1,2 + label: Vertical offset + min_len: '200' + orient: Qt.Horizontal + rangeType: int + start: '0' + step: '1' + stop: Vsize + value: int(Vsize/2) + widget: counter_slider + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [864, 4] + rotation: 0 + state: enabled +- name: mode + id: variable_qtgui_chooser + parameters: + comment: '' + gui_hint: 2,0,1,2 + label: Display's resolution + label0: '' + label1: '' + label2: '' + label3: '' + label4: '' + labels: modes + num_opts: '0' + option1: '1' + option2: '2' + option3: '3' + option4: '4' + options: range(len(modes)) + orient: Qt.QVBoxLayout + type: int + value: '21' + widget: combo_box + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [16, 84] + rotation: 0 + state: enabled +- name: modes + id: variable + parameters: + comment: '' + value: '["640x400 @ 85Hz", "720x400 @ 85Hz", "640x480 @ 60Hz", "640x480 @ 100Hz", + "640x480 @ 72Hz", "640x480 @ 75Hz", "640x480 @ 85Hz", "768x576 @ 60 Hz", "768x576 + @ 72 Hz", "768x576 @ 75 Hz", "768x576 @ 85 Hz", "768x576 @ 100 Hz", "800x600 + @ 56Hz", "800x600 @ 60Hz", "800x600 @ 72Hz", "800x600 @ 75Hz", "800x600 @ 85Hz", + "800x600 @ 100Hz", "1024x600 @ 60 Hz", "1024x768i @ 43Hz", "1024x768 @ 60Hz", + "1024x768 @ 70Hz", "1024x768 @ 75Hz", "1024x768 @ 85Hz", "1024x768 @ 100Hz", + "1024x768 @ 120Hz", "1152x864 @ 60Hz", "1152x864 @ 75Hz", "1152x864 @ 85Hz", + "1152x864 @ 100Hz", "1280x768 @ 60 Hz", "1280x800 @ 60 Hz", "1280x960 @ 60Hz", + "1280x960 @ 75Hz", "1280x960 @ 85Hz", "1280x960 @ 100Hz", "1280x1024 @ 60Hz", + "1280x1024 @ 75Hz", "1280x1024 @ 85Hz", "1280x1024 @ 100Hz", "1280x1024 @ 120Hz", + "1368x768 @ 60 Hz", "1400x1050 @ 60Hz", "1400x1050 @ 72 Hz", "1400x1050 @ 75 + Hz", "1400x1050 @ 85 Hz", "1400x1050 @ 100 Hz", "1440x900 @ 60 Hz", "1440x1050 + @ 60 Hz", "1600x1000 @ 60Hz", "1600x1000 @ 75Hz", "1600x1000 @ 85Hz", "1600x1000 + @ 100Hz", "1600x1024 @ 60Hz", "1600x1024 @ 75Hz", "1600x1024 @ 76Hz", "1600x1024 + @ 85Hz", "1600x1200 @ 60Hz", "1600x1200 @ 65Hz", "1600x1200 @ 70Hz", "1600x1200 + @ 75Hz", "1600x1200 @ 85Hz", "1600x1200 @ 100 Hz", "1680x1050 @ 60Hz reduced + blanking ", "1680x1050 @ 60Hz non-interlaced ", "1680x1050 @ 60 Hz", "1792x1344 + @ 60Hz", "1792x1344 @ 75Hz", "1856x1392 @ 60Hz", "1856x1392 @ 75Hz", "1920x1080 + @ 60Hz", "1920x1080 @ 75Hz", "1920x1200 @ 60Hz", "1920x1200 @ 75Hz", "1920x1440 + @ 60Hz", "1920x1440 @ 75Hz", "1920x2400 @ 25Hz", "1920x2400 @ 30Hz", "2048x1536 + @ 60Hz"]' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [240, 164] + rotation: 0 + state: enabled +- name: px_rate + id: variable + parameters: + comment: '' + value: Hsize*Vsize*refresh_rate + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [216, 28] + rotation: 0 + state: enabled +- name: refresh_rate + id: variable + parameters: + comment: '' + value: refresh_rates[mode] + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [328, 28] + rotation: 0 + state: enabled +- name: refresh_rates + id: variable + parameters: + comment: '' + value: '[85, 85, 60, 100, 72, 75, 85, 60, 72, 75, 85, 100, 56, 60, 72, 75, 85, + 100, 60, 43, 60, 70, 75, 85, 100, 120, 60, 75, 85, 100, 60, 60, 60, 75, 85, + 100, 60, 75, 85, 100, 120, 60, 60, 72, 75, 85, 100 , 60, 60, 60, 75, 85, 100, 60, 75, 76, 85, 60, 65, 70, 75, 85, 100 + , 60, 60, 60, 60, 75, 60, 75, 60, 75, 60, 75, 60, 75, 25, 30, 60]' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [416, 164] + rotation: 0 + state: enabled +- name: samp_rate + id: variable + parameters: + comment: '' + value: int(40e6) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [232, 92] + rotation: 0 + state: enabled +- name: blocks_complex_to_mag_0 + id: blocks_complex_to_mag + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1028, 474] + rotation: 0 + state: enabled +- name: blocks_delay_0 + id: blocks_delay + parameters: + affinity: '' + alias: '' + comment: '' + delay: interpolatedHsize*lines_offset+horizontal_offset + maxoutbuf: '0' + minoutbuf: '0' + num_ports: '1' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [844, 470] + rotation: 0 + state: enabled +- name: blocks_file_source_0 + id: blocks_file_source + parameters: + affinity: '' + alias: '' + begin_tag: pmt.PMT_NIL + comment: '' + file: /home/gnuradio/persistent/grabacion_HDMI.dat + length: '0' + maxoutbuf: '0' + minoutbuf: '0' + offset: '0' + repeat: 'True' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [37, 464] + rotation: 0 + state: enabled +- name: blocks_float_to_short_0_0 + id: blocks_float_to_short + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + scale: inverted + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1310, 750] + rotation: 180 + state: enabled +- name: blocks_float_to_short_0_0_0 + id: blocks_float_to_short + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + scale: inverted + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [966, 630] + rotation: 180 + state: disabled +- name: blocks_throttle_0 + id: blocks_throttle + parameters: + affinity: '' + alias: '' + comment: '' + ignoretag: 'True' + maxoutbuf: '0' + minoutbuf: '0' + samples_per_second: samp_rate + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [295, 479] + rotation: 0 + state: enabled +- name: tempest_fine_sampling_synchronization_0 + id: tempest_fine_sampling_synchronization + parameters: + Htotal: interpolatedHsize + Vtotal: Vsize + affinity: '' + alias: '' + comment: '' + correct_sampling: '1' + max_deviation: 20.0/interpolatedHsize + maxoutbuf: '0' + minoutbuf: '0' + update_proba: 1e-2/(Hsize*Vsize) + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [529, 467] + rotation: 0 + state: enabled +- name: tempest_framing_0 + id: tempest_framing + parameters: + Hdisplay: Hdisplay + Htotal: interpolatedHsize + Vdisplay: Vdisplay + Vtotal: Vsize + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1159, 605] + rotation: 180 + state: disabled +- name: tempest_normalize_flow_0 + id: tempest_normalize_flow + parameters: + affinity: '' + alias: '' + alpha_avg: 1e-2 + comment: '' + max: '245' + maxoutbuf: '0' + min: '10' + minoutbuf: '0' + update_proba: '0.1' + window: interpolatedHsize + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1252, 446] + rotation: 0 + state: enabled +- name: uhd_usrp_source_0 + id: uhd_usrp_source + parameters: + affinity: '' + alias: '' + ant0: '' + ant1: '' + ant10: '' + ant11: '' + ant12: '' + ant13: '' + ant14: '' + ant15: '' + ant16: '' + ant17: '' + ant18: '' + ant19: '' + ant2: '' + ant20: '' + ant21: '' + ant22: '' + ant23: '' + ant24: '' + ant25: '' + ant26: '' + ant27: '' + ant28: '' + ant29: '' + ant3: '' + ant30: '' + ant31: '' + ant4: '' + ant5: '' + ant6: '' + ant7: '' + ant8: '' + ant9: '' + bw0: '0' + bw1: '0' + bw10: '0' + bw11: '0' + bw12: '0' + bw13: '0' + bw14: '0' + bw15: '0' + bw16: '0' + bw17: '0' + bw18: '0' + bw19: '0' + bw2: '0' + bw20: '0' + bw21: '0' + bw22: '0' + bw23: '0' + bw24: '0' + bw25: '0' + bw26: '0' + bw27: '0' + bw28: '0' + bw29: '0' + bw3: '0' + bw30: '0' + bw31: '0' + bw4: '0' + bw5: '0' + bw6: '0' + bw7: '0' + bw8: '0' + bw9: '0' + center_freq0: px_rate*10*harmonic + center_freq1: '0' + center_freq10: '0' + center_freq11: '0' + center_freq12: '0' + center_freq13: '0' + center_freq14: '0' + center_freq15: '0' + center_freq16: '0' + center_freq17: '0' + center_freq18: '0' + center_freq19: '0' + center_freq2: '0' + center_freq20: '0' + center_freq21: '0' + center_freq22: '0' + center_freq23: '0' + center_freq24: '0' + center_freq25: '0' + center_freq26: '0' + center_freq27: '0' + center_freq28: '0' + center_freq29: '0' + center_freq3: '0' + center_freq30: '0' + center_freq31: '0' + center_freq4: '0' + center_freq5: '0' + center_freq6: '0' + center_freq7: '0' + center_freq8: '0' + center_freq9: '0' + clock_rate: '0.0' + clock_source0: '' + clock_source1: '' + clock_source2: '' + clock_source3: '' + clock_source4: '' + clock_source5: '' + clock_source6: '' + clock_source7: '' + comment: '' + dc_offs_enb0: '""' + dc_offs_enb1: '""' + dc_offs_enb10: '""' + dc_offs_enb11: '""' + dc_offs_enb12: '""' + dc_offs_enb13: '""' + dc_offs_enb14: '""' + dc_offs_enb15: '""' + dc_offs_enb16: '""' + dc_offs_enb17: '""' + dc_offs_enb18: '""' + dc_offs_enb19: '""' + dc_offs_enb2: '""' + dc_offs_enb20: '""' + dc_offs_enb21: '""' + dc_offs_enb22: '""' + dc_offs_enb23: '""' + dc_offs_enb24: '""' + dc_offs_enb25: '""' + dc_offs_enb26: '""' + dc_offs_enb27: '""' + dc_offs_enb28: '""' + dc_offs_enb29: '""' + dc_offs_enb3: '""' + dc_offs_enb30: '""' + dc_offs_enb31: '""' + dc_offs_enb4: '""' + dc_offs_enb5: '""' + dc_offs_enb6: '""' + dc_offs_enb7: '""' + dc_offs_enb8: '""' + dc_offs_enb9: '""' + dev_addr: '""' + dev_args: '""' + gain0: '50' + gain1: '0' + gain10: '0' + gain11: '0' + gain12: '0' + gain13: '0' + gain14: '0' + gain15: '0' + gain16: '0' + gain17: '0' + gain18: '0' + gain19: '0' + gain2: '0' + gain20: '0' + gain21: '0' + gain22: '0' + gain23: '0' + gain24: '0' + gain25: '0' + gain26: '0' + gain27: '0' + gain28: '0' + gain29: '0' + gain3: '0' + gain30: '0' + gain31: '0' + gain4: '0' + gain5: '0' + gain6: '0' + gain7: '0' + gain8: '0' + gain9: '0' + iq_imbal_enb0: '""' + iq_imbal_enb1: '""' + iq_imbal_enb10: '""' + iq_imbal_enb11: '""' + iq_imbal_enb12: '""' + iq_imbal_enb13: '""' + iq_imbal_enb14: '""' + iq_imbal_enb15: '""' + iq_imbal_enb16: '""' + iq_imbal_enb17: '""' + iq_imbal_enb18: '""' + iq_imbal_enb19: '""' + iq_imbal_enb2: '""' + iq_imbal_enb20: '""' + iq_imbal_enb21: '""' + iq_imbal_enb22: '""' + iq_imbal_enb23: '""' + iq_imbal_enb24: '""' + iq_imbal_enb25: '""' + iq_imbal_enb26: '""' + iq_imbal_enb27: '""' + iq_imbal_enb28: '""' + iq_imbal_enb29: '""' + iq_imbal_enb3: '""' + iq_imbal_enb30: '""' + iq_imbal_enb31: '""' + iq_imbal_enb4: '""' + iq_imbal_enb5: '""' + iq_imbal_enb6: '""' + iq_imbal_enb7: '""' + iq_imbal_enb8: '""' + iq_imbal_enb9: '""' + lo_export0: 'False' + lo_export1: 'False' + lo_export10: 'False' + lo_export11: 'False' + lo_export12: 'False' + lo_export13: 'False' + lo_export14: 'False' + lo_export15: 'False' + lo_export16: 'False' + lo_export17: 'False' + lo_export18: 'False' + lo_export19: 'False' + lo_export2: 'False' + lo_export20: 'False' + lo_export21: 'False' + lo_export22: 'False' + lo_export23: 'False' + lo_export24: 'False' + lo_export25: 'False' + lo_export26: 'False' + lo_export27: 'False' + lo_export28: 'False' + lo_export29: 'False' + lo_export3: 'False' + lo_export30: 'False' + lo_export31: 'False' + lo_export4: 'False' + lo_export5: 'False' + lo_export6: 'False' + lo_export7: 'False' + lo_export8: 'False' + lo_export9: 'False' + lo_source0: internal + lo_source1: internal + lo_source10: internal + lo_source11: internal + lo_source12: internal + lo_source13: internal + lo_source14: internal + lo_source15: internal + lo_source16: internal + lo_source17: internal + lo_source18: internal + lo_source19: internal + lo_source2: internal + lo_source20: internal + lo_source21: internal + lo_source22: internal + lo_source23: internal + lo_source24: internal + lo_source25: internal + lo_source26: internal + lo_source27: internal + lo_source28: internal + lo_source29: internal + lo_source3: internal + lo_source30: internal + lo_source31: internal + lo_source4: internal + lo_source5: internal + lo_source6: internal + lo_source7: internal + lo_source8: internal + lo_source9: internal + maxoutbuf: '0' + minoutbuf: '0' + nchan: '1' + norm_gain0: 'False' + norm_gain1: 'False' + norm_gain10: 'False' + norm_gain11: 'False' + norm_gain12: 'False' + norm_gain13: 'False' + norm_gain14: 'False' + norm_gain15: 'False' + norm_gain16: 'False' + norm_gain17: 'False' + norm_gain18: 'False' + norm_gain19: 'False' + norm_gain2: 'False' + norm_gain20: 'False' + norm_gain21: 'False' + norm_gain22: 'False' + norm_gain23: 'False' + norm_gain24: 'False' + norm_gain25: 'False' + norm_gain26: 'False' + norm_gain27: 'False' + norm_gain28: 'False' + norm_gain29: 'False' + norm_gain3: 'False' + norm_gain30: 'False' + norm_gain31: 'False' + norm_gain4: 'False' + norm_gain5: 'False' + norm_gain6: 'False' + norm_gain7: 'False' + norm_gain8: 'False' + norm_gain9: 'False' + num_mboards: '1' + otw: '' + rx_agc0: Default + rx_agc1: Default + rx_agc10: Default + rx_agc11: Default + rx_agc12: Default + rx_agc13: Default + rx_agc14: Default + rx_agc15: Default + rx_agc16: Default + rx_agc17: Default + rx_agc18: Default + rx_agc19: Default + rx_agc2: Default + rx_agc20: Default + rx_agc21: Default + rx_agc22: Default + rx_agc23: Default + rx_agc24: Default + rx_agc25: Default + rx_agc26: Default + rx_agc27: Default + rx_agc28: Default + rx_agc29: Default + rx_agc3: Default + rx_agc30: Default + rx_agc31: Default + rx_agc4: Default + rx_agc5: Default + rx_agc6: Default + rx_agc7: Default + rx_agc8: Default + rx_agc9: Default + samp_rate: samp_rate + sd_spec0: '' + sd_spec1: '' + sd_spec2: '' + sd_spec3: '' + sd_spec4: '' + sd_spec5: '' + sd_spec6: '' + sd_spec7: '' + show_lo_controls: 'False' + stream_args: '' + stream_chans: '[]' + sync: sync + time_source0: '' + time_source1: '' + time_source2: '' + time_source3: '' + time_source4: '' + time_source5: '' + time_source6: '' + time_source7: '' + type: fc32 + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [180, 598] + rotation: 0 + state: disabled +- name: video_sdl_sink_0_0 + id: video_sdl_sink + parameters: + affinity: '' + alias: '' + comment: "Enable this path when you are not sure what the \nresolution is and\ + \ you want to try several ones \non run-time. Then, enable the other path." + display_height: Vdisplay + display_width: Hdisplay + fps: '0' + height: Vdisplay + num_channels: '1' + type: short + width: Hdisplay + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [736, 598] + rotation: 180 + state: disabled +- name: video_sdl_sink_0_0_0 + id: video_sdl_sink + parameters: + affinity: '' + alias: '' + comment: "Enable this path when you are sure what the \nresolution is (and defaut\ + \ to those values on \nthe chooser)." + display_height: Vsize + display_width: Hsize + fps: '0' + height: Vsize + num_channels: '1' + type: short + width: interpolatedHsize + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1078, 718] + rotation: 180 + state: enabled + +connections: +- [blocks_complex_to_mag_0, '0', tempest_normalize_flow_0, '0'] +- [blocks_delay_0, '0', blocks_complex_to_mag_0, '0'] +- [blocks_file_source_0, '0', blocks_throttle_0, '0'] +- [blocks_float_to_short_0_0, '0', video_sdl_sink_0_0_0, '0'] +- [blocks_float_to_short_0_0_0, '0', video_sdl_sink_0_0, '0'] +- [blocks_throttle_0, '0', tempest_fine_sampling_synchronization_0, '0'] +- [tempest_fine_sampling_synchronization_0, '0', blocks_delay_0, '0'] +- [tempest_framing_0, '0', blocks_float_to_short_0_0_0, '0'] +- [tempest_normalize_flow_0, '0', blocks_float_to_short_0_0, '0'] +- [tempest_normalize_flow_0, '0', tempest_framing_0, '0'] +- [uhd_usrp_source_0, '0', tempest_fine_sampling_synchronization_0, '0'] + +metadata: + file_format: 1 diff --git a/grc/CMakeLists.txt b/grc/CMakeLists.txt new file mode 100644 index 0000000..2a034f2 --- /dev/null +++ b/grc/CMakeLists.txt @@ -0,0 +1,37 @@ +# Copyright 2011 Free Software Foundation, Inc. +# +# This file was generated by gr_modtool, a tool from the GNU Radio framework +# This file is a part of gr-tempest +# +# 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. +install(FILES + tempest_sampling_synchronization.block.yml + tempest_framing.block.yml + tempest_Hsync.block.yml + tempest_image_source.block.yml + tempest_normalize_flow.block.yml + tempest_fine_sampling_synchronization.block.yml + tempest_sync_detector.block.yml + tempest_frame_drop.block.yml + tempest_message_to_var.block.yml + tempest_fft_peak_fine_sampling_sync.block.yml + tempest_infer_screen_resolution.block.yml + tempest_tempest_msgbtn.block.yml + tempest_ssamp_correction.block.yml + tempest_TMDS_image_source.block.yml + tempest_binary_serializer.block.yml + tempest_TMDS_decoder.block.yml DESTINATION share/gnuradio/grc/blocks +) diff --git a/grc/tempest_Hsync.block.yml b/grc/tempest_Hsync.block.yml new file mode 100644 index 0000000..0e3dea3 --- /dev/null +++ b/grc/tempest_Hsync.block.yml @@ -0,0 +1,24 @@ +id: tempest_Hsync +label: Horizontal Sync +category: '[Tempest]' +templates: + imports: import tempest + make: tempest.Hsync(${Htotal}, ${delay}) + callbacks: + - set_Htotal_and_delay(${Htotal},${delay}) +parameters: +- id: Htotal + label: Horizontal px (total) + dtype: int +- id: delay + label: Delay + dtype: int +inputs: +- label: in + domain: stream + dtype: complex +outputs: +- label: out + domain: stream + dtype: complex +file_format: 1 diff --git a/grc/tempest_TMDS_decoder.block.yml b/grc/tempest_TMDS_decoder.block.yml new file mode 100644 index 0000000..0a8992f --- /dev/null +++ b/grc/tempest_TMDS_decoder.block.yml @@ -0,0 +1,31 @@ +id: tempest_TMDS_decoder +label: TMDS_decoder +category: '[Tempest]' + +templates: + imports: import tempest + make: tempest.TMDS_decoder() + + +# Make one 'inputs' list entry per input and one 'outputs' list entry per output. +# Keys include: +# * label (an identifier for the GUI) +# * domain (optional - stream or message. Default is stream) +# * dtype (e.g. int, float, complex, byte, short, xxx_vector, ...) +# * vlen (optional - data stream vector length. Default is 1) +# * optional (optional - set to 1 for optional inputs. Default is 0) + +inputs: +- label: in + domain: stream + dtype: float + +outputs: +- label: out + domain: stream + dtype: float + + +# 'file_format' specifies the version of the GRC yml format used in the file +# and should usually not be changed. +file_format: 1 diff --git a/grc/tempest_TMDS_image_source.block.yml b/grc/tempest_TMDS_image_source.block.yml new file mode 100644 index 0000000..27e55ff --- /dev/null +++ b/grc/tempest_TMDS_image_source.block.yml @@ -0,0 +1,55 @@ +id: tempest_TMDS_image_source +label: TMDS_image_source +category: '[Tempest]' + +templates: + imports: import tempest + make: tempest.TMDS_image_source(${image_file}, ${mode}) + +# Make one 'parameters' list entry for every parameter you want settable from the GUI. +# Keys include: +# * id (makes the value accessible as \$keyname, e.g. in the make entry) +# * label (label shown in the GUI) +# * dtype (e.g. int, float, complex, byte, short, xxx_vector, ...) +parameters: +- id: image_file + label: Image File + dtype: file_open + +- id: mode + label: Mode + dtype: enum + options: ['1', '2','3','4'] + option_labels: ['Repeat with TMDS', 'Repeat, no TMDS','No repeat with TMDS','No repeat, no TMDS'] + + +# Make one 'inputs' list entry per input and one 'outputs' list entry per output. +# Keys include: +# * label (an identifier for the GUI) +# * domain (optional - stream or message. Default is stream) +# * dtype (e.g. int, float, complex, byte, short, xxx_vector, ...) +# * vlen (optional - data stream vector length. Default is 1) +# * optional (optional - set to 1 for optional inputs. Default is 0) + +# inputs: +# - label: ... +# domain: ... +# dtype: ... +# vlen: ... +# optional: ... + +outputs: +- label: R + domain: stream + dtype: float +- label: G + domain: stream + dtype: float +- label: B + domain: stream + dtype: float + + +# 'file_format' specifies the version of the GRC yml format used in the file +# and should usually not be changed. +file_format: 1 diff --git a/grc/tempest_binary_serializer.block.yml b/grc/tempest_binary_serializer.block.yml new file mode 100644 index 0000000..aff5fe6 --- /dev/null +++ b/grc/tempest_binary_serializer.block.yml @@ -0,0 +1,38 @@ +id: tempest_binary_serializer +label: Binary Serializer +category: '[Tempest]' + +templates: + imports: import tempest + make: tempest.binary_serializer(${N}) + +# Make one 'parameters' list entry for every parameter you want settable from the GUI. +# Keys include: +# * id (makes the value accessible as \$keyname, e.g. in the make entry) +# * label (label shown in the GUI) +# * dtype (e.g. int, float, complex, byte, short, xxx_vector, ...) +parameters: +- id: N + label: N + dtype: float + +# Make one 'inputs' list entry per input and one 'outputs' list entry per output. +# Keys include: +# * label (an identifier for the GUI) +# * domain (optional - stream or message. Default is stream) +# * dtype (e.g. int, float, complex, byte, short, xxx_vector, ...) +# * vlen (optional - data stream vector length. Default is 1) +# * optional (optional - set to 1 for optional inputs. Default is 0) +inputs: +- label: in + domain: stream + dtype: float + +outputs: +- label: out + domain: stream + dtype: float + +# 'file_format' specifies the version of the GRC yml format used in the file +# and should usually not be changed. +file_format: 1 diff --git a/grc/tempest_fft_peak_fine_sampling_sync.block.yml b/grc/tempest_fft_peak_fine_sampling_sync.block.yml new file mode 100644 index 0000000..734b5de --- /dev/null +++ b/grc/tempest_fft_peak_fine_sampling_sync.block.yml @@ -0,0 +1,53 @@ +id: tempest_fft_peak_fine_sampling_sync +label: fft_peak_fine_sampling_sync +category: '[Tempest]' + +templates: + imports: import tempest + make: tempest.fft_peak_fine_sampling_sync(${sample_rate}, ${size}, ${refresh_rate}, ${Vvisible}, ${Hvisible}, ${automatic_mode}) + +# Make one 'parameters' list entry for every parameter you want settable from the GUI. +# Keys include: +# * id (makes the value accessible as \$keyname, e.g. in the make entry) +# * label (label shown in the GUI) +# * dtype (e.g. int, float, complex, byte, short, xxx_vector, ...) +parameters: +- id: sample_rate + label: Samp_rate + dtype: int +- id: size + label: Fft_size + dtype: int +- id: refresh_rate + label: Refresh_rate + dtype: int +- id: Vvisible + label: vvisible + dtype: int +- id: Hvisible + label: hvisible + dtype: int +- id: automatic_mode + label: automatic_mode + dtype: bool +inputs: +- label: in + domain: stream + dtype: float +- label: en + domain: message + optional: true +outputs: +- label: out + domain: stream + dtype: float +- label: en + domain: message + optional: true +- label: ratio + domain: message + optional: true +- label: rate + domain: message + optional: true +file_format: 1 diff --git a/grc/tempest_fine_sampling_synchronization.block.yml b/grc/tempest_fine_sampling_synchronization.block.yml new file mode 100644 index 0000000..8f90a6b --- /dev/null +++ b/grc/tempest_fine_sampling_synchronization.block.yml @@ -0,0 +1,37 @@ +id: tempest_fine_sampling_synchronization +label: Fine sampling synchronization +category: '[Tempest]' +templates: + imports: import tempest + make: tempest.fine_sampling_synchronization(${Htotal}, ${Vtotal}, ${correct_sampling}, + ${max_deviation}, ${update_proba}) + callbacks: + - set_Htotal_Vtotal(${Htotal}, ${Vtotal}) +parameters: +- id: Htotal + label: Horizontal px + dtype: int +- id: Vtotal + label: Vertical px + dtype: int +- id: correct_sampling + label: Correct sampling? + dtype: enum + default: 1 + options: [1, 0] + option_labels: ['Yes', 'No'] +- id: max_deviation + label: Max. deviation (%) + dtype: float +- id: update_proba + label: Update proba. + dtype: float +inputs: +- label: in + domain: stream + dtype: complex +outputs: +- label: out + domain: stream + dtype: complex +file_format: 1 diff --git a/grc/tempest_frame_drop.block.yml b/grc/tempest_frame_drop.block.yml new file mode 100644 index 0000000..39ae6ec --- /dev/null +++ b/grc/tempest_frame_drop.block.yml @@ -0,0 +1,50 @@ +id: tempest_frame_drop +label: Frame Dropper +category: '[Tempest]' +templates: + imports: import tempest + make: tempest.frame_drop(${Htotal}, ${Vtotal}, ${correct_sampling}, ${max_deviation}, + ${update_proba}, ${actual_samp_rate}) +parameters: +- id: Htotal + label: Horizontal total + dtype: int +- id: Vtotal + label: Vertical total + dtype: int +- id: correct_sampling + label: Correct sampling? + dtype: enum + default: 1 + options: [1, 0] + option_labels: ['Yes', 'No'] +- id: max_deviation + label: Max. deviation + dtype: float +- id: update_proba + label: Update prob. + dtype: float +- id: actual_samp_rate + label: Samp rate + dtype: real +inputs: +- label: in + domain: stream + dtype: complex +- label: en + domain: message + optional: true +- label: smpl + domain: message + optional: true +- label: ratio + domain: message + optional: true +outputs: +- label: out + domain: stream + dtype: complex +- label: ratio + domain: message + optional: true +file_format: 1 diff --git a/grc/tempest_framing.block.yml b/grc/tempest_framing.block.yml new file mode 100644 index 0000000..74b6d8a --- /dev/null +++ b/grc/tempest_framing.block.yml @@ -0,0 +1,30 @@ +id: tempest_framing +label: Framing +category: '[Tempest]' +templates: + imports: import tempest + make: tempest.framing(${Htotal}, ${Vtotal}, ${Hdisplay}, ${Vdisplay}) + callbacks: + - set_Htotal_and_Vtotal(${Htotal},${Vtotal}) +parameters: +- id: Htotal + label: Horizontal px (total) + dtype: int +- id: Vtotal + label: Vertical px (total) + dtype: int +- id: Hdisplay + label: Horizontal px (display) + dtype: int +- id: Vdisplay + label: Vertical px (display) + dtype: int +inputs: +- label: in + domain: stream + dtype: float +outputs: +- label: out + domain: stream + dtype: float +file_format: 1 diff --git a/grc/tempest_image_source.block.yml b/grc/tempest_image_source.block.yml new file mode 100644 index 0000000..1f63055 --- /dev/null +++ b/grc/tempest_image_source.block.yml @@ -0,0 +1,36 @@ +id: tempest_image_source +label: Image Source +category: '[Tempest]' + +templates: + imports: import tempest + make: tempest.image_source(${image_file}, ${Hvisible}, ${Vvisible}, ${Htotal}, ${Vtotal}, ${repeatmode}) + +parameters: +- id: image_file + label: Image File + dtype: file_open +- id: Htotal + label: Horizontal px (total) + dtype: int +- id: Vtotal + label: Vertical px (total) + dtype: int +- id: Hvisible + label: Horizontal px (visible) + dtype: int +- id: Vvisible + label: Vertical px (visible) + dtype: int +- id: repeatmode + label: Repeat + dtype: enum + options: ['1', '2'] + option_labels: ['Yes', 'Yes, with file re-read'] + +outputs: +- domain: stream + dtype: float + + +file_format: 1 diff --git a/grc/tempest_infer_screen_resolution.block.yml b/grc/tempest_infer_screen_resolution.block.yml new file mode 100644 index 0000000..f0ca81a --- /dev/null +++ b/grc/tempest_infer_screen_resolution.block.yml @@ -0,0 +1,31 @@ +id: tempest_infer_screen_resolution +label: Infers Screen Resolution +category: '[Tempest]' +templates: + imports: import tempest + make: tempest.infer_screen_resolution(${sample_rate}, ${fft_size}, ${refresh_rate}, + ${automatic_mode}) + callbacks: + - set_refresh_rate(${refresh_rate}) +parameters: +- id: sample_rate + label: Sample rate + dtype: int +- id: fft_size + label: Fft size + dtype: int +- id: refresh_rate + label: Refresh rate + dtype: float +- id: automatic_mode + label: Automatic_mode + dtype: raw +inputs: +- label: in + domain: stream + dtype: float +outputs: +- label: out + domain: stream + dtype: float +file_format: 1 diff --git a/grc/tempest_message_to_var.block.yml b/grc/tempest_message_to_var.block.yml new file mode 100644 index 0000000..b5a1689 --- /dev/null +++ b/grc/tempest_message_to_var.block.yml @@ -0,0 +1,21 @@ +id: tempest_message_to_var +label: message_to_var +category: '[Tempest]' + +parameters: +- id: target + label: Variable + dtype: string + default: 'delay_0' + optional: true +inputs: +- label: port0 + domain: message + optional: true + + +templates: + imports: import tempest + make: tempest.message_to_var(${ 'self.set_' + context.get('target')() }) + +file_format: 1 diff --git a/grc/tempest_normalize_flow.block.yml b/grc/tempest_normalize_flow.block.yml new file mode 100644 index 0000000..688caea --- /dev/null +++ b/grc/tempest_normalize_flow.block.yml @@ -0,0 +1,33 @@ +id: tempest_normalize_flow +label: Normalize Flow +category: '[Tempest]' +templates: + imports: import tempest + make: tempest.normalize_flow(${min}, ${max}, ${window}, ${alpha_avg}, ${update_proba}) + callbacks: + - set_min_max(${min},${max}) +parameters: +- id: min + label: Minimum + dtype: float +- id: max + label: Maximum + dtype: float +- id: window + label: Window + dtype: int +- id: alpha_avg + label: Alpha avg + dtype: float +- id: update_proba + label: Update proba + dtype: float +inputs: +- label: in + domain: stream + dtype: float +outputs: +- label: out + domain: stream + dtype: float +file_format: 1 diff --git a/grc/tempest_sampling_synchronization.block.yml b/grc/tempest_sampling_synchronization.block.yml new file mode 100644 index 0000000..d662392 --- /dev/null +++ b/grc/tempest_sampling_synchronization.block.yml @@ -0,0 +1,25 @@ +id: tempest_sampling_synchronization +label: Sampling synchronization +category: '[Tempest]' +templates: + imports: import tempest + make: tempest.sampling_synchronization(${Htotal}, ${manual_correction}) + callbacks: + - set_Htotal(${Htotal}) + - set_manual_correction(${manual_correction}) +parameters: +- id: Htotal + label: Horizontal px (total) + dtype: int +- id: manual_correction + label: Manual correction + dtype: real +inputs: +- label: in + domain: stream + dtype: complex +outputs: +- label: out + domain: stream + dtype: complex +file_format: 1 diff --git a/grc/tempest_ssamp_correction.block.yml b/grc/tempest_ssamp_correction.block.yml new file mode 100644 index 0000000..5b274cc --- /dev/null +++ b/grc/tempest_ssamp_correction.block.yml @@ -0,0 +1,49 @@ +id: tempest_ssamp_correction +label: Sampling Correction Interpolator +category: '[Tempest]' + +templates: + imports: import tempest + make: tempest.ssamp_correction(${Htotal}, ${Vtotal}, ${correct_sampling}, ${max_deviation}) + + callbacks: + - set_Htotal_Vtotal(${Htotal}, ${Vtotal}) +# Make one 'parameters' list entry for every parameter you want settable from the GUI. +# Keys include: +# * id (makes the value accessible as \$keyname, e.g. in the make entry) +# * label (label shown in the GUI) +# * dtype (e.g. int, float, complex, byte, short, xxx_vector, ...) + +parameters: +- id: Htotal + label: Horizontal px + dtype: int +- id: Vtotal + label: Vertical px + dtype: int +- id: correct_sampling + label: Correct sampling? + dtype: enum + default: 1 + options: [1, 0] + option_labels: ['Yes', 'No'] +- id: max_deviation + label: Max. deviation (%) + dtype: float + default: 10 +inputs: +- label: in + domain: stream + dtype: complex +- label: ratio + domain: message + optional: true +- label: en + domain: message + optional: true +outputs: +- label: out + domain: stream + dtype: complex + +file_format: 1 \ No newline at end of file diff --git a/grc/tempest_sync_detector.block.yml b/grc/tempest_sync_detector.block.yml new file mode 100644 index 0000000..027f523 --- /dev/null +++ b/grc/tempest_sync_detector.block.yml @@ -0,0 +1,32 @@ +id: tempest_sync_detector +label: Sync Detector +category: '[Tempest]' +templates: + imports: import tempest + make: tempest.sync_detector(${hscreen}, ${vscreen}, ${hblanking}, ${vblanking}) +parameters: +- id: hscreen + label: Hscreen + dtype: int +- id: vscreen + label: Vscreen + dtype: int +- id: hblanking + label: Hblanking + dtype: int +- id: vblanking + label: Vblanking + dtype: int +inputs: +- label: in + domain: stream + dtype: complex +- label: en + domain: message + optional: true +outputs: +- label: out + domain: stream + dtype: complex +file_format: 1 + diff --git a/grc/tempest_tempest_msgbtn.block.yml b/grc/tempest_tempest_msgbtn.block.yml new file mode 100644 index 0000000..5a9b063 --- /dev/null +++ b/grc/tempest_tempest_msgbtn.block.yml @@ -0,0 +1,68 @@ +id: tempest_tempest_msgbtn +label: GUI Button - Message Passer +category: '[Tempest]' +flags: [ show_id, python ] + +parameters: +- id: label + label: Label + dtype: string + hide: ${ ('none' if label else 'part') } +- id: type + label: Type + dtype: enum + default: bool + options: [real, int, string, bool] + option_labels: [Float, Integer, String, Boolean] + option_attributes: + conv: [float, int, str, bool] + hide: part +- id: msgName + label: Message Property Name + dtype: string + default: 'pressed' +- id: value + label: Message Value + dtype: ${ type } + default: '1' +- id: relBackgroundColor + label: Button Background + dtype: enum + default: 'default' + options: ['default', 'silver', 'gray', 'black', 'white', 'red', 'green', 'blue', 'navy', 'yellow', 'orange', 'purple', 'lime', 'aqua', 'teal'] + option_labels: ['default', 'silver', 'gray', 'black', 'white', 'red', 'green', 'blue', 'navy', 'yellow', 'orange', 'purple', 'lime', 'aqua', 'teal'] + hide: 'part' +- id: relFontColor + label: Button Font Color + dtype: enum + default: 'default' + options: ['default', 'silver', 'gray', 'black', 'white', 'red', 'green', 'blue', 'navy', 'yellow', 'orange', 'purple', 'lime', 'aqua', 'teal'] + option_labels: ['default', 'silver', 'gray', 'black', 'white', 'red', 'green', 'blue', 'navy', 'yellow', 'orange', 'purple', 'lime', 'aqua', 'teal'] + hide: 'part' +- id: gui_hint + label: GUI Hint + dtype: gui_hint + hide: part + +outputs: +- domain: message + id: pressed + optional: false + +templates: + imports: import tempest + var_make: self.${id} = None + make: |- + <% + win = '_%s_toggle_button'%id + %>\ + ${win} = tempest.tempest_msgbtn(${(label if (len(label) - 2 > 0) else repr(id))}, ${msgName},${value},"${relBackgroundColor}","${relFontColor}") + self.${id} = ${win} + ${gui_hint() % win} + + +documentation: |- + This block creates a variable push button that creates a message when clicked. Leave the label blank to use the variable id as the label. + You can define both the output message pmt name as well as the value and value type. + The GUI hint can be used to position the widget within the application. The hint is of the form [tab_id@tab_index]: [row, col, row_span, col_span]. Both the tab specification and the grid position are optional. +file_format: 1 diff --git a/include/tempest/CMakeLists.txt b/include/tempest/CMakeLists.txt new file mode 100644 index 0000000..06c7e4e --- /dev/null +++ b/include/tempest/CMakeLists.txt @@ -0,0 +1,36 @@ +# Copyright 2011,2012 Free Software Foundation, Inc. +# +# This file was generated by gr_modtool, a tool from the GNU Radio framework +# This file is a part of gr-tempest +# +# 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. + +######################################################################## +# Install public header files +######################################################################## +install(FILES + api.h + sampling_synchronization.h + framing.h + Hsync.h + normalize_flow.h + fine_sampling_synchronization.h + sync_detector.h + frame_drop.h + fft_peak_fine_sampling_sync.h + infer_screen_resolution.h + ssamp_correction.h DESTINATION include/tempest +) diff --git a/include/tempest/Hsync.h b/include/tempest/Hsync.h new file mode 100644 index 0000000..657fab8 --- /dev/null +++ b/include/tempest/Hsync.h @@ -0,0 +1,62 @@ +/* -*- c++ -*- */ +/* +* Copyright 2020 +* Federico "Larroca" La Rocca +* +* Instituto de Ingenieria Electrica, Facultad de Ingenieria, +* Universidad de la Republica, Uruguay. +* +* This 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. +* +* This software 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 this software; see the file COPYING. If not, write to +* the Free Software Foundation, Inc., 51 Franklin Street, +* Boston, MA 02110-1301, USA. +*/ + + +#ifndef INCLUDED_TEMPEST_HSYNC_H +#define INCLUDED_TEMPEST_HSYNC_H + +#include +#include + +namespace gr { + namespace tempest { + + /*! + * \brief <+description of block+> + * \ingroup tempest + * + */ + class TEMPEST_API Hsync : virtual public gr::block + { + public: + typedef boost::shared_ptr sptr; + + /*! + * \brief Return a shared_ptr to a new instance of tempest::Hsync. + * + * To avoid accidental use of raw pointers, tempest::Hsync's + * constructor is in a private implementation + * class. tempest::Hsync::make is the public interface for + * creating new instances. + */ + static sptr make(int Htotal, int delay); + + virtual void set_Htotal_and_delay(int Htotal, int delay) = 0; + }; + + } // namespace tempest +} // namespace gr + +#endif /* INCLUDED_TEMPEST_HSYNC_H */ + diff --git a/include/tempest/api.h b/include/tempest/api.h new file mode 100644 index 0000000..6c5e585 --- /dev/null +++ b/include/tempest/api.h @@ -0,0 +1,34 @@ +/* + * Copyright 2011 Free Software Foundation, Inc. + * + * This file was generated by gr_modtool, a tool from the GNU Radio framework + * This file is a part of gr-tempest + * + * 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_TEMPEST_API_H +#define INCLUDED_TEMPEST_API_H + +#include + +#ifdef gnuradio_tempest_EXPORTS +#define TEMPEST_API __GR_ATTR_EXPORT +#else +#define TEMPEST_API __GR_ATTR_IMPORT +#endif + +#endif /* INCLUDED_TEMPEST_API_H */ diff --git a/include/tempest/fft_peak_fine_sampling_sync.h b/include/tempest/fft_peak_fine_sampling_sync.h new file mode 100644 index 0000000..76efa56 --- /dev/null +++ b/include/tempest/fft_peak_fine_sampling_sync.h @@ -0,0 +1,60 @@ +/* -*- c++ -*- */ +/* + * Copyright 2020 + * Federico "Larroca" La Rocca + * + * Instituto de Ingenieria Electrica, Facultad de Ingenieria, + * Universidad de la Republica, Uruguay. + * + * This 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. + * + * This software 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 this software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + * + */ + +#ifndef INCLUDED_TEMPEST_FFT_PEAK_FINE_SAMPLING_SYNC_H +#define INCLUDED_TEMPEST_FFT_PEAK_FINE_SAMPLING_SYNC_H + +#include +#include + +namespace gr { + namespace tempest { + + /*! + * \brief <+description of block+> + * \ingroup tempest + * + */ + class TEMPEST_API fft_peak_fine_sampling_sync : virtual public gr::block + { + public: + typedef boost::shared_ptr sptr; + + /*! + * \brief Return a shared_ptr to a new instance of tempest::fft_peak_fine_sampling_sync. + * + * To avoid accidental use of raw pointers, tempest::fft_peak_fine_sampling_sync's + * constructor is in a private implementation + * class. tempest::fft_peak_fine_sampling_sync::make is the public interface for + * creating new instances. + */ + static sptr make(int sample_rate, int size, int refresh_rate, int Vvisible, int Hvisible, bool automatic_mode); + }; + + } // namespace tempest +} // namespace gr + +#endif /* INCLUDED_TEMPEST_FFT_PEAK_FINE_SAMPLING_SYNC_H */ + diff --git a/include/tempest/fine_sampling_synchronization.h b/include/tempest/fine_sampling_synchronization.h new file mode 100644 index 0000000..4f95b37 --- /dev/null +++ b/include/tempest/fine_sampling_synchronization.h @@ -0,0 +1,64 @@ +/* -*- c++ -*- */ +/* + * Copyright 2020 + * Federico "Larroca" La Rocca + * + * Instituto de Ingenieria Electrica, Facultad de Ingenieria, + * Universidad de la Republica, Uruguay. + * + * This 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. + * + * This software 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 this software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + * + */ + + +#ifndef INCLUDED_TEMPEST_FINE_SAMPLING_SYNCHRONIZATION_H +#define INCLUDED_TEMPEST_FINE_SAMPLING_SYNCHRONIZATION_H + +#include +#include + +namespace gr { + namespace tempest { + + /*! + * \brief <+description of block+> + * \ingroup tempest + * + */ + class TEMPEST_API fine_sampling_synchronization : virtual public gr::block + { + public: + typedef boost::shared_ptr sptr; + + /*! + * \brief Return a shared_ptr to a new instance of tempest::fine_sampling_synchronization. + * + * To avoid accidental use of raw pointers, tempest::fine_sampling_synchronization's + * constructor is in a private implementation + * class. tempest::fine_sampling_synchronization::make is the public interface for + * creating new instances. + */ + static sptr make(int Htotal, int Vtotal, int correct_sampling, float max_deviation, float update_proba); + + virtual void set_Htotal_Vtotal(int Htotal, int Vtotal) = 0; + }; + + } // namespace tempest +} // namespace gr + +#endif /* INCLUDED_TEMPEST_FINE_SAMPLING_SYNCHRONIZATION_H */ + + diff --git a/include/tempest/frame_drop.h b/include/tempest/frame_drop.h new file mode 100644 index 0000000..b016c8e --- /dev/null +++ b/include/tempest/frame_drop.h @@ -0,0 +1,60 @@ +/* -*- c++ -*- */ +/* + * Copyright 2020 + * Federico "Larroca" La Rocca + * + * Instituto de Ingenieria Electrica, Facultad de Ingenieria, + * Universidad de la Republica, Uruguay. + * + * This 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. + * + * This software 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 this software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + * + */ + +#ifndef INCLUDED_TEMPEST_FRAME_DROP_H +#define INCLUDED_TEMPEST_FRAME_DROP_H + +#include +#include + +namespace gr { + namespace tempest { + + /*! + * \brief <+description of block+> + * \ingroup tempest + * + */ + class TEMPEST_API frame_drop : virtual public gr::block + { + public: + typedef boost::shared_ptr sptr; + + /*! + * \brief Return a shared_ptr to a new instance of tempest::frame_drop. + * + * To avoid accidental use of raw pointers, tempest::frame_drop's + * constructor is in a private implementation + * class. tempest::frame_drop::make is the public interface for + * creating new instances. + */ + static sptr make(int Htotal, int Vtotal, int correct_sampling, float max_deviation, float update_proba, double actual_samp_rate); + }; + + } // namespace tempest +} // namespace gr + +#endif /* INCLUDED_TEMPEST_FRAME_DROP_H */ + diff --git a/include/tempest/framing.h b/include/tempest/framing.h new file mode 100644 index 0000000..c764f9c --- /dev/null +++ b/include/tempest/framing.h @@ -0,0 +1,63 @@ +/* -*- c++ -*- */ +/* + * Copyright 2020 + * Federico "Larroca" La Rocca + * + * Instituto de Ingenieria Electrica, Facultad de Ingenieria, + * Universidad de la Republica, Uruguay. + * + * This 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. + * + * This software 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 this software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + * + */ + + +#ifndef INCLUDED_TEMPEST_FRAMING_H +#define INCLUDED_TEMPEST_FRAMING_H + +#include +#include + +namespace gr { + namespace tempest { + + /*! + * \brief <+description of block+> + * \ingroup tempest + * + */ + class TEMPEST_API framing : virtual public gr::block + { + public: + typedef boost::shared_ptr sptr; + + /*! + * \brief Return a shared_ptr to a new instance of tempest::framing. + * + * To avoid accidental use of raw pointers, tempest::framing's + * constructor is in a private implementation + * class. tempest::framing::make is the public interface for + * creating new instances. + */ + static sptr make(int Htotal, int Vtotal, int Hdisplay, int Vdisplay); + + virtual void set_Htotal_and_Vtotal(int Htotal, int Vtotal) = 0; + }; + + } // namespace tempest +} // namespace gr + +#endif /* INCLUDED_TEMPEST_FRAMING_H */ + diff --git a/include/tempest/infer_screen_resolution.h b/include/tempest/infer_screen_resolution.h new file mode 100644 index 0000000..54576e9 --- /dev/null +++ b/include/tempest/infer_screen_resolution.h @@ -0,0 +1,62 @@ +/* -*- c++ -*- */ +/* + * Copyright 2020 + * Federico "Larroca" La Rocca + * + * Instituto de Ingenieria Electrica, Facultad de Ingenieria, + * Universidad de la Republica, Uruguay. + * + * This 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. + * + * This software 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 this software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + * + */ + +#ifndef INCLUDED_TEMPEST_INFER_SCREEN_RESOLUTION_H +#define INCLUDED_TEMPEST_INFER_SCREEN_RESOLUTION_H + +#include +#include + +namespace gr { + namespace tempest { + + /*! + * \brief <+description of block+> + * \ingroup tempest + * + */ + class TEMPEST_API infer_screen_resolution : virtual public gr::block + { + public: + typedef boost::shared_ptr sptr; + + virtual void set_refresh_rate(float refresh_rate) = 0; + + /*! + * \brief Return a shared_ptr to a new instance of tempest::infer_screen_resolution. + * + * To avoid accidental use of raw pointers, tempest::infer_screen_resolution's + * constructor is in a private implementation + * class. tempest::infer_screen_resolution::make is the public interface for + * creating new instances. + */ + static sptr make(int sample_rate, int fft_size, float refresh_rate, bool automatic_mode); + }; + + } // namespace tempest +} // namespace gr + +#endif /* INCLUDED_TEMPEST_INFER_SCREEN_RESOLUTION_H */ + diff --git a/include/tempest/normalize_flow.h b/include/tempest/normalize_flow.h new file mode 100644 index 0000000..24693fb --- /dev/null +++ b/include/tempest/normalize_flow.h @@ -0,0 +1,62 @@ +/* -*- c++ -*- */ +/* + * Copyright 2020 + * Federico "Larroca" La Rocca + * + * Instituto de Ingenieria Electrica, Facultad de Ingenieria, + * Universidad de la Republica, Uruguay. + * + * This 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. + * + * This software 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 this software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + * + */ + +#ifndef INCLUDED_TEMPEST_NORMALIZE_FLOW_H +#define INCLUDED_TEMPEST_NORMALIZE_FLOW_H + +#include +#include + +namespace gr { + namespace tempest { + + /*! + * \brief Normalizes a flow between min and max. To be less CPU-intensive, it randomly chooses when to update the signal's maximum. + * \ingroup tempest + * + */ + class TEMPEST_API normalize_flow : virtual public gr::sync_block + { + public: + typedef boost::shared_ptr sptr; + + /*! + * \brief Return a shared_ptr to a new instance of tempest::normalize_flow. + * + * To avoid accidental use of raw pointers, tempest::normalize_flow's + * constructor is in a private implementation + * class. tempest::normalize_flow::make is the public interface for + * creating new instances. + */ + static sptr make(float min, float max, int window, float alpha_avg, float update_proba); + + virtual void set_min_max(float min, float max) = 0; + }; + + } // namespace tempest +} // namespace gr + +#endif /* INCLUDED_TEMPEST_NORMALIZE_FLOW_H */ + diff --git a/include/tempest/sampling_synchronization.h b/include/tempest/sampling_synchronization.h new file mode 100644 index 0000000..9d54df5 --- /dev/null +++ b/include/tempest/sampling_synchronization.h @@ -0,0 +1,65 @@ +/* -*- c++ -*- */ +/* + * Copyright 2020 + * Federico "Larroca" La Rocca + * + * Instituto de Ingenieria Electrica, Facultad de Ingenieria, + * Universidad de la Republica, Uruguay. + * + * This 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. + * + * This software 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 this software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + * + */ + +#ifndef INCLUDED_TEMPEST_SAMPLING_SYNCHRONIZATION_H +#define INCLUDED_TEMPEST_SAMPLING_SYNCHRONIZATION_H + +#include +#include + +namespace gr { + namespace tempest { + + /*! + * \brief It correlates the signal and estimates what's the most probable line length. It then corrects the sampling rate so that the line length's is Htotal. + * \ingroup tempest + * + */ + class TEMPEST_API sampling_synchronization : virtual public gr::block + { + public: + typedef boost::shared_ptr sptr; + + /*! + * \brief Return a shared_ptr to a new instance of tempest::sampling_synchronization. + * + * To avoid accidental use of raw pointers, tempest::sampling_synchronization's + * constructor is in a private implementation + * class. tempest::sampling_synchronization::make is the public interface for + * creating new instances. + */ + static sptr make(int Htotal, double manual_correction); + + virtual void set_Htotal(int Htotal) = 0; + + virtual void set_manual_correction(double correction) = 0; + + }; + + } // namespace tempest +} // namespace gr + +#endif /* INCLUDED_TEMPEST_SAMPLING_SYNCHRONIZATION_H */ + diff --git a/include/tempest/ssamp_correction.h b/include/tempest/ssamp_correction.h new file mode 100644 index 0000000..de33a72 --- /dev/null +++ b/include/tempest/ssamp_correction.h @@ -0,0 +1,61 @@ +/* -*- c++ -*- */ +/* + * Copyright 2020 + * Federico "Larroca" La Rocca + * + * Instituto de Ingenieria Electrica, Facultad de Ingenieria, + * Universidad de la Republica, Uruguay. + * + * This 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. + * + * This software 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 this software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + * + */ + +#ifndef INCLUDED_TEMPEST_SSAMP_CORRECTION_H +#define INCLUDED_TEMPEST_SSAMP_CORRECTION_H + +#include +#include + +namespace gr { + namespace tempest { + + /*! + * \brief <+description of block+> + * \ingroup tempest + * + */ + class TEMPEST_API ssamp_correction : virtual public gr::block + { + public: + typedef boost::shared_ptr sptr; + + /*! + * \brief Return a shared_ptr to a new instance of tempest::ssamp_correction. + * + * To avoid accidental use of raw pointers, tempest::ssamp_correction's + * constructor is in a private implementation + * class. tempest::ssamp_correction::make is the public interface for + * creating new instances. + */ + static sptr make(int Htotal, int Vtotal, int correct_sampling, float max_deviation); + virtual void set_Htotal_Vtotal(int Htotal, int Vtotal) = 0; + }; + + } // namespace tempest +} // namespace gr + +#endif /* INCLUDED_TEMPEST_SSAMP_CORRECTION_H */ + diff --git a/include/tempest/sync_detector.h b/include/tempest/sync_detector.h new file mode 100644 index 0000000..86a3599 --- /dev/null +++ b/include/tempest/sync_detector.h @@ -0,0 +1,60 @@ +/* -*- c++ -*- */ +/* + * Copyright 2020 + * Federico "Larroca" La Rocca + * + * Instituto de Ingenieria Electrica, Facultad de Ingenieria, + * Universidad de la Republica, Uruguay. + * + * This 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. + * + * This software 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 this software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + * + */ + +#ifndef INCLUDED_TEMPEST_SYNC_DETECTOR_H +#define INCLUDED_TEMPEST_SYNC_DETECTOR_H + +#include +#include + +namespace gr { + namespace tempest { + + /*! + * \brief <+description of block+> + * \ingroup tempest + * + */ + class TEMPEST_API sync_detector : virtual public gr::block + { + public: + typedef boost::shared_ptr sptr; + + /*! + * \brief Return a shared_ptr to a new instance of tempest::sync_detector. + * + * To avoid accidental use of raw pointers, tempest::sync_detector's + * constructor is in a private implementation + * class. tempest::sync_detector::make is the public interface for + * creating new instances. + */ + static sptr make(int hscreen, int vscreen, int hblanking, int vblanking); + }; + + } // namespace tempest +} // namespace gr + +#endif /* INCLUDED_TEMPEST_SYNC_DETECTOR_H */ + diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt new file mode 100644 index 0000000..6c1daca --- /dev/null +++ b/lib/CMakeLists.txt @@ -0,0 +1,92 @@ +# Copyright 2011,2012,2016,2018,2019 Free Software Foundation, Inc. +# +# This file was generated by gr_modtool, a tool from the GNU Radio framework +# This file is a part of gr-tempest +# +# 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 library +######################################################################## +include(GrPlatform) #define LIB_SUFFIX +list(APPEND tempest_sources + sampling_synchronization_impl.cc + framing_impl.cc + Hsync_impl.cc + normalize_flow_impl.cc + fine_sampling_synchronization_impl.cc + sync_detector_impl.cc + frame_drop_impl.cc + fft_peak_fine_sampling_sync_impl.cc + infer_screen_resolution_impl.cc + ssamp_correction_impl.cc +) + +set(tempest_sources "${tempest_sources}" PARENT_SCOPE) +if(NOT tempest_sources) + MESSAGE(STATUS "No C++ sources... skipping lib/") + return() +endif(NOT tempest_sources) + +add_library(gnuradio-tempest SHARED ${tempest_sources}) +target_link_libraries(gnuradio-tempest gnuradio::gnuradio-runtime gnuradio::gnuradio-blocks gnuradio::gnuradio-fft gnuradio::gnuradio-filter Volk::volk) +target_include_directories(gnuradio-tempest + PUBLIC $ + PUBLIC $ + ) +set_target_properties(gnuradio-tempest PROPERTIES DEFINE_SYMBOL "gnuradio_tempest_EXPORTS") + +if(APPLE) + set_target_properties(gnuradio-tempest PROPERTIES + INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/lib" + ) +endif(APPLE) + +######################################################################## +# Install built library files +######################################################################## +include(GrMiscUtils) +GR_LIBRARY_FOO(gnuradio-tempest) + +######################################################################## +# Print summary +######################################################################## +message(STATUS "Using install prefix: ${CMAKE_INSTALL_PREFIX}") +message(STATUS "Building for version: ${VERSION} / ${LIBVER}") + +######################################################################## +# Build and register unit test +######################################################################## +include(GrTest) + +# If your unit tests require special include paths, add them here +#include_directories() +# List all files that contain Boost.UTF unit tests here +list(APPEND test_tempest_sources +) +# Anything we need to link to for the unit tests go here +list(APPEND GR_TEST_TARGET_DEPS gnuradio-tempest) + +if(NOT test_tempest_sources) + MESSAGE(STATUS "No C++ unit tests... skipping") + return() +endif(NOT test_tempest_sources) + +foreach(qa_file ${test_tempest_sources}) + GR_ADD_CPP_TEST("tempest_${qa_file}" + ${CMAKE_CURRENT_SOURCE_DIR}/${qa_file} + ) +endforeach(qa_file) diff --git a/lib/Hsync_impl.cc b/lib/Hsync_impl.cc new file mode 100644 index 0000000..bb4e009 --- /dev/null +++ b/lib/Hsync_impl.cc @@ -0,0 +1,321 @@ +/* -*- c++ -*- */ +/* +* Copyright 2020 +* Federico "Larroca" La Rocca +* +* Instituto de Ingenieria Electrica, Facultad de Ingenieria, +* Universidad de la Republica, Uruguay. +* +* +* This 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. +* +* This software 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 this software; see the file COPYING. If not, write to +* the Free Software Foundation, Inc., 51 Franklin Street, +* Boston, MA 02110-1301, USA. +*/ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include "Hsync_impl.h" +#include +#include +#include + + +namespace gr { + namespace tempest { + + Hsync::sptr + Hsync::make(int Htotal, int delay) + { + return gnuradio::get_initial_sptr + (new Hsync_impl(Htotal, delay)); + } + + /* + * The private constructor + */ + Hsync_impl::Hsync_impl(int Htotal, int delay) + : gr::block("Hsync", + gr::io_signature::make(1, 1, sizeof(gr_complex)), + gr::io_signature::make(1, 1, sizeof(gr_complex))) + { + set_relative_rate(1); + set_Htotal_and_delay(Htotal, delay); + + //VOLK alignment as recommended by GNU Radio's Manual. It has a similar effect + //than set_output_multiple(), thus we will generally get multiples of this value + //as noutput_items. + const int alignment_multiple = volk_get_alignment() / sizeof(gr_complex); + set_alignment(std::max(1, alignment_multiple)); + + + //d_peak_epsilon = 0; + //peak_detect_init(0.2, 0.25, 30, 0.0005); + // peak_detect_init(0.8, 0.9, 30, 0.9); + peak_detect_init(0.5, 0.9); + + + } + + /* + * Our virtual destructor. + */ + Hsync_impl::~Hsync_impl() + { + delete [] d_corr; + delete [] d_abs_corr; + } + + void Hsync_impl::set_Htotal_and_delay(int Htotal, int delay){ + + d_delay = delay; + d_Htotal = Htotal; + + printf("[TEMPEST] Setting Htotal to %i and delay to %i in Hsync block.\n",Htotal, delay); + + d_consecutive_aligns = 0; + d_line_locked = 0; + + //I'll generate complete lines per call to the block + set_output_multiple(d_Htotal); + + d_corr = new gr_complex[d_Htotal + d_delay]; + if (d_corr == NULL) + std::cout << "cannot allocate memory: d_corr" << std::endl; + d_abs_corr = new float[d_Htotal + d_delay]; + if (d_abs_corr == NULL) + std::cout << "cannot allocate memory: d_abs_corr" << std::endl; + + d_consecutive_aligns = 0; + d_consecutive_aligns_threshold = 10; + d_shorter_range_size = d_Htotal/50; + d_max_aligns = d_Htotal/10; + + } + + void + Hsync_impl::peak_detect_init(float threshold_factor_rise, float alpha) + { + d_avg_alpha = alpha; + d_threshold_factor_rise = threshold_factor_rise; + d_avg_max = - (float)INFINITY; + d_avg_min = (float)INFINITY; + } + + + int + Hsync_impl::peak_detect_process(const float * datain, const int datain_length, int * peak_pos) + { + uint16_t peak_index = 0; + uint32_t d_datain_length = (uint32_t)datain_length; + bool success = true; + + volk_32f_index_max_16u(&peak_index, &datain[0], d_datain_length); + + if (datain_length>=d_Htotal){ + float min = datain[(peak_index + d_delay/2) % d_Htotal]; + if(d_avg_min==(float)INFINITY){ + d_avg_min = min; + } + else + { + d_avg_min = d_avg_alpha*min + (1-d_avg_alpha)*d_avg_min; + } + + } + + if (d_avg_max==-(float)INFINITY) + { + // I initialize the d_avg with the first value. + d_avg_max = datain[peak_index]; + } + else if ( datain[ peak_index ] > d_avg_max - d_threshold_factor_rise*(d_avg_max-d_avg_min) ) + { + d_avg_max = d_avg_alpha * datain[ peak_index ] + (1 - d_avg_alpha) * d_avg_max; + } + else + { + // if the peak is not large enough, we declare this a failure + success = false; + } + + //printf("d_avg_max: %f\n",d_avg_max); + //printf("d_avg_min: %f\n",d_avg_min); + //printf("datain[%i]: %f\n",peak_index, datain[peak_index]); + //printf("sucess: %d\n",success); + + //We now check whether peaks are also present at multiples of d_delay. This may + //happen with border that by chance are at the same distance as the d_delay. In this + //case we will ignore the result of this peak_process, as we don't know whether samples + //were lost (and the line has actually changed). + //for(int i=(peak_index % d_delay); i d_avg_max - d_threshold_factor_rise*(d_avg_max-d_avg_min)) && i!=peak_index ){ + // // i.e. it could also be a peak according to our criteria, we thus declare this a failure + // success = false; + // } + //} + + + if (success){ + *peak_pos = peak_index; + } + return (success); + + } + + int + Hsync_impl::max_corr_sync(const gr_complex * in, int lookup_start, int lookup_stop, int * max_corr_pos) + { + + assert(lookup_start >= lookup_stop); + //assert(lookup_stop >= (d_Htotal - 1)); + + int size; + + // I calculate the 1-sample correlation + size = lookup_start - lookup_stop; + //volk_32fc_x2_multiply_conjugate_32fc(&d_corr[0], &in[lookup_start], &in[lookup_start - d_delay], size); + volk_32fc_x2_multiply_conjugate_32fc(&d_corr[0], &in[lookup_stop+d_delay], &in[lookup_stop], size); + + // I calculate its magnitude + size = lookup_start - lookup_stop; + volk_32fc_magnitude_32f(&d_abs_corr[0], &d_corr[0], size); + + int peak = 0; + bool found_peak = true; + + // Find peaks of lambda + // We have found an end of symbol at peak_pos[0] + CP + FFT + if ((found_peak = peak_detect_process(&d_abs_corr[0], (lookup_start - lookup_stop), &peak))) + { + *max_corr_pos = peak + lookup_stop; + } + + //found_peak = peak_detect_process(&d_abs_corr[0], (lookup_start - lookup_stop), &peak); + //*max_corr_pos = peak + lookup_stop; + + + return (found_peak); + + + } + + + void + Hsync_impl::forecast (int noutput_items, gr_vector_int &ninput_items_required) + { + int ninputs = ninput_items_required.size (); + // make sure we receive at least (d_delay + dHtotal + 1) + for (int i = 0; i < ninputs; i++) + { + ninput_items_required[i] = ( d_delay + 2*d_Htotal + 1) * (noutput_items/d_Htotal +1) ; + //printf("division: %i\n",noutput_items/d_Htotal); + //printf("noutput_items: %i\n",noutput_items); + //printf("ninput_items_required[%i]: %i\n",i,ninput_items_required[i]); + } + } + + int + Hsync_impl::general_work (int noutput_items, + gr_vector_int &ninput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items) + { + const gr_complex *in = (const gr_complex *) input_items[0]; + gr_complex *out = (gr_complex *) output_items[0]; + + int low, size; + + d_consumed = 0; + d_out = 0; + + //printf("is_unaligned():%s\n",is_unaligned() ? "True":"False"); + // + + for (int line = 0; line < noutput_items/d_Htotal ; line++) { + ////////////////////// + // NOW I'M TESTING THE SIMPEST ALGORITHM + ////////////////////// + //d_line_locked = false; + //printf("d_consecutive_aligns: %i\n",d_consecutive_aligns); + if (!d_line_locked) + { + // If we are here it means that we have no idea where the max_corr may be. We thus + // search it thoroughly + + d_line_found = max_corr_sync(&in[d_consumed], d_Htotal+d_delay, d_delay, &d_line_start); + d_line_locked = d_line_found; + + //printf("d_line_locked (no idea): %i\n",d_line_locked); + //printf("d_line_start (no idea): %i\n",d_line_start); + } + else + { + //If we are here it means that we are sure where the line is, and + //now thus only search near it. + + + d_line_found = max_corr_sync(&in[d_consumed], d_line_start + d_shorter_range_size, std::max(d_line_start - d_shorter_range_size, 0), &d_line_start); + if(!d_line_found){ + //printf("d_line_found (search near): %i\n",d_line_found); + //printf("d_line_start (search near): %i\n",d_line_start); + } + + if (d_line_found) + { + d_consecutive_aligns = std::min(d_max_aligns,d_consecutive_aligns + 1); + } + else + { + d_consecutive_aligns = std::max(0,d_consecutive_aligns - 1); + // We may have not found the max corr because the smaller search range was too small. It may + // happen either because we lost samples (in which case we should search for the line more + // thoroughly), or because in this particular line the correlation signal was too small. + // To avoid confusing these two, we will only change the line position when several of + // these situations happen in a row. + + if(d_consecutive_aligns. + * + * This 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. + * + * This software 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 this software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifndef INCLUDED_TEMPEST_HSYNC_IMPL_H +#define INCLUDED_TEMPEST_HSYNC_IMPL_H + +#include + +namespace gr { + namespace tempest { + + class Hsync_impl : public Hsync + { + private: + int d_delay; + int d_Htotal; + + int d_line_start; + + // the number of consecutive aligns in shorter ranges (to check whether we are locked) + int d_consecutive_aligns; + int d_consecutive_aligns_threshold; + int d_shorter_range_size; + int d_max_aligns; + + int d_line_found; + // true means I'm sure where the line may be + int d_line_locked; + int d_out; + int d_consumed; + + // For peak detector + float d_threshold_factor_rise; + float d_avg_alpha; + float d_avg_max; + float d_avg_min; + + // the correlation + gr_complex * d_corr; + float * d_abs_corr; + + + /*! + * \brief Initializes the parameters used in the peak_detect_process. + * + * \param threshold_factor_rise The algorithm keeps an average of minimum and maximum value. A peak is considered valid + * when it's bigger than avg_max - threshold_factor_rise(avg_max-avg_min). + * \param alpha The parameter used to update both the average maximum and minimum (exponential filter, or single-root iir). + * + */ + void peak_detect_init(float threshold_factor_rise, float alpha); + + /*! + * \brief Given datain and its length, the method return the peak position + */ + int peak_detect_process(const float * datain, const int datain_length, int * peak_pos); + + /*! + * \brief Calculates the conjugate multipliplication of the signal and its delayed version, + * and outputs the position of its absolute maximum. + * + * Given the input, it calculates the resulting likelihood function between indices lookup_stop and lookup_start. + * It returns the beginning of the maximum 1-sample correlation, and an exponential modulated with minus the estimated + * frequency error (in the pointer derot). to_consume and to_out was used as indicators of whether the peak was + * correctly found or not. Now the return value is used (either true or false). + * + */ + int max_corr_sync(const gr_complex * in, int lookup_start, int lookup_stop, int * max_corr_pos); + + + public: + Hsync_impl(int Htotal, int delay); + ~Hsync_impl(); + + void forecast (int noutput_items, gr_vector_int &ninput_items_required); + + // Where all the action really happens + int general_work(int noutput_items, + gr_vector_int &ninput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items); + + void set_Htotal_and_delay(int Htotal, int delay); + + }; + + } // namespace tempest +} // namespace gr + +#endif /* INCLUDED_TEMPEST_HSYNC_IMPL_H */ + diff --git a/lib/fft_peak_fine_sampling_sync_impl.cc b/lib/fft_peak_fine_sampling_sync_impl.cc new file mode 100644 index 0000000..4dcf943 --- /dev/null +++ b/lib/fft_peak_fine_sampling_sync_impl.cc @@ -0,0 +1,315 @@ +/* -*- c++ -*- */ +/** + * Copyright 2021 + * Pablo Bertrand + * Felipe Carrau + * Victoria Severi + * + * Instituto de Ingenieria Electrica, Facultad de Ingenieria, + * Universidad de la Republica, Uruguay. + * + * This 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. + * + * This software 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 this software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + * + * @file fft_peak_fine_sampling_sync_impl.cc + * + * gr-tempest + * + * @date September 19, 2021 + * @author Pablo Bertrand + * @author Felipe Carrau + * @author Victoria Severi + */ + +/********************************************************** + * Include statements + **********************************************************/ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include "fft_peak_fine_sampling_sync_impl.h" +#include +#include +#include + +/********************************************************** + * Constant and macro definitions + **********************************************************/ + + +uint32_t calculate_peak_index_relative_to_search_skip(const float *in, uint32_t search_skip, uint32_t search_range) +{ + uint32_t peak_index; + volk_32f_index_max_32u(&peak_index, &in[search_skip], search_range); + return peak_index += search_skip; + +} + +#define N 64 + +namespace gr { + namespace tempest { + + fft_peak_fine_sampling_sync::sptr + fft_peak_fine_sampling_sync::make(int sample_rate, int size, int refresh_rate, int Vvisible, int Hvisible, bool automatic_mode) + { + return gnuradio::get_initial_sptr + (new fft_peak_fine_sampling_sync_impl(sample_rate, size, refresh_rate, Vvisible, Hvisible, automatic_mode)); + } + + /********************************************************** + * Function bodies + **********************************************************/ + /* + * The private constructor + */ + fft_peak_fine_sampling_sync_impl::fft_peak_fine_sampling_sync_impl(int sample_rate, int size, int refresh_rate, int Vvisible, int Hvisible, bool automatic_mode) + : gr::block("fft_peak_fine_sampling_sync", + gr::io_signature::make(1, 1, sizeof(float)), + gr::io_signature::make(1, 1, sizeof(float))) + { + d_start_fft_peak_finder = 1; + + //Received parameters + d_sample_rate = sample_rate; + d_fft_size = size; + + //Search values + d_search_skip = 0; + d_search_margin = d_fft_size; + d_vtotal_est = 0; + d_peak_1 = 0; + d_peak_2 = 0; + + //Parameters to publish + d_refresh_rate = refresh_rate; + d_refresh_rate_est = 0; + d_Hvisible = Hvisible; + d_Vvisible = Vvisible; + d_Hblank = 0; + d_Vblank = 0; + + d_start = true; + + d_ratio = 0; + d_accumulator = 0.0f; + //d_real_line = 827; + d_real_line = 827.076923077; + + //Counters + d_work_counter = 1; + + //PMT ports + message_port_register_out(pmt::mp("en")); + message_port_register_out(pmt::mp("ratio")); + message_port_register_out(pmt::mp("rate")); + + message_port_register_in(pmt::mp("en")); + + // PMT handlers + set_msg_handler(pmt::mp("en"), [this](const pmt::pmt_t& msg) {fft_peak_fine_sampling_sync_impl::set_ena_msg(msg); }); + + set_history(d_fft_size); + + printf("[TEMPEST] Welcome to gr-tempest. Once the sampling is being corrected properly and the vertical lines of the target monitor are indeed vertical, please hit the Stop button to stop autocorrelation calculation and begin the vertical and horizontal synchronization .\n"); + } + + //--------------------------------------------------------- + /* + * Our virtual destructor. + */ + fft_peak_fine_sampling_sync_impl::~fft_peak_fine_sampling_sync_impl() + { + } + + void fft_peak_fine_sampling_sync_impl::set_ena_msg(pmt::pmt_t msg) + { + gr::thread::scoped_lock l(d_mutex); + if (pmt::is_bool(msg)) { + bool en = pmt::to_bool(msg); + d_start_fft_peak_finder = !en; + printf("FFT peak finder. Ratio calculation stopped.\n"); + } else { + GR_LOG_WARN(d_logger, + "FFT peak finder: Non-PMT type received, expecting Boolean PMT\n"); + if(d_start_fft_peak_finder) + { + printf("FFT peak finder. Ratio calculation stopped.\n"); + d_start_fft_peak_finder = 0; + } + else + { + printf("FFT peak finder. Ratio calculation restarted.\n"); + d_start_fft_peak_finder = 1; + } + /* + Stop FFT_autocorrelation block. + */ + message_port_pub( + pmt::mp("en"), + pmt::from_bool(d_start_fft_peak_finder) + ); + + /* Hardware USRP rate command: */ + + double new_freq = ((double)1.0/((double)(d_ratio + 1))) * (double)d_sample_rate; + + message_port_pub(pmt::mp("rate"), pmt::cons(pmt::mp("rate"), pmt::from_double(new_freq))); + d_sample_rate = new_freq; + new_freq = d_ratio; + message_port_pub( + pmt::mp("ratio"), pmt::cons( + pmt::mp("ratio"), + pmt::from_double(new_freq) + ) + ); + + } + } + + //--------------------------------------------------------- + + void fft_peak_fine_sampling_sync_impl::forecast (int noutput_items, gr_vector_int &ninput_items_required) + { + ninput_items_required[0] = noutput_items; // Funny Obs: Leaving ninput_items_required uninitialized creates chaos. + } + + //--------------------------------------------------------- + + + //--------------------------------------------------------- + int fft_peak_fine_sampling_sync_impl::general_work (int noutput_items, + gr_vector_int &ninput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items) + { + const float *in = (const float *) input_items[0]; + float *out = (float *) output_items[0]; + + gr::thread::scoped_lock l(d_mutex); + + if(!d_start_fft_peak_finder) + { + consume_each(noutput_items); + return noutput_items; + } + else + { + ///////////////////////////// + // RATIO SEARCH // + ///////////////////////////// + /* + If we receive a full d_fft_size from the fft_autocorrelation block + we process the full d_fft_size vector to find the best two peaks, peak_1, peak_2. + We should consume d_fft_size data from the in[0] to the in[d_fft_size] + and compute the distance between peak_1 and peak_2 in samples. + The value of d_accumulator should be the moving average of + the distance between peak_2 and peak_1. + So we divide the thing over N and repeat the measurement N times. + */ + uint32_t one_full_frame_in_samples = floor( (1.0/d_refresh_rate) * d_sample_rate ); + + d_search_margin = d_fft_size; + d_search_skip = 0; + d_peak_1 = calculate_peak_index_relative_to_search_skip( + in, + d_search_skip, + d_search_margin + ); + + d_search_skip = d_peak_1 + one_full_frame_in_samples - floor((0.001)*d_sample_rate); + d_search_margin = 200 + floor((0.001)*4*d_sample_rate); + d_peak_2 = calculate_peak_index_relative_to_search_skip( + in, + d_search_skip, + d_search_margin + ); + + d_accumulator += (long double)(d_peak_2-d_peak_1)/(long double)(N); + + if(d_work_counter%N == 0) + { + long double ratio = (long double)(d_accumulator)/(long double)(d_Hvisible*d_Vvisible); + + d_ratio = (ratio-1); + + /* + Send ratio message to the interpolator. + */ + double new_freq = d_ratio; + message_port_pub( + pmt::mp("ratio"), pmt::cons( + pmt::mp("ratio"), + pmt::from_double(new_freq) + ) + ); + printf("\r\n[FFT_peak_finder] Ratio = \t %Lf. \t d_accumulator = \t %Lf. \t \r\n ", ratio, d_accumulator); + + d_accumulator = 0; + d_work_counter = 0; + /* + Maybe sleep for a few milliseconds here. + */ + long period_ms = (1000); + //boost::this_thread::sleep( boost::posix_time::milliseconds(static_cast(period_ms)) ); + + + + d_sample_counter = 0; + } + + + + } + memcpy(&out[0], &in[0], noutput_items*sizeof(float)); // el tag deberia hacerse repetidamente aca con d_peak_1 d_peak_2 + + d_work_counter++; + d_sample_counter+=noutput_items; + + + add_item_tag( + 0, + nitems_written(0) + d_peak_1, + pmt::mp("peak_1"), + pmt::PMT_T + ); + add_item_tag( + 0, + nitems_written(0) + d_peak_2, + pmt::mp("peak_2"), pmt::PMT_T + ); + add_item_tag( + 0, + nitems_written(0) + d_search_skip, + pmt::mp("Search1"), + pmt::PMT_T + ); + add_item_tag( + 0, + nitems_written(0) + d_search_skip + d_search_margin, + pmt::mp("Search2"), pmt::PMT_T + ); + consume_each (noutput_items); + + return noutput_items; + + } + + } /* namespace tempest */ +} /* namespace gr */ + diff --git a/lib/fft_peak_fine_sampling_sync_impl.h b/lib/fft_peak_fine_sampling_sync_impl.h new file mode 100644 index 0000000..77c4de5 --- /dev/null +++ b/lib/fft_peak_fine_sampling_sync_impl.h @@ -0,0 +1,294 @@ +/* -*- c++ -*- */ +/** + * Copyright 2021 + * Pablo Bertrand + * Felipe Carrau + * Victoria Severi + * + * Instituto de Ingeniería Eléctrica, Facultad de Ingeniería, + * Universidad de la República, Uruguay. + * + * This 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. + * + * This software 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 this software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + * + * @file fft_peak_fine_sampling_sync_impl.h + * + * @brief Block that uses the signal autocorrelation to + * continuously calculate the interpolation ratio required, + * for as long as it takes to properly correct sampling. + * + * gr-tempest + * + * @date September 19, 2021 + * @author Pablo Bertrand + * @author Felipe Carrau + * @author Victoria Severi + */ + +/********************************************************** + * Constant and macro definitions + **********************************************************/ + +#ifndef INCLUDED_TEMPEST_FFT_PEAK_FINE_SAMPLING_SYNC_IMPL_H +#define INCLUDED_TEMPEST_FFT_PEAK_FINE_SAMPLING_SYNC_IMPL_H +#define lowpasscoeff 0.1 +#define MAX_PERIOD 0.0000284 +/********************************************************** + * Include statements + **********************************************************/ + +#include + +namespace gr { + namespace tempest { + + class fft_peak_fine_sampling_sync_impl : public fft_peak_fine_sampling_sync + { + private: + + /********************************************************** + * Data declarations + **********************************************************/ + + gr::thread::mutex d_mutex; + bool d_start_fft_peak_finder = 1; + + //Received parameters + int d_sample_rate; + int d_fft_size; + + + double d_ratio; + long double d_accumulator; + long double d_real_line; + bool d_start; + + + //Search values + uint32_t d_search_skip; + uint32_t d_search_margin; + uint32_t d_vtotal_est; + uint32_t d_peak_1; + uint32_t d_peak_2; + + //Results to publish + float d_refresh_rate; + + //Counters + uint32_t d_work_counter; + uint32_t d_sample_counter; + + //Search values + float d_refresh_rate_est; + bool d_flag; + + //Resolution results + int d_Hsize; + int d_Vsize; + int d_Vvisible; + int d_Hvisible; + long d_Hblank; + long d_Vblank; + + void search_table(float fv_estimated) + { + if (fv_estimated<65) + { + d_refresh_rate=60; + if (d_vtotal_est<576.5) + { + d_Vvisible=480; + d_Vsize=525; + d_Hvisible=640; + d_Hsize=800; + } + if (d_vtotal_est>576.5 && d_vtotal_est<687) + { + //800x600 + d_Hvisible=800; + d_Hsize=1056; + d_Vvisible=600; + d_Vsize=628; + } + if (d_vtotal_est>687 && d_vtotal_est<776) + { + //1280x720 + d_Hvisible=1280; + d_Hsize=1664; + d_Vvisible=720; + d_Vsize=746; + } + if (d_vtotal_est>776 && d_vtotal_est<869) + { + //1024x768 + d_Hvisible=1024; + d_Hsize=1344; + d_Vvisible=768; + d_Vsize=806; + } + if (d_vtotal_est>869 && d_vtotal_est<966) + { + //1600x900 + d_Hvisible=1600; + d_Hsize=2128; + d_Vvisible=900; + d_Vsize=932; + } + if (d_vtotal_est>966 && d_vtotal_est<1033) + { + //1280x960 + d_Hvisible=1280; + d_Hsize=1800; + d_Vvisible=960; + d_Vsize=1000; + } + if (d_vtotal_est>1033 && d_vtotal_est<1077.5) + { + //1280x1024 + d_Hvisible=1280; + d_Hsize=1688; + d_Vvisible=1024; + d_Vsize=1066; + } + if (d_vtotal_est>1077.5 && d_vtotal_est<1107) + { + //1680x1050 + d_Hvisible=1680; + d_Hsize=2240; + d_Vvisible=1050; + d_Vsize=1089; + } + if (d_vtotal_est>1107 && d_vtotal_est<1300) + { + //1920x1080 + d_Hvisible=1920; + d_Hsize=2200; + d_Vvisible=1080; + d_Vsize=1125; + } + } + if (fv_estimated>65 && fv_estimated<72.5) + { + d_refresh_rate=(int)70.1; + if (d_vtotal_est>400 && d_vtotal_est<500) + { + d_Hvisible=720; + d_Hsize=900; + d_Vvisible=400; + d_Vsize=449; + } + } + if (fv_estimated>72.5 && fv_estimated<80) + { + d_refresh_rate=75; + if (d_vtotal_est<562.5) + { + //640x480 + d_Hvisible=640; + d_Hsize=840; + d_Vvisible=480; + d_Vsize=500; + } + if (d_vtotal_est>562.5 && d_vtotal_est<646) + { + //800x600 + d_Hvisible=800; + d_Hsize=1056; + d_Vvisible=600; + d_Vsize=625; + } + if (d_vtotal_est>646 && d_vtotal_est<733.5) + { + //832x624 + d_refresh_rate=(int)74.6; + d_Hvisible=832; + d_Hsize=1152; + d_Vvisible=624; + d_Vsize=667; + } + if (d_vtotal_est>733.5 && d_vtotal_est<850) + { + //1024x768 + d_refresh_rate=(int)75.1; + d_Hvisible=1024; + d_Hsize=1312; + d_Vvisible=768; + d_Vsize=800; + } + if (d_vtotal_est>850 && d_vtotal_est<983) + { + //1152x864 + d_Hvisible=1152; + d_Hsize=1600; + d_Vvisible=864; + d_Vsize=900; + } + if (d_vtotal_est>983 && d_vtotal_est<1250) + { + //1280x1024 + d_Hvisible=1280; + d_Hsize=1688; + d_Vvisible=1024; + d_Vsize=1066; + } + } + }; + + /********************************************************** + * Private function prototypes + **********************************************************/ + /** + * @brief Function that processes the enable received as PMT + * message from other blocks and assignes it to a variable. + * + * @param pmt_t msg: Message received from autocorrelation + * block during runtime. + */ + void set_ena_msg(pmt::pmt_t msg); + //--------------------------------------------------------- + public: + fft_peak_fine_sampling_sync_impl(int sample_rate, int size, int refresh_rate, int Vvisible, int Hvisible, bool automatic_mode); + ~fft_peak_fine_sampling_sync_impl(); + + /********************************************************** + * Public function prototypes + **********************************************************/ + /** + * @brief Used to establish the amount of samples required + * for a full work iteration. + * + */ + void forecast (int noutput_items, gr_vector_int &ninput_items_required); + //--------------------------------------------------------- + /** + * @brief Main function that carries out the peak searches + * in the autocorrelation signal and uses the results to + * calculate the interpolation ratio required and prints + * it to a PMT port for other blocks to use it as it is + * updated in runtime. + * + */ + int general_work(int noutput_items, + gr_vector_int &ninput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items); + //--------------------------------------------------------- + }; + + } // namespace tempest +} // namespace gr + +#endif /* INCLUDED_TEMPEST_FFT_PEAK_FINE_SAMPLING_SYNC_IMPL_H */ + diff --git a/lib/fine_sampling_synchronization_impl.cc b/lib/fine_sampling_synchronization_impl.cc new file mode 100644 index 0000000..915d490 --- /dev/null +++ b/lib/fine_sampling_synchronization_impl.cc @@ -0,0 +1,282 @@ +/* -*- c++ -*- */ +/* + * Copyright 2020 + * Federico "Larroca" La Rocca + * + * Instituto de Ingenieria Electrica, Facultad de Ingenieria, + * Universidad de la Republica, Uruguay. + * + * This 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. + * + * This software 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 this software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + * + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include "fine_sampling_synchronization_impl.h" +#include +#include + +namespace gr { + namespace tempest { + + fine_sampling_synchronization::sptr + fine_sampling_synchronization::make(int Htotal, int Vtotal, int correct_sampling, float max_deviation, float update_proba) + { + return gnuradio::get_initial_sptr + (new fine_sampling_synchronization_impl(Htotal, Vtotal, correct_sampling, max_deviation, update_proba)); + } + + /* + * The private constructor + */ + fine_sampling_synchronization_impl::fine_sampling_synchronization_impl(int Htotal, int Vtotal, int correct_sampling, float max_deviation, float update_proba) + : gr::block("fine_sampling_synchronization", + gr::io_signature::make(1, 1, sizeof(gr_complex)), + gr::io_signature::make(1, 1, sizeof(gr_complex))), + d_inter(gr::filter::mmse_fir_interpolator_cc()), + d_dist(update_proba), + d_gen(std::random_device{}()) + { + set_relative_rate(1); + + d_correct_sampling = correct_sampling; + d_proba_of_updating = update_proba; + + d_max_deviation = max_deviation; + set_Htotal_Vtotal(Htotal, Vtotal); + + d_alpha_samp_inc = 1e-1; + + d_samp_phase = 0; + d_alpha_corr = 1e-6; + + //VOLK alignment as recommended by GNU Radio's Manual. It has a similar effect + //than set_output_multiple(), thus we will generally get multiples of this value + //as noutput_items. + const int alignment_multiple = volk_get_alignment() / sizeof(gr_complex); + set_alignment(std::max(1, alignment_multiple)); + + + //set_output_multiple(d_Htotal); + + } + + /* + * Our virtual destructor. + */ + fine_sampling_synchronization_impl::~fine_sampling_synchronization_impl() + { + delete [] d_current_line_corr; + delete [] d_historic_line_corr; + delete [] d_abs_historic_line_corr; + delete [] d_current_frame_corr; + delete [] d_historic_frame_corr; + delete [] d_abs_historic_frame_corr; + } + + void + fine_sampling_synchronization_impl::forecast (int noutput_items, gr_vector_int &ninput_items_required) + { + int ninputs = ninput_items_required.size (); + // make sure we receive at least Hsize+max_deviation+taps_to_interpolate + for (int i = 0; i < ninputs; i++) + { + //ninput_items_required[i] = (int)ceil((noutput_items + 1) * (1+d_samp_inc)) + d_inter.ntaps() + d_Htotal+d_max_deviation_px ; + ninput_items_required[i] = (int)ceil((noutput_items + 1) * (2+d_samp_inc_rem)) + d_inter.ntaps() ; + } + + } + + void fine_sampling_synchronization_impl::set_Htotal_Vtotal(int Htotal, int Vtotal){ + // If the resolution's changed, I reset the whole block + + d_Htotal = Htotal; + d_Vtotal = Vtotal; + //d_max_deviation = max_deviation; + d_max_deviation_px = (int)std::ceil(d_Htotal*d_max_deviation); + printf("d_max_deviation_px: %i\n", d_max_deviation_px); + //set_history(d_Vtotal*d_Htotal+2*d_max_deviation_px+2); + set_history(d_Vtotal*(d_Htotal+d_max_deviation_px)+1); + + d_peak_line_index = 0; + d_samp_inc_rem = 0; + d_new_interpolation_ratio_rem = 0; + + /** @fcarraustewart: FIXME > Memory leak when using this as a callback ? + * in the context where we already constructed our block + * invoking this function would leave 6 dangling pointers right here, we + * should somehow memory manage this correctly, on first thought: + * */ + /** + * < Calling delete for each of the following pointers + * and assigning them nullptr right here. Before running the new operator. + * + * */ + + // d_current_line_corr[i] and derivatives will keep the correlation between pixels + // px[t] and px[t+Htotal+i] + d_current_line_corr = new gr_complex[2*d_max_deviation_px + 1]; + d_historic_line_corr = new gr_complex[2*d_max_deviation_px + 1]; + d_abs_historic_line_corr = new float[2*d_max_deviation_px + 1]; + + // d_current_frame_corr[i] and derivatives will keep the correlation between pixels + // px[t] and px[t+Htotal*Vtotal+i]. Since a single pixel de-alignment with the next line will + // mean d_Vtotal pixels de-alignments with the next frame, these arrays are much bigger. + // However, instead of always calculating the whole of them, I'll only calculate around those + // indicated by the max in the d_abs_historic_line_corr. + d_current_frame_corr = new gr_complex[2*(d_max_deviation_px+1)*d_Vtotal + 1]; + d_historic_frame_corr = new gr_complex[2*(d_max_deviation_px+1)*d_Vtotal + 1]; + d_abs_historic_frame_corr = new float[2*(d_max_deviation_px+1)*d_Vtotal + 1]; + //I'll estimate the new sampling synchronization asap + d_next_update = 0; + + for (int i = 0; i<2*d_max_deviation_px+1; i++){ + d_historic_line_corr[i] = 0; + d_abs_historic_line_corr[i] = 0; + } + for (int i = 0; i<2*d_max_deviation_px*d_Vtotal+1; i++){ + d_historic_frame_corr[i] = 0; + d_abs_historic_frame_corr[i] = 0; + } + + printf("[TEMPEST] Setting Htotal to %i and Vtotal to %i in fine sampling synchronization block.\n", Htotal, Vtotal); + + } + + int fine_sampling_synchronization_impl::interpolate_input(const gr_complex * in, gr_complex * out, int size){ + int ii = 0; // input index + int oo = 0; // output index + + double s, f; + int incr; + while(oo < size) { + out[oo++] = d_inter.interpolate(&in[ii], d_samp_phase); + + s = d_samp_phase + d_samp_inc_rem + 1; + f = floor(s); + incr = (int)f; + d_samp_phase = s - f; + ii += incr; + } + + // return how many inputs we required to generate d_cp_length+d_fft_length outputs + return ii; + } + + + void fine_sampling_synchronization_impl::estimate_peak_line_index(const gr_complex * in, int in_size) + { + + // TODO a proper programmer would have done this repeated piece of code in a separate function. too lazy... + gr_complex * d_in_conj = new gr_complex[in_size]; + volk_32fc_conjugate_32fc(&d_in_conj[0], &in[0], in_size); + + for (int i=0; i + * + * Instituto de Ingenieria Electrica, Facultad de Ingenieria, + * Universidad de la Republica, Uruguay. + * + * This 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. + * + * This software 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 this software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + * + */ + +#ifndef INCLUDED_TEMPEST_FINE_SAMPLING_SYNCHRONIZATION_IMPL_H +#define INCLUDED_TEMPEST_FINE_SAMPLING_SYNCHRONIZATION_IMPL_H + +#include +#include +#include + +namespace gr { + namespace tempest { + + class fine_sampling_synchronization_impl : public fine_sampling_synchronization + { + private: + int d_Htotal; + int d_Vtotal; + int d_correct_sampling; + float d_max_deviation; + + // to accelerate the process, I'll only update the interpolation + // once every a random number of iterations with probability d_proba_of_updating + std::geometric_distribution d_dist; + std::minstd_rand d_gen; + float d_proba_of_updating; + int d_next_update; + + double d_samp_inc_rem; + double d_new_interpolation_ratio_rem; + double d_samp_phase; + + float d_alpha_samp_inc; + int d_max_deviation_px; + + // correlation with the last line + gr_complex * d_current_line_corr; + gr_complex * d_historic_line_corr; + float * d_abs_historic_line_corr; + // correlation with the last frame + gr_complex * d_current_frame_corr; + gr_complex * d_historic_frame_corr; + float * d_abs_historic_frame_corr; + + // where is the line correlation peak + int d_peak_line_index; + + float d_alpha_corr; + + // the interpolating filter + gr::filter::mmse_fir_interpolator_cc d_inter; + + int interpolate_input(const gr_complex * in, gr_complex * out, int size); + + void update_interpolation_ratio(const gr_complex * in, int in_size); + + void estimate_peak_line_index(const gr_complex * in, int in_size); + + public: + fine_sampling_synchronization_impl(int Htotal, int Vtotal, int correct_sampling, float max_deviation, float update_proba); + ~fine_sampling_synchronization_impl(); + + void set_Htotal_Vtotal(int Htotal, int Vtotal); + + // Where all the action really happens + void forecast (int noutput_items, gr_vector_int &ninput_items_required); + + int general_work(int noutput_items, + gr_vector_int &ninput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items); + }; + + } // namespace tempest +} // namespace gr + +#endif /* INCLUDED_TEMPEST_FINE_SAMPLING_SYNCHRONIZATION_IMPL_H */ + + diff --git a/lib/frame_drop_impl.cc b/lib/frame_drop_impl.cc new file mode 100644 index 0000000..c197809 --- /dev/null +++ b/lib/frame_drop_impl.cc @@ -0,0 +1,222 @@ +/* -*- c++ -*- */ +/** + * Copyright 2021 + * Pablo Bertrand + * Felipe Carrau + * Victoria Severi + * + * Instituto de Ingeniería Eléctrica, Facultad de Ingeniería, + * Universidad de la República, Uruguay. + * + * This 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. + * + * This software 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 this software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + * + * @file frame_drop_impl.cc + * + * gr-tempest + * + * @date September 19, 2021 + * @author Pablo Bertrand + * @author Felipe Carrau + * @author Victoria Severi + */ + +/********************************************************** + * Include statements + **********************************************************/ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include +#include +#include "frame_drop_impl.h" +#include +#include +#include + +namespace gr +{ + namespace tempest + { + + frame_drop::sptr + frame_drop::make(int Htotal, int Vtotal, int correct_sampling, float max_deviation, float update_proba, double actual_samp_rate) + { + return gnuradio::get_initial_sptr + (new frame_drop_impl(Htotal, Vtotal, correct_sampling, max_deviation, update_proba, actual_samp_rate)); + } + + /********************************************************** + * Function bodies + **********************************************************/ + /* + * The private constructor + */ + frame_drop_impl::frame_drop_impl(int Htotal, int Vtotal, int correct_sampling, float max_deviation, float update_proba, double actual_samp_rate) + : gr::block("frame_drop", + gr::io_signature::make(1, 1, sizeof(gr_complex)), + gr::io_signature::make(1, 1, sizeof(gr_complex))), + d_inter(gr::filter::mmse_fir_interpolator_cc()), + d_dist(update_proba), + d_gen(std::random_device{}()) + { + set_relative_rate(1); + + //Counters + d_sample_counter = 0; + d_display_counter = 0; + d_frames_counter = 0; + + //Fixed values + d_discarded_amount_per_frame = 15; + d_proba_of_updating = update_proba; + d_max_deviation = max_deviation; + d_alpha_samp_inc = 1e-1; + d_last_freq = 0; + d_samp_phase = 0; + d_alpha_corr = 1e-6; + + d_start_frame_drop = 0; + + d_Htotal = Htotal; + d_Vtotal = Vtotal; + d_required_for_interpolation = d_Htotal*d_Vtotal; + d_max_deviation_px = (int)std::ceil(d_Htotal*d_max_deviation); + + set_history(d_Vtotal*(d_Htotal+d_max_deviation_px)+1); + + d_peak_line_index = 0; + d_samp_inc_rem = 0; + d_new_interpolation_ratio_rem = 0; + d_next_update = 0; + + // PMT port + message_port_register_in(pmt::mp("ratio")); + + // PMT handler + set_msg_handler(pmt::mp("ratio"),[this](const pmt::pmt_t& msg) {frame_drop_impl::set_ratio_msg(msg); }); + + } + + //--------------------------------------------------------- + /* + * Our virtual destructor. + */ + frame_drop_impl::~frame_drop_impl() + { + } + + //--------------------------------------------------------- + + void frame_drop_impl::forecast (int noutput_items, gr_vector_int &ninput_items_required) + { + int ninputs = ninput_items_required.size (); + for (int i = 0; i < ninputs; i++) + { + ninput_items_required[i] = (int)ceil((noutput_items + 1) * (2+d_samp_inc_rem)) + d_inter.ntaps() ; + } + } + + //--------------------------------------------------------- + + void frame_drop_impl::set_ratio_msg(pmt::pmt_t msg){ + if(pmt::is_pair(msg)) { + pmt::pmt_t key = pmt::car(msg); + pmt::pmt_t val = pmt::cdr(msg); + if(pmt::eq(key, pmt::string_to_symbol("ratio"))) { + if(pmt::is_number(val)) { + d_new_interpolation_ratio_rem = (double)pmt::to_double(val); + printf("Frame dropper: interpolation ratio received = %f \n", d_new_interpolation_ratio_rem); + } + } + } + } + + //--------------------------------------------------------- + + void frame_drop_impl::get_required_samples(int size) + { + uint32_t ii = 0, incr; + int oo = 0; + double s, f; + + //d_samp_inc_rem = (1-d_alpha_samp_inc)*d_samp_inc_rem + d_alpha_samp_inc*d_new_interpolation_ratio_rem; + + while(oo < size) { + s = d_samp_phase + d_samp_inc_rem + 1; + f = floor(s); + incr = (uint32_t)f; + d_samp_phase = s - f; + ii += incr; + + oo++; + } + d_required_for_interpolation = ii; + } + + //--------------------------------------------------------- + + int frame_drop_impl::general_work (int noutput_items, + gr_vector_int &ninput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items) + { + const gr_complex *in = (const gr_complex *) input_items[0]; + gr_complex *out = (gr_complex *) output_items[0]; + + int consumed = 0, out_amount = 0, aux; + + d_samp_inc_rem = (1-d_alpha_samp_inc)*d_samp_inc_rem + d_alpha_samp_inc*d_new_interpolation_ratio_rem; + + for (int i=0; i + * Felipe Carrau + * Victoria Severi + * + * Instituto de Ingeniería Eléctrica, Facultad de Ingeniería, + * Universidad de la República, Uruguay. + * + * This 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. + * + * This software 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 this software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + * + * @file frame_drop_impl.h + * + * @brief Block that uses the interpolation ratio to count + * full frames in samples and discard some of them in order + * to reduce the processing needed by other blocks to do the + * interpolation. + * + * gr-tempest + * + * @date September 19, 2021 + * @author Pablo Bertrand + * @author Felipe Carrau + * @author Victoria Severi + */ + +/********************************************************** + * Constant and macro definitions + **********************************************************/ + +#ifndef INCLUDED_TEMPEST_FRAME_DROP_IMPL_H +#define INCLUDED_TEMPEST_FRAME_DROP_IMPL_H + +/********************************************************** + * Include statements + **********************************************************/ + +#include +#include +#include +#include +#include + +namespace gr { + namespace tempest { + + class frame_drop_impl : public frame_drop + { + private: + + /********************************************************** + * Data declarations + **********************************************************/ + + //Counters + int d_display_counter; + int d_frames_counter; + int d_sample_counter; + + //Fixed parameter + int d_discarded_amount_per_frame; + + int d_Htotal; + int d_Vtotal; + int d_correct_sampling; + uint32_t d_required_for_interpolation; + float d_max_deviation; + + std::geometric_distribution d_dist; + std::minstd_rand d_gen; + + float d_proba_of_updating; + int d_next_update; + + //double d_actual_samp_rate; + double d_samp_inc_rem; + double d_new_interpolation_ratio_rem; + double d_samp_phase; + + float d_alpha_samp_inc; + int d_max_deviation_px; + int d_peak_line_index; + + float d_alpha_corr; + double d_last_freq ; + + bool d_start_frame_drop; + + // the interpolating filter + gr::filter::mmse_fir_interpolator_cc d_inter; + gr::thread::mutex d_mutex; + + /********************************************************** + * Private function prototypes + **********************************************************/ + /** + * @brief Function that processes the ratio received as PMT + * message from other blocks and assignes it to a variable. + * + * @param pmt_t msg: Message received from autocorrelation + * block during runtime. + */ + void set_ratio_msg(pmt::pmt_t msg); + //--------------------------------------------------------- + + public: + frame_drop_impl(int Htotal, int Vtotal, int correct_sampling, float max_deviation, float update_proba, double actual_samp_rate); + ~frame_drop_impl(); + + /********************************************************** + * Public function prototypes + **********************************************************/ + /** + * @brief Used to establish the amount of samples required + * for a full work iteration. + * + */ + void forecast (int noutput_items, gr_vector_int &ninput_items_required); + //--------------------------------------------------------- + /** + * @brief Function that emulates the calculation made by + * Fine Sampling Synchronization of the samples required + * for obtained an interpolated result of a certain size. + * + * @param int size: amount of samples desired to result + * from the interpolation process, if the was one. + */ + void get_required_samples(int size); + //--------------------------------------------------------- + /** + * @brief While keeping count of the processed samples, the + * function decides whether each one belongs to a frame that + * it wants to display in the output or not. To do this, it + * runs the calculation for the required samples to + * interpolate a full frame and counts how many times it is + * achieved. + * + */ + int general_work(int noutput_items, + gr_vector_int &ninput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items); + //--------------------------------------------------------- + }; + + } // namespace tempest +} // namespace gr + +#endif /* INCLUDED_TEMPEST_FRAME_DROP_IMPL_H */ + diff --git a/lib/framing_impl.cc b/lib/framing_impl.cc new file mode 100644 index 0000000..60f664a --- /dev/null +++ b/lib/framing_impl.cc @@ -0,0 +1,140 @@ +/* -*- c++ -*- */ +/* + * Copyright 2020 + * Federico "Larroca" La Rocca + * + * Instituto de Ingenieria Electrica, Facultad de Ingenieria, + * Universidad de la Republica, Uruguay. + * + * This 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. + * + * This software 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 this software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + * + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include "framing_impl.h" + +namespace gr { + namespace tempest { + + framing::sptr + framing::make(int Htotal, int Vtotal, int Hdisplay, int Vdisplay) + { + return gnuradio::get_initial_sptr + (new framing_impl(Htotal, Vtotal, Hdisplay, Vdisplay)); + } + + /* + * The private constructor + */ + framing_impl::framing_impl(int Htotal, int Vtotal, int Hdisplay, int Vdisplay) + : gr::block("framing", + gr::io_signature::make(1, 1, sizeof(float)), + gr::io_signature::make(1, 1, sizeof(float))) + { + d_Htotal = Htotal; + d_Vtotal = Vtotal; + d_Hdisplay = Hdisplay; + d_Vdisplay = Vdisplay; + d_zeros = new float[d_Hdisplay]; + for (int i=0; i + // Tell runtime system how many input items we consumed on + // each input stream. + consume_each (d_consumed); + + // Tell runtime system how many output items we produced. + return d_out; + } + + } /* namespace tempest */ +} /* namespace gr */ + diff --git a/lib/framing_impl.h b/lib/framing_impl.h new file mode 100644 index 0000000..1e7863e --- /dev/null +++ b/lib/framing_impl.h @@ -0,0 +1,63 @@ +/* -*- c++ -*- */ +/* + * Copyright 2020 + * Federico "Larroca" La Rocca + * + * Instituto de Ingenieria Electrica, Facultad de Ingenieria, + * Universidad de la Republica, Uruguay. + * + * This 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. + * + * This software 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 this software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + * + */ + +#ifndef INCLUDED_TEMPEST_FRAMING_IMPL_H +#define INCLUDED_TEMPEST_FRAMING_IMPL_H + +#include + +namespace gr { + namespace tempest { + + class framing_impl : public framing + { + private: + int d_Htotal; + int d_Vtotal; + int d_Hdisplay; + int d_Vdisplay; + int d_current_line; + float * d_zeros; + + public: + framing_impl(int Htotal, int Vtotal, int Hdisplay, int Vdisplay); + ~framing_impl(); + + void set_Htotal_and_Vtotal(int Htotal, int Vtotal); + + // Where all the action really happens + void forecast (int noutput_items, gr_vector_int &ninput_items_required); + + int general_work(int noutput_items, + gr_vector_int &ninput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items); + }; + + } // namespace tempest +} // namespace gr + +#endif /* INCLUDED_TEMPEST_FRAMING_IMPL_H */ + diff --git a/lib/infer_screen_resolution_impl.cc b/lib/infer_screen_resolution_impl.cc new file mode 100644 index 0000000..76e5506 --- /dev/null +++ b/lib/infer_screen_resolution_impl.cc @@ -0,0 +1,277 @@ +/* -*- c++ -*- */ +/* + * Copyright 2020 + * Federico "Larroca" La Rocca + * + * Instituto de Ingenieria Electrica, Facultad de Ingenieria, + * Universidad de la Republica, Uruguay. + * + * This 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. + * + * This software 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 this software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + * + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include "infer_screen_resolution_impl.h" + +#define N 64 +#define lowpasscoeff 0.6 // TODO: check this for every resolution. +#define MAX_PERIOD 0.0000284 + +namespace gr { + namespace tempest { + + infer_screen_resolution::sptr + infer_screen_resolution::make(int sample_rate, int fft_size, float refresh_rate, bool automatic_mode) + { + return gnuradio::get_initial_sptr + (new infer_screen_resolution_impl(sample_rate, fft_size, refresh_rate, automatic_mode)); + } + + + /* + * The private constructor + */ + infer_screen_resolution_impl::infer_screen_resolution_impl(int sample_rate, int fft_size, float refresh_rate, bool automatic_mode) + : gr::block("infer_screen_resolution", + gr::io_signature::make(1, 1, sizeof(float)), + gr::io_signature::make(1, 1, sizeof(float))) + { + d_start_fft_peak_finder = 1; + + //Received parameters + d_sample_rate = sample_rate; + d_fft_size = fft_size; + d_mode = automatic_mode; + + //Search values + d_search_skip = 0; + d_search_margin = d_fft_size; + d_vtotal_est = 800; + d_peak_1 = 0; + d_peak_2 = 0; + + //Parameters to publish + d_refresh_rate = refresh_rate; + d_refresh_rate_est = 0; + d_Hblank = 0; + d_Vblank = 0; + + d_start = true; + + d_ratio = 0; + d_accumulator = 0.0f; + //d_real_line = 827; + d_real_line = 827.076923077; + + //Counters + d_work_counter = 1; + d_i = 0; + + + } + + /* + * Our virtual destructor. + */ + infer_screen_resolution_impl::~infer_screen_resolution_impl() + { + } + + void + infer_screen_resolution_impl::forecast (int noutput_items, gr_vector_int &ninput_items_required) + { + ninput_items_required[0] = noutput_items; + } + + + //--------------------------------------------------------- + + void infer_screen_resolution_impl::set_refresh_rate(float refresh_rate) + { + gr::thread::scoped_lock l(d_mutex); + + //If the refresh rate changed, parameters are reset with callback + d_refresh_rate = refresh_rate; + d_search_skip = d_sample_rate/(d_refresh_rate+0.2); + d_refresh_rate_est = refresh_rate; + printf("[TEMPEST] Setting refresh to %i in infer block.\n", refresh_rate); + } + + //--------------------------------------------------------- + + int + infer_screen_resolution_impl::general_work (int noutput_items, + gr_vector_int &ninput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items) + { + const float *in = (const float *) input_items[0]; + float *out = (float *) output_items[0]; + + gr::thread::scoped_lock l(d_mutex); + + if(!d_start_fft_peak_finder) + { + consume_each(noutput_items); + return noutput_items; + } + else + { + ///////////////////////////// + // RATIO SEARCH // + ///////////////////////////// + /* + If we receive a full d_fft_size from the fft_autocorrelation block + we process the full d_fft_size vector to find the best two peaks, peak_1, peak_2. + We should consume d_fft_size data from the in[0] to the in[d_fft_size] + and compute the distance between peak_1 and peak_2 in samples. + The value of d_accumulator should be the moving average of + the distance between peak_2 and peak_1. + So we divide the thing over N and repeat the measurement N times. + */ + if(d_sample_counter > 1) + { + if(d_mode) + { + // Automatic mode. + uint32_t one_full_frame_in_samples = floor( (1.0/d_refresh_rate) * d_sample_rate ); + d_search_margin = d_fft_size; + d_search_skip = 0; + d_peak_1 = calculate_peak_index_relative_to_search_skip( + in, + d_search_skip, + d_search_margin + ); + d_search_skip = d_peak_1 + one_full_frame_in_samples - floor((0.004)*d_sample_rate); + d_search_margin = 200 + floor((0.004)*5*d_sample_rate); + + d_peak_2 = calculate_peak_index_relative_to_search_skip( + in, + d_search_skip, + d_search_margin + ); + + d_accumulator += (long double)(d_peak_2-d_peak_1)/(long double)(N); + } + else + { + // Semi-automatic mode. + d_peak_1 = nitems_written(0) + 0; + d_search_skip = d_sample_rate / (d_refresh_rate + 0.2); + d_search_margin = 10000; + + d_peak_2 = calculate_peak_index_relative_to_search_skip( + in, + d_search_skip, + d_search_margin + ); + + d_accumulator = d_peak_2; + } + + if(d_work_counter%N == 0) + { + uint32_t yt_index = 0, yt_aux = 0; + double fv = (double)d_sample_rate/(double)d_accumulator; + + // Lower the variation of the received refresh rate: + d_refresh_rate_est = ((long) round(fv * lowpasscoeff + (1.0 - lowpasscoeff) * (d_refresh_rate_est))); + + ///////////////////////////// + // HEIGHT SEARCH // + ///////////////////////////// + + int yt_largo = (int)d_sample_rate*(MAX_PERIOD); + + volk_32f_index_max_32u(&yt_index, &in[(d_peak_2)+5], yt_largo); + // The peak search begins a few samples later to avoid repeating the previous result + + double yt = (double)d_sample_rate / (double)((yt_index+5)*fv); + // The same sample movement is compensated + + if (d_flag) + { + if (yt < 1225 && yt > 350) + d_vtotal_est = ((int) round(yt * lowpasscoeff + (1.0 - lowpasscoeff) * (d_vtotal_est))); + + } + else + { + if (yt < 1225 && yt > 350) + { + d_vtotal_est = yt; + d_flag = true; + + } + } + //printf(" yt instant \t %lf \t yt estimate \t %ld \t \n ", yt, d_vtotal_est); + + ///////////////////////////// + // UPDATE RESULTS // + ///////////////////////////// + + int last_result = d_Vvisible; + + search_table(d_refresh_rate_est); + + if (last_result == d_Vvisible) { + d_i++; + } else { + d_i=0; + } + + if (d_i == 15) { + printf(" Hdisplay \t %ld \t Px \t\t Vdisplay \t %ld \t Px \t\t Hsize \t %ld \t Px \t\t Vsize \t %ld \t Px \t\t Refresh Rate \t %f \t Hz \t \n ", d_Hvisible,d_Vvisible,d_Hsize,d_Vsize,d_refresh_rate); + d_i=0; + } + + d_accumulator = 0; + d_work_counter = 0; + d_sample_counter = 0; + } + } + + + } + memcpy(&out[0], &in[0], noutput_items*sizeof(float)); // el tag deberia hacerse repetidamente aca con d_peak_1 d_peak_2 + + d_work_counter++; + d_sample_counter+=noutput_items; + + consume_each (noutput_items); + + add_item_tag( + 0, + nitems_written(0) + d_peak_1, + pmt::mp("peak_1"), + pmt::PMT_T + ); + add_item_tag( + 0, + nitems_written(0) + d_peak_2, + pmt::mp("peak_2"), pmt::PMT_T + ); + return noutput_items; + + } + + } /* namespace tempest */ +} /* namespace gr */ + diff --git a/lib/infer_screen_resolution_impl.h b/lib/infer_screen_resolution_impl.h new file mode 100644 index 0000000..5be9f6d --- /dev/null +++ b/lib/infer_screen_resolution_impl.h @@ -0,0 +1,259 @@ +/* -*- c++ -*- */ +/* + * Copyright 2020 + * Federico "Larroca" La Rocca + * + * Instituto de Ingenieria Electrica, Facultad de Ingenieria, + * Universidad de la Republica, Uruguay. + * + * This 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. + * + * This software 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 this software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + * + */ + +#ifndef INCLUDED_TEMPEST_INFER_SCREEN_RESOLUTION_IMPL_H +#define INCLUDED_TEMPEST_INFER_SCREEN_RESOLUTION_IMPL_H + +#include +//#include +#include +#include + +namespace gr { + namespace tempest { + + class infer_screen_resolution_impl : public infer_screen_resolution + { + private: + + /********************************************************** + * Data declarations + **********************************************************/ + + gr::thread::mutex d_mutex; + bool d_start_fft_peak_finder = 1; + + //Received parameters + int d_sample_rate; + int d_fft_size; + + + double d_ratio; + long double d_accumulator; + long double d_real_line; + bool d_start; + + + //Search values + uint32_t d_search_skip; + uint32_t d_search_margin; + uint32_t d_vtotal_est; + uint32_t d_peak_1; + uint32_t d_peak_2; + + //Results to publish + float d_refresh_rate; + + //Counters + uint32_t d_work_counter; + uint32_t d_sample_counter; + int d_i; + + //Search values + float d_refresh_rate_est; + bool d_flag; + bool d_mode; + + //Resolution results + int d_Hsize; + int d_Vsize; + int d_Vvisible; + int d_Hvisible; + long d_Hblank; + long d_Vblank; + + + uint32_t calculate_peak_index_relative_to_search_skip(const float *in, uint32_t search_skip, uint32_t search_range) + { + uint32_t peak_index; + volk_32f_index_max_32u(&peak_index, &in[search_skip], search_range); + return peak_index += search_skip; + }; + + void search_table(float fv_estimated) + { + if (fv_estimated<65 && fv_estimated>55) + { + d_refresh_rate=60; + if (d_vtotal_est<576.5) + { + d_Vvisible=480; + d_Vsize=525; + d_Hvisible=640; + d_Hsize=800; + } + else if (d_vtotal_est>576.5 && d_vtotal_est<687) + { + //800x600 + d_Hvisible=800; + d_Hsize=1056; + d_Vvisible=600; + d_Vsize=628; + } + else if (d_vtotal_est>687 && d_vtotal_est<776) + { + //1280x720 + d_Hvisible=1280; + d_Hsize=1664; + d_Vvisible=720; + d_Vsize=746; + } + else if (d_vtotal_est>776 && d_vtotal_est<869) + { + //1024x768 + d_Hvisible=1024; + d_Hsize=1344; + d_Vvisible=768; + d_Vsize=806; + } + else if (d_vtotal_est>869 && d_vtotal_est<966) + { + //1600x900 + d_Hvisible=1600; + d_Hsize=2128; + d_Vvisible=900; + d_Vsize=932; + } + else if (d_vtotal_est>966 && d_vtotal_est<1033) + { + //1280x960 + d_Hvisible=1280; + d_Hsize=1800; + d_Vvisible=960; + d_Vsize=1000; + } + else if (d_vtotal_est>1033 && d_vtotal_est<1077.5) + { + //1280x1024 + d_Hvisible=1280; + d_Hsize=1688; + d_Vvisible=1024; + d_Vsize=1066; + } + else if (d_vtotal_est>1077.5 && d_vtotal_est<1107) + { + //1680x1050 + d_Hvisible=1680; + d_Hsize=2240; + d_Vvisible=1050; + d_Vsize=1089; + } + else if (d_vtotal_est>1107 && d_vtotal_est<1300) + { + //1920x1080 + d_Hvisible=1920; + d_Hsize=2200; + d_Vvisible=1080; + d_Vsize=1125; + } + } + else if (fv_estimated>65 && fv_estimated<72.5) + { + d_refresh_rate=(int)70.1; + if (d_vtotal_est>400 && d_vtotal_est<500) + { + d_Hvisible=720; + d_Hsize=900; + d_Vvisible=400; + d_Vsize=449; + } + } + else if (fv_estimated>72.5 && fv_estimated<80) + { + d_refresh_rate=75; + if (d_vtotal_est<562) + { + //640x480 + d_Hvisible=640; + d_Hsize=840; + d_Vvisible=480; + d_Vsize=500; + } + else if (d_vtotal_est>=562 && d_vtotal_est<646) + { + //800x600 + d_Hvisible=800; + d_Hsize=1056; + d_Vvisible=600; + d_Vsize=625; + } + else if (d_vtotal_est>=646 && d_vtotal_est<733) + { + //832x624 + d_refresh_rate=(int)74.6; + d_Hvisible=832; + d_Hsize=1152; + d_Vvisible=624; + d_Vsize=667; + } + else if (d_vtotal_est>=733 && d_vtotal_est<850) + { + //1024x768 + d_refresh_rate=(int)75.1; + d_Hvisible=1024; + d_Hsize=1312; + d_Vvisible=768; + d_Vsize=800; + } + else if (d_vtotal_est>850 && d_vtotal_est<983) + { + //1152x864 + d_Hvisible=1152; + d_Hsize=1600; + d_Vvisible=864; + d_Vsize=900; + } + else if (d_vtotal_est>983 && d_vtotal_est<1250) + { + //1280x1024 + d_Hvisible=1280; + d_Hsize=1688; + d_Vvisible=1024; + d_Vsize=1066; + } + } + }; + + public: + infer_screen_resolution_impl(int sample_rate, int fft_size, float refresh_rate, bool automatic_mode); + ~infer_screen_resolution_impl(); + + // Where all the action really happens + void forecast (int noutput_items, gr_vector_int &ninput_items_required); + + void set_refresh_rate(float refresh_rate); + + int general_work(int noutput_items, + gr_vector_int &ninput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items); + + }; + + } // namespace tempest +} // namespace gr + +#endif /* INCLUDED_TEMPEST_INFER_SCREEN_RESOLUTION_IMPL_H */ + diff --git a/lib/ncaso.txt b/lib/ncaso.txt new file mode 100644 index 0000000..ce26955 --- /dev/null +++ b/lib/ncaso.txt @@ -0,0 +1 @@ +909882 \ No newline at end of file diff --git a/lib/normalize_flow_impl.cc b/lib/normalize_flow_impl.cc new file mode 100644 index 0000000..0797645 --- /dev/null +++ b/lib/normalize_flow_impl.cc @@ -0,0 +1,121 @@ +/* -*- c++ -*- */ +/* + * Copyright 2020 + * Federico "Larroca" La Rocca + * + * Instituto de Ingenieria Electrica, Facultad de Ingenieria, + * Universidad de la Republica, Uruguay. + * + * This 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. + * + * This software 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 this software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + * + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include "normalize_flow_impl.h" +#include + +namespace gr { + namespace tempest { + + normalize_flow::sptr + normalize_flow::make(float min, float max, int window, float alpha_avg, float update_proba) + { + return gnuradio::get_initial_sptr + (new normalize_flow_impl(min, max, window, alpha_avg, update_proba)); + } + + /* + * The private constructor + */ + normalize_flow_impl::normalize_flow_impl(float min, float max, int window, float alpha_avg, float update_proba) + : gr::sync_block("normalize_flow", + gr::io_signature::make(1, 1, sizeof(float)), + gr::io_signature::make(1, 1, sizeof(float))), + d_dist(0, 1), + d_gen(std::random_device{}()) + { + d_min = min; + d_max = max; + d_win = window; + d_alpha_avg = alpha_avg; + + set_output_multiple(d_win); + + d_current_max = d_max; + d_current_min = d_min; + + d_proba_of_updating = update_proba; + } + + void normalize_flow_impl::set_min_max(float min, float max){ + d_min = min; + d_max = max; + printf("[TEMPEST] setting min and max to %f and %f in the normalize flow block.\n",min, max); + } + + float normalize_flow_impl::compute_max(const float * datain, const int datain_length){ + uint16_t peak_index = 0; + uint32_t d_datain_length = (uint32_t)datain_length; + + volk_32f_index_max_16u(&peak_index, &datain[0], d_datain_length); + return datain[peak_index]; + + } + + /* + * Our virtual destructor. + */ + normalize_flow_impl::~normalize_flow_impl() + { + } + + int + normalize_flow_impl::work(int noutput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items) + { + const float *in = (const float *) input_items[0]; + float *out = (float *) output_items[0]; + + + + if(d_dist(d_gen) + * + * Instituto de Ingenieria Electrica, Facultad de Ingenieria, + * Universidad de la Republica, Uruguay. + * + * This 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. + * + * This software 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 this software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + * + */ + +#ifndef INCLUDED_TEMPEST_NORMALIZE_FLOW_IMPL_H +#define INCLUDED_TEMPEST_NORMALIZE_FLOW_IMPL_H + +#include +#include + +namespace gr { + namespace tempest { + + class normalize_flow_impl : public normalize_flow + { + private: + float d_min; + float d_max; + int d_win; + float d_alpha_avg; + + float d_current_max; + float d_current_min; + + float * d_minus_datain; + + float compute_max(const float * datain, const int datain_length); + + // to accelerate the process, I'll only update the interpolation + // once every a random number of iterations with probability d_portion + std::uniform_real_distribution d_dist; + std::minstd_rand d_gen; + float d_proba_of_updating; + + public: + normalize_flow_impl(float min, float max, int window, float alpha_avg, float update_proba); + ~normalize_flow_impl(); + + // Where all the action really happens + int work(int noutput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items); + + void set_min_max(float min, float max); + + }; + + } // namespace tempest +} // namespace gr + +#endif /* INCLUDED_TEMPEST_NORMALIZE_FLOW_IMPL_H */ + diff --git a/lib/sampling_synchronization_impl.cc b/lib/sampling_synchronization_impl.cc new file mode 100644 index 0000000..1b93927 --- /dev/null +++ b/lib/sampling_synchronization_impl.cc @@ -0,0 +1,206 @@ +/* -*- c++ -*- */ +/* + * Copyright 2020 + * Federico "Larroca" La Rocca + * + * Instituto de Ingenieria Electrica, Facultad de Ingenieria, + * Universidad de la Republica, Uruguay. + * + * This 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. + * + * This software 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 this software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + * + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include "sampling_synchronization_impl.h" +#include +#include + +namespace gr { + namespace tempest { + + sampling_synchronization::sptr + sampling_synchronization::make(int Htotal, double manual_correction) + { + return gnuradio::get_initial_sptr + (new sampling_synchronization_impl(Htotal, manual_correction)); + } + + + /* + * The private constructor + */ + sampling_synchronization_impl::sampling_synchronization_impl(int Htotal, double manual_correction) + : gr::block("sampling_synchronization", + gr::io_signature::make(1, 1, sizeof(gr_complex)), + gr::io_signature::make(1, 1, sizeof(gr_complex))), + d_inter(gr::filter::mmse_fir_interpolator_cc()), + d_dist(0, 1), + d_gen(std::random_device{}()) + + { + set_relative_rate(1); + d_Htotal = Htotal; + + //VOLK alignment as recommended by GNU Radio's Manual. It has a similar effect + //than set_output_multiple(), thus we will generally get multiples of this value + //as noutput_items. + const int alignment_multiple = volk_get_alignment() / sizeof(gr_complex); + set_alignment(std::max(1, alignment_multiple)); + + d_max_deviation = 0.10; + d_max_deviation_px = (int)std::ceil(Htotal*d_max_deviation); + d_samp_inc_remainder = 0; + d_samp_inc_correction = manual_correction; + d_samp_phase = 0; + d_alpha_samp_inc = 1e-3; + + + d_current_corr = new gr_complex[2*d_max_deviation_px + 1]; + d_historic_corr = new gr_complex[2*d_max_deviation_px + 1]; + d_abs_historic_corr = new float[2*d_max_deviation_px + 1]; + for (int i = 0; i<2*d_max_deviation_px+1; i++){ + d_historic_corr[i] = 0; + d_abs_historic_corr[i] = 0; + } + d_alpha_corr = 1e-6; + + d_proba_of_updating = 0.01; + + } + + /* + * Our virtual destructor. + */ + sampling_synchronization_impl::~sampling_synchronization_impl() + { + delete [] d_current_corr; + delete [] d_historic_corr; + delete [] d_abs_historic_corr; + } + + void + sampling_synchronization_impl::forecast (int noutput_items, gr_vector_int &ninput_items_required) + { + int ninputs = ninput_items_required.size (); + // make sure we receive at least Hsize+max_deviation+taps_to_interpolate + for (int i = 0; i < ninputs; i++) + { + //ninput_items_required[i] = ( d_cp_length + d_fft_length ) * (noutput_items + 1) ; + ninput_items_required[i] = (int)ceil((noutput_items + 1) * (1+d_samp_inc_remainder)) + d_inter.ntaps() + d_Htotal+d_max_deviation_px ; + } + } + + void sampling_synchronization_impl::set_Htotal(int Htotal){ + d_Htotal = Htotal; + d_max_deviation_px = (int)std::ceil(Htotal*d_max_deviation); + printf("[TEMPEST] Setting Htotal to %i in sampling synchronization block.\n", Htotal); + } + + void sampling_synchronization_impl::set_manual_correction(double correction){ + + d_samp_inc_correction = correction; + + } + + void sampling_synchronization_impl::update_interpolation_ratio(const float * datain, const int datain_length){ + uint16_t peak_index = 0; + uint32_t d_datain_length = (uint32_t)(datain_length); + volk_32f_index_max_16u(&peak_index, datain, datain_length); + + // the new interpolation ratio is how far the peak is from d_Htotal. + d_new_interpolation_ratio = ((float)(peak_index-d_max_deviation_px + d_Htotal))/(float)d_Htotal; + //for (int i=0; i + * + * Instituto de Ingenieria Electrica, Facultad de Ingenieria, + * Universidad de la Republica, Uruguay. + * + * This 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. + * + * This software 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 this software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + * + */ + +#ifndef INCLUDED_TEMPEST_SAMPLING_SYNCHRONIZATION_IMPL_H +#define INCLUDED_TEMPEST_SAMPLING_SYNCHRONIZATION_IMPL_H + +#include +#include +#include + +namespace gr { + namespace tempest { + + class sampling_synchronization_impl : public sampling_synchronization + { + private: + int d_Htotal; + //the number of lines to consider for correlation + int d_no_of_lines_for_corr; + // the maximum number of pixels I'll search for the peak + int d_max_deviation_px; + // the maximum number of pixels I'll search for the peak in percentaje + float d_max_deviation; + // the estimated interpolation I'd have to use to have a correct sampling - 1 + double d_samp_inc_remainder; + // a manual correction assigned by the user at run-time + double d_samp_inc_correction; + double d_samp_phase; + float d_new_interpolation_ratio; + + float d_alpha_samp_inc; + + // to accelerate the process, I'll only update the interpolation + // once every a random number of iterations with probability d_portion + std::uniform_real_distribution d_dist; + std::minstd_rand d_gen; + float d_proba_of_updating; + + + // the correlation + gr_complex * d_historic_corr; + float * d_abs_historic_corr; + gr_complex * d_current_corr; + gr_complex * d_in_conj; + float d_alpha_corr; + + // the interpolating filter + gr::filter::mmse_fir_interpolator_cc d_inter; + + void update_interpolation_ratio(const float * datain, const int datain_length); + + int interpolate_input(const gr_complex * in, gr_complex * out, int size); + + public: + sampling_synchronization_impl(int Htotal, double manual_correction); + ~sampling_synchronization_impl(); + + void set_Htotal(int Htotal); + + void set_manual_correction(double correction); + + // Where all the action really happens + void forecast (int noutput_items, gr_vector_int &ninput_items_required); + + int general_work(int noutput_items, + gr_vector_int &ninput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items); + + }; + + } // namespace tempest +} // namespace gr + +#endif /* INCLUDED_TEMPEST_SAMPLING_SYNCHRONIZATION_IMPL_H */ + diff --git a/lib/ssamp_correction_impl.cc b/lib/ssamp_correction_impl.cc new file mode 100644 index 0000000..4fc92bd --- /dev/null +++ b/lib/ssamp_correction_impl.cc @@ -0,0 +1,274 @@ +/* -*- c++ -*- */ +/* + * Copyright 2020 + * Federico "Larroca" La Rocca + * + * Instituto de Ingenieria Electrica, Facultad de Ingenieria, + * Universidad de la Republica, Uruguay. + * + * This 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. + * + * This software 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 this software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + * + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include + +#include +#include +#include "ssamp_correction_impl.h" + +namespace gr { + namespace tempest { + + ssamp_correction::sptr + ssamp_correction::make(int Htotal, int Vtotal, int correct_sampling, float max_deviation) + { + return gnuradio::get_initial_sptr + (new ssamp_correction_impl(Htotal, Vtotal, correct_sampling, max_deviation)); + } + + + /* + * The private constructor + */ + ssamp_correction_impl::ssamp_correction_impl(int Htotal, int Vtotal, int correct_sampling, float max_deviation) + : gr::block("ssamp_correction", + gr::io_signature::make(1, 1, sizeof(gr_complex)), + gr::io_signature::make(1, 1, sizeof(gr_complex))), + d_inter(gr::filter::mmse_fir_interpolator_cc()), + d_gen(std::random_device{}()) + { + set_relative_rate(1); + d_correct_sampling = correct_sampling; + d_max_deviation = max_deviation; + d_Htotal = Htotal; + d_Vtotal = Vtotal; + d_max_deviation_px = (int)std::ceil(d_Htotal*d_max_deviation); + + set_history(d_Vtotal*(d_Htotal+d_max_deviation_px)+1); + + d_peak_line_index = 0; + d_samp_inc_rem = 0; + d_stop_fine_sampling_synch = 0; + d_new_interpolation_ratio_rem = 0; + + d_current_line_corr = new gr_complex[2*d_max_deviation_px + 1]; + d_historic_line_corr = new gr_complex[2*d_max_deviation_px + 1]; + d_abs_historic_line_corr = new float[2*d_max_deviation_px + 1]; + + /** Note: d_current_frame_corr[i] and derivatives will keep the correlation between pixels + px[t] and px[t+Htotal*Vtotal+i]. Since a single pixel de-alignment with the next line will + mean d_Vtotal pixels de-alignments with the next frame, these arrays are much bigger. + However, instead of always calculating the whole of them, I'll only calculate around those + indicated by the max in the d_abs_historic_line_corr. + */ + d_current_frame_corr = new gr_complex[2*(d_max_deviation_px+1)*d_Vtotal + 1]; + d_historic_frame_corr = new gr_complex[2*(d_max_deviation_px+1)*d_Vtotal + 1]; + d_abs_historic_frame_corr = new float[2*(d_max_deviation_px+1)*d_Vtotal + 1]; + + d_alpha_samp_inc = 1e-1; + d_samp_phase = 0; + d_alpha_corr = 1e-2; + d_next_update = 0; + + for (int i = 0; i<2*d_max_deviation_px+1; i++){ + d_historic_line_corr[i] = 0; + d_abs_historic_line_corr[i] = 0; + } + for (int i = 0; i<2*d_max_deviation_px*d_Vtotal+1; i++){ + d_historic_frame_corr[i] = 0; + d_abs_historic_frame_corr[i] = 0; + } + + printf("[TEMPEST] Construction of ssamp_correction_impl with Htotal=%i and Vtotal=%i.\n", Htotal, Vtotal); + + //VOLK alignment as recommended by GNU Radio's Manual. It has a similar effect + //than set_output_multiple(), thus we will generally get multiples of this value + //as noutput_items. + const int alignment_multiple = volk_get_alignment() / sizeof(gr_complex); + set_alignment(std::max(1, alignment_multiple)); + + // PMT ports + message_port_register_in(pmt::mp("ratio")); + message_port_register_in(pmt::mp("en")); + + // PMT handlers + // : Port Lambda function + set_msg_handler( pmt::mp("ratio"), [this](const pmt::pmt_t& msg) {ssamp_correction_impl::set_ratio_msg(msg); }); + set_msg_handler( pmt::mp("en"), [this](const pmt::pmt_t& msg) {ssamp_correction_impl::set_ena_msg(msg); }); + } + + + void + ssamp_correction_impl::set_ena_msg(pmt::pmt_t msg) + { + if (pmt::is_bool(msg)) { + bool en = pmt::to_bool(msg); + gr::thread::scoped_lock l(d_mutex); + d_stop_fine_sampling_synch = !en; + printf("ssamp_correction_impl Received Sampling Stop.\n"); + } else { + GR_LOG_WARN(d_logger, + "ssamp_correction_impl Received : Non-PMT type received, expecting Boolean PMT\n"); + } + } + + void + ssamp_correction_impl::set_ratio_msg(pmt::pmt_t msg) + { + if(pmt::is_pair(msg)) { + // saca el primero de la pareja + pmt::pmt_t key = pmt::car(msg); + // saca el segundo + pmt::pmt_t val = pmt::cdr(msg); + if(pmt::eq(key, pmt::string_to_symbol("ratio"))) { + if(pmt::is_number(val)) { + d_new_interpolation_ratio_rem = (double)pmt::to_double(val); + printf("ssamp_correction_impl Received : interpolation ratio = %f \n", d_new_interpolation_ratio_rem); + } + } + } + } + + /* + * Our virtual destructor. + */ + ssamp_correction_impl::~ssamp_correction_impl() + { + delete [] d_current_line_corr; + delete [] d_historic_line_corr; + delete [] d_abs_historic_line_corr; + delete [] d_current_frame_corr; + delete [] d_historic_frame_corr; + delete [] d_abs_historic_frame_corr; + } + + void + ssamp_correction_impl::forecast (int noutput_items, gr_vector_int &ninput_items_required) + { + int ninputs = ninput_items_required.size (); + // make sure we receive at least Hsize+max_deviation+taps_to_interpolate + for (int i = 0; i < ninputs; i++) + { + ninput_items_required[i] = (int)ceil((noutput_items + 1) * (2+d_samp_inc_rem)) + d_inter.ntaps() ; + } + + } + + void + ssamp_correction_impl::set_Htotal_Vtotal(int Htotal, int Vtotal){ + // If the resolution's changed, I reset the whole block + /** + * @fcarraustewart + * FIXME: This callback double taps onChange + * of any of these two variables, Htotal Vtotal, + * This happens on all our testXXX.grc files. + * Solution .grc file should not have a link + * between these two variables? + */ + d_Htotal = Htotal; + d_Vtotal = Vtotal; + + d_max_deviation_px = (int)std::ceil(d_Htotal*d_max_deviation); + printf("ssamp_correction_impl d_max_deviation_px: %i\n", d_max_deviation_px); + set_history(d_Vtotal*(d_Htotal+d_max_deviation_px)+1); + + d_peak_line_index = 0; + d_samp_inc_rem = 0; + d_stop_fine_sampling_synch = 0; + d_new_interpolation_ratio_rem = 0; + + /** + * < Calling delete for each of the following pointers + * and assigning them nullptr right here. Before running the new operator. + * + * */ + delete [] d_current_line_corr; + delete [] d_historic_line_corr; + delete [] d_abs_historic_line_corr; + delete [] d_current_frame_corr; + delete [] d_historic_frame_corr; + delete [] d_abs_historic_frame_corr; + + d_current_line_corr = new gr_complex[2*d_max_deviation_px + 1]; + d_historic_line_corr = new gr_complex[2*d_max_deviation_px + 1]; + d_abs_historic_line_corr = new float[2*d_max_deviation_px + 1]; + d_current_frame_corr = new gr_complex[2*(d_max_deviation_px+1)*d_Vtotal + 1]; + d_historic_frame_corr = new gr_complex[2*(d_max_deviation_px+1)*d_Vtotal + 1]; + d_abs_historic_frame_corr = new float[2*(d_max_deviation_px+1)*d_Vtotal + 1]; + //I'll estimate the new sampling synchronization asap + d_next_update = 0; + + for (int i = 0; i<2*d_max_deviation_px+1; i++){ + d_historic_line_corr[i] = 0; + d_abs_historic_line_corr[i] = 0; + } + for (int i = 0; i<2*d_max_deviation_px*d_Vtotal+1; i++){ + d_historic_frame_corr[i] = 0; + d_abs_historic_frame_corr[i] = 0; + } + + printf("[TEMPEST] Construction of ssamp_correction_impl with Htotal=%i and Vtotal=%i.\n", Htotal, Vtotal); + + } + + int + ssamp_correction_impl::interpolate_input(const gr_complex * in, + gr_complex * out, + int size) + { + int ii = 0; // input index + int oo = 0; // output index + + double s, f; + int incr; + while(oo < size) { + out[oo++] = d_inter.interpolate(&in[ii], d_samp_phase); + + s = d_samp_phase + d_samp_inc_rem + 1; + f = floor(s); + incr = (int)f; + d_samp_phase = s - f; + ii += incr; + } + + // return how many inputs we required to generate d_cp_length+d_fft_length outputs + return ii; + } + + int + ssamp_correction_impl::general_work (int noutput_items, + gr_vector_int &ninput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items) + { + const gr_complex *in = (const gr_complex *) input_items[0]; + gr_complex *out = (gr_complex *) output_items[0]; + gr::thread::scoped_lock l(d_mutex); + int required_for_interpolation = noutput_items; + + d_samp_inc_rem = d_new_interpolation_ratio_rem; + required_for_interpolation = interpolate_input(&in[0], &out[0], noutput_items); + consume_each (required_for_interpolation); + return noutput_items; + } + + } /* namespace tempest */ +} /* namespace gr */ + diff --git a/lib/ssamp_correction_impl.h b/lib/ssamp_correction_impl.h new file mode 100644 index 0000000..0f97b4e --- /dev/null +++ b/lib/ssamp_correction_impl.h @@ -0,0 +1,124 @@ +/* -*- c++ -*- */ +/* + * Copyright 2020 + * Federico "Larroca" La Rocca + * + * Instituto de Ingenieria Electrica, Facultad de Ingenieria, + * Universidad de la Republica, Uruguay. + * + * This 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. + * + * This software 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 this software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + * + */ + +#ifndef INCLUDED_TEMPEST_SSAMP_CORRECTION_IMPL_H +#define INCLUDED_TEMPEST_SSAMP_CORRECTION_IMPL_H + +#include +#include +#include + +namespace gr { + namespace tempest { + + class ssamp_correction_impl : public ssamp_correction + { + private: + int d_Htotal; + int d_Vtotal; + int d_correct_sampling; + float d_max_deviation; + //Counters + int d_frame_height_counter; + int d_frames_counter; + + //Fixed parameter + int d_discarded_amount_per_frame; + + + + // to accelerate the process, I'll only update the interpolation + // once every a random number of iterations with probability d_proba_of_updating + std::geometric_distribution d_dist; + std::minstd_rand d_gen; + + int d_next_update; + int d_required_for_interpolation; + + double d_samp_inc_rem; + double d_new_interpolation_ratio_rem; + double d_samp_phase; + + float d_alpha_samp_inc; + int d_max_deviation_px; + + // correlation with the last line + + gr_complex * d_current_line_corr; + gr_complex * d_historic_line_corr; + float * d_abs_historic_line_corr; + + // correlation with the last frame + + gr_complex * d_current_frame_corr; + gr_complex * d_historic_frame_corr; + float * d_abs_historic_frame_corr; + + bool d_stop_fine_sampling_synch; + // where is the line correlation peak + int d_peak_line_index; + + float d_alpha_corr; + + // the interpolating filter + gr::filter::mmse_fir_interpolator_cc d_inter; + + int interpolate_input(const gr_complex * in, gr_complex * out, int size); + + void update_interpolation_ratio(const gr_complex * in, int in_size); + + void estimate_peak_line_index(const gr_complex * in, int in_size); + + void set_iHsize_msg(pmt::pmt_t msg); + + void set_Vsize_msg(pmt::pmt_t msg); + + + void set_ena_msg(pmt::pmt_t msg); + gr::thread::mutex d_mutex; + void set_ratio_msg(pmt::pmt_t msg); + + public: + ssamp_correction_impl(int Htotal, int Vtotal, int correct_sampling, float max_deviation); + ~ssamp_correction_impl(); + + + void set_Htotal_Vtotal(int Htotal, int Vtotal) override; // Asynch Callback see: tempest_ssamp_correction.block.yml + + // Where all the action really happens + void forecast (int noutput_items, gr_vector_int &ninput_items_required); + + int general_work(int noutput_items, + gr_vector_int &ninput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items); + + }; + + } // namespace tempest +} // namespace gr + +#endif /* INCLUDED_TEMPEST_SSAMP_CORRECTION_IMPL_H */ + diff --git a/lib/sync_detector_impl.cc b/lib/sync_detector_impl.cc new file mode 100644 index 0000000..dddf086 --- /dev/null +++ b/lib/sync_detector_impl.cc @@ -0,0 +1,437 @@ +/* -*- c++ -*- */ +/* + * Copyright 2021 gr-tempest + * Pablo Bertrand + * Felipe Carrau + * Victoria Severi + * + * Instituto de Ingeniería Eléctrica, Facultad de Ingeniería, + * Universidad de la República, Uruguay. + * + * This software is based on Martin Marinov's TempestSDR. + * In particular, gaussianblur() function is entirely his, and + * find_best_beta and find_shift are implementations of + * findbestfit and findthesweetspot, respectively. + * + * This 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. + * + * This software 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 this software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include "sync_detector_impl.h" +#include +#include +#include + +namespace gr { + namespace tempest { + + sync_detector::sptr + sync_detector::make(int hscreen, int vscreen, int hblanking, int vblanking) + { + return gnuradio::get_initial_sptr + (new sync_detector_impl(hscreen, vscreen, hblanking, vblanking)); + } + + /* + * The private constructor + */ + sync_detector_impl::sync_detector_impl(int hscreen, int vscreen, int hblanking, int vblanking) + : gr::block("sync_detector", + gr::io_signature::make(1, 1, sizeof(gr_complex)), + gr::io_signature::make(1, 1, sizeof(gr_complex))) + { + //Fixed parameters + d_LOWPASS_COEFF_V = 0.2; + d_LOWPASS_COEFF_H = 0.1; + d_GAUSSIAN_ALPHA = 1.0; + + //Input data + d_hdisplay = hscreen; + d_vdisplay = vscreen; + d_hblanking = hblanking; + d_vblanking = vblanking; + d_Htotal = d_hdisplay + d_hblanking; + d_Vtotal = d_vdisplay + d_vblanking; + + //Blanking variables + d_blanking_size_h = d_hblanking; + d_blanking_size_v = d_vblanking; + d_blanking_index_h = 0; + d_blanking_index_v = 0; + d_working_index_h = 0; + + //Flags + d_frame_average_complete = 0; + d_frame_wait_for_blanking = 0; + d_frame_output = 0; + d_start_sync_detect = 0; + + //Counters + d_frame_height_counter = 0; + d_blanking_wait_counter = 0; + d_output_counter = 0; + + //Arrays + d_data_h = new float[d_Htotal]; + if (d_data_h == NULL) + std::cout << "cannot allocate memory: d_data_h" << std::endl; + d_avg_h_line = new float[d_Htotal]; + if (d_avg_h_line == NULL) + std::cout << "cannot allocate memory: d_data_h" << std::endl; + d_avg_v_line = new float[d_Vtotal]; + if (d_avg_v_line == NULL) + std::cout << "cannot allocate memory: d_data_h" << std::endl; + + // PMT ports + message_port_register_in(pmt::mp("en")); + + // PMT handlers + set_msg_handler(pmt::mp("en"), [this](const pmt::pmt_t& msg) {sync_detector_impl::set_ena_msg(msg); }); + + //Complete lines per call to the block will be generated + set_output_multiple(2*d_Htotal); + + // const int alignment_multiple = volk_get_alignment() / sizeof(gr_complex); + // set_alignment(std::max(1, alignment_multiple)); + } + + /* + * Our virtual destructor. + */ + sync_detector_impl::~sync_detector_impl() + { + delete [] d_data_h; + delete [] d_avg_h_line; + delete [] d_avg_v_line; + } + + + void sync_detector_impl::find_best_beta (const float *data, const int total_line_size, const double total_sum, const int blanking_size, double *beta, int *beta_index) + { + //////////////////////////////////////////////////////////////////////////////// + // Function that takes a full line (either horizontal or vertical) and a fixed// + // blanking size to calculate the medium energy difference between blanking // + // and screen (beta) for each possible blanking position. Returns the position// + // that granted the best beta and the value of beta itself. // + //////////////////////////////////////////////////////////////////////////////// + + const double screen_size_double = total_line_size - blanking_size; + const double blanking_size_double = blanking_size; + //Doubles will be used for accuracy, as well as for beta + + int i; + double curr_sum = 0.0; + for (i = 0; i < blanking_size; i++) curr_sum += data[i]; + + //Initial calculation of beta (blanking located on i=0) + const double beta_0 = (total_sum - curr_sum)/screen_size_double - curr_sum/blanking_size_double; + *beta = pow(beta_0, 2); + *beta_index = 0; + + const int screen_size = total_line_size - blanking_size; + + //Then the blanking is moved along the line by removing the first element and adding the next + //In each case, beta and it's position are only saved if the beta was improved + for (i = 0; i < (total_line_size - 1); i++) { + + const double data_to_remove = data[i]; + + const int to_remove_index = (i < screen_size) ? (i+blanking_size) : (i-screen_size); + const double data_to_add = data[to_remove_index]; + + curr_sum = curr_sum - data_to_remove + data_to_add; + const double beta_i = pow(((total_sum - curr_sum)/screen_size_double - curr_sum/blanking_size_double),2); + + if (beta_i > *beta) { + *beta = beta_i; + *beta_index = i; + } + } + } + + + float sync_detector_impl::calculate_gauss_coeff(float N, float i) + { + return(expf(-2.0f*d_GAUSSIAN_ALPHA*d_GAUSSIAN_ALPHA*i*i/(N*N))); + } + + + void sync_detector_impl::gaussianblur(float * data, int size) + { + //////////////////////////////////////////////////////////////////////////////// + // Marinov's gaussian blur application for a fixed-size array. // + //////////////////////////////////////////////////////////////////////////////// + + float norm = 0.0f, c_2 = 0.0f, c_1 = 0.0f, c0 = 0.0f, c1 = 0.0f, c2 = 0.0f; + if (norm == 0.0f) { + norm = calculate_gauss_coeff(5,-2) + calculate_gauss_coeff(5, -1) + calculate_gauss_coeff(5, 0) + calculate_gauss_coeff(5, 1) + calculate_gauss_coeff(5, 2); + c_2 = calculate_gauss_coeff(5, -2) / norm; + c_1 = calculate_gauss_coeff(5, -1) / norm; + c0 = calculate_gauss_coeff(5, 0) / norm; + c1 = calculate_gauss_coeff(5, 1) / norm; + c2 = calculate_gauss_coeff(5, 2) / norm; + } + + float p_2, p_1, p0, p1, p2, data_2, data_3, data_4; + if (size < 5) { + p_2 = data[0]; + p_1 = data[1 % size]; + p0 = data[2 % size]; + p1 = data[3 % size]; + p2 = data[4 % size]; + } else { + p_2 = data[0]; + p_1 = data[1]; + p0 = data[2]; + p1 = data[3]; + p2 = data[4]; + } + + data_2 = p0; + data_3 = p1; + data_4 = p2; + + int i; + const int sizem2 = size - 2; + const int sizem5 = size - 5; + for (i = 0; i < size; i++) { + + const int idtoupdate = (i < sizem2) ? (i + 2) : (i - sizem2); + const int nexti = (i < sizem5) ? (i + 5) : (i - sizem5); + + data[idtoupdate] = p_2 * c_2 + p_1 * c_1 + p0 * c0 + p1 * c1 + p2 * c2; + p_2 = p_1; + p_1 = p0; + p0 = p1; + p1 = p2; + + if (nexti < 2 || nexti >= 5) + p2 = data[nexti]; + else { + switch (nexti) { + case 2: + p2 = data_2; + break; + case 3: + p2 = data_3; + break; + case 4: + p2 = data_4; + break; + } + } + } + } + + void sync_detector_impl::find_shift (int *blanking_index, int *blanking_size, float *data, const int total_line_size, int min_blanking_size, double lowpasscoeff) + { + ////////////////////////////////////////////////////////////////////////////// + // Function that takes the line and runs find_best_beta for some possible // + // blanking sizes. Then takes the best location (and size) returned and // + // defines the new position for shifting using both the new calculation and // + // the previous information to prevent sudden big changes. // + ////////////////////////////////////////////////////////////////////////////// + + gaussianblur(data, total_line_size); + + double total_sum = 0.0; + for (int i = 0; i < total_line_size; i++) total_sum += data[i]; + int beta_index=0; + double beta; + int beta_index_temp; + double beta_temp; + + //Blanking sizes to test are established + int max_blanking_size = total_line_size >> 1; + if (min_blanking_size < 1) min_blanking_size = 1; + if ((*blanking_size) < min_blanking_size) (*blanking_size) = min_blanking_size; + else if ((*blanking_size) > max_blanking_size) (*blanking_size) = max_blanking_size; + int blanking_size_attempt[4] = {((*blanking_size)-4), ((*blanking_size)+4), ((*blanking_size)>>1), ((*blanking_size)<<1)}; + + //First search for beta using the initial blanking size + find_best_beta(data, total_line_size, total_sum, (*blanking_size), &beta, &beta_index); + + //Then test the rest of the sizes and save the best one found + for (int i = 0; i < 4; i++) { + if (blanking_size_attempt[i]>min_blanking_size && blanking_size_attempt[i]beta) { + beta = beta_temp; + beta_index = beta_index_temp; + (*blanking_size) = blanking_size_attempt[i]; + } + } + } + + const int half_line_size = total_line_size / 2; + + //Here is defined what would be the shift location (position found plus half of the blanking) + int raw_index = (beta_index + (*blanking_size) /2) % total_line_size; + + //Checking if the new shift differs excessively from the previous one + const int raw_diff = raw_index - *blanking_index; + + if (raw_diff > half_line_size) + *blanking_index += total_line_size; + + else if (raw_diff < -half_line_size) + raw_index += total_line_size; + + //The shift is updated considering both new and previous data (with the corresponding weights) + *blanking_index = ((int) round(raw_index * lowpasscoeff + (1.0 - lowpasscoeff) * (*blanking_index))) % ((int) total_line_size); + } + + void + sync_detector_impl::set_ena_msg(pmt::pmt_t msg) + { + gr::thread::scoped_lock l(d_mutex); + if (pmt::is_bool(msg)) { + bool en = pmt::to_bool(msg); + d_start_sync_detect = !en; + printf("Sync Detecting Start.\n"); + } else { + GR_LOG_WARN(d_logger, + "Sync Detector: Non-PMT type received, expecting Boolean PMT\n"); + } + } + + void + sync_detector_impl::forecast (int noutput_items, gr_vector_int &ninput_items_required) + { + int ninputs = ninput_items_required.size (); + for (int i = 0; i < ninputs; i++){ + ninput_items_required[i] = (2*d_Htotal + 1)*(noutput_items/(2*d_Htotal) +1); + } + } + + + int + sync_detector_impl::general_work (int noutput_items, + gr_vector_int &ninput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items) + { + const gr_complex *in = (const gr_complex *) input_items[0]; + gr_complex *out = (gr_complex *) output_items[0]; + + int delta_h, consumed = 0, out_amount = 0; + + gr::thread::scoped_lock l(d_mutex); + + if (d_start_sync_detect==0){ + memcpy(out,in,noutput_items*sizeof(gr_complex)); + out_amount=noutput_items; + consumed=noutput_items; + + } else { + + for (int line = 0; line < noutput_items/d_Htotal; line++) { + + volk_32fc_magnitude_32f(&d_data_h[0], &in[line*d_Htotal], d_Htotal); + + //From an horizontal line, we obtain the partial value of all elements of the + //horizontal average and the full value of a single element of the vertical average + for (int i=0 ; (i < d_Htotal) ; i++) + { + d_avg_h_line[i] = d_avg_h_line[i] + (d_data_h[i]/(d_Vtotal)); + d_avg_v_line[d_frame_height_counter] += (d_data_h[i]/(d_Htotal)); + } + + d_frame_height_counter ++; + + //When a complete frame is evaluated we have full averages and are ready to find the shift + if(d_frame_height_counter % d_Vtotal == 0) + d_frame_average_complete = 1; + + if(d_frame_average_complete) + { + //Finding the position that maximizes beta both horizontally and vertically for the frame + find_shift (&d_blanking_index_h, &d_blanking_size_h, d_avg_h_line, d_Htotal, d_Htotal*0.05f, d_LOWPASS_COEFF_H); + find_shift (&d_blanking_index_v, &d_blanking_size_v, d_avg_v_line, d_Vtotal, d_Vtotal*0.0005f, d_LOWPASS_COEFF_V); + + //As the information is used, we set up the variables to receive the next frame + d_frame_average_complete = 0; + d_frame_height_counter = 0; + d_blanking_wait_counter = 0; + + for (int i=0; (i + * Felipe Carrau + * Victoria Severi + * + * Instituto de Ingeniería Eléctrica, Facultad de Ingeniería, + * Universidad de la República, Uruguay. + * + * This software is based on Martin Marinov's TempestSDR. + * In particular, gaussianblur() function is entirely his, and + * find_best_beta and find_shift are implementations of + * findbestfit and findthesweetspot, respectively. + * + * This 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. + * + * This software 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 this software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifndef INCLUDED_SYNC_DETECTOR_IMPL_H +#define INCLUDED_SYNC_DETECTOR_IMPL_H + +#include + +namespace gr { + namespace tempest { + + class sync_detector_impl : public sync_detector + { + private: + //Input data + int d_hdisplay; + int d_vdisplay; + int d_hblanking; + int d_vblanking; + int d_Htotal; + int d_Vtotal; + + //Blanking variables + int d_blanking_size_h; + int d_blanking_size_v; + int d_blanking_index_h; + int d_blanking_index_v; + int d_working_index_h; + + //Flags + int d_frame_average_complete; + int d_frame_wait_for_blanking; + int d_frame_output; + + + //Counters + int d_frame_height_counter; + int d_blanking_wait_counter; + int d_output_counter; + + // Control flag, and its mutex + gr::thread::mutex d_mutex; + bool d_start_sync_detect; + + //Arrays + float * d_data_h; + float * d_avg_h_line; + float * d_avg_v_line; + + //Functions + void find_best_beta (const float *data, const int total_line_size, const double total_sum, const int blanking_size, double *beta, int *beta_index); + void find_shift (int *blanking_index, int *blanking_size, float *data, const int total_line_size, int min_blanking_size, double lowpasscoeff); + void gaussianblur(float * data, int size); + float calculate_gauss_coeff(float N, float i); + void set_ena_msg(pmt::pmt_t msg); + + //Fixed parameters + float d_LOWPASS_COEFF_V; + float d_LOWPASS_COEFF_H; + float d_GAUSSIAN_ALPHA; + + public: + sync_detector_impl(int hscreen, int vscreen, int hblanking, int vblanking); + ~sync_detector_impl(); + + // Where all the action really happens + void forecast (int noutput_items, gr_vector_int &ninput_items_required); + + int general_work(int noutput_items, + gr_vector_int &ninput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items); + + }; + + } // namespace sync_detector +} // namespace gr + +#endif /* INCLUDED_SYNC_DETECTOR_IMPL_H */ diff --git a/modes.txt b/modes.txt new file mode 100644 index 0000000..f36401d --- /dev/null +++ b/modes.txt @@ -0,0 +1,80 @@ + "PAL TV", 576, 625, 25 , + "640x400 @ 85Hz", 832, 445, 85 , + "720x400 @ 85Hz", 936, 446, 85 , + "640x480 @ 60Hz", 800, 525, 60 , + "640x480 @ 100Hz", 848, 509, 100 , + "640x480 @ 72Hz", 832, 520, 72 , + "640x480 @ 75Hz", 840, 500, 75 , + "640x480 @ 85Hz", 832, 509, 85 , + "768x576 @ 60 Hz", 976, 597, 60 , + "768x576 @ 72 Hz", 992, 601, 72 , + "768x576 @ 75 Hz", 1008, 602, 75 , + "768x576 @ 85 Hz", 1008, 605, 85 , + "768x576 @ 100 Hz", 1024, 611, 100 , + "800x600 @ 56Hz", 1024, 625, 56 , + "800x600 @ 60Hz", 1056, 628, 60 , + "800x600 @ 72Hz", 1040, 666, 72 , + "800x600 @ 75Hz", 1056, 625, 75 , + "800x600 @ 85Hz", 1048, 631, 85 , + "800x600 @ 100Hz", 1072, 636, 100 , + "1024x600 @ 60 Hz", 1312, 622, 60 , + "1024x768i @ 43Hz", 1264, 817, 43 , + "1024x768 @ 60Hz", 1344, 806, 60 , + "1024x768 @ 70Hz", 1328, 806, 70 , + "1024x768 @ 75Hz", 1312, 800, 75 , + "1024x768 @ 85Hz", 1376, 808, 85 , + "1024x768 @ 100Hz", 1392, 814, 100 , + "1024x768 @ 120Hz", 1408, 823, 120 , + "1152x864 @ 60Hz", 1520, 895, 60 , + "1152x864 @ 75Hz", 1600, 900, 75 , + "1152x864 @ 85Hz", 1552, 907, 85 , + "1152x864 @ 100Hz", 1568, 915, 100 , + "1280x768 @ 60 Hz", 1680, 795, 60 , + "1280x800 @ 60 Hz", 1680, 828, 60 , + "1280x960 @ 60Hz", 1800, 1000, 60 , + "1280x960 @ 75Hz", 1728, 1002, 75 , + "1280x960 @ 85Hz", 1728, 1011, 85 , + "1280x960 @ 100Hz", 1760, 1017, 100 , + "1280x1024 @ 60Hz", 1688, 1066, 60 , + "1280x1024 @ 75Hz", 1688, 1066, 75 , + "1280x1024 @ 85Hz", 1728, 1072, 85 , + "1280x1024 @ 100Hz", 1760, 1085, 100 , + "1280x1024 @ 120Hz", 1776, 1097, 120 , + "1368x768 @ 60 Hz", 1800, 795, 60 , + "1400x1050 @ 60Hz", 1880, 1082, 60 , + "1400x1050 @ 72 Hz", 1896, 1094, 72 , + "1400x1050 @ 75 Hz", 1896, 1096, 75 , + "1400x1050 @ 85 Hz", 1912, 1103, 85 , + "1400x1050 @ 100 Hz", 1928, 1112, 100 , + "1440x900 @ 60 Hz", 1904, 932, 60 , + "1440x1050 @ 60 Hz", 1936, 1087, 60 , + "1600x1000 @ 60Hz", 2144, 1035, 60 , + "1600x1000 @ 75Hz", 2160, 1044, 75 , + "1600x1000 @ 85Hz", 2176, 1050, 85 , + "1600x1000 @ 100Hz", 2192, 1059, 100 , + "1600x1024 @ 60Hz", 2144, 1060, 60 , + "1600x1024 @ 75Hz", 2176, 1069, 75 , + "1600x1024 @ 76Hz", 2096, 1070, 76 , + "1600x1024 @ 85Hz", 2176, 1075, 85 , + "1600x1200 @ 60Hz", 2160, 1250, 60 , + "1600x1200 @ 65Hz", 2160, 1250, 65 , + "1600x1200 @ 70Hz", 2160, 1250, 70 , + "1600x1200 @ 75Hz", 2160, 1250, 75 , + "1600x1200 @ 85Hz", 2160, 1250, 85 , + "1600x1200 @ 100 Hz", 2208, 1271, 100 , + "1680x1050 @ 60Hz reduced blanking ", 1840, 1080, 60 , + "1680x1050 @ 60Hz non-interlaced ", 2240, 1089, 60 , + "1680x1050 @ 60 Hz", 2256, 1087, 60 , + "1792x1344 @ 60Hz", 2448, 1394, 60 , + "1792x1344 @ 75Hz", 2456, 1417, 75 , + "1856x1392 @ 60Hz", 2528, 1439, 60 , + "1856x1392 @ 75Hz", 2560, 1500, 75 , + "1920x1080 @ 60Hz", 2576, 1125, 60 , + "1920x1080 @ 75Hz", 2608, 1126, 75 , + "1920x1200 @ 60Hz", 2592, 1242, 60 , + "1920x1200 @ 75Hz", 2624, 1253, 75 , + "1920x1440 @ 60Hz", 2600, 1500, 60 , + "1920x1440 @ 75Hz", 2640, 1500, 75 , + "1920x2400 @ 25Hz", 2048, 2434, 25 , + "1920x2400 @ 30Hz", 2044, 2434, 30 , + "2048x1536 @ 60Hz", 2800, 1589, 60 , diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt new file mode 100644 index 0000000..99b8118 --- /dev/null +++ b/python/CMakeLists.txt @@ -0,0 +1,64 @@ +# Copyright 2011 Free Software Foundation, Inc. +# +# This file was generated by gr_modtool, a tool from the GNU Radio framework +# This file is a part of gr-tempest +# +# 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 python install macros +######################################################################## +include(GrPython) +if(NOT PYTHONINTERP_FOUND) + return() +endif() + +######################################################################## +# Install python sources +######################################################################## +GR_PYTHON_INSTALL( + FILES + __init__.py + image_source.py + message_to_var.py + tempest_msgbtn.py + TMDS_image_source.py + binary_serializer.py + TMDS_decoder.py DESTINATION ${GR_PYTHON_DIR}/tempest +) + +######################################################################## +# Handle the unit tests +######################################################################## +include(GrTest) + +set(GR_TEST_TARGET_DEPS gnuradio-tempest) +set(GR_TEST_PYTHON_DIRS ${CMAKE_BINARY_DIR}/swig) +GR_ADD_TEST(qa_sampling_synchronization ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_sampling_synchronization.py) +GR_ADD_TEST(qa_framing ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_framing.py) +GR_ADD_TEST(qa_Hsync ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_Hsync.py) +GR_ADD_TEST(qa_image_source ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_image_source.py) +GR_ADD_TEST(qa_normalize_flow ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_normalize_flow.py) +GR_ADD_TEST(qa_fine_sampling_synchronization ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_fine_sampling_synchronization.py) +GR_ADD_TEST(qa_sync_detector ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_sync_detector.py) +GR_ADD_TEST(qa_frame_drop ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_frame_drop.py) +GR_ADD_TEST(qa_infer_resolution ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_infer_resolution.py) +GR_ADD_TEST(qa_fft_peak_fine_sampling_sync ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_fft_peak_fine_sampling_sync.py) +GR_ADD_TEST(qa_infer_screen_resolution ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_infer_screen_resolution.py) +GR_ADD_TEST(qa_tempest_msgbtn ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_tempest_msgbtn.py) +GR_ADD_TEST(qa_ssamp_correction ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_ssamp_correction.py) +GR_ADD_TEST(qa_TMDS_image_source ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_TMDS_image_source.py) +GR_ADD_TEST(qa_binary_serializer ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_binary_serializer.py) diff --git a/python/DTutils.py b/python/DTutils.py new file mode 100644 index 0000000..43feef0 --- /dev/null +++ b/python/DTutils.py @@ -0,0 +1,417 @@ +import numpy as np +from matplotlib import pyplot as plt +from scipy import signal +from scipy.fft import fft, ifft, fftshift + +def autocorr(x): + """Compute autocorrelation function of 1-D array + + Input: + x: 1-D array + + Output: + autocorr: autocorrelation function of x + """ + + # Use FFT method, which has more computing efectiveness for 1-D numpy arrays + autocorr = signal.correlate(x,x,mode='full', method= 'fft') + + # Fix some shifts due FFT + half_idx =int(autocorr.size/2) + max_ind = np.argmax(autocorr[half_idx:])+half_idx + autocorr = autocorr[max_ind:] + # Normalise output + return autocorr/autocorr[0] + + +def uint8_to_binarray(integer): + """Convert integer into fixed-length 8-bit binary array. LSB in [0]. + Extended and modified code from https://github.com/projf/display_controller/blob/master/model/tmds.py + """ + + b_array = [int(i) for i in reversed(bin(integer)[2:])] + b_array += [0]*(8-len(b_array)) + return b_array + +def uint16_to_binarray(integer): + """Convert integer into fixed-length 16-bit binary array. LSB in [0]. + Extended and modified code from https://github.com/projf/display_controller/blob/master/model/tmds.py + """ + b_array = [int(i) for i in reversed(bin(integer)[2:])] + b_array += [0]*(16-len(b_array)) + return b_array + +def binarray_to_uint(binarray): + + array = binarray[::-1] + num = array[0] + for n in range(1,len(binarray)): + num = (num << 1) + array[n] + + return num + +def TMDS_pixel (pix,cnt=0): + """8bit pixel TMDS coding + + Inputs: + - pix: 8-bit pixel + - cnt: 0's and 1's balance. Default in 0 (balanced) + + Outputs: + - pix_out: TDMS coded 16-bit pixel (only 10 useful) + - cnt: 0's and 1's balance updated with new pixel coding + + """ + # Convert 8-bit pixel to binary list D + D = uint8_to_binarray(pix) + + # Initialize output q + qm = [D[0]] + + # 1's unbalanced condition at current pixel + N1_D = D.count(1) + + if N1_D>4 or (N1_D==4 and not(D[0])): + + # XNOR of consecutive bits + for k in range(1,8): + qm.append( not(qm[k-1] ^ D[k]) ) + qm.append(0) + + else: + # XOR of consecutive bits + for k in range(1,8): + qm.append( qm[k-1] ^ D[k] ) + qm.append(1) + + # Initialize output qout + qout = qm.copy() + + # Unbalanced condition with previous and current pixels + N1_qm = qm[:8].count(1) + N0_qm = 8 - N1_qm + + if cnt==0 or N1_qm==4: + + qout.append(not(qm[8])) + qout[:8]=qm[:8] if qm[8] else np.logical_not(qm[:8]) + + if not(qm[8]): + cnt += N0_qm - N1_qm + else: + cnt += N1_qm - N0_qm + + else: + + if (cnt>0 and N1_qm>4) or (cnt<0 and N1_qm<4): + qout.append(1) + qout[:8] = np.logical_not(qm[:8]) + cnt += 2*qm[8] +N0_qm -N1_qm + else: + qout.append(0) + cnt += -2*(not(qm[8])) + N1_qm - N0_qm + + # Return the TMDS coded pixel as uint and 0's y 1's balance + return binarray_to_uint(qout), cnt + +def TMDS_encoding_original (I, blanking = False): + """TMDS image coding + + Inputs: + - I: 2-D image array + - blanking: Boolean that specifies if horizontal and vertical blanking is applied + + Output: + - I_c: TDMS coded 16-bit image (only 10 useful) + + """ + + # Create "ghost dimension" if gray-scale image (not RGB) + if len(I.shape)!= 3: + chs = 1 + else: + chs = I.shape[2] + + # Get image resolution + v_in, h_in = I.shape[:2] + + if blanking: + # Get blanking resolution for input image + + v = (v_in==1080)*1125 + (v_in==720)*750 + (v_in==600)*628 + (v_in==480)*525 + h = (h_in==1920)*2200 + (h_in==1280)*1650 + (h_in==800)*1056 + (h_in==640)*800 + + vdiff = v - v_in + hdiff = h - h_in + + # Create image with blanking and change type to uint16 + # Assuming the blanking corresponds to 10bit number [0, 0, 1, 0, 1, 0, 1, 0, 1, 1] (LSB first) + I_c = 852*np.ones((v,h,chs)).astype('uint16') + + else: + vdiff = 0 + hdiff = 0 + I_c = np.zeros((v_in,h_in,chs)).astype('uint16') + + # Iterate over channels and pixels + for c in range(chs): + for i in range(v_in): + cnt=[0,0,0] + for j in range(h_in): + # Get pixel and code it TMDS between blanking + pix = I[i,j,c] + I_c[i + vdiff//2 , j + hdiff//2, c], cnt[c] = TMDS_pixel (pix,cnt[c]) + + return I_c + +def TMDS_pixel_cntdiff (pix,cnt=0): + """8bit pixel TMDS coding + + Inputs: + - pix: 8-bit pixel + - cnt: 0's and 1's balance. Default in 0 (balanced) + + Outputs: + - pix_out: TDMS coded 16-bit pixel (only 10 useful) + - cntdiff: balance difference given by the actual coded pixel + + """ + # Convert 8-bit pixel to binary list D + D = uint8_to_binarray(pix) + + # Initialize output q + qm = [D[0]] + + # 1's unbalanced condition at current pixelo + N1_D = D.count(1) + + if N1_D>4 or (N1_D==4 and not(D[0])): + + # XNOR of consecutive bits + for k in range(1,8): + qm.append( not(qm[k-1] ^ D[k]) ) + qm.append(0) + + else: + # XOR of consecutive bits + for k in range(1,8): + qm.append( qm[k-1] ^ D[k] ) + qm.append(1) + + # Initialize output qout + qout = qm.copy() + + # Unbalanced condition with previous and current pixels + N1_qm = qm[:8].count(1) + N0_qm = 8 - N1_qm + + if cnt==0 or N1_qm==4: + + qout.append(not(qm[8])) + qout[:8]=qm[:8] if qm[8] else [not(val) for val in qm[:8]] + + if not(qm[8]): + cnt_diff = N0_qm - N1_qm + else: + cnt_diff = N1_qm - N0_qm + + else: + + if (cnt>0 and N1_qm>4) or (cnt<0 and N1_qm<4): + qout.append(1) + qout[:8] = [not(val) for val in qm[:8]] + cnt_diff = 2*qm[8] +N0_qm -N1_qm + else: + qout.append(0) + cnt_diff = -2*(not(qm[8])) + N1_qm - N0_qm + + # Return the TMDS coded pixel as uint and 0's y 1's balance difference + uint_out = binarray_to_uint(qout) + return uint_out, cnt_diff + + +### Create TMDS LookUp Tables for fast encoding (3 times faster than the other implementation) +byte_range = np.arange(256) +# Initialize pixel coding and cnt-difference arrays +TMDS_pix_table = np.zeros((256,3),dtype='uint16') +TMDS_cntdiff_table = np.zeros((256,3),dtype='int8') + +for byte in byte_range: + p0,p_null, p1 = TMDS_pixel_cntdiff(byte,-1),TMDS_pixel_cntdiff(byte,0),TMDS_pixel_cntdiff(byte,1) # 0's and 1's unbalance respect. + TMDS_pix_table[byte,0] = p0[0] + TMDS_pix_table[byte,1] = p_null[0] + TMDS_pix_table[byte,2] = p1[0] + TMDS_cntdiff_table[byte,0] = p0[1] + TMDS_cntdiff_table[byte,1] = p_null[1] + TMDS_cntdiff_table[byte,2] = p1[1] + +def pixel_fastencoding(pix,cnt=0): + """8bit pixel TMDS fast coding + + Inputs: + - pix: 8-bit pixel + - cnt: 0's and 1's balance. Default in 0 (balanced) + + Outputs: + - pix_out: TDMS coded 16-bit pixel (only 10 useful) + - cnt: 0's and 1's balance updated with new pixel coding + + """ + balance_idx = int(np.sign(cnt))+1 + pix_out = TMDS_pix_table[pix,balance_idx] + cnt += TMDS_cntdiff_table[pix,balance_idx] + + return pix_out, cnt + +def TMDS_encoding (I, blanking = False): + """TMDS image coding + + Inputs: + - I: 3-D image array (v_size, h_size, channels) + - blanking: Boolean that specifies if horizontal and vertical blanking is applied + + Output: + - I_c: TDMS coded 16-bit image (only 10 useful) + + """ + + # Create "ghost dimension" if I is gray-scale image (not RGB) + if len(I.shape)!= 3: + I = np.repeat(I[:, :, np.newaxis], 3, axis=2).astype('uint8') + + chs = 3 + + # Get image resolution + v_in, h_in = I.shape[:2] + + if blanking: + # Get blanking resolution for input image + + v = (v_in==1080)*1125 + (v_in==720)*750 + (v_in==600)*628 + (v_in==480)*525 + h = (h_in==1920)*2200 + (h_in==1280)*1650 + (h_in==800)*1056 + (h_in==640)*800 + + vdiff = v - v_in + hdiff = h - h_in + + # Create image with blanking and change type to uint16 + # Assuming the blanking corresponds to 10bit number [0, 0, 1, 0, 1, 0, 1, 0, 1, 1] (LSB first) + I_c = 852*np.ones((v,h,chs)).astype('uint16') + + else: + vdiff = 0 + hdiff = 0 + I_c = np.zeros((v_in,h_in,chs)).astype('uint16') + + # Iterate over channels and pixels + for c in range(chs): + for i in range(v_in): + cnt = [0,0,0] + for j in range(h_in): + # Get pixel and code it TMDS between blanking + pix = I[i,j,c] + I_c[i + vdiff//2 , j + hdiff//2, c], cnt[c] = pixel_fastencoding (pix,cnt[c]) + + return I_c + +def DecTMDS_pixel (pix): + """10-bit pixel TMDS decoding + + Inputs: + - pix: 16-bit pixel (only 10 first bits useful) + + Output: + - pix_out: 8-bit TMDS decoded pixel + + """ + + + D = uint16_to_binarray(pix)[:10] + + if D[9]: + D[:8] = np.logical_not(D[:8]) + + Q = D.copy()[:8] + + if D[8]: + for k in range(1,8): + Q[k] = D[k] ^ D[k-1] + else: + for k in range(1,8): + Q[k] = not(D[k] ^ D[k-1]) + + # Return pixel as uint + return binarray_to_uint(Q) + +def TMDS_decoding (Ic): + """Image TMDS decoding + + Inputs: + - Ic: TMDS coded image + + Output: + - Idec: 8-bit decoded image + + """ + + # Create "ghost dimension" if gray-scale image (not RGB) + if len(Ic.shape)!= 3: + Ic = Ic.reshape(Ic.shape[0],Ic.shape[1],1) + + Idec = Ic.copy() + # Get image dimensions + Nx, Ny, Nz = Ic.shape + + # Iterate over channels and pixels + for c in np.arange(Nz): + for i in np.arange(Nx): + for j in np.arange(Ny): + + # Get pixel and use TMDS decoding + pix = Ic[i,j,c] + Idec[i,j,c] = DecTMDS_pixel (pix) + + return Idec + + +def TMDS_serial(I): + ''' + Serialize an image as an 1D binary array given a 10bit pixel value. + + Inputs: + - I: TMDS image to serialize. Pixel values must be between 0 and 1023 + + Output: + - Iserials: 1D binary array per image channel which represents + the voltage value to be transmitted + + ''' + assert np.min(I)>=0 and np.max(I)<= 1023, "Pixel values must be between 0 and 1023" + + # Initialize lists per channel + Iserials = [] + n_rows,n_columns, n_channels = I.shape + + # Iterate over pixel + for c in range(n_channels): + channel_list = [] + for i in range(n_rows): + for j in range(n_columns): + # Get pixel value and cast it as binary string + binstring = bin(I[i,j,c])[2:] + # Fill string with 0's to get length 10 + binstring = '0'*(10-len(binstring))+binstring + # Re-order string for LSB first + binstring = binstring[::-1] + binarray = [bin for bin in binstring] + # Append every bit in the string + for binary in binarray: + channel_list.append(binary) + + Iserials.append(channel_list) + + # Digital to analog value mapping: [0,1]-->[-A,A] (A=1) + Iserials = 2*np.array(Iserials,dtype='int32') - 1 + + del(channel_list) + + return Iserials diff --git a/python/TMDS_decoder.py b/python/TMDS_decoder.py new file mode 100644 index 0000000..fb0870d --- /dev/null +++ b/python/TMDS_decoder.py @@ -0,0 +1,91 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# Copyright 2020 +# Federico "Larroca" La Rocca +# +# Instituto de Ingenieria Electrica, Facultad de Ingenieria, +# Universidad de la Republica, Uruguay. +# +# This 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. +# +# This software 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 this software; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. +# +# + + +import numpy as np +from gnuradio import gr + +def binarray_to_uint(binarray): + + num = binarray[0] + for n in range(1,len(binarray)): + num = (num << 1) + binarray[n] + return num + +def DecTMDS_pixel (D): + """10-bit pixel TMDS decoding + + Inputs: + - D: binary list + + Output: + - pix_out: 8-bit TMDS decoded pixel + + """ + + if D[9]: + D[:8] = [not(val) for val in D[:8]] + + Q = D.copy()[:8] + + if D[8]: + for k in range(1,8): + Q[k] = D[k] ^ D[k-1] + else: + for k in range(1,8): + Q[k] = not(D[k] ^ D[k-1]) + + # Return pixel as uint + return binarray_to_uint(Q) + +class TMDS_decoder(gr.basic_block): + """ + Outputs a pixel value grouping 10 bits and using TMDS decoding. + Input values must be either 0 or 1. + """ + def __init__(self): + gr.basic_block.__init__(self, + name="TMDS_decoder", + in_sig=[np.float32], + out_sig=[np.float32]) + self.binarray = [] + + def forecast(self, noutput_items, ninput_items_required): + #setup size of input_items[i] for work call + for i in range(len(ninput_items_required)): + ninput_items_required[i] = noutput_items + + def general_work(self, input_items, output_items): + out_now = 0 + last_input = input_items[0][-1] + self.binarray.append(int(last_input)) + if len(self.binarray) == 10: + out = output_items[0] + out[:] = DecTMDS_pixel(self.binarray) + self.binarray = [] + out_now = 1 + self.consume_each(1) # consume(0, len(input_items[0])) + return out_now diff --git a/python/TMDS_image_source.py b/python/TMDS_image_source.py new file mode 100644 index 0000000..e34a461 --- /dev/null +++ b/python/TMDS_image_source.py @@ -0,0 +1,342 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# Copyright 2020 +# Federico "Larroca" La Rocca +# +# Instituto de Ingenieria Electrica, Facultad de Ingenieria, +# Universidad de la Republica, Uruguay. +# +# This 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. +# +# This software 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 this software; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. +# +# + + +# import numpy +# from gnuradio import gr + +import numpy as np +from skimage.io import imread +# from DTutils import TMDS_pix_table, TMDS_cntdiff_table, pixel_fastencoding, TMDS_encoding +from gnuradio import gr + +def uint8_to_binarray(integer): + """Convert integer into fixed-length 8-bit binary array. LSB in [0]. + Extended and modified code from https://github.com/projf/display_controller/blob/master/model/tmds.py + """ + + b_array = [int(i) for i in reversed(bin(integer)[2:])] + b_array += [0]*(8-len(b_array)) + return b_array + +def uint16_to_binarray(integer): + """Convert integer into fixed-length 16-bit binary array. LSB in [0]. + Extended and modified code from https://github.com/projf/display_controller/blob/master/model/tmds.py + """ + b_array = [int(i) for i in reversed(bin(integer)[2:])] + b_array += [0]*(16-len(b_array)) + return b_array + +def binarray_to_uint(binarray): + + array = binarray[::-1] + num = array[0] + for n in range(1,len(binarray)): + num = (num << 1) + array[n] + + return num + +def TMDS_pixel (pix,cnt=0): + """8bit pixel TMDS coding + + Inputs: + - pix: 8-bit pixel + - cnt: 0's and 1's balance. Default in 0 (balanced) + + Outputs: + - pix_out: TDMS coded 16-bit pixel (only 10 useful) + - cnt: 0's and 1's balance updated with new pixel coding + + """ + # Convert 8-bit pixel to binary list D + D = uint8_to_binarray(pix) + + # Initialize output q + qm = [D[0]] + + # 1's unbalanced condition at current pixel + N1_D = D.count(1) + + if N1_D>4 or (N1_D==4 and not(D[0])): + + # XNOR of consecutive bits + for k in range(1,8): + qm.append( not(qm[k-1] ^ D[k]) ) + qm.append(0) + + else: + # XOR of consecutive bits + for k in range(1,8): + qm.append( qm[k-1] ^ D[k] ) + qm.append(1) + + # Initialize output qout + qout = qm.copy() + + # Unbalanced condition with previous and current pixels + N1_qm = qm[:8].count(1) + N0_qm = 8 - N1_qm + + if cnt==0 or N1_qm==4: + + qout.append(not(qm[8])) + qout[:8]=qm[:8] if qm[8] else np.logical_not(qm[:8]) + + if not(qm[8]): + cnt += N0_qm - N1_qm + else: + cnt += N1_qm - N0_qm + + else: + + if (cnt>0 and N1_qm>4) or (cnt<0 and N1_qm<4): + qout.append(1) + qout[:8] = np.logical_not(qm[:8]) + cnt += 2*qm[8] +N0_qm -N1_qm + else: + qout.append(0) + cnt += -2*(not(qm[8])) + N1_qm - N0_qm + + # Return the TMDS coded pixel as uint and 0's y 1's balance + return binarray_to_uint(qout), cnt + + +def TMDS_pixel_cntdiff (pix,cnt=0): + """8bit pixel TMDS coding + + Inputs: + - pix: 8-bit pixel + - cnt: 0's and 1's balance. Default in 0 (balanced) + + Outputs: + - pix_out: TDMS coded 16-bit pixel (only 10 useful) + - cntdiff: balance difference given by the actual coded pixel + + """ + # Convert 8-bit pixel to binary list D + D = uint8_to_binarray(pix) + + # Initialize output q + qm = [D[0]] + + # 1's unbalanced condition at current pixelo + N1_D = D.count(1) + + if N1_D>4 or (N1_D==4 and not(D[0])): + + # XNOR of consecutive bits + for k in range(1,8): + qm.append( not(qm[k-1] ^ D[k]) ) + qm.append(0) + + else: + # XOR of consecutive bits + for k in range(1,8): + qm.append( qm[k-1] ^ D[k] ) + qm.append(1) + + # Initialize output qout + qout = qm.copy() + + # Unbalanced condition with previous and current pixels + N1_qm = qm[:8].count(1) + N0_qm = 8 - N1_qm + + if cnt==0 or N1_qm==4: + + qout.append(not(qm[8])) + qout[:8]=qm[:8] if qm[8] else [not(val) for val in qm[:8]] + + if not(qm[8]): + cnt_diff = N0_qm - N1_qm + else: + cnt_diff = N1_qm - N0_qm + + else: + + if (cnt>0 and N1_qm>4) or (cnt<0 and N1_qm<4): + qout.append(1) + qout[:8] = [not(val) for val in qm[:8]] + cnt_diff = 2*qm[8] +N0_qm -N1_qm + else: + qout.append(0) + cnt_diff = -2*(not(qm[8])) + N1_qm - N0_qm + + # Return the TMDS coded pixel as uint and 0's y 1's balance difference + uint_out = binarray_to_uint(qout) + return uint_out, cnt_diff + + +### Create TMDS LookUp Tables for fast encoding (3 times faster than the other implementation) +byte_range = np.arange(256) +# Initialize pixel coding and cnt-difference arrays +TMDS_pix_table = np.zeros((256,3),dtype='uint16') +TMDS_cntdiff_table = np.zeros((256,3),dtype='int8') + +for byte in byte_range: + p0,p_null, p1 = TMDS_pixel_cntdiff(byte,-1),TMDS_pixel_cntdiff(byte,0),TMDS_pixel_cntdiff(byte,1) # 0's and 1's unbalance respect. + TMDS_pix_table[byte,0] = p0[0] + TMDS_pix_table[byte,1] = p_null[0] + TMDS_pix_table[byte,2] = p1[0] + TMDS_cntdiff_table[byte,0] = p0[1] + TMDS_cntdiff_table[byte,1] = p_null[1] + TMDS_cntdiff_table[byte,2] = p1[1] + +def pixel_fastencoding(pix,cnt=0): + """8bit pixel TMDS fast coding + + Inputs: + - pix: 8-bit pixel + - cnt: 0's and 1's balance. Default in 0 (balanced) + + Outputs: + - pix_out: TDMS coded 16-bit pixel (only 10 useful) + - cnt: 0's and 1's balance updated with new pixel coding + + """ + balance_idx = int(np.sign(cnt))+1 + pix_out = TMDS_pix_table[pix,balance_idx] + cnt += TMDS_cntdiff_table[pix,balance_idx] + + return pix_out, cnt + +def TMDS_encoding (I, blanking = False): + """TMDS image coding + + Inputs: + - I: 3-D image array (v_size, h_size, channels) + - blanking: Boolean that specifies if horizontal and vertical blanking is applied or not + + Output: + - I_c: TDMS coded 16-bit image (only 10 useful) + + """ + + # Create "ghost dimension" if I is gray-scale image (not RGB) + if len(I.shape)!= 3: + I = np.repeat(I[:, :, np.newaxis], 3, axis=2).astype('uint8') + + chs = 3 + + # Get image resolution + v_in, h_in = I.shape[:2] + + if blanking: + # Get blanking resolution for input image + + v = (v_in==1080)*1125 + (v_in==720)*750 + (v_in==600)*628 + (v_in==480)*525 + h = (h_in==1920)*2200 + (h_in==1280)*1650 + (h_in==800)*1056 + (h_in==640)*800 + + vdiff = v - v_in + hdiff = h - h_in + + # Create image with blanking and change type to uint16 + # Assuming the blanking corresponds to 10bit number [0, 0, 1, 0, 1, 0, 1, 0, 1, 1] (LSB first) + I_c = 852*np.ones((v,h,chs)).astype('uint16') + + else: + vdiff = 0 + hdiff = 0 + I_c = 255*np.ones((v_in,h_in,chs)).astype('uint16') + + # Iterate over channels and pixels + for c in range(chs): + for i in range(v_in): + cnt = [0,0,0] + for j in range(h_in): + # Get pixel and code it TMDS between blanking + pix = I[i,j,c] + I_c[i + vdiff//2 , j + hdiff//2, c], cnt[c] = pixel_fastencoding (pix,cnt[c]) + + return I_c + +class TMDS_image_source(gr.sync_block): + """ + TMDS encoding for the input image. Produces blanking + """ + + def __init__(self, image_file, mode): + gr.sync_block.__init__(self, + name="TMDS_image_source", + in_sig=None, + out_sig=[np.float32, np.float32, np.float32]) + + self.image_file = image_file + self.mode = mode + self.load_image() + + def load_image(self): + + """decode the image into a buffer""" + self.image_data = imread(self.image_file) + + if (self.mode==1 or self.mode==3): + self.image_data = TMDS_encoding(self.image_data,blanking = True) + print('TMDS encoding ready!!!') + else: + v_in, h_in = self.image_data.shape[:2] + v = (v_in==1080)*1125 + (v_in==720)*750 + (v_in==600)*628 + (v_in==480)*525 + h = (h_in==1920)*2200 + (h_in==1280)*1650 + (h_in==800)*1056 + (h_in==640)*800 + # image_blank = 255*np.ones((1125,2200,3)) + image_blank = np.zeros((v,h,3)) + hdiff = (h-h_in)//2 + vdiff = (v-v_in)//2 + image_blank[vdiff:vdiff+v_in,hdiff:hdiff+h_in] = self.image_data[:,:,:3] + self.image_data = image_blank[:,:,:3] + + + (self.image_height, self.image_width) = self.image_data.shape[:2] + + self.set_output_multiple(self.image_width) + + + self.image_data_red = list(self.image_data[:,:,0].flatten()) + self.image_data_green = list(self.image_data[:,:,1].flatten()) + self.image_data_blue = list(self.image_data[:,:,2].flatten()) + self.image_len = len(self.image_data) + self.line_num = 0 + + + def work(self, input_items, output_items): + + if (self.line_num >= self.image_height) and (self.mode==3 or self.mode==4): + print('Work done. Now you should stop the flowgraph ;)') + return(-1) + + out_red = output_items[0] + out_red[:self.image_width] = self.image_data_red[self.image_width*self.line_num: self.image_width*(1+self.line_num)] + + out_green = output_items[1] + out_green[:self.image_width] = self.image_data_green[self.image_width*self.line_num: self.image_width*(1+self.line_num)] + + out_blue = output_items[2] + out_blue[:self.image_width] = self.image_data_blue[self.image_width*self.line_num: self.image_width*(1+self.line_num)] + + self.line_num += 1 + if (self.mode==1 or self.mode==2) and (self.line_num >= self.image_height): + self.line_num = 0 + + return self.image_width diff --git a/python/__init__.py b/python/__init__.py new file mode 100644 index 0000000..58c3e37 --- /dev/null +++ b/python/__init__.py @@ -0,0 +1,42 @@ +# +# Copyright 2008,2009 Free Software Foundation, Inc. +# +# This application 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. +# +# This application 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 this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# + +# The presence of this file turns this directory into a Python package + +''' +This is the GNU Radio TEMPEST module. Place your Python package +description here (python/__init__.py). +''' +from __future__ import unicode_literals + +# import swig generated symbols into the tempest namespace +try: + # this might fail if the module is python-only + from .tempest_swig import * +except ImportError: + pass + +# import any pure python here +from .image_source import image_source +from .message_to_var import message_to_var +from .tempest_msgbtn import tempest_msgbtn +from .TMDS_image_source import TMDS_image_source +from .binary_serializer import binary_serializer +from .TMDS_decoder import TMDS_decoder + +# diff --git a/python/__pycache__/DTutils.cpython-38.pyc b/python/__pycache__/DTutils.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..eb4fd11659685d9fd1e231128a22e2ea8f677dbc GIT binary patch literal 8728 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 RriTA%ZcoqLuwJq*{||%(;}ie@ literal 0 HcmV?d00001 diff --git a/python/binary_serializer.py b/python/binary_serializer.py new file mode 100644 index 0000000..c0bcfed --- /dev/null +++ b/python/binary_serializer.py @@ -0,0 +1,97 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# Copyright 2020 +# Federico "Larroca" La Rocca +# +# Instituto de Ingenieria Electrica, Facultad de Ingenieria, +# Universidad de la Republica, Uruguay. +# +# This 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. +# +# This software 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 this software; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. +# +# + + +import numpy as np +from gnuradio import gr + + +def bin_serializer(num, N): + ''' + Serialize non-negative number to binary list. + + Inputs: + - num: number to serialize. The value must be between 0 and 2^N - 1 + - N: amount of bits to represent the binary number + + Output: + - binlist: binary list which represents the number in bits (LSB first) + + ''' + + # Cast number as integer + num = int(num) + + assert num<2**N and num>=0, "Number value must be between 0 and 2^N - 1" + + # Initialize lists + num_bits = [] + # Cast number to binary + binstring = bin(num)[2:] + # Fill string with 0's to get length N + binstring = '0'*(N-len(binstring))+binstring + # Re-order string for LSB first + binstring = binstring[::-1] + # Cast the list to numpy uint8 + binlist = list( map( int, binstring ) ) + + return binlist + +class binary_serializer(gr.interp_block): + """ + Cast the input float to integer and outputs the binary representation of the number serialized (LSB first). + + Parameter N is the number of bits to be used for the binary representation. + + Make sure the input number 'num' + satisfies num in {0, 2^N - 1} + """ + + def __init__(self, N): + gr.interp_block.__init__(self, + name="binary_serializer", + in_sig=[np.float32], + out_sig=[np.float32], + interp=N) + # self.set_relative_rate(N) + + self.N = N + + + def work(self, input_items, output_items): + + in_float = input_items[0] + out_list = output_items[0] + + tmp_arr = np.array([]) + for in_item in in_float: + tmp_arr = np.concatenate((tmp_arr,np.array(bin_serializer(in_item, self.N)))) + + out_list[:self.N*len(in_float)] = tmp_arr + + + return self.N*len(in_float) + diff --git a/python/image_source.py b/python/image_source.py new file mode 100644 index 0000000..b09f950 --- /dev/null +++ b/python/image_source.py @@ -0,0 +1,97 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# Copyright 2015,2016 Chris Kuethe + +# Copyright 2020 (minor changes to generate blanking) +# Federico "Larroca" La Rocca +# +# Instituto de Ingenieria Electrica, Facultad de Ingenieria, +# Universidad de la Republica, Uruguay. +# +# This 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. +# +# This software 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 this software; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. +# +# + +import numpy +from gnuradio import gr +from PIL import Image +from PIL import ImageOps + +class image_source(gr.sync_block): + """ + Given an image file readable by Python-Imaging, this block + produces a superposition of the three colors, plus the blanking around it + (and scales it to match the desired resolution). + """ + + image_file = None + repeatmode = 1 + image_data = None + + def __init__(self, image_file, Hvisible, Vvisible, Htotal, Vtotal, repeatmode): + gr.sync_block.__init__(self, + name="image_source", + in_sig=None, + out_sig=[numpy.float32]) + + self.image_file = image_file + self.repeatmode = repeatmode + self.Vvisible = Vvisible + self.Hvisible = Hvisible + self.Htotal = Htotal + self.Vtotal = Vtotal + self.Hblanking = (Htotal - Hvisible)//2 + self.Vblanking = (Vtotal - Vvisible)//2 + self.load_image() + + def load_image(self): + """decode the image into a buffer""" + self.image_data = Image.open(self.image_file) + self.image_data = ImageOps.grayscale(self.image_data) + + + newsize = (self.Hvisible, self.Vvisible) + self.image_data = self.image_data.resize(newsize) + + # I create the blanking + background = Image.new('F', (self.Htotal, self.Vtotal), (0)) + # I paste the image with the blankins + offset = (self.Hblanking, self.Vblanking) + background.paste(self.image_data, offset) + self.image_data = background + + (self.image_width, self.image_height) = self.image_data.size + + self.set_output_multiple(self.image_width) + + self.image_data = list(self.image_data.getdata()) + self.image_len = len(self.image_data) + self.line_num = 0 + + + def work(self, input_items, output_items): + out = output_items[0] + out[:self.image_width] = self.image_data[self.image_width*self.line_num: self.image_width*(1+self.line_num)] + + self.line_num += 1 + if self.line_num >= self.image_height: + self.line_num = 0 + + if self.repeatmode == 2: + self.load_image() + return self.image_width + diff --git a/python/message_to_var.py b/python/message_to_var.py new file mode 100644 index 0000000..1ff7d41 --- /dev/null +++ b/python/message_to_var.py @@ -0,0 +1,62 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# Copyright 2020 +# Federico "Larroca" La Rocca +# +# Instituto de Ingenieria Electrica, Facultad de Ingenieria, +# Universidad de la Republica, Uruguay. +# +# This 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. +# +# This software 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 this software; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. +# +# + + +import numpy +import pmt +from gnuradio import gr + +class message_to_var(gr.sync_block): + """ + docstring for block message_to_var + """ + def __init__(self, callback): + gr.sync_block.__init__(self, + name="message_to_var", + in_sig=None, out_sig=None) + + self.callback = callback + self.message_port_register_in(pmt.intern("port0")) + self.set_msg_handler(pmt.intern("port0"), self.msg_handler_function) + + def work(self, input_items, output_items): + return len(input_items[0]) + + def msg_handler_function(self, msg): + if (pmt.is_pair(msg)): + key = pmt.car(msg) # If is a pair, return the car, otherwise raise wrong_type + val = pmt.cdr(msg) # If is a pair, return the cdr, otherwise raise wrong_type + #(pmt::eq(key, pmt::string_to_symbol("ratio")) + if(pmt.eq(pmt.intern("refresh_rate"),key) or + pmt.eq(pmt.intern("Hvisible"),key) or + pmt.eq(pmt.intern("Hblank"),key) or + pmt.eq(pmt.intern("Vblank"),key) or + pmt.eq(pmt.intern("Vvisible"),key)): + if self.callback: + self.callback(pmt.to_python(val)) + + def stop(self): + return True diff --git a/python/qa_Hsync.py b/python/qa_Hsync.py new file mode 100755 index 0000000..073f99b --- /dev/null +++ b/python/qa_Hsync.py @@ -0,0 +1,46 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# Copyright 2020 +# Federico "Larroca" La Rocca +# +# Instituto de Ingenieria Electrica, Facultad de Ingenieria, +# Universidad de la Republica, Uruguay. +# +# This 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. +# +# This software 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 this software; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. +# +# + +from gnuradio import gr, gr_unittest +from gnuradio import blocks +import tempest_swig as tempest + +class qa_Hsync(gr_unittest.TestCase): + + def setUp(self): + self.tb = gr.top_block() + + def tearDown(self): + self.tb = None + + def test_001_t(self): + # set up fg + self.tb.run() + # check data + + +if __name__ == '__main__': + gr_unittest.run(qa_Hsync) diff --git a/python/qa_TMDS_image_source.py b/python/qa_TMDS_image_source.py new file mode 100755 index 0000000..aeb4183 --- /dev/null +++ b/python/qa_TMDS_image_source.py @@ -0,0 +1,46 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# Copyright 2020 +# Federico "Larroca" La Rocca +# +# Instituto de Ingenieria Electrica, Facultad de Ingenieria, +# Universidad de la Republica, Uruguay. +# +# This 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. +# +# This software 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 this software; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. +# +# + +from gnuradio import gr, gr_unittest +from gnuradio import blocks +from TMDS_image_source import TMDS_image_source + +class qa_TMDS_image_source(gr_unittest.TestCase): + + def setUp(self): + self.tb = gr.top_block() + + def tearDown(self): + self.tb = None + + def test_001_t(self): + # set up fg + self.tb.run() + # check data + + +if __name__ == '__main__': + gr_unittest.run(qa_TMDS_image_source) diff --git a/python/qa_binary_serializer.py b/python/qa_binary_serializer.py new file mode 100755 index 0000000..c691a0f --- /dev/null +++ b/python/qa_binary_serializer.py @@ -0,0 +1,46 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# Copyright 2020 +# Federico "Larroca" La Rocca +# +# Instituto de Ingenieria Electrica, Facultad de Ingenieria, +# Universidad de la Republica, Uruguay. +# +# This 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. +# +# This software 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 this software; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. +# +# + +from gnuradio import gr, gr_unittest +from gnuradio import blocks +from binary_serializer import binary_serializer + +class qa_binary_serializer(gr_unittest.TestCase): + + def setUp(self): + self.tb = gr.top_block() + + def tearDown(self): + self.tb = None + + def test_001_t(self): + # set up fg + self.tb.run() + # check data + + +if __name__ == '__main__': + gr_unittest.run(qa_binary_serializer) diff --git a/python/qa_fine_sampling_synchronization.py b/python/qa_fine_sampling_synchronization.py new file mode 100755 index 0000000..dfedccb --- /dev/null +++ b/python/qa_fine_sampling_synchronization.py @@ -0,0 +1,46 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# Copyright 2020 +# Federico "Larroca" La Rocca +# +# Instituto de Ingenieria Electrica, Facultad de Ingenieria, +# Universidad de la Republica, Uruguay. +# +# This 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. +# +# This software 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 this software; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. +# +# + +from gnuradio import gr, gr_unittest +from gnuradio import blocks +import tempest_swig as tempest + +class qa_fine_sampling_synchronization(gr_unittest.TestCase): + + def setUp(self): + self.tb = gr.top_block() + + def tearDown(self): + self.tb = None + + def test_001_t(self): + # set up fg + self.tb.run() + # check data + + +if __name__ == '__main__': + gr_unittest.run(qa_fine_sampling_synchronization) diff --git a/python/qa_framing.py b/python/qa_framing.py new file mode 100755 index 0000000..9af49a3 --- /dev/null +++ b/python/qa_framing.py @@ -0,0 +1,46 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# Copyright 2020 +# Federico "Larroca" La Rocca +# +# Instituto de Ingenieria Electrica, Facultad de Ingenieria, +# Universidad de la Republica, Uruguay. +# +# This 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. +# +# This software 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 this software; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. +# +# + +from gnuradio import gr, gr_unittest +from gnuradio import blocks +import tempest_swig as tempest + +class qa_framing(gr_unittest.TestCase): + + def setUp(self): + self.tb = gr.top_block() + + def tearDown(self): + self.tb = None + + def test_001_t(self): + # set up fg + self.tb.run() + # check data + + +if __name__ == '__main__': + gr_unittest.run(qa_framing) diff --git a/python/qa_image_source.py b/python/qa_image_source.py new file mode 100755 index 0000000..4c5bfe7 --- /dev/null +++ b/python/qa_image_source.py @@ -0,0 +1,46 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# Copyright 2020 +# Federico "Larroca" La Rocca +# +# Instituto de Ingenieria Electrica, Facultad de Ingenieria, +# Universidad de la Republica, Uruguay. +# +# This 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. +# +# This software 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 this software; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. +# +# + +from gnuradio import gr, gr_unittest +from gnuradio import blocks +from image_source import image_source + +class qa_image_source(gr_unittest.TestCase): + + def setUp(self): + self.tb = gr.top_block() + + def tearDown(self): + self.tb = None + + def test_001_t(self): + # set up fg + self.tb.run() + # check data + + +if __name__ == '__main__': + gr_unittest.run(qa_image_source) diff --git a/python/qa_infer_screen_resolution.py b/python/qa_infer_screen_resolution.py new file mode 100755 index 0000000..610e2b4 --- /dev/null +++ b/python/qa_infer_screen_resolution.py @@ -0,0 +1,46 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# Copyright 2020 +# Federico "Larroca" La Rocca +# +# Instituto de Ingenieria Electrica, Facultad de Ingenieria, +# Universidad de la Republica, Uruguay. +# +# This 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. +# +# This software 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 this software; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. +# +# + +from gnuradio import gr, gr_unittest +from gnuradio import blocks +import tempest_swig as tempest + +class qa_infer_screen_resolution(gr_unittest.TestCase): + + def setUp(self): + self.tb = gr.top_block() + + def tearDown(self): + self.tb = None + + def test_001_t(self): + # set up fg + self.tb.run() + # check data + + +if __name__ == '__main__': + gr_unittest.run(qa_infer_screen_resolution) diff --git a/python/qa_normalize_flow.py b/python/qa_normalize_flow.py new file mode 100755 index 0000000..581197a --- /dev/null +++ b/python/qa_normalize_flow.py @@ -0,0 +1,46 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# Copyright 2020 +# Federico "Larroca" La Rocca +# +# Instituto de Ingenieria Electrica, Facultad de Ingenieria, +# Universidad de la Republica, Uruguay. +# +# This 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. +# +# This software 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 this software; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. +# +# + +from gnuradio import gr, gr_unittest +from gnuradio import blocks +import tempest_swig as tempest + +class qa_normalize_flow(gr_unittest.TestCase): + + def setUp(self): + self.tb = gr.top_block() + + def tearDown(self): + self.tb = None + + def test_001_t(self): + # set up fg + self.tb.run() + # check data + + +if __name__ == '__main__': + gr_unittest.run(qa_normalize_flow) diff --git a/python/qa_sampling_synchronization.py b/python/qa_sampling_synchronization.py new file mode 100755 index 0000000..6fe3aef --- /dev/null +++ b/python/qa_sampling_synchronization.py @@ -0,0 +1,46 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# Copyright 2020 +# Federico "Larroca" La Rocca +# +# Instituto de Ingenieria Electrica, Facultad de Ingenieria, +# Universidad de la Republica, Uruguay. +# +# This 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. +# +# This software 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 this software; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. +# +# + +from gnuradio import gr, gr_unittest +from gnuradio import blocks +import tempest_swig as tempest + +class qa_sampling_synchronization(gr_unittest.TestCase): + + def setUp(self): + self.tb = gr.top_block() + + def tearDown(self): + self.tb = None + + def test_001_t(self): + # set up fg + self.tb.run() + # check data + + +if __name__ == '__main__': + gr_unittest.run(qa_sampling_synchronization) diff --git a/python/tempest_msgbtn.py b/python/tempest_msgbtn.py new file mode 100644 index 0000000..2c6d2ad --- /dev/null +++ b/python/tempest_msgbtn.py @@ -0,0 +1,67 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# Copyright 2020 +# Federico "Larroca" La Rocca +# +# Instituto de Ingenieria Electrica, Facultad de Ingenieria, +# Universidad de la Republica, Uruguay. +# +# This 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. +# +# This software 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 this software; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. +# +# + +from PyQt5 import Qt +from gnuradio import gr +import pmt + +class tempest_msgbtn(gr.sync_block, Qt.QPushButton): + """ + docstring for block tempest_msgbtn + this was developed by ghostop14 + https://github.com/ghostop14/gr-guiextra/blob/maint-3.8/python/msgpushbutton.py + """ + def __init__(self, lbl, msgName, msgValue, relBackColor, relFontColor): + gr.sync_block.__init__(self, name = "tempest_msgbtn", in_sig = None, out_sig = None) + Qt.QPushButton.__init__(self,lbl) + + self.lbl = lbl + self.msgName = msgName + self.msgValue = msgValue + + styleStr = "" + if (relBackColor != 'default'): + styleStr = "background-color: " + relBackColor + "; " + + if (relFontColor): + styleStr += "color: " + relFontColor + "; " + + self.setStyleSheet(styleStr) + + self.clicked[bool].connect(self.onBtnClicked) + + self.message_port_register_out(pmt.intern("pressed")) + + def onBtnClicked(self, pressed): + if type(self.msgValue) == int: + self.message_port_pub(pmt.intern("pressed"),pmt.cons( pmt.intern(self.msgName), pmt.from_long(self.msgValue) )) + elif type(self.msgValue) == float: + self.message_port_pub(pmt.intern("pressed"),pmt.cons( pmt.intern(self.msgName), pmt.from_float(self.msgValue) )) + elif type(self.msgValue) == str: + self.message_port_pub(pmt.intern("pressed"),pmt.cons( pmt.intern(self.msgName), pmt.intern(self.msgValue) )) + elif type(self.msgValue) == bool: + self.message_port_pub(pmt.intern("pressed"),pmt.cons( pmt.intern(self.msgName), pmt.from_bool(self.msgValue) )) + diff --git a/swig/CMakeLists.txt b/swig/CMakeLists.txt new file mode 100644 index 0000000..0dbe90b --- /dev/null +++ b/swig/CMakeLists.txt @@ -0,0 +1,66 @@ +# Copyright 2011 Free Software Foundation, Inc. +# +# This file was generated by gr_modtool, a tool from the GNU Radio framework +# This file is a part of gr-tempest +# +# 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. + +######################################################################## +# Check if there is C++ code at all +######################################################################## +if(NOT tempest_sources) + MESSAGE(STATUS "No C++ sources... skipping swig/") + return() +endif(NOT tempest_sources) + +######################################################################## +# Include swig generation macros +######################################################################## +find_package(SWIG) +find_package(PythonLibs) +if(NOT SWIG_FOUND OR NOT PYTHONLIBS_FOUND) + return() +endif() +include(GrSwig) +include(GrPython) + +######################################################################## +# Setup swig generation +######################################################################## +set(GR_SWIG_INCLUDE_DIRS $) +set(GR_SWIG_TARGET_DEPS gnuradio::runtime_swig) + +set(GR_SWIG_LIBRARIES gnuradio-tempest) + +set(GR_SWIG_DOC_FILE ${CMAKE_CURRENT_BINARY_DIR}/tempest_swig_doc.i) +set(GR_SWIG_DOC_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/../include) + +GR_SWIG_MAKE(tempest_swig tempest_swig.i) + +######################################################################## +# Install the build swig module +######################################################################## +GR_SWIG_INSTALL(TARGETS tempest_swig DESTINATION ${GR_PYTHON_DIR}/tempest) + +######################################################################## +# Install swig .i files for development +######################################################################## +install( + FILES + tempest_swig.i + ${CMAKE_CURRENT_BINARY_DIR}/tempest_swig_doc.i + DESTINATION ${GR_INCLUDE_DIR}/tempest/swig +) diff --git a/swig/tempest_swig.i b/swig/tempest_swig.i new file mode 100644 index 0000000..f61f12d --- /dev/null +++ b/swig/tempest_swig.i @@ -0,0 +1,44 @@ +/* -*- c++ -*- */ + +#define TEMPEST_API + +%include "gnuradio.i" // the common stuff + +//load generated python docstrings +%include "tempest_swig_doc.i" + +%{ +#include "tempest/sampling_synchronization.h" +#include "tempest/framing.h" +#include "tempest/Hsync.h" +#include "tempest/normalize_flow.h" +#include "tempest/fine_sampling_synchronization.h" +#include "tempest/sync_detector.h" +#include "tempest/frame_drop.h" +#include "tempest/fft_peak_fine_sampling_sync.h" +#include "tempest/infer_screen_resolution.h" +#include "tempest/ssamp_correction.h" +%} + +%include "tempest/sampling_synchronization.h" +GR_SWIG_BLOCK_MAGIC2(tempest, sampling_synchronization); +%include "tempest/framing.h" +GR_SWIG_BLOCK_MAGIC2(tempest, framing); +%include "tempest/Hsync.h" +GR_SWIG_BLOCK_MAGIC2(tempest, Hsync); +%include "tempest/normalize_flow.h" +GR_SWIG_BLOCK_MAGIC2(tempest, normalize_flow); +%include "tempest/fine_sampling_synchronization.h" +GR_SWIG_BLOCK_MAGIC2(tempest, fine_sampling_synchronization); + +%include "tempest/sync_detector.h" +GR_SWIG_BLOCK_MAGIC2(tempest, sync_detector); +%include "tempest/frame_drop.h" +GR_SWIG_BLOCK_MAGIC2(tempest, frame_drop); + +%include "tempest/fft_peak_fine_sampling_sync.h" +GR_SWIG_BLOCK_MAGIC2(tempest, fft_peak_fine_sampling_sync); +%include "tempest/infer_screen_resolution.h" +GR_SWIG_BLOCK_MAGIC2(tempest, infer_screen_resolution); +%include "tempest/ssamp_correction.h" +GR_SWIG_BLOCK_MAGIC2(tempest, ssamp_correction);