pgsOperand pgsGenRegex::eval(pgsVarMap & vars) const { // Evaluate parameters pgsOperand regex(m_regex->eval(vars)); pgsOperand seed(m_seed->eval(vars)); // Check parameters and create the generator if (regex->is_string() && seed->is_integer()) { long aux_seed; seed->value().ToLong(&aux_seed); pgsRegexGen * gen = pnew pgsRegexGen(regex->value(), aux_seed); if (!gen->is_valid()) { pdelete(gen); throw pgsParameterException(wxString() << value() << wxT(":\nregex is not a valid regular expression")); } else { return pnew pgsGenerator(pgsVariable::pgsTString, gen); } } else { // Deal with errors if (!regex->is_string()) { throw pgsParameterException(wxString() << value() << wxT(":\nregex should be a string")); } else { throw pgsParameterException(wxString() << value() << wxT(":\nseed should be an integer")); } } }
pgsRegexGen *pgsRegexGen::clone() { return pnew pgsRegexGen(*this); }