jet/sqlbuilder/integer_expression.go

83 lines
2.6 KiB
Go
Raw Normal View History

2019-03-31 14:07:58 +02:00
package sqlbuilder
2019-05-07 19:06:21 +02:00
type integerExpression interface {
numericExpression
2019-03-31 14:07:58 +02:00
2019-05-07 19:06:21 +02:00
//AddInt(value int) integerExpression
//AddInt64(value int) integerExpression
2019-03-31 14:07:58 +02:00
2019-05-07 19:06:21 +02:00
BitAnd(expression integerExpression) integerExpression
BitOr(expression integerExpression) integerExpression
BitXor(expression integerExpression) integerExpression
BitNot() integerExpression
2019-03-31 14:07:58 +02:00
}
type integerInterfaceImpl struct {
2019-05-07 19:06:21 +02:00
parent integerExpression
2019-03-31 14:07:58 +02:00
}
2019-05-07 19:06:21 +02:00
//func (i *integerInterfaceImpl) AddInt(expression integerExpression) integerExpression {
2019-03-31 14:07:58 +02:00
// return NewBinaryIntegerExpression(i.parent, expression, " & ")
//}
//
2019-05-07 19:06:21 +02:00
//func (i *integerInterfaceImpl) AddInt64(expression integerExpression) integerExpression {
2019-03-31 14:07:58 +02:00
// return NewBinaryIntegerExpression(i.parent, expression, " & ")
//}
2019-05-07 19:06:21 +02:00
func (i *integerInterfaceImpl) BitAnd(expression integerExpression) integerExpression {
2019-03-31 14:07:58 +02:00
return NewBinaryIntegerExpression(i.parent, expression, " & ")
}
2019-05-07 19:06:21 +02:00
func (i *integerInterfaceImpl) BitOr(expression integerExpression) integerExpression {
2019-03-31 14:07:58 +02:00
return NewBinaryIntegerExpression(i.parent, expression, " | ")
}
2019-05-07 19:06:21 +02:00
func (i *integerInterfaceImpl) BitXor(expression integerExpression) integerExpression {
2019-03-31 14:07:58 +02:00
return NewBinaryIntegerExpression(i.parent, expression, " # ")
}
2019-05-07 19:06:21 +02:00
func (i *integerInterfaceImpl) BitNot() integerExpression {
2019-03-31 14:07:58 +02:00
return NewPrefixIntegerExpression(i.parent, " ~")
}
//---------------------------------------------------//
type binaryIntegerExpression struct {
expressionInterfaceImpl
numericInterfaceImpl
integerInterfaceImpl
binaryExpression
}
2019-05-07 19:06:21 +02:00
func NewBinaryIntegerExpression(lhs, rhs integerExpression, operator string) integerExpression {
2019-03-31 14:07:58 +02:00
integerExpression := binaryIntegerExpression{}
integerExpression.expressionInterfaceImpl.parent = &integerExpression
integerExpression.numericInterfaceImpl.parent = &integerExpression
integerExpression.integerInterfaceImpl.parent = &integerExpression
integerExpression.binaryExpression = newBinaryExpression(lhs, rhs, operator)
2019-03-31 14:07:58 +02:00
return &integerExpression
}
//---------------------------------------------------//
type prefixIntegerExpression struct {
expressionInterfaceImpl
numericInterfaceImpl
integerInterfaceImpl
prefixExpression
}
2019-05-07 19:06:21 +02:00
func NewPrefixIntegerExpression(expression integerExpression, operator string) integerExpression {
2019-03-31 14:07:58 +02:00
integerExpression := prefixIntegerExpression{}
integerExpression.prefixExpression = newPrefixExpression(expression, operator)
2019-03-31 14:07:58 +02:00
integerExpression.expressionInterfaceImpl.parent = &integerExpression
integerExpression.numericInterfaceImpl.parent = &integerExpression
integerExpression.integerInterfaceImpl.parent = &integerExpression
return &integerExpression
}