Newer
Older
TB_Chris / TbUT / src / .svn / text-base / TbUTChannelMaskProvider.h.svn-base
  1. /*
  2. * TbUTChannelMaskProvider.h
  3. *
  4. * Created on: Oct 11, 2014
  5. * Author: ADendek
  6. */
  7.  
  8. #pragma once
  9.  
  10. #include "TbUTIChannelMaskProvider.h"
  11. #include "TbUTIFileValidator.h"
  12. #include <iostream>
  13. #include <fstream>
  14. #include <vector>
  15. #include <stdexcept>
  16.  
  17.  
  18. namespace TbUT
  19. {
  20. class ChannelMaskProvider: public IChannelMaskProvider
  21. {
  22. public:
  23.  
  24. class InputFileError: public std::runtime_error {
  25. public:
  26. InputFileError(const std::string& p_errorMsg ):
  27. std::runtime_error(p_errorMsg)
  28. {
  29. }
  30. };
  31.  
  32. class NotEnoughtChannel: public std::runtime_error {
  33. public:
  34. NotEnoughtChannel(const std::string& p_error) :
  35. std::runtime_error(p_error)
  36. {
  37. }
  38. };
  39.  
  40. class ChannelOutOfRange: public std::runtime_error {
  41. public:
  42. ChannelOutOfRange(const std::string& p_error) :
  43. std::runtime_error(p_error)
  44. {
  45. }
  46. };
  47.  
  48. ChannelMaskProvider(IFileValidator & p_fileValidator);
  49. void getMaskFromFile(const std::string& p_filename=TbUT::DataLocations::MaskLocation);
  50. bool isMasked(int p_channel);
  51.  
  52. private:
  53. typedef std::vector<unsigned short> MaskVector;
  54.  
  55. void validateFile();
  56. void openfile(const std::string& p_filename, std::ifstream& p_inputFile);
  57. void retreiveMasksFromFile(std::ifstream& p_file);
  58. void checkMaskVector();
  59. bool isChannelInRange(int p_channel);
  60.  
  61.  
  62.  
  63. IFileValidator & m_fileValidator;
  64. MaskVector m_masks;
  65. };
  66. }
  67.  
  68.