LCOV - code coverage report
Current view: top level - src/Banks - BankConfig.hpp (source / functions) Hit Total Coverage
Test: 3a807a259ebe0769dd942f7f612dca5273937539 Lines: 9 9 100.0 %
Date: 2024-03-24 17:16:54 Functions: 10 10 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* ✔ */
       2             : 
       3             : #pragma once
       4             : 
       5             : #include <Def/Def.hpp>
       6             : 
       7             : BEGIN_CS_NAMESPACE
       8             : 
       9             : /**
      10             :  * @brief   An enumeration of the different bank types.
      11             :  */
      12             : enum BankType {
      13             :     /**
      14             :      * @brief   Change the offset of the address (i.e. Controller number or
      15             :      *          Note number) of the element.
      16             :      */
      17             :     ChangeAddress = 0,
      18             :     CHANGE_ADDRESS CS_DEPREC("Use ChangeAddress instead") = ChangeAddress,
      19             :     /**
      20             :      * @brief   Change the offset of the channel number of the element.
      21             :      */
      22             :     ChangeChannel = 1,
      23             :     CHANGE_CHANNEL CS_DEPREC("Use ChangeChannel instead") = ChangeChannel,
      24             :     /**
      25             :      * @brief   Change the offset of the cable number of the element.
      26             :      */
      27             :     ChangeCable = 2,
      28             :     CHANGE_CABLENB CS_DEPREC("Use ChangeCable instead") = ChangeCable,
      29             : };
      30             : 
      31             : template <setting_t NumBanks>
      32             : class Bank;
      33             : class OutputBank;
      34             : 
      35             : template <BankType DefaultBankType>
      36             : struct OutputBankConfig;
      37             : 
      38             : /** 
      39             :  * @brief   A struct for selecting the bank of BankableMIDIInput%s and the
      40             :  *          bank type.
      41             :  */
      42             : template <setting_t N>
      43             : class BaseBankConfig {
      44             :   protected:
      45          21 :     BaseBankConfig(Bank<N> &bank, BankType type) : bank(bank), type(type) {}
      46             : 
      47             :   public:
      48             :     Bank<N> &bank;
      49             :     const BankType type;
      50             : };
      51             : 
      52             : /// @copydoc BaseBankConfig
      53             : template <setting_t N, BankType DefaultBankType = BankType::ChangeAddress>
      54             : struct BankConfig : BaseBankConfig<N> {
      55          21 :     BankConfig(Bank<N> &bank, BankType type = DefaultBankType)
      56          21 :         : BaseBankConfig<N>(bank, type) {}
      57             : };
      58             : 
      59             : /** 
      60             :  * @brief   A struct for selecting the bank of BankableMIDIOutput%s and the
      61             :  *          bank type.
      62             :  */
      63             : class BaseOutputBankConfig {
      64             :   protected:
      65          27 :     BaseOutputBankConfig(OutputBank &bank, BankType type)
      66          27 :         : bank(bank), type(type) {}
      67             : 
      68             :   public:
      69             :     template <setting_t N>
      70           4 :     BaseOutputBankConfig(BaseBankConfig<N> config)
      71           4 :         : bank(config.bank), type(config.type) {}
      72             : 
      73             :     OutputBank &bank;
      74             :     const BankType type;
      75             : };
      76             : 
      77             : /// @copydoc BaseOutputBankConfig
      78             : template <BankType DefaultBankType = BankType::ChangeAddress>
      79             : struct OutputBankConfig : BaseOutputBankConfig {
      80          27 :     OutputBankConfig(OutputBank &bank, BankType type = DefaultBankType)
      81          27 :         : BaseOutputBankConfig(bank, type) {}
      82             : };
      83             : 
      84             : END_CS_NAMESPACE

Generated by: LCOV version 1.15