Newer
Older
TB_Chris / TbUT / src / .svn / text-base / TbUTChannelMaskProvider.cpp.svn-base
  1. /*
  2. * TbUTChannelMaskProvider.cpp
  3. *
  4. * Created on: Oct 11, 2014
  5. * Author: ADendek
  6. */
  7.  
  8. #include "TbUTChannelMaskProvider.h"
  9. #include"TbUTRawData.h"
  10. #include <iostream>
  11.  
  12. using namespace TbUT;
  13. using namespace std;
  14.  
  15.  
  16. ChannelMaskProvider::ChannelMaskProvider(IFileValidator & p_fileValidator):
  17. m_fileValidator(p_fileValidator),
  18. m_masks()
  19. {
  20. }
  21.  
  22. void ChannelMaskProvider::getMaskFromFile(const string& p_filename)
  23. {
  24. validateFile();
  25. ifstream l_file;
  26. openfile(p_filename,l_file);
  27. retreiveMasksFromFile(l_file);
  28. checkMaskVector();
  29. }
  30.  
  31. bool ChannelMaskProvider::isMasked(int p_channel)
  32. {
  33. if(!isChannelInRange(p_channel)){
  34. std::cout<<"channel out of range"<<p_channel<<std::endl;
  35. throw ChannelOutOfRange("");
  36. }
  37. return (m_masks[p_channel]==0);
  38. }
  39.  
  40.  
  41.  
  42. void ChannelMaskProvider::validateFile()
  43. {
  44. if(!m_fileValidator.validateFile())
  45. throw InputFileError("Mask File validation error!");
  46.  
  47. }
  48.  
  49. void ChannelMaskProvider::openfile(const std::string& p_filename, std::ifstream& p_inputFile)
  50. {
  51. p_inputFile.open(p_filename.c_str(),ios::in);
  52. if(!p_inputFile.good())
  53. throw InputFileError("Cannot open mask file!"+p_filename);
  54. }
  55.  
  56. void ChannelMaskProvider::retreiveMasksFromFile(std::ifstream& p_file)
  57. {
  58. int l_sensorNumber= RawData<>::getnChannelNumber();
  59. for(int channel=0;channel<l_sensorNumber;channel++){
  60. unsigned short l_mask;
  61. p_file>>l_mask;
  62. m_masks.push_back(l_mask);
  63. }
  64. }
  65.  
  66. void ChannelMaskProvider::checkMaskVector()
  67. {
  68. const unsigned int l_sensorNumber=RawData<>::getnChannelNumber();
  69. if (m_masks.size() !=l_sensorNumber)
  70. throw NotEnoughtChannel("");
  71. }
  72.  
  73. bool ChannelMaskProvider::isChannelInRange(int p_channel)
  74. {
  75. int l_sensorNumber= RawData<>::getnChannelNumber();
  76. return p_channel<l_sensorNumber;
  77. }