24{
25 void SampleComposite ::
26 testInvariant () const
27 {
28 for (SamplesIter sample = m_samples.begin(),
29 end = m_samples.end(); sample != end; ++ sample)
30 {
32 };
33 }
34
35
36
37 SampleComposite ::
38 SampleComposite ()
39 : Sample ("unnamed")
40 {
42 }
43
44
45
46 SampleComposite ::
47 SampleComposite (const std::string& name)
49 {
51 }
52
53
54
55 void SampleComposite ::
56 add (std::shared_ptr<Sample> sample)
57 {
62 m_samples.push_back (std::move (sample));
63 }
64
65
66
67 std::size_t SampleComposite ::
68 getNumFiles () const
69 {
71 RCU_THROW_MSG (
"Sample::numFiles not supported for SampleComposite");
72 return 0;
73 }
74
75
76
77 std::string SampleComposite ::
78 getFileName (const std::size_t ) const
79 {
81 RCU_THROW_MSG (
"Sample::fileName not supported for SampleComposite");
82 return "";
83 }
84
85
86
87 std::vector<std::string> SampleComposite ::
88 doMakeFileList () const
89 {
91
92 std::vector<std::string>
result;
93 for (SamplesIter sample = m_samples.begin(),
94 end = m_samples.end(); sample != end; ++ sample)
95 {
96 std::vector<std::string> subresult = (*sample)->makeFileList();
97 result.insert (
result.end(), subresult.begin(), subresult.end());
98 }
100 }
101
102
103
104 std::unique_ptr<SampleLocal> SampleComposite ::
105 doMakeLocal () const
106 {
108 RCU_THROW_MSG (
"Sample::makeLocal not supported for SampleComposite");
109 return {};
110 }
111
112
113
114 void SampleComposite ::
115 doUpdateLocation (const std::string& from, const std::string& to)
116 {
118 for (auto sample = m_samples.begin(),
119 end = m_samples.end(); sample != end; ++ sample)
120 {
121 (*sample)->updateLocation (from, to);
122 }
123 }
124
125
126
127 bool SampleComposite ::
128 getContains (const std::string& name) const
129 {
131 for (SamplesIter sample = m_samples.begin(),
132 end = m_samples.end(); sample != end; ++ sample)
133 {
134 if ((*sample)->contains (name))
135 return true;
136 };
137 return false;
138 }
139
140
141
142 void SampleComposite ::
143 doAddSamples (SampleHandler& result, const std::shared_ptr<Sample>& )
144 {
146 for (auto& sample : m_samples)
147 {
148 sample->addSamples (result, sample);
149 };
150 }
151}
#define RCU_CHANGE_INVARIANT(x)
#define RCU_NEW_INVARIANT(x)
#define RCU_REQUIRE_SOFT(x)
#define RCU_READ_INVARIANT(x)
#define RCU_THROW_MSG(message)
bool contains(const std::string &s, const std::string ®x)
does a string contain the substring