Example #1
0
bool PPLMGeneralComparison::compare_minmax(xmlscm_type type_info, bool min_changed)
{
	if (type_info==xs_untyped) return false;
	if (min_changed)
	{
		switch (type_info)
		{
		case xs_string:
			if (min_str && max_str && op_lt(min_str_cell,max_str_cell,handler).get_xs_boolean()) return true;
			if (min_ut_num && max_num && op_lt(min_ut_num_cell,max_num_cell,handler).get_xs_boolean()) return true;
			if (min_ut_dat && max_dat && op_lt(min_ut_dat_cell,max_dat_cell,handler).get_xs_boolean()) return true;
            break;
		case xs_double:
			if (min_num && max_num && op_lt(min_num_cell,max_num_cell,handler).get_xs_boolean()) return true;
			if (min_num && max_ut_num && op_lt(min_num_cell,max_ut_num_cell,handler).get_xs_boolean()) return true;
			break;
		case xs_date:
			if (min_dat && max_dat && op_lt(min_dat_cell,max_dat_cell,handler).get_xs_boolean()) return true;
			if (min_dat && max_ut_dat && op_lt(min_dat_cell,max_ut_dat_cell,handler).get_xs_boolean()) return true;
			break;
		}
	}
	else
	{
		switch (type_info)
		{
		case xs_string:
			if (min_str && max_str && op_lt(min_str_cell,max_str_cell,handler).get_xs_boolean()) return true;
			if (min_num && max_ut_num && op_lt(min_num_cell,max_ut_num_cell,handler).get_xs_boolean()) return true;
			if (min_dat && max_ut_dat && op_lt(min_dat_cell,max_ut_dat_cell,handler).get_xs_boolean()) return true;
			break;
		case xs_double:
			if (min_ut_num && max_num && op_lt(min_ut_num_cell,max_num_cell,handler).get_xs_boolean()) return true;
			if (min_num && max_num && op_lt(min_num_cell,max_num_cell,handler).get_xs_boolean()) return true;
			break;
		case xs_date:
			if (min_ut_dat && max_dat && op_lt(min_ut_dat_cell,max_dat_cell,handler).get_xs_boolean()) return true;
           	if (min_dat && max_dat && op_lt(min_dat_cell,max_dat_cell,handler).get_xs_boolean()) return true;
				break;
		}
	}
	return false;
}
Example #2
0
int main(int argc, char** argv)
{
    concatenating_strings();
    op_lt();
    return 0;
}
Example #3
0
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
/// PPLMGeneralComparison
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
xmlscm_type PPLMGeneralComparison::fill_minimums(tuple_cell value)
{
	xmlscm_type ret_type=xs_untyped;
	if (!is_fixed_size_type(value.get_atomic_type()))
	{
		if (min_str)
		{
			if (op_lt(value,min_str_cell,handler).get_xs_boolean()) 
			{
				min_str_cell=value;
				ret_type=xs_string;
			}
		}
		else
		{
			min_str_cell=value;
			min_str=true;
			ret_type=xs_string;
		}
		try
		{ 
			tuple_cell num_val=cast(value, xs_double);
			if (min_ut_num)
			{
				if (op_lt(num_val,min_ut_num_cell,handler).get_xs_boolean()) 
				{
					min_ut_num_cell=num_val;
					ret_type=xs_string;				
				}
			}
			else
			{
				min_ut_num_cell=num_val;
				min_ut_num=true;
				ret_type=xs_string;
			}
		}
		catch(ANY_SE_EXCEPTION)
		{
		 if (max_num)
			 throw XQUERY_EXCEPTION(FORG0001);
			min_num_cast=true;
		}
		try
		{ 
			tuple_cell num_val=cast(value,xs_date);
			if (min_ut_dat)
			{
				if (op_lt(num_val,min_ut_dat_cell,handler).get_xs_boolean()) 
				{
					min_ut_dat_cell=num_val;
					ret_type=xs_string;
				}
			}
			else
			{
				min_ut_dat_cell=num_val;
				min_ut_dat=true;
				ret_type=xs_string;
			}
		}
		catch(ANY_SE_EXCEPTION)
		{
			if (max_dat)
			 throw XQUERY_EXCEPTION(FORG0001);
			min_dat_cast=true;
		}
		return ret_type;
	}
	if (is_numeric_type(value.get_atomic_type()))
	{
		if (min_num)
		{
			if (op_lt(value,min_num_cell,handler).get_xs_boolean()) 
			{
				min_num_cell=value;
				ret_type=xs_double;
			}
		}
		else
		{
			min_num_cell=value;
			min_num=true;
			ret_type=xs_double;
		}
		return ret_type;
	}
	if (value.get_type()==xs_date)
	{
		if (min_dat)
		{
			if (op_lt(value,min_dat_cell,handler).get_xs_boolean()) 
			{
				min_dat_cell=value;
				ret_type=xs_date;
			}
		}
		else
		{
			min_dat_cell=value;
			min_dat=true;
			ret_type=xs_date;
		}
		return ret_type;
	}
	return ret_type;
}