From 0c91fea654228c602948ae61522ef40b2f0ab70e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?H=C3=A5kon=20V=C3=A5gsether?= <haakonsv@gmail.com>
Date: Wed, 15 Apr 2020 21:55:24 +0200
Subject: [PATCH] cppgen: Add C++ generation support to gr-vocoder

---
 gr-vocoder/examples/loopback-codec2.grc            |  2 +-
 gr-vocoder/examples/loopback-gsmfr.grc             |  2 +-
 gr-vocoder/grc/vocoder_alaw_decode_bs.block.yml    |  7 +++++++
 gr-vocoder/grc/vocoder_alaw_encode_sb.block.yml    |  7 +++++++
 gr-vocoder/grc/vocoder_codec2_decode_ps.block.yml  | 11 +++++++++++
 gr-vocoder/grc/vocoder_codec2_encode_sp.block.yml  | 11 +++++++++++
 gr-vocoder/grc/vocoder_cvsd_decode.block.yml       |  1 +
 gr-vocoder/grc/vocoder_cvsd_decode_bs.block.yml    |  7 +++++++
 gr-vocoder/grc/vocoder_cvsd_encode.block.yml       |  1 +
 gr-vocoder/grc/vocoder_cvsd_encode_sb.block.yml    |  7 +++++++
 gr-vocoder/grc/vocoder_g721_decode_bs.block.yml    |  7 +++++++
 gr-vocoder/grc/vocoder_g721_encode_sb.block.yml    |  7 +++++++
 gr-vocoder/grc/vocoder_g723_24_decode_bs.block.yml |  7 +++++++
 gr-vocoder/grc/vocoder_g723_24_encode_sb.block.yml |  7 +++++++
 gr-vocoder/grc/vocoder_g723_40_decode_bs.block.yml |  7 +++++++
 gr-vocoder/grc/vocoder_g723_40_encode_sb.block.yml |  7 +++++++
 gr-vocoder/grc/vocoder_gsm_fr_decode_ps.block.yml  |  7 +++++++
 gr-vocoder/grc/vocoder_gsm_fr_encode_sp.block.yml  |  7 +++++++
 gr-vocoder/grc/vocoder_ulaw_decode_bs.block.yml    |  7 +++++++
 gr-vocoder/grc/vocoder_ulaw_encode_sb.block.yml    |  7 +++++++
 22 files changed, 148 insertions(+), 4 deletions(-)

--- a/gr-vocoder/examples/loopback-codec2.grc
+++ b/gr-vocoder/examples/loopback-codec2.grc
@@ -56,7 +56,7 @@
   id: variable
   parameters:
     comment: ''
-    value: 2**13
+    value: 8192
   states:
     coordinate: [301, -1]
     rotation: 0
--- a/gr-vocoder/examples/loopback-gsmfr.grc
+++ b/gr-vocoder/examples/loopback-gsmfr.grc
@@ -56,7 +56,7 @@
   id: variable
   parameters:
     comment: ''
-    value: 2**12
+    value: 4096
   states:
     coordinate: [301, -1]
     rotation: 0
--- a/gr-vocoder/grc/vocoder_alaw_decode_bs.block.yml
+++ b/gr-vocoder/grc/vocoder_alaw_decode_bs.block.yml
@@ -1,5 +1,6 @@
 id: vocoder_alaw_decode_bs
 label: Alaw Audio Decoder
+flags: [ python, cpp ]
 
 inputs:
 -   domain: stream
@@ -13,4 +14,10 @@
     imports: from gnuradio import vocoder
     make: vocoder.alaw_decode_bs()
 
+cpp_templates:
+    includes: [ '#include <gnuradio/vocoder/alaw_decode_bs.h>' ]
+    declarations: 'vocoder::alaw_decode_bs::sptr ${id};'
+    make: 'this->${id} = vocoder::alaw_decode_bs::make();'
+    link: ['gnuradio-vocoder']
+
 file_format: 1
