DataSource.cpp
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:2k
源码类别:

模拟服务器

开发平台:

C/C++

  1. // DataSource.cpp: implementation of the DataSource class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #include "stdafx.h"
  5. #include "DataSource.h"
  6. //////////////////////////////////////////////////////////////////////
  7. // Construction/Destruction
  8. //////////////////////////////////////////////////////////////////////
  9. namespace PackageCQ
  10. {
  11. DataSource::DataSource()
  12. {
  13. }
  14. DataSource::~DataSource()
  15. {
  16. }
  17. void DataSource::InsertBlock(const BlockSource & Block )
  18. {
  19. m_BlockSet.insert(Block) ;
  20. }
  21. int DataSource::GetBlockCount() const
  22. {
  23. return m_BlockSet.size() ;
  24. }
  25. BlockSource &  DataSource::operator [](size_t Index)
  26. {
  27. if(Index >= 0 && Index< GetBlockCount())
  28. {
  29. set<BlockSource>::iterator ContainerPointer;
  30. ContainerPointer = m_BlockSet.begin();
  31. for(size_t i = 0; i < Index ; i ++)
  32. {
  33. ContainerPointer++;
  34. }
  35. return  * ContainerPointer;
  36. }
  37. else
  38. {
  39. throw exception("DataSource  Index is  overflow!!");
  40. }
  41. }
  42. const DataSource DataSource::operator +(DataSource &Source) const
  43. {
  44. DataSource Result = * this;
  45. int SourceCount = Source.GetBlockCount();
  46. for(int i =0 ;i<SourceCount;i++)
  47. {
  48. BlockSource SourceElem = Source[i];
  49. set <BlockSource> :: iterator SourceElemInSelfPosition;
  50. SourceElemInSelfPosition = Result.m_BlockSet.find(SourceElem);
  51. if(SourceElemInSelfPosition == Result.m_BlockSet.end())
  52. {
  53. Result.m_BlockSet.insert(SourceElem) ;
  54. }
  55. else
  56. {
  57. Result.m_BlockSet.erase(SourceElemInSelfPosition) ;
  58. Result.m_BlockSet.insert(SourceElem) ;
  59. }
  60. }
  61. return Result;
  62. }
  63. const DataSource& DataSource::operator =(const DataSource &Source) 
  64. {
  65. m_BlockSet = Source.m_BlockSet ;
  66. return * this;
  67. }
  68. DataSource& DataSource::operator >>(iostream &DataStream)
  69. {
  70. for(int i=0;i<GetBlockCount();i++)
  71. {
  72. (* this)[i]>>DataStream;
  73. }
  74. return * this;
  75. }
  76. }