LCOV - code coverage report
Current view: top level - src/Banks - BankConfig.hpp (source / functions) Coverage Total Hit
Test: 73449d9b107c772cf65493691543348214e5d5eb Lines: 100.0 % 9 9
Test Date: 2026-06-06 17:44:35 Functions: 100.0 % 10 10
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 2.4-beta