--- a/gr-vocoder/grc/vocoder_alaw_encode_sb.block.yml
+++ b/gr-vocoder/grc/vocoder_alaw_encode_sb.block.yml
@@ -1,5 +1,6 @@
 id: vocoder_alaw_encode_sb
 label: g711 Alaw Audio Encoder
+flags: [ python, cpp ]
 
 inputs:
 -   domain: stream
@@ -13,4 +14,10 @@
     imports: from gnuradio import vocoder
     make: vocoder.alaw_encode_sb()
 
+cpp_templates:
+    includes: [ '#include <gnuradio/vocoder/alaw_encode_sb.h>' ]
+    declarations: 'vocoder::alaw_encode_sb::sptr ${id};'
+    make: 'this->${id} = vocoder::alaw_encode_sb::make();'
+    link: ['gnuradio-vocoder']
+
 file_format: 1
--- a/gr-vocoder/grc/vocoder_codec2_decode_ps.block.yml
+++ b/gr-vocoder/grc/vocoder_codec2_decode_ps.block.yml
@@ -1,5 +1,6 @@
 id: vocoder_codec2_decode_ps
 label: CODEC2 Audio Decoder
+flags: [ python, cpp ]
 
 parameters:
 -   id: mode
@@ -11,6 +12,10 @@
         codec2.MODE_700C, codec2.MODE_WB, codec2.MODE_450, codec2.MODE_450PWB]
     option_labels: [3200 bps, 2400 bps, 1600 bps, 1400 bps, 1300 bps, 1200 bps, 700
             bps, 700B bps, 700C bps, Wideband, 450 bps, 450PWB bps]
+    option_attributes:
+        cpp_options: [vocoder::codec2::MODE_3200, vocoder::codec2::MODE_2400, vocoder::codec2::MODE_1600, vocoder::codec2::MODE_1400,
+            vocoder::codec2::MODE_1300, vocoder::codec2::MODE_1200, vocoder::codec2::MODE_700, vocoder::codec2::MODE_700B,
+            vocoder::codec2::MODE_700C, vocoder::codec2::MODE_WB, vocoder::codec2::MODE_450, vocoder::codec2::MODE_450PWB]
     hide: none
 
 inputs:
@@ -28,6 +33,12 @@
         from gnuradio.vocoder import codec2
     make: vocoder.codec2_decode_ps(${mode})
 
+cpp_templates:
+    includes: [ '#include <gnuradio/vocoder/codec2_decode_ps.h>' ]
+    declarations: 'vocoder::codec2_decode_ps::sptr ${id};'
+    make: 'this->${id} = vocoder::codec2_decode_ps::make();'
+    link: ['gnuradio-vocoder']
+
 documentation: |-
     Not all modes may be supported by the underlying codec2 library.
 
--- a/gr-vocoder/grc/vocoder_codec2_encode_sp.block.yml
+++ b/gr-vocoder/grc/vocoder_codec2_encode_sp.block.yml
@@ -1,5 +1,6 @@
 id: vocoder_codec2_encode_sp
 label: CODEC2 Audio Encoder
+flags: [ python, cpp ]
 
 parameters:
 -   id: mode
@@ -11,6 +12,10 @@
         codec2.MODE_700C, codec2.MODE_WB, codec2.MODE_450, codec2.MODE_450PWB]
     option_labels: [3200 bps, 2400 bps, 1600 bps, 1400 bps, 1300 bps, 1200 bps, 700
             bps, 700B bps, 700C bps, Wideband, 450 bps, 450PWB bps]
+    option_attributes:
+        cpp_options: [vocoder::codec2::MODE_3200, vocoder::codec2::MODE_2400, vocoder::codec2::MODE_1600, vocoder::codec2::MODE_1400,
+            vocoder::codec2::MODE_1300, vocoder::codec2::MODE_1200, vocoder::codec2::MODE_700, vocoder::codec2::MODE_700B,
+            vocoder::codec2::MODE_700C, vocoder::codec2::MODE_WB, vocoder::codec2::MODE_450, vocoder::codec2::MODE_450PWB]
     hide: none
 
 inputs:
