Branch data Line data Source code
1 : : /****************************************************************************** 2 : : * Top contributors (to current version): 3 : : * Andrew Reynolds, Aina Niemetz 4 : : * 5 : : * This file is part of the cvc5 project. 6 : : * 7 : : * Copyright (c) 2009-2024 by the authors listed in the file AUTHORS 8 : : * in the top-level source directory and their institutional affiliations. 9 : : * All rights reserved. See the file COPYING in the top-level source 10 : : * directory for licensing information. 11 : : * **************************************************************************** 12 : : * 13 : : * Implementation of enumerator for regular expressions. 14 : : */ 15 : : 16 : : #include "theory/strings/regexp_enumerator.h" 17 : : 18 : : namespace cvc5::internal { 19 : : namespace theory { 20 : : namespace strings { 21 : : 22 : 4 : RegExpEnumerator::RegExpEnumerator(TypeNode type, TypeEnumeratorProperties* tep) 23 : : : TypeEnumeratorBase<RegExpEnumerator>(type), 24 : 4 : d_senum(NodeManager::currentNM()->stringType(), tep) 25 : : { 26 : 4 : } 27 : : 28 : 4 : RegExpEnumerator::RegExpEnumerator(const RegExpEnumerator& enumerator) 29 : 4 : : TypeEnumeratorBase<RegExpEnumerator>(enumerator.getType()), 30 : 8 : d_senum(enumerator.d_senum) 31 : : { 32 : 4 : } 33 : : 34 : 147 : Node RegExpEnumerator::operator*() 35 : : { 36 : 147 : NodeManager* nm = NodeManager::currentNM(); 37 : 147 : return nm->mkNode(Kind::STRING_TO_REGEXP, *d_senum); 38 : : } 39 : : 40 : 49 : RegExpEnumerator& RegExpEnumerator::operator++() 41 : : { 42 : 49 : ++d_senum; 43 : 49 : return *this; 44 : : } 45 : : 46 : 196 : bool RegExpEnumerator::isFinished() { return d_senum.isFinished(); } 47 : : 48 : : } // namespace strings 49 : : } // namespace theory 50 : : } // namespace cvc5::internal