Exemplo n.º 1
0
const char* csConditionEvaluator::ProcessExpressionInternal (
  csExpression* expression, csConditionID& cond)
{
  CondOperation newOp;
  const char* err = ProcessExpressionInternal (expression, newOp);
  if (err) return err;
  cond = FindOptimizedConditionInternal (newOp);
  return 0;
}
Exemplo n.º 2
0
const char* csConditionEvaluator::ResolveOperand (csExpression* expression, 
  CondOperand& operand)
{
  const char* err;

  if (expression->type == csExpression::Value)
  {
    err = ResolveExpValue (expression->valueValue, operand);
    if (err)
    {
      return SetLastError ("Can't resolve value %s: %s",
	CS::Quote::Single (csExpressionToken::Extractor (expression->valueValue).Get ()),
	err);
    }
    return 0;
  }

  const csExpressionToken& t = expression->expressionValue.op;
  if (TokenEquals (t.tokenStart, t.tokenLen, "."))
  {
    CS_ASSERT (expression->expressionValue.left->type 
      == csExpression::Value);
    const csExpressionToken& left = 
      expression->expressionValue.left->valueValue;
    if (TokenEquals (left.tokenStart, left.tokenLen, "vars"))
    {
      err = ResolveSVIdentifier (expression->expressionValue.right,
	operand);
      if (err)
	return err;
      return 0;
    }
    else if (TokenEquals (left.tokenStart, left.tokenLen, "consts"))
    {
      err = ResolveConst (expression->expressionValue.right,
	operand);
      if (err)
	return err;
      return 0;
    }
    else
    {
      return SetLastError ("Unknown identifier %s",
	CS::Quote::Single (csExpressionToken::Extractor (left).Get ()));
    }
  }
  else
  {
    operand.type = operandOperation;
    err = ProcessExpressionInternal (expression, operand.operation);
    if (err)
      return err;
    return 0;
  }
  CS_ASSERT (false);
  return 0;
}
Exemplo n.º 3
0
const char* csConditionEvaluator::ProcessExpression (csExpression* expression, 
  CondOperation& operation)
{
  LockType lock (mutex);
  return ProcessExpressionInternal (expression, operation);
}
Exemplo n.º 4
0
const char* csConditionEvaluator::ProcessExpression (
  csExpression* expression, csConditionID& cond)
{
  LockType lock (mutex);
  return ProcessExpressionInternal (expression, cond);
}