@@ -28,6 +33,12 @@
         from gnuradio.vocoder import codec2
     make: vocoder.codec2_encode_sp(${mode})
 
+cpp_templates:
+    includes: [ '#include <gnuradio/vocoder/codec2_encode_sp.h>' ]
+    declarations: 'vocoder::codec2_encode_sp::sptr ${id};'
+    make: 'this->${id} = vocoder::codec2_encode_sp::make(${mode});'
+    link: ['gnuradio-vocoder']
+
 documentation: |-
     Not all modes may be supported by the underlying codec2 library.
 
--- a/gr-vocoder/grc/vocoder_cvsd_decode.block.yml
+++ b/gr-vocoder/grc/vocoder_cvsd_decode.block.yml
@@ -1,5 +1,6 @@
 id: vocoder_cvsd_decode_bf
 label: CVSD Decoder
+flags: [ python ]
 
 parameters:
 -   id: resample
--- a/gr-vocoder/grc/vocoder_cvsd_decode_bs.block.yml
+++ b/gr-vocoder/grc/vocoder_cvsd_decode_bs.block.yml
@@ -1,5 +1,6 @@
 id: vocoder_cvsd_decode_bs
 label: CVSD Audio Decoder (Raw Bit-Level)
+flags: [ python, cpp ]
 
 inputs:
 -   domain: stream
@@ -13,4 +14,10 @@
     imports: from gnuradio import vocoder
     make: vocoder.cvsd_decode_bs()
 
+cpp_templates:
+    includes: [ '#include <gnuradio/vocoder/cvsd_decode_bs.h>' ]
+    declarations: 'vocoder::cvsd_decode_bs::sptr ${id};'
+    make: 'this->${id} = vocoder::cvsd_decode_bs::make();'
+    link: ['gnuradio-vocoder']
+
 file_format: 1
--- a/gr-vocoder/grc/vocoder_cvsd_encode.block.yml
+++ b/gr-vocoder/grc/vocoder_cvsd_encode.block.yml
@@ -1,5 +1,6 @@
 id: vocoder_cvsd_encode_fb
 label: CVSD Encoder
+flags: [ python ]
 
 parameters:
 -   id: resample
--- a/gr-vocoder/grc/vocoder_cvsd_encode_sb.block.yml
+++ b/gr-vocoder/grc/vocoder_cvsd_encode_sb.block.yml
@@ -1,5 +1,6 @@
 id: vocoder_cvsd_encode_sb
 label: CVSD Audio Encoder (Raw Bit-Level)
+flags: [ python, cpp ]
 
 inputs:
 -   domain: stream
@@ -13,4 +14,10 @@
     imports: from gnuradio import vocoder
     make: vocoder.cvsd_encode_sb()
 
+cpp_templates:
+    includes: [ '#include <gnuradio/vocoder/cvsd_encode_sb.h>' ]
+    declarations: 'vocoder::cvsd_encode_sb::sptr ${id};'
+    make: 'this->${id} = vocoder::cvsd_encode_sb::make();'
+    link: ['gnuradio-vocoder']
+
 file_format: 1
--- a/gr-vocoder/grc/vocoder_g721_decode_bs.block.yml
+++ b/gr-vocoder/grc/vocoder_g721_decode_bs.block.yml
@@ -1,5 +1,6 @@
 id: vocoder_g721_decode_bs
 label: g721 Audio Decoder
+flags: [ python, cpp ]
 
 inputs:
 -   domain: stream
@@ -13,4 +14,10 @@
     imports: from gnuradio import vocoder
     make: vocoder.g721_decode_bs()
 
+cpp_templates:
+    includes: [ '#include <gnuradio/vocoder/g721_decode_bs.h>' ]
+    declarations: 'vocoder::g721_decode_bs::sptr ${id};'
+    make: 'this->${id} = vocoder::g721_decode_bs::make();'
+    link: ['gnuradio-vocoder']
+
 file_format: 1
