2019-05-31 12:59:57 +02:00
|
|
|
package sqlbuilder
|
|
|
|
|
|
|
|
|
|
type FloatExpression interface {
|
2019-06-04 12:10:23 +02:00
|
|
|
Expression
|
2019-05-31 12:59:57 +02:00
|
|
|
|
|
|
|
|
EQ(rhs FloatExpression) BoolExpression
|
|
|
|
|
NOT_EQ(rhs FloatExpression) BoolExpression
|
|
|
|
|
IS_DISTINCT_FROM(rhs FloatExpression) BoolExpression
|
|
|
|
|
IS_NOT_DISTINCT_FROM(rhs FloatExpression) BoolExpression
|
|
|
|
|
|
|
|
|
|
LT(rhs FloatExpression) BoolExpression
|
|
|
|
|
LT_EQ(rhs FloatExpression) BoolExpression
|
|
|
|
|
GT(rhs FloatExpression) BoolExpression
|
|
|
|
|
GT_EQ(rhs FloatExpression) BoolExpression
|
|
|
|
|
|
|
|
|
|
ADD(rhs FloatExpression) FloatExpression
|
|
|
|
|
SUB(rhs FloatExpression) FloatExpression
|
|
|
|
|
MUL(rhs FloatExpression) FloatExpression
|
|
|
|
|
DIV(rhs FloatExpression) FloatExpression
|
2019-06-01 15:00:37 +02:00
|
|
|
MOD(rhs FloatExpression) FloatExpression
|
|
|
|
|
POW(rhs FloatExpression) FloatExpression
|
2019-05-31 12:59:57 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type floatInterfaceImpl struct {
|
|
|
|
|
parent FloatExpression
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (n *floatInterfaceImpl) EQ(rhs FloatExpression) BoolExpression {
|
|
|
|
|
return EQ(n.parent, rhs)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (n *floatInterfaceImpl) NOT_EQ(rhs FloatExpression) BoolExpression {
|
|
|
|
|
return NOT_EQ(n.parent, rhs)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (n *floatInterfaceImpl) IS_DISTINCT_FROM(rhs FloatExpression) BoolExpression {
|
|
|
|
|
return IS_DISTINCT_FROM(n.parent, rhs)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (n *floatInterfaceImpl) IS_NOT_DISTINCT_FROM(rhs FloatExpression) BoolExpression {
|
|
|
|
|
return IS_NOT_DISTINCT_FROM(n.parent, rhs)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (n *floatInterfaceImpl) GT(rhs FloatExpression) BoolExpression {
|
|
|
|
|
return GT(n.parent, rhs)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (n *floatInterfaceImpl) GT_EQ(rhs FloatExpression) BoolExpression {
|
|
|
|
|
return GT_EQ(n.parent, rhs)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (n *floatInterfaceImpl) LT(expression FloatExpression) BoolExpression {
|
|
|
|
|
return LT(n.parent, expression)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (n *floatInterfaceImpl) LT_EQ(expression FloatExpression) BoolExpression {
|
|
|
|
|
return LT_EQ(n.parent, expression)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (n *floatInterfaceImpl) ADD(expression FloatExpression) FloatExpression {
|
|
|
|
|
return newBinaryFloatExpression(n.parent, expression, "+")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (n *floatInterfaceImpl) SUB(expression FloatExpression) FloatExpression {
|
|
|
|
|
return newBinaryFloatExpression(n.parent, expression, "-")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (n *floatInterfaceImpl) MUL(expression FloatExpression) FloatExpression {
|
|
|
|
|
return newBinaryFloatExpression(n.parent, expression, "*")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (n *floatInterfaceImpl) DIV(expression FloatExpression) FloatExpression {
|
|
|
|
|
return newBinaryFloatExpression(n.parent, expression, "/")
|
|
|
|
|
}
|
|
|
|
|
|
2019-06-01 15:00:37 +02:00
|
|
|
func (n *floatInterfaceImpl) MOD(expression FloatExpression) FloatExpression {
|
|
|
|
|
return newBinaryFloatExpression(n.parent, expression, "%")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (n *floatInterfaceImpl) POW(expression FloatExpression) FloatExpression {
|
|
|
|
|
return newBinaryFloatExpression(n.parent, expression, "^")
|
|
|
|
|
}
|
|
|
|
|
|
2019-05-31 12:59:57 +02:00
|
|
|
//---------------------------------------------------//
|
|
|
|
|
type binaryFloatExpression struct {
|
|
|
|
|
expressionInterfaceImpl
|
|
|
|
|
floatInterfaceImpl
|
|
|
|
|
|
|
|
|
|
binaryOpExpression
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func newBinaryFloatExpression(lhs, rhs FloatExpression, operator string) FloatExpression {
|
|
|
|
|
floatExpression := binaryFloatExpression{}
|
|
|
|
|
|
|
|
|
|
floatExpression.binaryOpExpression = newBinaryExpression(lhs, rhs, operator)
|
|
|
|
|
|
|
|
|
|
floatExpression.expressionInterfaceImpl.parent = &floatExpression
|
|
|
|
|
floatExpression.floatInterfaceImpl.parent = &floatExpression
|
|
|
|
|
|
|
|
|
|
return &floatExpression
|
|
|
|
|
}
|
|
|
|
|
|
2019-06-07 14:23:14 +02:00
|
|
|
//---------------------------------------------------//
|
|
|
|
|
|
2019-05-31 12:59:57 +02:00
|
|
|
type floatExpressionWrapper struct {
|
|
|
|
|
floatInterfaceImpl
|
2019-06-07 14:23:14 +02:00
|
|
|
Expression
|
2019-05-31 12:59:57 +02:00
|
|
|
}
|
|
|
|
|
|
2019-06-04 12:10:23 +02:00
|
|
|
func newFloatExpressionWrap(expression Expression) FloatExpression {
|
2019-06-07 14:23:14 +02:00
|
|
|
floatExpressionWrap := floatExpressionWrapper{Expression: expression}
|
2019-05-31 12:59:57 +02:00
|
|
|
floatExpressionWrap.floatInterfaceImpl.parent = &floatExpressionWrap
|
|
|
|
|
return &floatExpressionWrap
|
|
|
|
|
}
|
|
|
|
|
|
2019-06-07 14:23:14 +02:00
|
|
|
func FloatExp(expression Expression) FloatExpression {
|
|
|
|
|
return newFloatExpressionWrap(expression)
|
2019-05-31 12:59:57 +02:00
|
|
|
}
|