aboutsummaryrefslogtreecommitdiff
path: root/paludis/repositories/e/dep_parser.cc
diff options
context:
space:
mode:
Diffstat (limited to 'paludis/repositories/e/dep_parser.cc')
-rw-r--r--paludis/repositories/e/dep_parser.cc121
1 files changed, 100 insertions, 21 deletions
diff --git a/paludis/repositories/e/dep_parser.cc b/paludis/repositories/e/dep_parser.cc
index b73323c36..9f37d71a6 100644
--- a/paludis/repositories/e/dep_parser.cc
+++ b/paludis/repositories/e/dep_parser.cc
@@ -98,6 +98,7 @@ namespace
typedef std::list<Item> Stack;
typedef std::function<void (const std::shared_ptr<DepSpec> &)> AnnotationsGoHere;
+ typedef std::function<void (const std::list<std::shared_ptr<DepSpec> > &)> StarAnnotationsGoHere;
};
template <typename T_>
@@ -319,9 +320,11 @@ namespace
void pop_handler(
typename ParseStackTypes<T_>::Stack & stack,
const typename ParseStackTypes<T_>::AnnotationsGoHere & annotations_go_here,
+ const typename ParseStackTypes<T_>::StarAnnotationsGoHere & star_annotations_go_here,
const std::string & s)
{
annotations_go_here(stack.begin()->spec());
+ star_annotations_go_here(stack.begin()->children());
auto children(std::move(stack.begin()->children()));
auto block_children(std::move(stack.begin()->block_children()));
@@ -330,8 +333,8 @@ namespace
if (stack.empty())
throw EDepParseError(s, "Too many ')'s");
- stack.begin()->children().splice(stack.begin()->children().end(), children, children.begin(), children.end());
- stack.begin()->block_children().splice(stack.begin()->block_children().end(), block_children, block_children.begin(), block_children.end());
+ stack.begin()->children().insert(stack.begin()->children().end(), children.begin(), children.end());
+ stack.begin()->block_children().insert(stack.begin()->block_children().end(), block_children.begin(), block_children.end());
}
template <typename T_>
@@ -356,6 +359,11 @@ namespace
spec = s;
}
+ void set_thing_to_star_annotate(std::list<std::shared_ptr<DepSpec> > & spec_list, const std::list<std::shared_ptr<DepSpec> > & s)
+ {
+ spec_list = s;
+ }
+
void add_block_annotations(
std::shared_ptr<DepSpecAnnotations> & annotations,
const BlockFixOp & block_fix_op)
@@ -410,12 +418,51 @@ namespace
block_spec->set_annotations(annotations);
}
+ void add_expanded_annotation(
+ const EAPI &,
+ const std::shared_ptr<DepSpec> & spec,
+ const DepSpecAnnotation & expandable)
+ {
+ auto annotations(std::make_shared<DepSpecAnnotations>());
+ if (spec->maybe_annotations())
+ std::for_each(spec->maybe_annotations()->begin(), spec->maybe_annotations()->end(),
+ std::bind(&DepSpecAnnotations::add, annotations, std::placeholders::_1));
+
+ annotations->add(make_named_values<DepSpecAnnotation>(
+ n::key() = expandable.key().substr(1),
+ n::kind() = dsak_expanded,
+ n::role() = expandable.role(),
+ n::value() = expandable.value()));
+
+ spec->set_annotations(annotations);
+ }
+
void apply_annotations(
const EAPI & eapi,
const std::shared_ptr<DepSpec> & spec,
+ const std::list<std::shared_ptr<DepSpec> > & children,
const std::shared_ptr<const Map<std::string, std::string> > & m)
{
spec->set_annotations(parse_annotations(eapi, m));
+
+ for (auto a(spec->maybe_annotations()->begin()), a_end(spec->maybe_annotations()->end()) ;
+ a != a_end ; ++a)
+ switch (a->kind())
+ {
+ case dsak_synthetic:
+ case dsak_literal:
+ case dsak_expanded:
+ continue;
+
+ case dsak_expandable:
+ for (auto c(children.begin()), c_end(children.end()) ;
+ c != c_end ; ++c)
+ add_expanded_annotation(eapi, *c, *a);
+ continue;
+
+ case last_dsak:
+ break;
+ }
}
}
@@ -427,6 +474,7 @@ paludis::erepository::parse_depend(const std::string & s, const Environment * co
ParseStackTypes<DependencySpecTree>::Stack stack;
std::shared_ptr<AllDepSpec> spec(std::make_shared<AllDepSpec>());
std::shared_ptr<DepSpec> thing_to_annotate(spec);
+ std::list<std::shared_ptr<DepSpec> > thing_to_star_annotate;
std::shared_ptr<DependencySpecTree> top(std::make_shared<DependencySpecTree>(spec));
stack.push_front(make_named_values<ParseStackTypes<DependencySpecTree>::Item>(
n::block_children() = std::list<std::pair<std::shared_ptr<BlockDepSpec>, BlockFixOp> >(),
@@ -438,7 +486,7 @@ paludis::erepository::parse_depend(const std::string & s, const Environment * co
ELikeDepParserCallbacks callbacks(
make_named_values<ELikeDepParserCallbacks>(
n::on_all() = std::bind(&any_all_handler<DependencySpecTree, AllDepSpec>, std::ref(stack)),
- n::on_annotations() = std::bind(&apply_annotations, std::cref(eapi), std::ref(thing_to_annotate), _1),
+ n::on_annotations() = std::bind(&apply_annotations, std::cref(eapi), std::ref(thing_to_annotate), std::cref(thing_to_star_annotate), _1),
n::on_any() = std::bind(&any_all_handler<DependencySpecTree, AnyDepSpec>, std::ref(stack)),
n::on_arrow() = std::bind(&arrows_not_allowed_handler, s, _1, _2),
n::on_error() = std::bind(&error_handler, s, _1),
@@ -451,7 +499,10 @@ paludis::erepository::parse_depend(const std::string & s, const Environment * co
n::on_no_annotations() = &do_nothing,
n::on_pop() = std::bind(&pop_handler<DependencySpecTree>, std::ref(stack),
ParseStackTypes<DependencySpecTree>::AnnotationsGoHere(std::bind(
- &set_thing_to_annotate, std::ref(thing_to_annotate), _1)), s),
+ &set_thing_to_annotate, std::ref(thing_to_annotate), _1)),
+ ParseStackTypes<DependencySpecTree>::StarAnnotationsGoHere(std::bind(
+ &set_thing_to_star_annotate, std::ref(thing_to_star_annotate), _1)),
+ s),
n::on_should_be_empty() = std::bind(&should_be_empty_handler<DependencySpecTree>, std::ref(stack), s),
n::on_string() = std::bind(&package_or_block_dep_spec_string_handler<DependencySpecTree>, std::ref(stack),
ParseStackTypes<DependencySpecTree>::AnnotationsGoHere(std::bind(
@@ -477,6 +528,7 @@ paludis::erepository::parse_provide(const std::string & s, const Environment * c
ParseStackTypes<ProvideSpecTree>::Stack stack;
std::shared_ptr<AllDepSpec> spec(std::make_shared<AllDepSpec>());
std::shared_ptr<DepSpec> thing_to_annotate(spec);
+ std::list<std::shared_ptr<DepSpec> > thing_to_star_annotate;
std::shared_ptr<ProvideSpecTree> top(std::make_shared<ProvideSpecTree>(spec));
stack.push_front(make_named_values<ParseStackTypes<ProvideSpecTree>::Item>(
n::block_children() = std::list<std::pair<std::shared_ptr<BlockDepSpec>, BlockFixOp> >(),
@@ -488,7 +540,7 @@ paludis::erepository::parse_provide(const std::string & s, const Environment * c
ELikeDepParserCallbacks callbacks(
make_named_values<ELikeDepParserCallbacks>(
n::on_all() = std::bind(&any_all_handler<ProvideSpecTree, AllDepSpec>, std::ref(stack)),
- n::on_annotations() = std::bind(&apply_annotations, std::cref(eapi), std::ref(thing_to_annotate), _1),
+ n::on_annotations() = std::bind(&apply_annotations, std::cref(eapi), std::ref(thing_to_annotate), std::cref(thing_to_star_annotate), _1),
n::on_any() = std::bind(&any_not_allowed_handler, s),
n::on_arrow() = std::bind(&arrows_not_allowed_handler, s, _1, _2),
n::on_error() = std::bind(&error_handler, s, _1),
@@ -497,7 +549,10 @@ paludis::erepository::parse_provide(const std::string & s, const Environment * c
n::on_no_annotations() = &do_nothing,
n::on_pop() = std::bind(&pop_handler<ProvideSpecTree>, std::ref(stack),
ParseStackTypes<ProvideSpecTree>::AnnotationsGoHere(std::bind(
- &set_thing_to_annotate, std::ref(thing_to_annotate), _1)), s),
+ &set_thing_to_annotate, std::ref(thing_to_annotate), _1)),
+ ParseStackTypes<ProvideSpecTree>::StarAnnotationsGoHere(std::bind(
+ &set_thing_to_star_annotate, std::ref(thing_to_star_annotate), _1)),
+ s),
n::on_should_be_empty() = std::bind(&should_be_empty_handler<ProvideSpecTree>, std::ref(stack), s),
n::on_string() = std::bind(&package_dep_spec_string_handler<ProvideSpecTree>, std::ref(stack),
ParseStackTypes<ProvideSpecTree>::AnnotationsGoHere(std::bind(
@@ -519,6 +574,7 @@ paludis::erepository::parse_fetchable_uri(const std::string & s, const Environme
ParseStackTypes<FetchableURISpecTree>::Stack stack;
std::shared_ptr<AllDepSpec> spec(std::make_shared<AllDepSpec>());
std::shared_ptr<DepSpec> thing_to_annotate(spec);
+ std::list<std::shared_ptr<DepSpec> > thing_to_star_annotate;
std::shared_ptr<FetchableURISpecTree> top(std::make_shared<FetchableURISpecTree>(spec));
stack.push_front(make_named_values<ParseStackTypes<FetchableURISpecTree>::Item>(
n::block_children() = std::list<std::pair<std::shared_ptr<BlockDepSpec>, BlockFixOp> >(),
@@ -530,7 +586,7 @@ paludis::erepository::parse_fetchable_uri(const std::string & s, const Environme
ELikeDepParserCallbacks callbacks(
make_named_values<ELikeDepParserCallbacks>(
n::on_all() = std::bind(&any_all_handler<FetchableURISpecTree, AllDepSpec>, std::ref(stack)),
- n::on_annotations() = std::bind(&apply_annotations, std::cref(eapi), std::ref(thing_to_annotate), _1),
+ n::on_annotations() = std::bind(&apply_annotations, std::cref(eapi), std::ref(thing_to_annotate), std::cref(thing_to_star_annotate), _1),
n::on_any() = std::bind(&any_not_allowed_handler, s),
n::on_arrow() = std::bind(&arrow_handler<FetchableURISpecTree>, std::ref(stack),
ParseStackTypes<FetchableURISpecTree>::AnnotationsGoHere(std::bind(
@@ -543,7 +599,10 @@ paludis::erepository::parse_fetchable_uri(const std::string & s, const Environme
n::on_no_annotations() = &do_nothing,
n::on_pop() = std::bind(&pop_handler<FetchableURISpecTree>, std::ref(stack),
ParseStackTypes<FetchableURISpecTree>::AnnotationsGoHere(std::bind(
- &set_thing_to_annotate, std::ref(thing_to_annotate), _1)), s),
+ &set_thing_to_annotate, std::ref(thing_to_annotate), _1)),
+ ParseStackTypes<FetchableURISpecTree>::StarAnnotationsGoHere(std::bind(
+ &set_thing_to_star_annotate, std::ref(thing_to_star_annotate), _1)),
+ s),
n::on_should_be_empty() = std::bind(&should_be_empty_handler<FetchableURISpecTree>, std::ref(stack), s),
n::on_string() = std::bind(&arrow_handler<FetchableURISpecTree>, std::ref(stack),
ParseStackTypes<FetchableURISpecTree>::AnnotationsGoHere(std::bind(
@@ -565,6 +624,7 @@ paludis::erepository::parse_simple_uri(const std::string & s, const Environment
ParseStackTypes<SimpleURISpecTree>::Stack stack;
std::shared_ptr<AllDepSpec> spec(std::make_shared<AllDepSpec>());
std::shared_ptr<DepSpec> thing_to_annotate(spec);
+ std::list<std::shared_ptr<DepSpec> > thing_to_star_annotate;
std::shared_ptr<SimpleURISpecTree> top(std::make_shared<SimpleURISpecTree>(spec));
stack.push_front(make_named_values<ParseStackTypes<SimpleURISpecTree>::Item>(
n::block_children() = std::list<std::pair<std::shared_ptr<BlockDepSpec>, BlockFixOp> >(),
@@ -576,7 +636,7 @@ paludis::erepository::parse_simple_uri(const std::string & s, const Environment
ELikeDepParserCallbacks callbacks(
make_named_values<ELikeDepParserCallbacks>(
n::on_all() = std::bind(&any_all_handler<SimpleURISpecTree, AllDepSpec>, std::ref(stack)),
- n::on_annotations() = std::bind(&apply_annotations, std::cref(eapi), std::ref(thing_to_annotate), _1),
+ n::on_annotations() = std::bind(&apply_annotations, std::cref(eapi), std::ref(thing_to_annotate), std::cref(thing_to_star_annotate), _1),
n::on_any() = std::bind(&any_not_allowed_handler, s),
n::on_arrow() = std::bind(&arrows_not_allowed_handler, s, _1, _2),
n::on_error() = std::bind(&error_handler, s, _1),
@@ -585,7 +645,10 @@ paludis::erepository::parse_simple_uri(const std::string & s, const Environment
n::on_no_annotations() = &do_nothing,
n::on_pop() = std::bind(&pop_handler<SimpleURISpecTree>, std::ref(stack),
ParseStackTypes<SimpleURISpecTree>::AnnotationsGoHere(std::bind(
- &set_thing_to_annotate, std::ref(thing_to_annotate), _1)), s),
+ &set_thing_to_annotate, std::ref(thing_to_annotate), _1)),
+ ParseStackTypes<SimpleURISpecTree>::StarAnnotationsGoHere(std::bind(
+ &set_thing_to_star_annotate, std::ref(thing_to_star_annotate), _1)),
+ s),
n::on_should_be_empty() = std::bind(&should_be_empty_handler<SimpleURISpecTree>, std::ref(stack), s),
n::on_string() = std::bind(&simple_uri_handler<SimpleURISpecTree>, std::ref(stack),
ParseStackTypes<SimpleURISpecTree>::AnnotationsGoHere(std::bind(
@@ -607,6 +670,7 @@ paludis::erepository::parse_license(const std::string & s, const Environment * c
ParseStackTypes<LicenseSpecTree>::Stack stack;
std::shared_ptr<AllDepSpec> spec(std::make_shared<AllDepSpec>());
std::shared_ptr<DepSpec> thing_to_annotate(spec);
+ std::list<std::shared_ptr<DepSpec> > thing_to_star_annotate;
std::shared_ptr<LicenseSpecTree> top(std::make_shared<LicenseSpecTree>(spec));
stack.push_front(make_named_values<ParseStackTypes<LicenseSpecTree>::Item>(
n::block_children() = std::list<std::pair<std::shared_ptr<BlockDepSpec>, BlockFixOp> >(),
@@ -618,7 +682,7 @@ paludis::erepository::parse_license(const std::string & s, const Environment * c
ELikeDepParserCallbacks callbacks(
make_named_values<ELikeDepParserCallbacks>(
n::on_all() = std::bind(&any_all_handler<LicenseSpecTree, AllDepSpec>, std::ref(stack)),
- n::on_annotations() = std::bind(&apply_annotations, std::cref(eapi), std::ref(thing_to_annotate), _1),
+ n::on_annotations() = std::bind(&apply_annotations, std::cref(eapi), std::ref(thing_to_annotate), std::cref(thing_to_star_annotate), _1),
n::on_any() = std::bind(&any_all_handler<LicenseSpecTree, AnyDepSpec>, std::ref(stack)),
n::on_arrow() = std::bind(&arrows_not_allowed_handler, s, _1, _2),
n::on_error() = std::bind(&error_handler, s, _1),
@@ -627,7 +691,10 @@ paludis::erepository::parse_license(const std::string & s, const Environment * c
n::on_no_annotations() = &do_nothing,
n::on_pop() = std::bind(&pop_handler<LicenseSpecTree>, std::ref(stack),
ParseStackTypes<LicenseSpecTree>::AnnotationsGoHere(std::bind(
- &set_thing_to_annotate, std::ref(thing_to_annotate), _1)), s),
+ &set_thing_to_annotate, std::ref(thing_to_annotate), _1)),
+ ParseStackTypes<LicenseSpecTree>::StarAnnotationsGoHere(std::bind(
+ &set_thing_to_star_annotate, std::ref(thing_to_star_annotate), _1)),
+ s),
n::on_should_be_empty() = std::bind(&should_be_empty_handler<LicenseSpecTree>, std::ref(stack), s),
n::on_string() = std::bind(&license_handler<LicenseSpecTree>, std::ref(stack),
ParseStackTypes<LicenseSpecTree>::AnnotationsGoHere(std::bind(
@@ -649,6 +716,7 @@ paludis::erepository::parse_plain_text(const std::string & s, const Environment
ParseStackTypes<PlainTextSpecTree>::Stack stack;
std::shared_ptr<AllDepSpec> spec(std::make_shared<AllDepSpec>());
std::shared_ptr<DepSpec> thing_to_annotate(spec);
+ std::list<std::shared_ptr<DepSpec> > thing_to_star_annotate;
std::shared_ptr<PlainTextSpecTree> top(std::make_shared<PlainTextSpecTree>(spec));
stack.push_front(make_named_values<ParseStackTypes<PlainTextSpecTree>::Item>(
n::block_children() = std::list<std::pair<std::shared_ptr<BlockDepSpec>, BlockFixOp> >(),
@@ -660,7 +728,7 @@ paludis::erepository::parse_plain_text(const std::string & s, const Environment
ELikeDepParserCallbacks callbacks(
make_named_values<ELikeDepParserCallbacks>(
n::on_all() = std::bind(&any_all_handler<PlainTextSpecTree, AllDepSpec>, std::ref(stack)),
- n::on_annotations() = std::bind(&apply_annotations, std::cref(eapi), std::ref(thing_to_annotate), _1),
+ n::on_annotations() = std::bind(&apply_annotations, std::cref(eapi), std::ref(thing_to_annotate), std::cref(thing_to_star_annotate), _1),
n::on_any() = std::bind(&any_not_allowed_handler, s),
n::on_arrow() = std::bind(&arrows_not_allowed_handler, s, _1, _2),
n::on_error() = std::bind(&error_handler, s, _1),
@@ -668,8 +736,11 @@ paludis::erepository::parse_plain_text(const std::string & s, const Environment
n::on_label() = std::bind(&labels_not_allowed_handler, s, _1),
n::on_no_annotations() = &do_nothing,
n::on_pop() = std::bind(&pop_handler<PlainTextSpecTree>, std::ref(stack),
- ParseStackTypes<PlainTextSpecTree>::AnnotationsGoHere(std::bind(
- &set_thing_to_annotate, std::ref(thing_to_annotate), _1)), s),
+ ParseStackTypes<PlainTextSpecTree>::AnnotationsGoHere(std::bind(
+ &set_thing_to_annotate, std::ref(thing_to_annotate), _1)),
+ ParseStackTypes<PlainTextSpecTree>::StarAnnotationsGoHere(std::bind(
+ &set_thing_to_star_annotate, std::ref(thing_to_star_annotate), _1)),
+ s),
n::on_should_be_empty() = std::bind(&should_be_empty_handler<PlainTextSpecTree>, std::ref(stack), s),
n::on_string() = std::bind(&plain_text_handler<PlainTextSpecTree>, std::ref(stack),
ParseStackTypes<PlainTextSpecTree>::AnnotationsGoHere(std::bind(
@@ -691,6 +762,7 @@ paludis::erepository::parse_myoptions(const std::string & s, const Environment *
ParseStackTypes<PlainTextSpecTree>::Stack stack;
std::shared_ptr<AllDepSpec> spec(std::make_shared<AllDepSpec>());
std::shared_ptr<DepSpec> thing_to_annotate(spec);
+ std::list<std::shared_ptr<DepSpec> > thing_to_star_annotate;
std::shared_ptr<PlainTextSpecTree> top(std::make_shared<PlainTextSpecTree>(spec));
stack.push_front(make_named_values<ParseStackTypes<PlainTextSpecTree>::Item>(
n::block_children() = std::list<std::pair<std::shared_ptr<BlockDepSpec>, BlockFixOp> >(),
@@ -702,7 +774,7 @@ paludis::erepository::parse_myoptions(const std::string & s, const Environment *
ELikeDepParserCallbacks callbacks(
make_named_values<ELikeDepParserCallbacks>(
n::on_all() = std::bind(&any_all_handler<PlainTextSpecTree, AllDepSpec>, std::ref(stack)),
- n::on_annotations() = std::bind(&apply_annotations, std::cref(eapi), std::ref(thing_to_annotate), _1),
+ n::on_annotations() = std::bind(&apply_annotations, std::cref(eapi), std::ref(thing_to_annotate), std::cref(thing_to_star_annotate), _1),
n::on_any() = std::bind(&any_not_allowed_handler, s),
n::on_arrow() = std::bind(&arrows_not_allowed_handler, s, _1, _2),
n::on_error() = std::bind(&error_handler, s, _1),
@@ -712,8 +784,11 @@ paludis::erepository::parse_myoptions(const std::string & s, const Environment *
&set_thing_to_annotate, std::ref(thing_to_annotate), _1)), _1),
n::on_no_annotations() = &do_nothing,
n::on_pop() = std::bind(&pop_handler<PlainTextSpecTree>, std::ref(stack),
- ParseStackTypes<PlainTextSpecTree>::AnnotationsGoHere(std::bind(
- &set_thing_to_annotate, std::ref(thing_to_annotate), _1)), s),
+ ParseStackTypes<PlainTextSpecTree>::AnnotationsGoHere(std::bind(
+ &set_thing_to_annotate, std::ref(thing_to_annotate), _1)),
+ ParseStackTypes<PlainTextSpecTree>::StarAnnotationsGoHere(std::bind(
+ &set_thing_to_star_annotate, std::ref(thing_to_star_annotate), _1)),
+ s),
n::on_should_be_empty() = std::bind(&should_be_empty_handler<PlainTextSpecTree>, std::ref(stack), s),
n::on_string() = std::bind(&plain_text_handler<PlainTextSpecTree>, std::ref(stack),
ParseStackTypes<PlainTextSpecTree>::AnnotationsGoHere(std::bind(
@@ -735,6 +810,7 @@ paludis::erepository::parse_required_use(const std::string & s, const Environmen
ParseStackTypes<RequiredUseSpecTree>::Stack stack;
std::shared_ptr<AllDepSpec> spec(std::make_shared<AllDepSpec>());
std::shared_ptr<DepSpec> thing_to_annotate(spec);
+ std::list<std::shared_ptr<DepSpec> > thing_to_star_annotate;
std::shared_ptr<RequiredUseSpecTree> top(std::make_shared<RequiredUseSpecTree>(spec));
stack.push_front(make_named_values<ParseStackTypes<RequiredUseSpecTree>::Item>(
n::block_children() = std::list<std::pair<std::shared_ptr<BlockDepSpec>, BlockFixOp> >(),
@@ -746,7 +822,7 @@ paludis::erepository::parse_required_use(const std::string & s, const Environmen
ELikeDepParserCallbacks callbacks(
make_named_values<ELikeDepParserCallbacks>(
n::on_all() = std::bind(&any_all_handler<RequiredUseSpecTree, AllDepSpec>, std::ref(stack)),
- n::on_annotations() = std::bind(&apply_annotations, std::cref(eapi), std::ref(thing_to_annotate), _1),
+ n::on_annotations() = std::bind(&apply_annotations, std::cref(eapi), std::ref(thing_to_annotate), std::cref(thing_to_star_annotate), _1),
n::on_any() = std::bind(&any_all_handler<RequiredUseSpecTree, AnyDepSpec>, std::ref(stack)),
n::on_arrow() = std::bind(&arrows_not_allowed_handler, s, _1, _2),
n::on_error() = std::bind(&error_handler, s, _1),
@@ -754,8 +830,11 @@ paludis::erepository::parse_required_use(const std::string & s, const Environmen
n::on_label() = std::bind(&labels_not_allowed_handler, s, _1),
n::on_no_annotations() = &do_nothing,
n::on_pop() = std::bind(&pop_handler<RequiredUseSpecTree>, std::ref(stack),
- ParseStackTypes<RequiredUseSpecTree>::AnnotationsGoHere(std::bind(
- &set_thing_to_annotate, std::ref(thing_to_annotate), _1)), s),
+ ParseStackTypes<RequiredUseSpecTree>::AnnotationsGoHere(std::bind(
+ &set_thing_to_annotate, std::ref(thing_to_annotate), _1)),
+ ParseStackTypes<RequiredUseSpecTree>::StarAnnotationsGoHere(std::bind(
+ &set_thing_to_star_annotate, std::ref(thing_to_star_annotate), _1)),
+ s),
n::on_should_be_empty() = std::bind(&should_be_empty_handler<RequiredUseSpecTree>, std::ref(stack), s),
n::on_string() = std::bind(&plain_text_handler<RequiredUseSpecTree>, std::ref(stack),
ParseStackTypes<RequiredUseSpecTree>::AnnotationsGoHere(std::bind(