+
+Alternate::Alternate(const string &attribute,
+ const vector<Substitute *> &subdirectives_subs,
+ const vector<string> &alternatives)
+ : Clone(subdirectives_subs)
+{
+ unsigned jx = 0;
+ for (unsigned ix = 0; ix < subdirectives_subs.size(); ++ix) {
+ if (subdirectives_subs[ix] == NULL) {
+ continue;
+ }
+ string value = alternatives[jx++ % alternatives.size()];
+ subdirectives_subs[ix]->substitution_map.insert(make_pair(
+ attribute,
+ new Replace { value }));
+ }
+}