--- a/gr-vocoder/grc/vocoder_g721_encode_sb.block.yml
+++ b/gr-vocoder/grc/vocoder_g721_encode_sb.block.yml
@@ -1,5 +1,6 @@
 id: vocoder_g721_encode_sb
 label: g721 Audio Encoder
+flags: [ python, cpp ]
 
 inputs:
 -   domain: stream
@@ -13,4 +14,10 @@
     imports: from gnuradio import vocoder
     make: vocoder.g721_encode_sb()
 
+cpp_templates:
+    includes: [ '#include <gnuradio/vocoder/g721_encode_sb.h>' ]
+    declarations: 'vocoder::g721_encode_sb::sptr ${id};'
+    make: 'this->${id} = vocoder::g721_encode_sb::make();'
+    link: ['gnuradio-vocoder']
+
 file_format: 1
--- a/gr-vocoder/grc/vocoder_g723_24_decode_bs.block.yml
+++ b/gr-vocoder/grc/vocoder_g723_24_decode_bs.block.yml
@@ -1,5 +1,6 @@
 id: vocoder_g723_24_decode_bs
 label: g723_24 Audio Decoder
+flags: [ python, cpp ]
 
 inputs:
 -   domain: stream
@@ -13,4 +14,10 @@
     imports: from gnuradio import vocoder
     make: vocoder.g723_24_decode_bs()
 
+cpp_templates:
+    includes: [ '#include <gnuradio/vocoder/g723_24_decode_bs.h>' ]
+    declarations: 'vocoder::g723_24_decode_bs::sptr ${id};'
+    make: 'this->${id} = vocoder::g723_24_decode_bs::make();'
+    link: ['gnuradio-vocoder']
+
 file_format: 1
--- a/gr-vocoder/grc/vocoder_g723_24_encode_sb.block.yml
+++ b/gr-vocoder/grc/vocoder_g723_24_encode_sb.block.yml
@@ -1,5 +1,6 @@
 id: vocoder_g723_24_encode_sb
 label: g723_24 Audio Encoder
+flags: [ python, cpp ]
 
 inputs:
 -   domain: stream
@@ -13,4 +14,10 @@
     imports: from gnuradio import vocoder
     make: vocoder.g723_24_encode_sb()
 
+cpp_templates:
+    includes: [ '#include <gnuradio/vocoder/g723_24_encode_sb.h>' ]
+    declarations: 'vocoder::g723_24_encode_sb::sptr ${id};'
+    make: 'this->${id} = vocoder::g723_24_encode_sb::make();'
+    link: ['gnuradio-vocoder']
+
 file_format: 1
--- a/gr-vocoder/grc/vocoder_g723_40_decode_bs.block.yml
+++ b/gr-vocoder/grc/vocoder_g723_40_decode_bs.block.yml
@@ -1,5 +1,6 @@
 id: vocoder_g723_40_decode_bs
 label: g723_40 Audio Decoder
+flags: [ python, cpp ]
 
 inputs:
 -   domain: stream
@@ -13,4 +14,10 @@
     imports: from gnuradio import vocoder
     make: vocoder.g723_40_decode_bs()
 
+cpp_templates:
+    includes: [ '#include <gnuradio/vocoder/g723_40_decode_bs.h>' ]
+    declarations: 'vocoder::g723_40_decode_bs::sptr ${id};'
+    make: 'this->${id} = vocoder::g723_40_decode_bs::make();'
+    link: ['gnuradio-vocoder']
+
 file_format: 1
--- a/gr-vocoder/grc/vocoder_g723_40_encode_sb.block.yml
+++ b/gr-vocoder/grc/vocoder_g723_40_encode_sb.block.yml
@@ -1,5 +1,6 @@
 id: vocoder_g723_40_encode_sb
 label: g723_40 Audio Encoder
+flags: [ python, cpp ]
 
 inputs:
 -   domain: stream
@@ -13,4 +14,10 @@
     imports: from gnuradio import vocoder
     make: vocoder.g723_40_encode_sb()
 
