Coverage Report

Created: 2025-09-17 06:57

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/brpc/src/bvar/detail/series.h
Line
Count
Source
1
// Licensed to the Apache Software Foundation (ASF) under one
2
// or more contributor license agreements.  See the NOTICE file
3
// distributed with this work for additional information
4
// regarding copyright ownership.  The ASF licenses this file
5
// to you under the Apache License, Version 2.0 (the
6
// "License"); you may not use this file except in compliance
7
// with the License.  You may obtain a copy of the License at
8
//
9
//   http://www.apache.org/licenses/LICENSE-2.0
10
//
11
// Unless required by applicable law or agreed to in writing,
12
// software distributed under the License is distributed on an
13
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
// KIND, either express or implied.  See the License for the
15
// specific language governing permissions and limitations
16
// under the License.
17
18
// Date: Tue Jul 28 18:15:57 CST 2015
19
20
#ifndef  BVAR_DETAIL_SERIES_H
21
#define  BVAR_DETAIL_SERIES_H
22
23
#include <math.h>                       // round
24
#include <ostream>
25
#include "butil/scoped_lock.h"           // BAIDU_SCOPED_LOCK
26
#include "butil/type_traits.h"
27
#include "bvar/vector.h"
28
#include "bvar/detail/call_op_returning_void.h"
29
#include "butil/string_splitter.h"
30
31
namespace bvar {
32
namespace detail {
33
34
template <typename T, typename Op, typename Enabler = void>
35
struct DivideOnAddition {
36
0
    static void inplace_divide(T& /*obj*/, const Op&, int /*number*/) {
37
        // do nothing
38
0
    }
Unexecuted instantiation: bvar::detail::DivideOnAddition<bvar::Stat, bvar::detail::WindowBase<bvar::IntRecorder, (bvar::SeriesFrequency)1>::SeriesSampler::Op, void>::inplace_divide(bvar::Stat&, bvar::detail::WindowBase<bvar::IntRecorder, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&, int)
Unexecuted instantiation: bvar::detail::DivideOnAddition<bvar::detail::PercentileSamples<254ul>, bvar::detail::WindowBase<bvar::detail::Percentile, (bvar::SeriesFrequency)1>::SeriesSampler::Op, void>::inplace_divide(bvar::detail::PercentileSamples<254ul>&, bvar::detail::WindowBase<bvar::detail::Percentile, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&, int)
Unexecuted instantiation: bvar::detail::DivideOnAddition<bvar::Collected*, bvar::CombineCollected, void>::inplace_divide(bvar::Collected*&, bvar::CombineCollected const&, int)
Unexecuted instantiation: bvar::detail::DivideOnAddition<bvar::detail::Sampler*, bvar::detail::CombineSampler, void>::inplace_divide(bvar::detail::Sampler*&, bvar::detail::CombineSampler const&, int)
39
};
40
41
template <typename T, typename Op>
42
struct ProbablyAddtition {
43
0
    ProbablyAddtition(const Op& op) {
44
0
        T res(32);
45
0
        call_op_returning_void(op, res, T(64));
46
0
        _ok = (res == T(96));  // works for integral/floating point.
47
0
    }
Unexecuted instantiation: bvar::detail::ProbablyAddtition<double, bvar::detail::AddTo<double> >::ProbablyAddtition(bvar::detail::AddTo<double> const&)
Unexecuted instantiation: bvar::detail::ProbablyAddtition<long, bvar::detail::AddTo<long> >::ProbablyAddtition(bvar::detail::AddTo<long> const&)
Unexecuted instantiation: bvar::detail::ProbablyAddtition<double, bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::ProbablyAddtition(bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&)
Unexecuted instantiation: bvar::detail::ProbablyAddtition<unsigned long, bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::ProbablyAddtition(bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&)
Unexecuted instantiation: bvar::detail::ProbablyAddtition<unsigned long, bvar::detail::AddTo<unsigned long> >::ProbablyAddtition(bvar::detail::AddTo<unsigned long> const&)
Unexecuted instantiation: bvar::detail::ProbablyAddtition<long, bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::ProbablyAddtition(bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&)
Unexecuted instantiation: bvar::detail::ProbablyAddtition<long, bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::ProbablyAddtition(bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&)
Unexecuted instantiation: bvar::detail::ProbablyAddtition<long, bvar::detail::MaxTo<long> >::ProbablyAddtition(bvar::detail::MaxTo<long> const&)
Unexecuted instantiation: bvar::detail::ProbablyAddtition<bvar::Vector<long, 4ul>, bvar::detail::AddTo<bvar::Vector<long, 4ul> > >::ProbablyAddtition(bvar::detail::AddTo<bvar::Vector<long, 4ul> > const&)
Unexecuted instantiation: bvar::detail::ProbablyAddtition<int, bvar::detail::AddTo<int> >::ProbablyAddtition(bvar::detail::AddTo<int> const&)
48
0
    operator bool() const { return _ok; }
Unexecuted instantiation: bvar::detail::ProbablyAddtition<double, bvar::detail::AddTo<double> >::operator bool() const
Unexecuted instantiation: bvar::detail::ProbablyAddtition<long, bvar::detail::AddTo<long> >::operator bool() const
Unexecuted instantiation: bvar::detail::ProbablyAddtition<long, bvar::detail::MaxTo<long> >::operator bool() const
Unexecuted instantiation: bvar::detail::ProbablyAddtition<bvar::Vector<long, 4ul>, bvar::detail::AddTo<bvar::Vector<long, 4ul> > >::operator bool() const
Unexecuted instantiation: bvar::detail::ProbablyAddtition<long, bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::operator bool() const
Unexecuted instantiation: bvar::detail::ProbablyAddtition<double, bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::operator bool() const
Unexecuted instantiation: bvar::detail::ProbablyAddtition<unsigned long, bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::operator bool() const
Unexecuted instantiation: bvar::detail::ProbablyAddtition<unsigned long, bvar::detail::AddTo<unsigned long> >::operator bool() const
Unexecuted instantiation: bvar::detail::ProbablyAddtition<long, bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::operator bool() const
Unexecuted instantiation: bvar::detail::ProbablyAddtition<int, bvar::detail::AddTo<int> >::operator bool() const
49
private:
50
    bool _ok;
51
};
52
53
template <typename T, typename Op>
54
struct DivideOnAddition<T, Op, typename butil::enable_if<
55
                                   butil::is_integral<T>::value>::type> {
56
0
    static void inplace_divide(T& obj, const Op& op, int number) {
57
0
        static ProbablyAddtition<T, Op> probably_add(op);
58
0
        if (probably_add) {
59
0
            obj = (T)round(obj / (double)number);
60
0
        }
61
0
    }
Unexecuted instantiation: bvar::detail::DivideOnAddition<long, bvar::detail::AddTo<long>, void>::inplace_divide(long&, bvar::detail::AddTo<long> const&, int)
Unexecuted instantiation: bvar::detail::DivideOnAddition<long, bvar::detail::MaxTo<long>, void>::inplace_divide(long&, bvar::detail::MaxTo<long> const&, int)
Unexecuted instantiation: bvar::detail::DivideOnAddition<long, bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op, void>::inplace_divide(long&, bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&, int)
Unexecuted instantiation: bvar::detail::DivideOnAddition<unsigned long, bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op, void>::inplace_divide(unsigned long&, bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&, int)
Unexecuted instantiation: bvar::detail::DivideOnAddition<unsigned long, bvar::detail::AddTo<unsigned long>, void>::inplace_divide(unsigned long&, bvar::detail::AddTo<unsigned long> const&, int)
Unexecuted instantiation: bvar::detail::DivideOnAddition<long, bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op, void>::inplace_divide(long&, bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&, int)
Unexecuted instantiation: bvar::detail::DivideOnAddition<int, bvar::detail::AddTo<int>, void>::inplace_divide(int&, bvar::detail::AddTo<int> const&, int)
62
};
63
64
template <typename T, typename Op>
65
struct DivideOnAddition<T, Op, typename butil::enable_if<
66
                                   butil::is_floating_point<T>::value>::type> {
67
0
    static void inplace_divide(T& obj, const Op& op, int number) {
68
0
        static ProbablyAddtition<T, Op> probably_add(op);
69
0
        if (probably_add) {
70
0
            obj /= number;
71
0
        }
72
0
    }
Unexecuted instantiation: bvar::detail::DivideOnAddition<double, bvar::detail::AddTo<double>, void>::inplace_divide(double&, bvar::detail::AddTo<double> const&, int)
Unexecuted instantiation: bvar::detail::DivideOnAddition<double, bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op, void>::inplace_divide(double&, bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&, int)
73
};
74
75
template <typename T, size_t N, typename Op>
76
struct DivideOnAddition<Vector<T,N>, Op, typename butil::enable_if<
77
                                             butil::is_integral<T>::value>::type> {
78
0
    static void inplace_divide(Vector<T, N>& obj, const Op& op, int number) {
79
0
        static ProbablyAddtition<Vector<T, N>, Op> probably_add(op);
80
0
        if (probably_add) {
81
0
            for (size_t i = 0; i < N; ++i) {
82
0
                obj[i] = (T)round(obj[i] / (double)number);
83
0
            }
84
0
        }
85
0
    }
86
};
87
88
template <typename T, size_t N, typename Op>
89
struct DivideOnAddition<Vector<T,N>, Op, typename butil::enable_if<
90
                                   butil::is_floating_point<T>::value>::type> {
91
    static void inplace_divide(Vector<T,N>& obj, const Op& op, int number) {
92
        static ProbablyAddtition<Vector<T,N>, Op> probably_add(op);
93
        if (probably_add) {
94
            obj /= number;
95
        }
96
    }
97
};
98
99
template <typename T, typename Op>
100
class SeriesBase {
101
public:
102
    explicit SeriesBase(const Op& op)
103
8
        : _op(op)
104
8
        , _nsecond(0)
105
8
        , _nminute(0)
106
8
        , _nhour(0)
107
8
        , _nday(0) {
108
8
        pthread_mutex_init(&_mutex, NULL);
109
8
    }
Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::AddTo<double> >::SeriesBase(bvar::detail::AddTo<double> const&)
bvar::detail::SeriesBase<long, bvar::detail::AddTo<long> >::SeriesBase(bvar::detail::AddTo<long> const&)
Line
Count
Source
103
2
        : _op(op)
104
2
        , _nsecond(0)
105
2
        , _nminute(0)
106
2
        , _nhour(0)
107
2
        , _nday(0) {
108
        pthread_mutex_init(&_mutex, NULL);
109
2
    }
Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::SeriesBase(bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&)
Unexecuted instantiation: bvar::detail::SeriesBase<unsigned long, bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::SeriesBase(bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&)
bvar::detail::SeriesBase<unsigned long, bvar::detail::AddTo<unsigned long> >::SeriesBase(bvar::detail::AddTo<unsigned long> const&)
Line
Count
Source
103
4
        : _op(op)
104
4
        , _nsecond(0)
105
4
        , _nminute(0)
106
4
        , _nhour(0)
107
4
        , _nday(0) {
108
        pthread_mutex_init(&_mutex, NULL);
109
4
    }
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::SeriesBase(bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&)
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Collected*, bvar::CombineCollected>::SeriesBase(bvar::CombineCollected const&)
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::Sampler*, bvar::detail::CombineSampler>::SeriesBase(bvar::detail::CombineSampler const&)
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::PercentileSamples<254ul>, bvar::detail::WindowBase<bvar::detail::Percentile, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::SeriesBase(bvar::detail::WindowBase<bvar::detail::Percentile, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&)
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::SeriesBase(bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&)
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Stat, bvar::detail::WindowBase<bvar::IntRecorder, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::SeriesBase(bvar::detail::WindowBase<bvar::IntRecorder, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&)
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::MaxTo<long> >::SeriesBase(bvar::detail::MaxTo<long> const&)
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Vector<long, 4ul>, bvar::detail::AddTo<bvar::Vector<long, 4ul> > >::SeriesBase(bvar::detail::AddTo<bvar::Vector<long, 4ul> > const&)
bvar::detail::SeriesBase<int, bvar::detail::AddTo<int> >::SeriesBase(bvar::detail::AddTo<int> const&)
Line
Count
Source
103
2
        : _op(op)
104
2
        , _nsecond(0)
105
2
        , _nminute(0)
106
2
        , _nhour(0)
107
2
        , _nday(0) {
108
        pthread_mutex_init(&_mutex, NULL);
109
2
    }
110
0
    ~SeriesBase() {
111
0
        pthread_mutex_destroy(&_mutex);
112
0
    }
Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::AddTo<double> >::~SeriesBase()
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::AddTo<long> >::~SeriesBase()
Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::~SeriesBase()
Unexecuted instantiation: bvar::detail::SeriesBase<unsigned long, bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::~SeriesBase()
Unexecuted instantiation: bvar::detail::SeriesBase<unsigned long, bvar::detail::AddTo<unsigned long> >::~SeriesBase()
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::~SeriesBase()
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Collected*, bvar::CombineCollected>::~SeriesBase()
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::Sampler*, bvar::detail::CombineSampler>::~SeriesBase()
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::PercentileSamples<254ul>, bvar::detail::WindowBase<bvar::detail::Percentile, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::~SeriesBase()
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::~SeriesBase()
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Stat, bvar::detail::WindowBase<bvar::IntRecorder, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::~SeriesBase()
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::MaxTo<long> >::~SeriesBase()
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Vector<long, 4ul>, bvar::detail::AddTo<bvar::Vector<long, 4ul> > >::~SeriesBase()
Unexecuted instantiation: bvar::detail::SeriesBase<int, bvar::detail::AddTo<int> >::~SeriesBase()
113
114
20
    void append(const T& value) {
115
20
        BAIDU_SCOPED_LOCK(_mutex);
116
20
        return append_second(value, _op);
117
20
    }
Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::AddTo<double> >::append(double const&)
bvar::detail::SeriesBase<long, bvar::detail::AddTo<long> >::append(long const&)
Line
Count
Source
114
5
    void append(const T& value) {
115
5
        BAIDU_SCOPED_LOCK(_mutex);
116
5
        return append_second(value, _op);
117
5
    }
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::MaxTo<long> >::append(long const&)
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Vector<long, 4ul>, bvar::detail::AddTo<bvar::Vector<long, 4ul> > >::append(bvar::Vector<long, 4ul> const&)
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Stat, bvar::detail::WindowBase<bvar::IntRecorder, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append(bvar::Stat const&)
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append(long const&)
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::PercentileSamples<254ul>, bvar::detail::WindowBase<bvar::detail::Percentile, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append(bvar::detail::PercentileSamples<254ul> const&)
Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append(double const&)
Unexecuted instantiation: bvar::detail::SeriesBase<unsigned long, bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append(unsigned long const&)
bvar::detail::SeriesBase<unsigned long, bvar::detail::AddTo<unsigned long> >::append(unsigned long const&)
Line
Count
Source
114
10
    void append(const T& value) {
115
10
        BAIDU_SCOPED_LOCK(_mutex);
116
10
        return append_second(value, _op);
117
10
    }
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append(long const&)
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Collected*, bvar::CombineCollected>::append(bvar::Collected* const&)
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::Sampler*, bvar::detail::CombineSampler>::append(bvar::detail::Sampler* const&)
bvar::detail::SeriesBase<int, bvar::detail::AddTo<int> >::append(int const&)
Line
Count
Source
114
5
    void append(const T& value) {
115
5
        BAIDU_SCOPED_LOCK(_mutex);
116
5
        return append_second(value, _op);
117
5
    }
118
119
private:
120
    void append_second(const T& value, const Op& op);
121
    void append_minute(const T& value, const Op& op);
122
    void append_hour(const T& value, const Op& op);
123
    void append_day(const T& value);
124
125
    struct Data {
126
    public:
127
8
        Data() {
128
            // is_pod does not work for gcc 3.4
129
8
            if (butil::is_integral<T>::value ||
130
8
                butil::is_floating_point<T>::value) {
131
8
                memset(static_cast<void*>(_array), 0, sizeof(_array));
132
8
            }
133
8
        }
Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::AddTo<double> >::Data::Data()
bvar::detail::SeriesBase<long, bvar::detail::AddTo<long> >::Data::Data()
Line
Count
Source
127
2
        Data() {
128
            // is_pod does not work for gcc 3.4
129
2
            if (butil::is_integral<T>::value ||
130
2
                butil::is_floating_point<T>::value) {
131
2
                memset(static_cast<void*>(_array), 0, sizeof(_array));
132
2
            }
133
2
        }
Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::Data()
bvar::detail::SeriesBase<unsigned long, bvar::detail::AddTo<unsigned long> >::Data::Data()
Line
Count
Source
127
4
        Data() {
128
            // is_pod does not work for gcc 3.4
129
4
            if (butil::is_integral<T>::value ||
130
4
                butil::is_floating_point<T>::value) {
131
4
                memset(static_cast<void*>(_array), 0, sizeof(_array));
132
4
            }
133
4
        }
bvar::detail::SeriesBase<int, bvar::detail::AddTo<int> >::Data::Data()
Line
Count
Source
127
2
        Data() {
128
            // is_pod does not work for gcc 3.4
129
2
            if (butil::is_integral<T>::value ||
130
2
                butil::is_floating_point<T>::value) {
131
2
                memset(static_cast<void*>(_array), 0, sizeof(_array));
132
2
            }
133
2
        }
134
        
135
20
        T& second(int index) { return _array[index]; }
Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::AddTo<double> >::Data::second(int)
bvar::detail::SeriesBase<long, bvar::detail::AddTo<long> >::Data::second(int)
Line
Count
Source
135
5
        T& second(int index) { return _array[index]; }
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::MaxTo<long> >::Data::second(int)
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Vector<long, 4ul>, bvar::detail::AddTo<bvar::Vector<long, 4ul> > >::Data::second(int)
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Stat, bvar::detail::WindowBase<bvar::IntRecorder, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::second(int)
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::second(int)
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::PercentileSamples<254ul>, bvar::detail::WindowBase<bvar::detail::Percentile, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::second(int)
Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::second(int)
Unexecuted instantiation: bvar::detail::SeriesBase<unsigned long, bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::second(int)
bvar::detail::SeriesBase<unsigned long, bvar::detail::AddTo<unsigned long> >::Data::second(int)
Line
Count
Source
135
10
        T& second(int index) { return _array[index]; }
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::second(int)
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Collected*, bvar::CombineCollected>::Data::second(int)
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::Sampler*, bvar::detail::CombineSampler>::Data::second(int)
bvar::detail::SeriesBase<int, bvar::detail::AddTo<int> >::Data::second(int)
Line
Count
Source
135
5
        T& second(int index) { return _array[index]; }
136
0
        const T& second(int index) const { return _array[index]; }
Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::AddTo<double> >::Data::second(int) const
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::AddTo<long> >::Data::second(int) const
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::MaxTo<long> >::Data::second(int) const
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Vector<long, 4ul>, bvar::detail::AddTo<bvar::Vector<long, 4ul> > >::Data::second(int) const
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Stat, bvar::detail::WindowBase<bvar::IntRecorder, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::second(int) const
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::second(int) const
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::PercentileSamples<254ul>, bvar::detail::WindowBase<bvar::detail::Percentile, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::second(int) const
Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::second(int) const
Unexecuted instantiation: bvar::detail::SeriesBase<unsigned long, bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::second(int) const
Unexecuted instantiation: bvar::detail::SeriesBase<unsigned long, bvar::detail::AddTo<unsigned long> >::Data::second(int) const
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::second(int) const
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Collected*, bvar::CombineCollected>::Data::second(int) const
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::Sampler*, bvar::detail::CombineSampler>::Data::second(int) const
Unexecuted instantiation: bvar::detail::SeriesBase<int, bvar::detail::AddTo<int> >::Data::second(int) const
137
138
0
        T& minute(int index) { return _array[60 + index]; }
Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::AddTo<double> >::Data::minute(int)
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::AddTo<long> >::Data::minute(int)
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::MaxTo<long> >::Data::minute(int)
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Vector<long, 4ul>, bvar::detail::AddTo<bvar::Vector<long, 4ul> > >::Data::minute(int)
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Stat, bvar::detail::WindowBase<bvar::IntRecorder, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::minute(int)
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::minute(int)
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::PercentileSamples<254ul>, bvar::detail::WindowBase<bvar::detail::Percentile, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::minute(int)
Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::minute(int)
Unexecuted instantiation: bvar::detail::SeriesBase<unsigned long, bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::minute(int)
Unexecuted instantiation: bvar::detail::SeriesBase<unsigned long, bvar::detail::AddTo<unsigned long> >::Data::minute(int)
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::minute(int)
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Collected*, bvar::CombineCollected>::Data::minute(int)
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::Sampler*, bvar::detail::CombineSampler>::Data::minute(int)
Unexecuted instantiation: bvar::detail::SeriesBase<int, bvar::detail::AddTo<int> >::Data::minute(int)
139
0
        const T& minute(int index) const { return _array[60 + index]; }
Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::AddTo<double> >::Data::minute(int) const
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::AddTo<long> >::Data::minute(int) const
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::MaxTo<long> >::Data::minute(int) const
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Vector<long, 4ul>, bvar::detail::AddTo<bvar::Vector<long, 4ul> > >::Data::minute(int) const
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Stat, bvar::detail::WindowBase<bvar::IntRecorder, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::minute(int) const
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::minute(int) const
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::PercentileSamples<254ul>, bvar::detail::WindowBase<bvar::detail::Percentile, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::minute(int) const
Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::minute(int) const
Unexecuted instantiation: bvar::detail::SeriesBase<unsigned long, bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::minute(int) const
Unexecuted instantiation: bvar::detail::SeriesBase<unsigned long, bvar::detail::AddTo<unsigned long> >::Data::minute(int) const
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::minute(int) const
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Collected*, bvar::CombineCollected>::Data::minute(int) const
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::Sampler*, bvar::detail::CombineSampler>::Data::minute(int) const
Unexecuted instantiation: bvar::detail::SeriesBase<int, bvar::detail::AddTo<int> >::Data::minute(int) const
140
141
0
        T& hour(int index) { return _array[120 + index]; }
Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::AddTo<double> >::Data::hour(int)
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::AddTo<long> >::Data::hour(int)
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::MaxTo<long> >::Data::hour(int)
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Vector<long, 4ul>, bvar::detail::AddTo<bvar::Vector<long, 4ul> > >::Data::hour(int)
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Stat, bvar::detail::WindowBase<bvar::IntRecorder, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::hour(int)
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::hour(int)
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::PercentileSamples<254ul>, bvar::detail::WindowBase<bvar::detail::Percentile, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::hour(int)
Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::hour(int)
Unexecuted instantiation: bvar::detail::SeriesBase<unsigned long, bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::hour(int)
Unexecuted instantiation: bvar::detail::SeriesBase<unsigned long, bvar::detail::AddTo<unsigned long> >::Data::hour(int)
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::hour(int)
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Collected*, bvar::CombineCollected>::Data::hour(int)
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::Sampler*, bvar::detail::CombineSampler>::Data::hour(int)
Unexecuted instantiation: bvar::detail::SeriesBase<int, bvar::detail::AddTo<int> >::Data::hour(int)
142
0
        const T& hour(int index) const { return _array[120 + index]; }
Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::AddTo<double> >::Data::hour(int) const
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::AddTo<long> >::Data::hour(int) const
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::MaxTo<long> >::Data::hour(int) const
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Vector<long, 4ul>, bvar::detail::AddTo<bvar::Vector<long, 4ul> > >::Data::hour(int) const
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Stat, bvar::detail::WindowBase<bvar::IntRecorder, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::hour(int) const
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::hour(int) const
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::PercentileSamples<254ul>, bvar::detail::WindowBase<bvar::detail::Percentile, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::hour(int) const
Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::hour(int) const
Unexecuted instantiation: bvar::detail::SeriesBase<unsigned long, bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::hour(int) const
Unexecuted instantiation: bvar::detail::SeriesBase<unsigned long, bvar::detail::AddTo<unsigned long> >::Data::hour(int) const
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::hour(int) const
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Collected*, bvar::CombineCollected>::Data::hour(int) const
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::Sampler*, bvar::detail::CombineSampler>::Data::hour(int) const
Unexecuted instantiation: bvar::detail::SeriesBase<int, bvar::detail::AddTo<int> >::Data::hour(int) const
143
144
0
        T& day(int index) { return _array[144 + index]; }
Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::AddTo<double> >::Data::day(int)
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::AddTo<long> >::Data::day(int)
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::MaxTo<long> >::Data::day(int)
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Vector<long, 4ul>, bvar::detail::AddTo<bvar::Vector<long, 4ul> > >::Data::day(int)
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Stat, bvar::detail::WindowBase<bvar::IntRecorder, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::day(int)
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::day(int)
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::PercentileSamples<254ul>, bvar::detail::WindowBase<bvar::detail::Percentile, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::day(int)
Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::day(int)
Unexecuted instantiation: bvar::detail::SeriesBase<unsigned long, bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::day(int)
Unexecuted instantiation: bvar::detail::SeriesBase<unsigned long, bvar::detail::AddTo<unsigned long> >::Data::day(int)
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::day(int)
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Collected*, bvar::CombineCollected>::Data::day(int)
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::Sampler*, bvar::detail::CombineSampler>::Data::day(int)
Unexecuted instantiation: bvar::detail::SeriesBase<int, bvar::detail::AddTo<int> >::Data::day(int)
145
0
        const T& day(int index) const { return _array[144 + index]; }
Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::AddTo<double> >::Data::day(int) const
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::AddTo<long> >::Data::day(int) const
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::MaxTo<long> >::Data::day(int) const
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Vector<long, 4ul>, bvar::detail::AddTo<bvar::Vector<long, 4ul> > >::Data::day(int) const
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Stat, bvar::detail::WindowBase<bvar::IntRecorder, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::day(int) const
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::day(int) const
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::PercentileSamples<254ul>, bvar::detail::WindowBase<bvar::detail::Percentile, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::day(int) const
Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::day(int) const
Unexecuted instantiation: bvar::detail::SeriesBase<unsigned long, bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::day(int) const
Unexecuted instantiation: bvar::detail::SeriesBase<unsigned long, bvar::detail::AddTo<unsigned long> >::Data::day(int) const
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Data::day(int) const
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Collected*, bvar::CombineCollected>::Data::day(int) const
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::Sampler*, bvar::detail::CombineSampler>::Data::day(int) const
Unexecuted instantiation: bvar::detail::SeriesBase<int, bvar::detail::AddTo<int> >::Data::day(int) const
146
    private:
147
        T _array[60 + 60 + 24 + 30];
148
    };
149
150
protected:
151
    Op _op;
152
    mutable pthread_mutex_t _mutex;
153
    char _nsecond;
154
    char _nminute;
155
    char _nhour;
156
    char _nday;
157
    Data _data;
158
};
159
160
template <typename T, typename Op>
161
20
void SeriesBase<T, Op>::append_second(const T& value, const Op& op) {
162
20
    _data.second(_nsecond) = value;
163
20
    ++_nsecond;
164
20
    if (_nsecond >= 60) {
165
0
        _nsecond = 0;
166
0
        T tmp = _data.second(0);
167
0
        for (int i = 1; i < 60; ++i) {
168
0
            call_op_returning_void(op, tmp, _data.second(i));
169
0
        }
170
0
        DivideOnAddition<T, Op>::inplace_divide(tmp, op, 60);
171
0
        append_minute(tmp, op);
172
0
    }
173
20
}
Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::AddTo<double> >::append_second(double const&, bvar::detail::AddTo<double> const&)
bvar::detail::SeriesBase<long, bvar::detail::AddTo<long> >::append_second(long const&, bvar::detail::AddTo<long> const&)
Line
Count
Source
161
5
void SeriesBase<T, Op>::append_second(const T& value, const Op& op) {
162
5
    _data.second(_nsecond) = value;
163
5
    ++_nsecond;
164
5
    if (_nsecond >= 60) {
165
0
        _nsecond = 0;
166
0
        T tmp = _data.second(0);
167
0
        for (int i = 1; i < 60; ++i) {
168
0
            call_op_returning_void(op, tmp, _data.second(i));
169
0
        }
170
0
        DivideOnAddition<T, Op>::inplace_divide(tmp, op, 60);
171
0
        append_minute(tmp, op);
172
0
    }
173
5
}
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::MaxTo<long> >::append_second(long const&, bvar::detail::MaxTo<long> const&)
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Vector<long, 4ul>, bvar::detail::AddTo<bvar::Vector<long, 4ul> > >::append_second(bvar::Vector<long, 4ul> const&, bvar::detail::AddTo<bvar::Vector<long, 4ul> > const&)
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Stat, bvar::detail::WindowBase<bvar::IntRecorder, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append_second(bvar::Stat const&, bvar::detail::WindowBase<bvar::IntRecorder, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&)
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append_second(long const&, bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&)
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::PercentileSamples<254ul>, bvar::detail::WindowBase<bvar::detail::Percentile, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append_second(bvar::detail::PercentileSamples<254ul> const&, bvar::detail::WindowBase<bvar::detail::Percentile, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&)
Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append_second(double const&, bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&)
Unexecuted instantiation: bvar::detail::SeriesBase<unsigned long, bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append_second(unsigned long const&, bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&)
bvar::detail::SeriesBase<unsigned long, bvar::detail::AddTo<unsigned long> >::append_second(unsigned long const&, bvar::detail::AddTo<unsigned long> const&)
Line
Count
Source
161
10
void SeriesBase<T, Op>::append_second(const T& value, const Op& op) {
162
10
    _data.second(_nsecond) = value;
163
10
    ++_nsecond;
164
10
    if (_nsecond >= 60) {
165
0
        _nsecond = 0;
166
0
        T tmp = _data.second(0);
167
0
        for (int i = 1; i < 60; ++i) {
168
0
            call_op_returning_void(op, tmp, _data.second(i));
169
0
        }
170
0
        DivideOnAddition<T, Op>::inplace_divide(tmp, op, 60);
171
0
        append_minute(tmp, op);
172
0
    }
173
10
}
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append_second(long const&, bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&)
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Collected*, bvar::CombineCollected>::append_second(bvar::Collected* const&, bvar::CombineCollected const&)
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::Sampler*, bvar::detail::CombineSampler>::append_second(bvar::detail::Sampler* const&, bvar::detail::CombineSampler const&)
bvar::detail::SeriesBase<int, bvar::detail::AddTo<int> >::append_second(int const&, bvar::detail::AddTo<int> const&)
Line
Count
Source
161
5
void SeriesBase<T, Op>::append_second(const T& value, const Op& op) {
162
5
    _data.second(_nsecond) = value;
163
5
    ++_nsecond;
164
5
    if (_nsecond >= 60) {
165
0
        _nsecond = 0;
166
0
        T tmp = _data.second(0);
167
0
        for (int i = 1; i < 60; ++i) {
168
0
            call_op_returning_void(op, tmp, _data.second(i));
169
0
        }
170
0
        DivideOnAddition<T, Op>::inplace_divide(tmp, op, 60);
171
0
        append_minute(tmp, op);
172
0
    }
173
5
}
174
175
template <typename T, typename Op>
176
0
void SeriesBase<T, Op>::append_minute(const T& value, const Op& op) {
177
0
    _data.minute(_nminute) = value;
178
0
    ++_nminute;
179
0
    if (_nminute >= 60) {
180
0
        _nminute = 0;
181
0
        T tmp = _data.minute(0);
182
0
        for (int i = 1; i < 60; ++i) {
183
0
            call_op_returning_void(op, tmp, _data.minute(i));
184
0
        }
185
0
        DivideOnAddition<T, Op>::inplace_divide(tmp, op, 60);
186
0
        append_hour(tmp, op);
187
0
    }
188
0
}
Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::AddTo<double> >::append_minute(double const&, bvar::detail::AddTo<double> const&)
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::AddTo<long> >::append_minute(long const&, bvar::detail::AddTo<long> const&)
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::MaxTo<long> >::append_minute(long const&, bvar::detail::MaxTo<long> const&)
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Vector<long, 4ul>, bvar::detail::AddTo<bvar::Vector<long, 4ul> > >::append_minute(bvar::Vector<long, 4ul> const&, bvar::detail::AddTo<bvar::Vector<long, 4ul> > const&)
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Stat, bvar::detail::WindowBase<bvar::IntRecorder, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append_minute(bvar::Stat const&, bvar::detail::WindowBase<bvar::IntRecorder, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&)
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append_minute(long const&, bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&)
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::PercentileSamples<254ul>, bvar::detail::WindowBase<bvar::detail::Percentile, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append_minute(bvar::detail::PercentileSamples<254ul> const&, bvar::detail::WindowBase<bvar::detail::Percentile, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&)
Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append_minute(double const&, bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&)
Unexecuted instantiation: bvar::detail::SeriesBase<unsigned long, bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append_minute(unsigned long const&, bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&)
Unexecuted instantiation: bvar::detail::SeriesBase<unsigned long, bvar::detail::AddTo<unsigned long> >::append_minute(unsigned long const&, bvar::detail::AddTo<unsigned long> const&)
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append_minute(long const&, bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&)
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Collected*, bvar::CombineCollected>::append_minute(bvar::Collected* const&, bvar::CombineCollected const&)
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::Sampler*, bvar::detail::CombineSampler>::append_minute(bvar::detail::Sampler* const&, bvar::detail::CombineSampler const&)
Unexecuted instantiation: bvar::detail::SeriesBase<int, bvar::detail::AddTo<int> >::append_minute(int const&, bvar::detail::AddTo<int> const&)
189
190
template <typename T, typename Op>
191
0
void SeriesBase<T, Op>::append_hour(const T& value, const Op& op) {
192
0
    _data.hour(_nhour) = value;
193
0
    ++_nhour;
194
0
    if (_nhour >= 24) {
195
0
        _nhour = 0;
196
0
        T tmp = _data.hour(0);
197
0
        for (int i = 1; i < 24; ++i) {
198
0
            call_op_returning_void(op, tmp, _data.hour(i));
199
0
        }
200
0
        DivideOnAddition<T, Op>::inplace_divide(tmp, op, 24);
201
0
        append_day(tmp);
202
0
    }
203
0
}
Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::AddTo<double> >::append_hour(double const&, bvar::detail::AddTo<double> const&)
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::AddTo<long> >::append_hour(long const&, bvar::detail::AddTo<long> const&)
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::MaxTo<long> >::append_hour(long const&, bvar::detail::MaxTo<long> const&)
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Vector<long, 4ul>, bvar::detail::AddTo<bvar::Vector<long, 4ul> > >::append_hour(bvar::Vector<long, 4ul> const&, bvar::detail::AddTo<bvar::Vector<long, 4ul> > const&)
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Stat, bvar::detail::WindowBase<bvar::IntRecorder, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append_hour(bvar::Stat const&, bvar::detail::WindowBase<bvar::IntRecorder, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&)
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append_hour(long const&, bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&)
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::PercentileSamples<254ul>, bvar::detail::WindowBase<bvar::detail::Percentile, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append_hour(bvar::detail::PercentileSamples<254ul> const&, bvar::detail::WindowBase<bvar::detail::Percentile, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&)
Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append_hour(double const&, bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&)
Unexecuted instantiation: bvar::detail::SeriesBase<unsigned long, bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append_hour(unsigned long const&, bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&)
Unexecuted instantiation: bvar::detail::SeriesBase<unsigned long, bvar::detail::AddTo<unsigned long> >::append_hour(unsigned long const&, bvar::detail::AddTo<unsigned long> const&)
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append_hour(long const&, bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&)
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Collected*, bvar::CombineCollected>::append_hour(bvar::Collected* const&, bvar::CombineCollected const&)
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::Sampler*, bvar::detail::CombineSampler>::append_hour(bvar::detail::Sampler* const&, bvar::detail::CombineSampler const&)
Unexecuted instantiation: bvar::detail::SeriesBase<int, bvar::detail::AddTo<int> >::append_hour(int const&, bvar::detail::AddTo<int> const&)
204
205
template <typename T, typename Op>
206
0
void SeriesBase<T, Op>::append_day(const T& value) {
207
0
    _data.day(_nday) = value;
208
0
    ++_nday;
209
0
    if (_nday >= 30) {
210
0
        _nday = 0;
211
0
    }
212
0
}
Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::AddTo<double> >::append_day(double const&)
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::AddTo<long> >::append_day(long const&)
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::MaxTo<long> >::append_day(long const&)
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Vector<long, 4ul>, bvar::detail::AddTo<bvar::Vector<long, 4ul> > >::append_day(bvar::Vector<long, 4ul> const&)
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Stat, bvar::detail::WindowBase<bvar::IntRecorder, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append_day(bvar::Stat const&)
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append_day(long const&)
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::PercentileSamples<254ul>, bvar::detail::WindowBase<bvar::detail::Percentile, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append_day(bvar::detail::PercentileSamples<254ul> const&)
Unexecuted instantiation: bvar::detail::SeriesBase<double, bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append_day(double const&)
Unexecuted instantiation: bvar::detail::SeriesBase<unsigned long, bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append_day(unsigned long const&)
Unexecuted instantiation: bvar::detail::SeriesBase<unsigned long, bvar::detail::AddTo<unsigned long> >::append_day(unsigned long const&)
Unexecuted instantiation: bvar::detail::SeriesBase<long, bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::append_day(long const&)
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::Collected*, bvar::CombineCollected>::append_day(bvar::Collected* const&)
Unexecuted instantiation: bvar::detail::SeriesBase<bvar::detail::Sampler*, bvar::detail::CombineSampler>::append_day(bvar::detail::Sampler* const&)
Unexecuted instantiation: bvar::detail::SeriesBase<int, bvar::detail::AddTo<int> >::append_day(int const&)
213
214
template <typename T, typename Op>
215
class Series : public SeriesBase<T, Op> {
216
    typedef SeriesBase<T, Op> Base;
217
public:
218
8
    explicit Series(const Op& op) : Base(op) {}
Unexecuted instantiation: bvar::detail::Series<double, bvar::detail::AddTo<double> >::Series(bvar::detail::AddTo<double> const&)
bvar::detail::Series<long, bvar::detail::AddTo<long> >::Series(bvar::detail::AddTo<long> const&)
Line
Count
Source
218
2
    explicit Series(const Op& op) : Base(op) {}
Unexecuted instantiation: bvar::detail::Series<double, bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Series(bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&)
Unexecuted instantiation: bvar::detail::Series<unsigned long, bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Series(bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&)
bvar::detail::Series<unsigned long, bvar::detail::AddTo<unsigned long> >::Series(bvar::detail::AddTo<unsigned long> const&)
Line
Count
Source
218
4
    explicit Series(const Op& op) : Base(op) {}
Unexecuted instantiation: bvar::detail::Series<long, bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Series(bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&)
Unexecuted instantiation: bvar::detail::Series<bvar::Collected*, bvar::CombineCollected>::Series(bvar::CombineCollected const&)
Unexecuted instantiation: bvar::detail::Series<bvar::detail::Sampler*, bvar::detail::CombineSampler>::Series(bvar::detail::CombineSampler const&)
Unexecuted instantiation: bvar::detail::Series<bvar::detail::PercentileSamples<254ul>, bvar::detail::WindowBase<bvar::detail::Percentile, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Series(bvar::detail::WindowBase<bvar::detail::Percentile, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&)
Unexecuted instantiation: bvar::detail::Series<long, bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Series(bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&)
Unexecuted instantiation: bvar::detail::Series<bvar::Stat, bvar::detail::WindowBase<bvar::IntRecorder, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::Series(bvar::detail::WindowBase<bvar::IntRecorder, (bvar::SeriesFrequency)1>::SeriesSampler::Op const&)
Unexecuted instantiation: bvar::detail::Series<long, bvar::detail::MaxTo<long> >::Series(bvar::detail::MaxTo<long> const&)
bvar::detail::Series<int, bvar::detail::AddTo<int> >::Series(bvar::detail::AddTo<int> const&)
Line
Count
Source
218
2
    explicit Series(const Op& op) : Base(op) {}
219
    void describe(std::ostream& os, const std::string* vector_names) const;
220
};
221
222
template <typename T, size_t N, typename Op>
223
class Series<Vector<T,N>, Op> : public SeriesBase<Vector<T,N>, Op> {
224
    typedef SeriesBase<Vector<T,N>, Op> Base;
225
public:
226
0
    explicit Series(const Op& op) : Base(op) {}
227
    void describe(std::ostream& os, const std::string* vector_names) const;
228
};
229
230
template <typename T, typename Op>
231
void Series<T, Op>::describe(std::ostream& os,
232
0
                             const std::string* vector_names) const {
233
0
    CHECK(vector_names == NULL);
234
0
    pthread_mutex_lock(&this->_mutex);
235
0
    const int second_begin = this->_nsecond;
236
0
    const int minute_begin = this->_nminute;
237
0
    const int hour_begin = this->_nhour;
238
0
    const int day_begin = this->_nday;
239
    // NOTE: we don't save _data which may be inconsistent sometimes, but
240
    // this output is generally for "peeking the trend" and does not need
241
    // to exactly accurate.
242
0
    pthread_mutex_unlock(&this->_mutex);
243
0
    int c = 0;
244
0
    os << "{\"label\":\"trend\",\"data\":[";
245
0
    for (int i = 0; i < 30; ++i, ++c) {
246
0
        if (c) {
247
0
            os << ',';
248
0
        }
249
0
        os << '[' << c << ',' << this->_data.day((i + day_begin) % 30) << ']';
250
0
    }
251
0
    for (int i = 0; i < 24; ++i, ++c) {
252
0
        if (c) {
253
0
            os << ',';
254
0
        }
255
0
        os << '[' << c << ',' << this->_data.hour((i + hour_begin) % 24) << ']';
256
0
    }
257
0
    for (int i = 0; i < 60; ++i, ++c) {
258
0
        if (c) {
259
0
            os << ',';
260
0
        }
261
0
        os << '[' << c << ',' << this->_data.minute((i + minute_begin) % 60) << ']';
262
0
    }
263
0
    for (int i = 0; i < 60; ++i, ++c) {
264
0
        if (c) {
265
0
            os << ',';
266
0
        }
267
0
        os << '[' << c << ',' << this->_data.second((i + second_begin) % 60) << ']';
268
0
    }
269
0
    os << "]}";
270
0
}
Unexecuted instantiation: bvar::detail::Series<double, bvar::detail::AddTo<double> >::describe(std::basic_ostream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const*) const
Unexecuted instantiation: bvar::detail::Series<long, bvar::detail::AddTo<long> >::describe(std::basic_ostream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const*) const
Unexecuted instantiation: bvar::detail::Series<long, bvar::detail::MaxTo<long> >::describe(std::basic_ostream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const*) const
Unexecuted instantiation: bvar::detail::Series<bvar::Stat, bvar::detail::WindowBase<bvar::IntRecorder, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::describe(std::basic_ostream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const*) const
Unexecuted instantiation: bvar::detail::Series<long, bvar::detail::WindowBase<bvar::Maxer<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::describe(std::basic_ostream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const*) const
Unexecuted instantiation: bvar::detail::Series<bvar::detail::PercentileSamples<254ul>, bvar::detail::WindowBase<bvar::detail::Percentile, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::describe(std::basic_ostream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const*) const
Unexecuted instantiation: bvar::detail::Series<double, bvar::detail::WindowBase<bvar::PassiveStatus<double>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::describe(std::basic_ostream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const*) const
Unexecuted instantiation: bvar::detail::Series<unsigned long, bvar::detail::WindowBase<bvar::PassiveStatus<unsigned long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::describe(std::basic_ostream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const*) const
Unexecuted instantiation: bvar::detail::Series<unsigned long, bvar::detail::AddTo<unsigned long> >::describe(std::basic_ostream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const*) const
Unexecuted instantiation: bvar::detail::Series<long, bvar::detail::WindowBase<bvar::PassiveStatus<long>, (bvar::SeriesFrequency)1>::SeriesSampler::Op>::describe(std::basic_ostream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const*) const
Unexecuted instantiation: bvar::detail::Series<bvar::Collected*, bvar::CombineCollected>::describe(std::basic_ostream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const*) const
Unexecuted instantiation: bvar::detail::Series<bvar::detail::Sampler*, bvar::detail::CombineSampler>::describe(std::basic_ostream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const*) const
Unexecuted instantiation: bvar::detail::Series<int, bvar::detail::AddTo<int> >::describe(std::basic_ostream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const*) const
271
272
template <typename T, size_t N, typename Op>
273
void Series<Vector<T,N>, Op>::describe(std::ostream& os,
274
0
                                       const std::string* vector_names) const {
275
0
    pthread_mutex_lock(&this->_mutex);
276
0
    const int second_begin = this->_nsecond;
277
0
    const int minute_begin = this->_nminute;
278
0
    const int hour_begin = this->_nhour;
279
0
    const int day_begin = this->_nday;
280
    // NOTE: we don't save _data which may be inconsistent sometimes, but
281
    // this output is generally for "peeking the trend" and does not need
282
    // to exactly accurate.
283
0
    pthread_mutex_unlock(&this->_mutex);
284
285
0
    butil::StringSplitter sp(vector_names ? vector_names->c_str() : "", ',');
286
0
    os << '[';
287
0
    for (size_t j = 0; j < N; ++j) {
288
0
        if (j) {
289
0
            os << ',';
290
0
        }
291
0
        int c = 0;
292
0
        os << "{\"label\":\"";
293
0
        if (sp) {
294
0
            os << butil::StringPiece(sp.field(), sp.length());
295
0
            ++sp;
296
0
        } else {
297
0
            os << "Vector[" << j << ']';
298
0
        }
299
0
        os << "\",\"data\":[";
300
0
        for (int i = 0; i < 30; ++i, ++c) {
301
0
            if (c) {
302
0
                os << ',';
303
0
            }
304
0
            os << '[' << c << ',' << this->_data.day((i + day_begin) % 30)[j] << ']';
305
0
        }
306
0
        for (int i = 0; i < 24; ++i, ++c) {
307
0
            if (c) {
308
0
                os << ',';
309
0
            }
310
0
            os << '[' << c << ',' << this->_data.hour((i + hour_begin) % 24)[j] << ']';
311
0
        }
312
0
        for (int i = 0; i < 60; ++i, ++c) {
313
0
            if (c) {
314
0
                os << ',';
315
0
            }
316
0
            os << '[' << c << ',' << this->_data.minute((i + minute_begin) % 60)[j] << ']';
317
0
        }
318
0
        for (int i = 0; i < 60; ++i, ++c) {
319
0
            if (c) {
320
0
                os << ',';
321
0
            }
322
0
            os << '[' << c << ',' << this->_data.second((i + second_begin) % 60)[j] << ']';
323
0
        }
324
0
        os << "]}";
325
0
    }
326
0
    os << ']';
327
0
}
328
329
}  // namespace detail
330
}  // namespace bvar
331
332
#endif  // BVAR_DETAIL_SERIES_H