786a041773e3d02e282c1a32f4d8695f03768b36
[com/gs-lite.git] / include / lfta / rts_udaf.h
1 /* ------------------------------------------------
2  Copyright 2014 AT&T Intellectual Property
3  Licensed under the Apache License, Version 2.0 (the "License");
4  you may not use this file except in compliance with the License.
5  You may obtain a copy of the License at
6  
7  http://www.apache.org/licenses/LICENSE-2.0
8  
9  Unless required by applicable law or agreed to in writing, software
10  distributed under the License is distributed on an "AS IS" BASIS,
11  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  See the License for the specific language governing permissions and
13  limitations under the License.
14  ------------------------------------------- */
15 #ifndef _RTS_UDAF_H_INCLUDED_
16 #define _RTS_UDAF_H_INCLUDED_
17
18 #include "gsconfig.h"
19 #include "gstypes.h"
20 #include "rts_external.h"
21
22
23 //                      avg_udaf
24 void avg_udaf_lfta_LFTA_AGGR_INIT_(gs_sp_t);
25 void avg_udaf_lfta_LFTA_AGGR_UPDATE_(gs_sp_t,gs_uint32_t);
26 gs_retval_t avg_udaf_lfta_LFTA_AGBGR_FLUSHME_(gs_sp_t);
27 void avg_udaf_lfta_LFTA_AGGR_OUTPUT_(struct gs_string *,gs_sp_t);
28 void avg_udaf_lfta_LFTA_AGGR_DESTROY_(gs_sp_t);
29
30 //              moving sum
31 void moving_sum_lfta_LFTA_AGGR_INIT_(gs_sp_t b);
32 void moving_sum_lfta_LFTA_AGGR_UPDATE_(gs_sp_t b, gs_uint32_t v, gs_uint32_t N);
33 gs_retval_t moving_sum_lfta_LFTA_AGGR_FLUSHME_(gs_sp_t b);
34 void moving_sum_lfta_LFTA_AGGR_OUTPUT_(gs_uint64_t *r, gs_sp_t b);
35 gs_retval_t moving_sum_lfta_LFTA_AGGR_DESTROY_(gs_sp_t b);
36
37
38 //      first aggregate
39 void FIRST_lfta_LFTA_AGGR_INIT_(gs_uint32_t* scratch);
40 void FIRST_lfta_LFTA_AGGR_UPDATE_(gs_uint32_t* scratch, gs_uint32_t val);
41 gs_retval_t FIRST_lfta_LFTA_AGGR_FLUSHME_(gs_uint32_t* scratch);
42 void FIRST_lfta_LFTA_AGGR_OUTPUT_(gs_uint32_t* res, gs_uint32_t* scratch);
43 void FIRST_lfta_LFTA_AGGR_DESTROY_(gs_uint32_t* scratch);
44
45 void FIRST_INT_lfta_LFTA_AGGR_INIT_(gs_int32_t* scratch);
46 void FIRST_INT_lfta_LFTA_AGGR_UPDATE_(gs_int32_t* scratch, gs_int32_t val);
47 gs_retval_t FIRST_INT_lfta_LFTA_AGGR_FLUSHME_(gs_int32_t* scratch);
48 void FIRST_INT_lfta_LFTA_AGGR_OUTPUT_(gs_int32_t* res, gs_int32_t* scratch);
49 void FIRST_INT_lfta_LFTA_AGGR_DESTROY_(gs_int32_t* scratch);
50
51 void FIRST_ULL_lfta_LFTA_AGGR_INIT_(gs_uint64_t* scratch);
52 void FIRST_ULL_lfta_LFTA_AGGR_UPDATE_(gs_uint64_t* scratch, gs_uint64_t val);
53 gs_retval_t FIRST_ULL_lfta_LFTA_AGGR_FLUSHME_(gs_uint64_t* scratch);
54 void FIRST_ULL_lfta_LFTA_AGGR_OUTPUT_(gs_uint64_t* res, gs_uint64_t* scratch);
55 void FIRST_ULL_lfta_LFTA_AGGR_DESTROY_(gs_uint64_t* scratch);
56
57 void FIRST_LL_lfta_LFTA_AGGR_INIT_(gs_int64_t* scratch);
58 void FIRST_LL_lfta_LFTA_AGGR_UPDATE_(gs_int64_t* scratch, gs_int64_t val);
59 gs_retval_t FIRST_LL_lfta_LFTA_AGGR_FLUSHME_(gs_int64_t* scratch);
60 void FIRST_LL_lfta_LFTA_AGGR_OUTPUT_(gs_int64_t* res, gs_int64_t* scratch);
61 void FIRST_LL_lfta_LFTA_AGGR_DESTROY_(gs_int64_t* scratch);
62
63 void FIRST_STR_lfta_LFTA_AGGR_INIT_(struct gs_string* scratch);
64 void FIRST_STR_lfta_LFTA_AGGR_UPDATE_(struct gs_string* scratch, struct gs_string* val);
65 gs_retval_t FIRST_STR_lfta_LFTA_AGGR_FLUSHME_(struct gs_string* scratch);
66 void FIRST_STR_lfta_LFTA_AGGR_OUTPUT_(struct gs_string* res, struct gs_string* scratch);
67 void FIRST_STR_lfta_LFTA_AGGR_DESTROY_(struct gs_string* scratch);
68
69 //      last aggregate
70 void LAST_lfta_LFTA_AGGR_INIT_(gs_uint32_t* scratch);
71 void LAST_lfta_LFTA_AGGR_UPDATE_(gs_uint32_t* scratch, gs_uint32_t val);
72 gs_retval_t LAST_lfta_LFTA_AGGR_FLUSHME_(gs_uint32_t* scratch);
73 void LAST_lfta_LFTA_AGGR_OUTPUT_(gs_uint32_t* res, gs_uint32_t* scratch);
74 void LAST_lfta_LFTA_AGGR_DESTROY_(gs_uint32_t* scratch);
75
76 void LAST_INT_lfta_LFTA_AGGR_INIT_(gs_int32_t* scratch);
77 void LAST_INT_lfta_LFTA_AGGR_UPDATE_(gs_int32_t* scratch, gs_int32_t val);
78 gs_retval_t LAST_INT_lfta_LFTA_AGGR_FLUSHME_(gs_int32_t* scratch);
79 void LAST_INT_lfta_LFTA_AGGR_OUTPUT_(gs_int32_t* res, gs_int32_t* scratch);
80 void LAST_INT_lfta_LFTA_AGGR_DESTROY_(gs_int32_t* scratch);
81
82 void LAST_ULL_lfta_LFTA_AGGR_INIT_(gs_uint64_t* scratch);
83 void LAST_ULL_lfta_LFTA_AGGR_UPDATE_(gs_uint64_t* scratch, gs_uint64_t val);
84 gs_retval_t LAST_ULL_lfta_LFTA_AGGR_FLUSHME_(gs_uint64_t* scratch);
85 void LAST_ULL_lfta_LFTA_AGGR_OUTPUT_(gs_uint64_t* res, gs_uint64_t* scratch);
86 void LAST_ULL_lfta_LFTA_AGGR_DESTROY_(gs_uint64_t* scratch);
87
88 void LAST_LL_lfta_LFTA_AGGR_INIT_(gs_int64_t* scratch);
89 void LAST_LL_lfta_LFTA_AGGR_UPDATE_(gs_int64_t* scratch, gs_int64_t val);
90 gs_retval_t LAST_LL_lfta_LFTA_AGGR_FLUSHME_(gs_int64_t* scratch);
91 void LAST_LL_lfta_LFTA_AGGR_OUTPUT_(gs_int64_t* res, gs_int64_t* scratch);
92 void LAST_LL_lfta_LFTA_AGGR_DESTROY_(gs_int64_t* scratch);
93
94 void LAST_STR_lfta_LFTA_AGGR_INIT_(struct gs_string* scratch);
95 void LAST_STR_lfta_LFTA_AGGR_UPDATE_(struct gs_string* scratch, struct gs_string* val);
96 gs_retval_t LAST_STR_lfta_LFTA_AGGR_FLUSHME_(struct gs_string* scratch);
97 void LAST_STR_lfta_LFTA_AGGR_OUTPUT_(struct gs_string* res, struct gs_string* scratch);
98 void LAST_STR_lfta_LFTA_AGGR_DESTROY_(struct gs_string* scratch);
99
100 //      count_diff aggregate
101 void count_diff_lfta_ui_LFTA_AGGR_INIT_(gs_sp_t s) ;
102 void count_diff_lfta_ui_LFTA_AGGR_UPDATE_(gs_sp_t s, gs_uint32_t val) ;
103 void count_diff_lfta_ui_LFTA_AGGR_OUTPUT_(struct gs_string *res, gs_sp_t s) ;
104 void count_diff_lfta_ui_LFTA_AGGR_DESTROY_(gs_sp_t s) ;
105 gs_retval_t count_diff_lfta_ui_LFTA_AGGR_FLUSHME_(gs_sp_t s) ;
106
107 void count_diff_lfta_i_LFTA_AGGR_INIT_(gs_sp_t s) ;
108 void count_diff_lfta_i_LFTA_AGGR_UPDATE_(gs_sp_t s, gs_int32_t val) ;
109 void count_diff_lfta_i_LFTA_AGGR_OUTPUT_(struct gs_string *res, gs_sp_t s) ;
110 void count_diff_lfta_i_LFTA_AGGR_DESTROY_(gs_sp_t s) ;
111 gs_retval_t count_diff_lfta_i_LFTA_AGGR_FLUSHME_(gs_sp_t s) ;
112
113 void count_diff_lfta_ul_LFTA_AGGR_INIT_(gs_sp_t s) ;
114 void count_diff_lfta_ul_LFTA_AGGR_UPDATE_(gs_sp_t s, gs_uint64_t val) ;
115 void count_diff_lfta_ul_LFTA_AGGR_OUTPUT_(struct gs_string *res, gs_sp_t s) ;
116 void count_diff_lfta_ul_LFTA_AGGR_DESTROY_(gs_sp_t s) ;
117 gs_retval_t count_diff_lfta_ul_LFTA_AGGR_FLUSHME_(gs_sp_t s) ;
118
119 void count_diff_lfta_l_LFTA_AGGR_INIT_(gs_sp_t s) ;
120 void count_diff_lfta_l_LFTA_AGGR_UPDATE_(gs_sp_t s, gs_int64_t val) ;
121 void count_diff_lfta_l_LFTA_AGGR_OUTPUT_(struct gs_string *res, gs_sp_t s) ;
122 void count_diff_lfta_l_LFTA_AGGR_DESTROY_(gs_sp_t s) ;
123 gs_retval_t count_diff_lfta_l_LFTA_AGGR_FLUSHME_(gs_sp_t s) ;
124
125 void count_diff_lfta_s_LFTA_AGGR_INIT_(gs_sp_t s) ;
126 void count_diff_lfta_s_LFTA_AGGR_UPDATE_(gs_sp_t s, struct gs_string *val) ;
127 void count_diff_lfta_s_LFTA_AGGR_OUTPUT_(struct gs_string *res, gs_sp_t s) ;
128 void count_diff_lfta_s_LFTA_AGGR_DESTROY_(gs_sp_t s) ;
129 gs_retval_t count_diff_lfta_s_LFTA_AGGR_FLUSHME_(gs_sp_t s) ;
130
131
132 //              running_array_aggr aggregate
133 void running_array_aggr_lfta_LFTA_AGGR_INIT_(char* scratch);
134 void running_array_aggr_lfta_LFTA_AGGR_UPDATE_(char* scratch, gs_uint32_t val);
135 gs_retval_t running_array_aggr_lfta_LFTA_AGGR_FLUSHME_(char* scratch);
136 void running_array_aggr_lfta_LFTA_AGGR_OUTPUT_(struct gs_string* res, char* scratch);
137 void running_array_aggr_lfta_LFTA_AGGR_DESTROY_(char* scratch);
138
139 //////////////////////////////////////////////////////////////////
140 ///             Flip-s sample-based quantiles
141
142 /****************************************************************/
143 /* LFTA functions                                               */
144 /****************************************************************/
145
146 void quant_udaf_lfta3_LFTA_AGGR_INIT_(gs_sp_t);
147 void quant_udaf_lfta3_LFTA_AGGR_UPDATE_(gs_sp_t, gs_uint32_t);
148 gs_retval_t quant_udaf_lfta3_LFTA_AGGR_FLUSHME_(gs_sp_t);
149 void quant_udaf_lfta3_LFTA_AGGR_OUTPUT_(struct gs_string *, gs_sp_t);
150 void quant_udaf_lfta3_LFTA_AGGR_DESTROY_(gs_sp_t);
151
152
153 #endif