12#ifndef FORTRAN_LOWER_CLAUSEFINDER_H
13#define FORTRAN_LOWER_CLAUSEFINDER_H
15#include "flang/Lower/OpenMP/Clauses.h"
22 using ClauseIterator = List<Clause>::const_iterator;
27 static ClauseIterator
findClause(ClauseIterator begin, ClauseIterator end) {
28 for (ClauseIterator it = begin; it != end; ++it) {
29 if (std::get_if<T>(&it->u))
42 ClauseIterator it =
findClause<T>(clauses.begin(), clauses.end());
43 if (it != clauses.end()) {
45 *source = &it->source;
46 return &std::get<T>(it->u);
55 const List<Clause> &clauses,
59 ClauseIterator nextIt, endIt = clauses.end();
60 for (ClauseIterator it = clauses.begin(); it != endIt; it = nextIt) {
63 if (nextIt != endIt) {
64 callbackFn(std::get<T>(nextIt->u), nextIt->source);
Definition ClauseFinder.h:21
static bool findRepeatableClause(const List< Clause > &clauses, std::function< void(const T &, const parser::CharBlock &source)> callbackFn)
Definition ClauseFinder.h:54
static const T * findUniqueClause(const List< Clause > &clauses, const parser::CharBlock **source=nullptr)
Definition ClauseFinder.h:40
static ClauseIterator findClause(ClauseIterator begin, ClauseIterator end)
Utility to find a clause within a range in the clause list.
Definition ClauseFinder.h:27
Definition char-block.h:28
Definition ParserActions.h:24
Definition bit-population-count.h:20