blob: 508624669c3763e49dd25427c360623ffbafed16 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "aggregationresult.h"
#include <vespa/searchlib/expression/numericresultnode.h>
namespace search::aggregation {
class AverageAggregationResult : public AggregationResult
{
public:
using NumericResultNode = expression::NumericResultNode;
DECLARE_AGGREGATIONRESULT(AverageAggregationResult);
AverageAggregationResult() : _sum(), _count(0) {}
~AverageAggregationResult() override;
void visitMembers(vespalib::ObjectVisitor &visitor) const override;
const NumericResultNode & getAverage() const;
const NumericResultNode & getSum() const { return *_sum; }
uint64_t getCount() const { return _count; }
private:
const ResultNode & onGetRank() const override { return getAverage(); }
void onPrepare(const ResultNode & result, bool useForInit) override;
NumericResultNode::CP _sum;
uint64_t _count;
mutable NumericResultNode::CP _averageScratchPad;
};
}
|