@@ -198,6 +198,27 @@ CompletionPolicy CompletionPolicyHelpers::consumeExistingWhenAny(const char* nam
198198}
199199
200200CompletionPolicy CompletionPolicyHelpers::consumeWhenAny (const char * name, CompletionPolicy::Matcher matcher)
201+ {
202+ auto callback = [](InputSpan const & inputs) -> CompletionPolicy::CompletionOp {
203+ for (auto & input : inputs) {
204+ if (input.header != nullptr ) {
205+ return CompletionPolicy::CompletionOp::Consume;
206+ }
207+ }
208+ return CompletionPolicy::CompletionOp::Wait;
209+ };
210+ return CompletionPolicy{name, matcher, callback, false };
211+ }
212+
213+ CompletionPolicy CompletionPolicyHelpers::consumeWhenAny (std::string matchName)
214+ {
215+ auto matcher = [matchName](DeviceSpec const & device) -> bool {
216+ return std::regex_match (device.name .begin (), device.name .end (), std::regex (matchName));
217+ };
218+ return consumeWhenAny (matcher);
219+ }
220+
221+ CompletionPolicy CompletionPolicyHelpers::consumeWhenAnyWithAllConditions (const char * name, CompletionPolicy::Matcher matcher)
201222{
202223 auto callback = [](InputSpan const & inputs, std::vector<InputSpec> const & specs) -> CompletionPolicy::CompletionOp {
203224 bool canConsume = false ;
@@ -258,12 +279,12 @@ CompletionPolicy CompletionPolicyHelpers::consumeWhenAny(const char* name, Compl
258279 return CompletionPolicy{name, matcher, callback, false };
259280}
260281
261- CompletionPolicy CompletionPolicyHelpers::consumeWhenAny (std::string matchName)
282+ CompletionPolicy CompletionPolicyHelpers::consumeWhenAnyWithAllConditions (std::string matchName)
262283{
263284 auto matcher = [matchName](DeviceSpec const & device) -> bool {
264285 return std::regex_match (device.name .begin (), device.name .end (), std::regex (matchName));
265286 };
266- return consumeWhenAny (matcher);
287+ return consumeWhenAnyWithAllConditions (matcher);
267288}
268289
269290CompletionPolicy CompletionPolicyHelpers::processWhenAny (const char * name, CompletionPolicy::Matcher matcher)
0 commit comments