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 {
61 throw std::runtime_error (
"trying to add sample " +
sample->name() +
" to sample " +
name() +
", which already contains a sample " +
sample->name());
62 m_samples.push_back (std::move (sample));
63 }
64
65
66
67 std::size_t SampleComposite ::
68 getNumFiles () const
69 {
71 throw std::runtime_error ("Sample::numFiles not supported for SampleComposite");
72 }
73
74
75
76 std::string SampleComposite ::
77 getFileName (const std::size_t ) const
78 {
80 throw std::runtime_error ("Sample::fileName not supported for SampleComposite");
81 }
82
83
84
85 std::vector<std::string> SampleComposite ::
86 doMakeFileList () const
87 {
89
90 std::vector<std::string>
result;
91 for (SamplesIter sample = m_samples.begin(),
92 end = m_samples.end(); sample != end; ++ sample)
93 {
94 std::vector<std::string> subresult = (*sample)->makeFileList();
95 result.insert (
result.end(), subresult.begin(), subresult.end());
96 }
98 }
99
100
101
102 std::unique_ptr<SampleLocal> SampleComposite ::
103 doMakeLocal () const
104 {
106 throw std::runtime_error ("Sample::makeLocal not supported for SampleComposite");
107 }
108
109
110
111 void SampleComposite ::
112 doUpdateLocation (const std::string& from, const std::string& to)
113 {
115 for (auto sample = m_samples.begin(),
116 end = m_samples.end(); sample != end; ++ sample)
117 {
118 (*sample)->updateLocation (from, to);
119 }
120 }
121
122
123
124 bool SampleComposite ::
125 getContains (const std::string& name) const
126 {
128 for (SamplesIter sample = m_samples.begin(),
129 end = m_samples.end(); sample != end; ++ sample)
130 {
131 if ((*sample)->contains (name))
132 return true;
133 };
134 return false;
135 }
136
137
138
139 void SampleComposite ::
140 doAddSamples (SampleHandler& result, const std::shared_ptr<Sample>& )
141 {
143 for (auto& sample : m_samples)
144 {
145 sample->addSamples (result, sample);
146 };
147 }
148}
#define RCU_CHANGE_INVARIANT(x)
#define RCU_NEW_INVARIANT(x)
#define RCU_REQUIRE_SOFT(x)
#define RCU_READ_INVARIANT(x)
bool contains(const std::string &s, const std::string ®x)
does a string contain the substring