+cpp_templates:
+    includes: [ '#include <gnuradio/vocoder/g723_40_encode_sb.h>' ]
+    declarations: 'vocoder::g723_40_encode_sb::sptr ${id};'
+    make: 'this->${id} = vocoder::g723_40_encode_sb::make();'
+    link: ['gnuradio-vocoder']
+
 file_format: 1
--- a/gr-vocoder/grc/vocoder_gsm_fr_decode_ps.block.yml
+++ b/gr-vocoder/grc/vocoder_gsm_fr_decode_ps.block.yml
@@ -1,5 +1,6 @@
 id: vocoder_gsm_fr_decode_ps
 label: GSM full-rate Audio Decoder
+flags: [ python, cpp ]
 
 inputs:
 -   domain: stream
@@ -14,4 +15,10 @@
     imports: from gnuradio import vocoder
     make: vocoder.gsm_fr_decode_ps()
 
+cpp_templates:
+    includes: [ '#include <gnuradio/vocoder/gsm_fr_decode_ps.h>' ]
+    declarations: 'vocoder::gsm_fr_decode_ps::sptr ${id};'
+    make: 'this->${id} = vocoder::gsm_fr_decode_ps::make();'
+    link: ['gnuradio-vocoder']
+
 file_format: 1
--- a/gr-vocoder/grc/vocoder_gsm_fr_encode_sp.block.yml
+++ b/gr-vocoder/grc/vocoder_gsm_fr_encode_sp.block.yml
@@ -1,5 +1,6 @@
 id: vocoder_gsm_fr_encode_sp
 label: GSM full-rate Audio Encoder
+flags: [ python, cpp ]
 
 inputs:
 -   domain: stream
@@ -14,4 +15,10 @@
     imports: from gnuradio import vocoder
     make: vocoder.gsm_fr_encode_sp()
 
+cpp_templates:
+    includes: [ '#include <gnuradio/vocoder/gsm_fr_encode_sp.h>' ]
+    declarations: 'vocoder::gsm_fr_encode_sp::sptr ${id};'
+    make: 'this->${id} = vocoder::gsm_fr_encode_sp::make();'
+    link: ['gnuradio-vocoder']
+
 file_format: 1
--- a/gr-vocoder/grc/vocoder_ulaw_decode_bs.block.yml
+++ b/gr-vocoder/grc/vocoder_ulaw_decode_bs.block.yml
@@ -1,5 +1,6 @@
 id: vocoder_ulaw_decode_bs
 label: ulaw Audio Decoder
+flags: [ python, cpp ]
 
 inputs:
 -   domain: stream
@@ -13,4 +14,10 @@
     imports: from gnuradio import vocoder
     make: vocoder.ulaw_decode_bs()
 
+cpp_templates:
+    includes: [ '#include <gnuradio/vocoder/ulaw_decode_bs.h>' ]
+    declarations: 'vocoder::ulaw_decode_bs::sptr ${id};'
+    make: 'this->${id} = vocoder::ulaw_decode_bs::make();'
+    link: ['gnuradio-vocoder']
+
 file_format: 1
--- a/gr-vocoder/grc/vocoder_ulaw_encode_sb.block.yml
+++ b/gr-vocoder/grc/vocoder_ulaw_encode_sb.block.yml
@@ -1,5 +1,6 @@
 id: vocoder_ulaw_encode_sb
 label: ulaw Audio Encoder
+flags: [ python, cpp ]
 
 inputs:
 -   domain: stream
@@ -13,4 +14,10 @@
     imports: from gnuradio import vocoder
     make: vocoder.ulaw_encode_sb()
 
+cpp_templates:
+    includes: [ '#include <gnuradio/vocoder/ulaw_encode_sb.h>' ]
+    declarations: 'vocoder::ulaw_encode_sb::sptr ${id};'
+    make: 'this->${id} = vocoder::ulaw_encode_sb::make();'
+    link: ['gnuradio-vocoder']
+
 file_format: 1
