Guest User

Untitled

a guest
Jan 17th, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.08 KB | None | 0 0
  1. class Stream
  2. {
  3. public:
  4. Stream();
  5.  
  6. [...]
  7.  
  8. StreamIterator iter()
  9. {
  10. return StreamIterator(this);
  11. }
  12.  
  13. private:
  14. class impl;
  15. std::unique_ptr<impl> pimpl;
  16. };
  17.  
  18. class StreamFilter
  19. {
  20. public:
  21. StreamFilter();
  22.  
  23. [...]
  24.  
  25. private:
  26. class impl;
  27. std::shared_ptr<impl> pimpl;
  28. };
  29.  
  30. class StreamIterator
  31. {
  32. public:
  33. StreamIterator(Stream* streamToFilter);
  34.  
  35. [...]
  36.  
  37. void addFilter(StreamFilter* filter);
  38. void removeFilter(StreamFilter* filter);
  39.  
  40. [...]
  41.  
  42. private:
  43. class impl;
  44. std::unique_ptr<impl> pimpl;
  45. };
  46.  
  47. StreamIterator iter = stream.iter();
  48. iter.addFilter(new FilterByOffset([...with parameters...]));
  49. for (auto item : iter)
  50. {
  51. [...doing something with filtered items...]
  52. }
  53.  
  54. class StreamIterator
  55. {
  56. public:
  57. StreamIterator(Stream* streamToFilter);
  58.  
  59. [...]
  60.  
  61. iterator begin();
  62. iterator end();
  63.  
  64. const_iterator cbegin();
  65. const_iterator cend();
  66.  
  67. [...]
  68.  
  69. void addFilter(StreamFilter* filter);
  70. void removeFilter(StreamFilter* filter);
  71.  
  72. [...]
  73.  
  74. private:
  75. class impl;
  76. std::unique_ptr<impl> pimpl;
  77. };
Add Comment
Please, Sign In to add comment