diff options
author | Andrew Reynolds <andrew.j.reynolds@gmail.com> | 2021-10-21 19:32:08 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-10-21 19:32:08 -0500 |
commit | 81d4a2a0e337e341ac1373de0be8762617372ffc (patch) | |
tree | eec38cb65373f9df09fde442fc69bd2088f7d005 /src/theory/strings/regexp_enumerator.cpp | |
parent | 638c0bfdc798116925f839118dffd86581a58d43 (diff) | |
parent | f9de5395d78bc5338ca800e539e91795730cbd29 (diff) |
Merge branch 'master' into fixErrorSetfixErrorSet
Diffstat (limited to 'src/theory/strings/regexp_enumerator.cpp')
-rw-r--r-- | src/theory/strings/regexp_enumerator.cpp | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/src/theory/strings/regexp_enumerator.cpp b/src/theory/strings/regexp_enumerator.cpp new file mode 100644 index 000000000..261d0008e --- /dev/null +++ b/src/theory/strings/regexp_enumerator.cpp @@ -0,0 +1,49 @@ +/****************************************************************************** + * Top contributors (to current version): + * Andrew Reynolds + * + * This file is part of the cvc5 project. + * + * Copyright (c) 2009-2021 by the authors listed in the file AUTHORS + * in the top-level source directory and their institutional affiliations. + * All rights reserved. See the file COPYING in the top-level source + * directory for licensing information. + * **************************************************************************** + * + * Implementation of enumerator for regular expressions. + */ + +#include "theory/strings/regexp_enumerator.h" + +namespace cvc5 { +namespace theory { +namespace strings { + +RegExpEnumerator::RegExpEnumerator(TypeNode type, TypeEnumeratorProperties* tep) + : TypeEnumeratorBase<RegExpEnumerator>(type), d_senum(type, tep) +{ +} + +RegExpEnumerator::RegExpEnumerator(const RegExpEnumerator& enumerator) + : TypeEnumeratorBase<RegExpEnumerator>(enumerator.getType()), + d_senum(enumerator.d_senum) +{ +} + +Node RegExpEnumerator::operator*() +{ + NodeManager* nm = NodeManager::currentNM(); + return nm->mkNode(kind::STRING_TO_REGEXP, *d_senum); +} + +RegExpEnumerator& RegExpEnumerator::operator++() +{ + ++d_senum; + return *this; +} + +bool RegExpEnumerator::isFinished() { return d_senum.isFinished(); } + +} // namespace strings +} // namespace theory +} // namespace cvc5 |