Advertisement
avr39ripe

PV913FullTemplateSpec

Jun 30th, 2020
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.23 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. //template <typename T>
  4. //class Pool8;
  5.  
  6. template <typename T>
  7. class Pool8
  8. {
  9.     T poolData[8];
  10. public:
  11.     Pool8& set(int idx, const T& val) { poolData[idx] = val; return *this; };
  12.     const T& get(int idx) const { return poolData[idx]; }
  13.     Pool8& print() { for (auto const& elem : poolData) { std::cout << elem << '\n'; }; return *this; };
  14. };
  15.  
  16. template<>
  17. class Pool8<bool>
  18. {
  19.     uint8_t poolData;
  20. public:
  21.     Pool8& set(int idx, bool val)
  22.     {
  23.         uint8_t mask{ 1u << idx };
  24.         val ? poolData |= mask : poolData &= ~mask;
  25.         return *this;
  26.     };
  27.    
  28.     bool get(int idx)
  29.     {
  30.         uint8_t mask{ 1u << idx };
  31.         return (poolData & mask) != 0;
  32.     }
  33.  
  34.     Pool8& print()
  35.     {
  36.         for (int i{ 7 }; i >= 0; --i)
  37.         {
  38.             std::cout << get(i);
  39.         };
  40.         std::cout << '\n';
  41.         return *this;
  42.     };
  43. };
  44.  
  45. template <>
  46. class Pool8<char>
  47. {
  48.     char poolData[8];
  49. public:
  50.     Pool8& set(int idx, char val) { poolData[idx] = val; return *this; };
  51.     const char get(int idx) const { return poolData[idx]; }
  52.     Pool8& print()
  53.     {
  54.         for (auto const& elem : poolData)
  55.         {
  56.             std::cout << elem;
  57.         };
  58.         return *this;
  59.     };
  60. };
  61.  
  62. int main()
  63. {
  64.     Pool8<bool> poolInt;
  65.     for (int i{ 0 }; i < 8; ++i)
  66.     {
  67.         poolInt.set(i, rand() % 2);
  68.     }
  69.  
  70.     poolInt.print();
  71.  
  72.  
  73.  
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement