funcCall calls the function
(expr *stmt.CallExpr)
| 186 | |
| 187 | // funcCall calls the function |
| 188 | func (e *expression) funcCall(expr *stmt.CallExpr) []*collections.FloatArray { |
| 189 | var params []*collections.FloatArray |
| 190 | for _, param := range expr.Params { |
| 191 | paramValues := e.eval(expr, param) |
| 192 | if len(paramValues) == 0 { |
| 193 | return nil |
| 194 | } |
| 195 | params = append(params, paramValues...) |
| 196 | } |
| 197 | var result *collections.FloatArray |
| 198 | switch expr.FuncType { |
| 199 | case function.Avg: |
| 200 | result = function.AvgCall(params...) |
| 201 | case function.Rate: |
| 202 | result = function.RateCall(e.interval, params...) |
| 203 | default: |
| 204 | result = function.FuncCall(expr.FuncType, params...) |
| 205 | } |
| 206 | if result == nil { |
| 207 | return nil |
| 208 | } |
| 209 | return []*collections.FloatArray{result} |
| 210 | } |
| 211 | |
| 212 | // binaryEval evaluates binary operator |
| 213 | func (e *expression) binaryEval(expr *stmt.BinaryExpr) []*collections.FloatArray { |