public static QLType FromTokenTypeToQLType(IToken token) { QLType type = QLType.Undefined; switch (token.Type) { case QLParser.INTEGER: type = QLType.Integer; break; case QLParser.BOOLEAN: type = QLType.Boolean; break; case QLParser.DECIMAL: type = QLType.Decimal; break; case QLParser.DATE: type = QLType.Date; break; case QLParser.STRING: type = QLType.String; break; } return(type); }
public QuestionNode(IToken token, string description, string label, bool isEvaluated, QLType type) : base(token) { Description = description; Label = label; Type = type; IsEvaluated = isEvaluated; }
public bool AcceptTypes(QLType leftHand, QLType rightHand) { bool integersOrDecimals = ((leftHand == QLType.Integer || leftHand == QLType.Decimal) && (rightHand == QLType.Integer || rightHand == QLType.Decimal)); bool date = (leftHand == QLType.Date && rightHand == QLType.Date); return(integersOrDecimals || date); }
public QLType ResultingType(QLType leftType, QLType rightType) { if (leftType == rightType) { return(leftType); } return(QLType.Decimal); }
public static QLType ResolveOperationType(QLType leftHand, QLType rightHand) { if (leftHand == rightHand) { return(leftHand); } return(_typeResolutions[new TypePair(leftHand, rightHand)]); }
public bool AcceptTypes(QLType leftHand, QLType rightHand) { if ((leftHand == QLType.Integer || leftHand == QLType.Decimal) && (rightHand == QLType.Integer || rightHand == QLType.Decimal)) { return(true); } return(leftHand == rightHand); }
internal QuestionViewModel(string description, string id, bool isEvaluated, object value, QLType type, FormViewModel parentForm) { _value = value; Id = id; Description = description; IsEvaluated = isEvaluated; QLType = type; Widget = type != QLType.Boolean ? WidgetType.Textbox : WidgetType.Radio; this.ObservableForProperty(x => x.Value) .Subscribe(x => parentForm.QuestionValueAssignedCommand.Execute(this)); }
public override Value Evaluate(Value leftHand, Value rightHand) { QLType finalType = ResultingType(leftHand.Type, rightHand.Type); if (finalType == QLType.Integer) { return(new Value(leftHand.ToInt() * rightHand.ToInt(), finalType)); } else if (finalType == QLType.Decimal) { return(new Value(leftHand.ToDecimal() * rightHand.ToDecimal(), finalType)); } throw new NotSupportedException($"{finalType} is not supported by the '*' operator"); }
public IValue CreateValue(object value, QLType type) { switch (type) { case QLType.Boolean: return(new Value((bool)value, type)); case QLType.String: return(new Value((string)value, type)); case QLType.Integer: return(new Value(Convert.ToInt32(value), type)); case QLType.Decimal: return(new Value(Convert.ToDouble(value), type)); case QLType.Date: return(new Value((string)value, type)); } throw new NotSupportedException("Tried to create a Value of a type that is not implemented."); }
public IValue CreateValueFromString(object value, QLType type) { switch (type) { case QLType.Boolean: return(new Value(bool.Parse(value.ToString()), type)); case QLType.String: return(new Value(value.ToString(), type)); case QLType.Integer: return(new Value(int.Parse(value.ToString()), type)); case QLType.Decimal: return(new Value(double.Parse(value.ToString()), type)); case QLType.Date: return(new Value(value.ToString(), type)); } throw new NotSupportedException("Tried to create a Value of a type that is not implemented."); }
public Symbol(string name, QLType type, IToken token) { Name = name; Type = type; Token = token; }
internal TypePair(QLType first, QLType second) { FirstType = first; SecondType = second; }
public bool IsCompatibleWith(QLType questionType) { return(questionType == QLType.Boolean); }
public QLType ResultingType(QLType value, QLType empty = QLType.Undefined) { return(QLType.Boolean); }
public bool AcceptTypes(QLType value, QLType empty = QLType.Undefined) { return(value == QLType.Boolean); }
public bool IsCompatibleWith(QLType questionType) { return(true); }
private Value(QLType type) : this(_defaultValues[type], type) { }
public bool IsCompatibleWith(QLType questionType) { return(questionType == QLType.Integer || questionType == QLType.Decimal || questionType == QLType.String); }
public Value(object value, QLType type) { _value = value; _type = type; // TODO it is still possible to assign a "23.4" to a QLInteger Value }
public override Node VisitLiteralExpression(LiteralExpressionContext context) { QLType type = QLTypeConverter.FromTokenTypeToQLType(context.Start); return(new LiteralNode(context.Start, context.literal().GetText(), type)); }
public IValue Evaluate(IValue leftHand, IValue rightHand) { QLType finalType = ResultingType(leftHand.Type, rightHand.Type); return(_valueFactory.CreateValue(_operator(leftHand.ToDecimal(), rightHand.ToDecimal()), finalType)); }
public IValue CreateDefaultValue(QLType type) { return(new Value(type)); }
/// <summary> /// Default value constructor /// </summary> public Value(QLType type) : this(_defaultValues[type], type) { }
public QLType ResultingType(QLType leftType, QLType rightType) { return(QLType.Boolean); }
public bool AcceptTypes(QLType leftHand, QLType rightHand) { return(leftHand == QLType.Boolean && rightHand == QLType.Boolean); }
public bool AcceptTypes(QLType value, QLType empty = QLType.Undefined) { return(value == QLType.Integer || value == QLType.Decimal); }
public LiteralNode(IToken token, string value, QLType type) : base(token) { Value = value; Type = type; }
private Value(object value, QLType type) { _value = value; Type = type; }