Ejemplo n.º 1
0
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"));
		}
	}
}
Ejemplo n.º 2
0
pgsRegexGen *pgsRegexGen::clone()
{
	return pnew pgsRegexGen(*this);
}