978e2c4f4c550b1bc960a6e387ab2c730a40ad26
[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 #ifdef __cplusplus
19 extern "C" {
20 #endif
21
22 #include "gsconfig.h"
23 #include "gstypes.h"
24 #include "rts_external.h"
25
26
27 //                      avg_udaf
28 void avg_udaf_lfta_LFTA_AGGR_INIT_(gs_sp_t);
29 void avg_udaf_lfta_LFTA_AGGR_UPDATE_(gs_sp_t,gs_uint32_t);
30 gs_retval_t avg_udaf_lfta_LFTA_AGBGR_FLUSHME_(gs_sp_t);
31 void avg_udaf_lfta_LFTA_AGGR_OUTPUT_(struct gs_string *,gs_sp_t);
32 void avg_udaf_lfta_LFTA_AGGR_DESTROY_(gs_sp_t);
33
34 //              moving sum
35 void moving_sum_lfta_LFTA_AGGR_INIT_(gs_sp_t b);
36 void moving_sum_lfta_LFTA_AGGR_UPDATE_(gs_sp_t b, gs_uint32_t v, gs_uint32_t N);
37 gs_retval_t moving_sum_lfta_LFTA_AGGR_FLUSHME_(gs_sp_t b);
38 void moving_sum_lfta_LFTA_AGGR_OUTPUT_(gs_uint64_t *r, gs_sp_t b);
39 gs_retval_t moving_sum_lfta_LFTA_AGGR_DESTROY_(gs_sp_t b);
40
41
42 //      first aggregate
43 void FIRST_lfta_LFTA_AGGR_INIT_(gs_uint32_t* scratch);
44 void FIRST_lfta_LFTA_AGGR_UPDATE_(gs_uint32_t* scratch, gs_uint32_t val);
45 gs_retval_t FIRST_lfta_LFTA_AGGR_FLUSHME_(gs_uint32_t* scratch);
46 void FIRST_lfta_LFTA_AGGR_OUTPUT_(gs_uint32_t* res, gs_uint32_t* scratch);
47 void FIRST_lfta_LFTA_AGGR_DESTROY_(gs_uint32_t* scratch);
48
49 void FIRST_INT_lfta_LFTA_AGGR_INIT_(gs_int32_t* scratch);
50 void FIRST_INT_lfta_LFTA_AGGR_UPDATE_(gs_int32_t* scratch, gs_int32_t val);
51 gs_retval_t FIRST_INT_lfta_LFTA_AGGR_FLUSHME_(gs_int32_t* scratch);
52 void FIRST_INT_lfta_LFTA_AGGR_OUTPUT_(gs_int32_t* res, gs_int32_t* scratch);
53 void FIRST_INT_lfta_LFTA_AGGR_DESTROY_(gs_int32_t* scratch);
54
55 void FIRST_ULL_lfta_LFTA_AGGR_INIT_(gs_uint64_t* scratch);
56 void FIRST_ULL_lfta_LFTA_AGGR_UPDATE_(gs_uint64_t* scratch, gs_uint64_t val);
57 gs_retval_t FIRST_ULL_lfta_LFTA_AGGR_FLUSHME_(gs_uint64_t* scratch);
58 void FIRST_ULL_lfta_LFTA_AGGR_OUTPUT_(gs_uint64_t* res, gs_uint64_t* scratch);
59 void FIRST_ULL_lfta_LFTA_AGGR_DESTROY_(gs_uint64_t* scratch);
60
61 void FIRST_LL_lfta_LFTA_AGGR_INIT_(gs_int64_t* scratch);
62 void FIRST_LL_lfta_LFTA_AGGR_UPDATE_(gs_int64_t* scratch, gs_int64_t val);
63 gs_retval_t FIRST_LL_lfta_LFTA_AGGR_FLUSHME_(gs_int64_t* scratch);
64 void FIRST_LL_lfta_LFTA_AGGR_OUTPUT_(gs_int64_t* res, gs_int64_t* scratch);
65 void FIRST_LL_lfta_LFTA_AGGR_DESTROY_(gs_int64_t* scratch);
66
67 void FIRST_STR_lfta_LFTA_AGGR_INIT_(struct gs_string* scratch);
68 void FIRST_STR_lfta_LFTA_AGGR_UPDATE_(struct gs_string* scratch, struct gs_string* val);
69 gs_retval_t FIRST_STR_lfta_LFTA_AGGR_FLUSHME_(struct gs_string* scratch);
70 void FIRST_STR_lfta_LFTA_AGGR_OUTPUT_(struct gs_string* res, struct gs_string* scratch);
71 void FIRST_STR_lfta_LFTA_AGGR_DESTROY_(struct gs_string* scratch);
72
73 //      last aggregate
74 void LAST_lfta_LFTA_AGGR_INIT_(gs_uint32_t* scratch);
75 void LAST_lfta_LFTA_AGGR_UPDATE_(gs_uint32_t* scratch, gs_uint32_t val);
76 gs_retval_t LAST_lfta_LFTA_AGGR_FLUSHME_(gs_uint32_t* scratch);
77 void LAST_lfta_LFTA_AGGR_OUTPUT_(gs_uint32_t* res, gs_uint32_t* scratch);
78 void LAST_lfta_LFTA_AGGR_DESTROY_(gs_uint32_t* scratch);
79
80 void LAST_INT_lfta_LFTA_AGGR_INIT_(gs_int32_t* scratch);
81 void LAST_INT_lfta_LFTA_AGGR_UPDATE_(gs_int32_t* scratch, gs_int32_t val);
82 gs_retval_t LAST_INT_lfta_LFTA_AGGR_FLUSHME_(gs_int32_t* scratch);
83 void LAST_INT_lfta_LFTA_AGGR_OUTPUT_(gs_int32_t* res, gs_int32_t* scratch);
84 void LAST_INT_lfta_LFTA_AGGR_DESTROY_(gs_int32_t* scratch);
85
86 void LAST_ULL_lfta_LFTA_AGGR_INIT_(gs_uint64_t* scratch);
87 void LAST_ULL_lfta_LFTA_AGGR_UPDATE_(gs_uint64_t* scratch, gs_uint64_t val);
88 gs_retval_t LAST_ULL_lfta_LFTA_AGGR_FLUSHME_(gs_uint64_t* scratch);
89 void LAST_ULL_lfta_LFTA_AGGR_OUTPUT_(gs_uint64_t* res, gs_uint64_t* scratch);
90 void LAST_ULL_lfta_LFTA_AGGR_DESTROY_(gs_uint64_t* scratch);
91
92 void LAST_LL_lfta_LFTA_AGGR_INIT_(gs_int64_t* scratch);
93 void LAST_LL_lfta_LFTA_AGGR_UPDATE_(gs_int64_t* scratch, gs_int64_t val);
94 gs_retval_t LAST_LL_lfta_LFTA_AGGR_FLUSHME_(gs_int64_t* scratch);
95 void LAST_LL_lfta_LFTA_AGGR_OUTPUT_(gs_int64_t* res, gs_int64_t* scratch);
96 void LAST_LL_lfta_LFTA_AGGR_DESTROY_(gs_int64_t* scratch);
97
98 void LAST_STR_lfta_LFTA_AGGR_INIT_(struct gs_string* scratch);
99 void LAST_STR_lfta_LFTA_AGGR_UPDATE_(struct gs_string* scratch, struct gs_string* val);
100 gs_retval_t LAST_STR_lfta_LFTA_AGGR_FLUSHME_(struct gs_string* scratch);
101 void LAST_STR_lfta_LFTA_AGGR_OUTPUT_(struct gs_string* res, struct gs_string* scratch);
102 void LAST_STR_lfta_LFTA_AGGR_DESTROY_(struct gs_string* scratch);
103
104 //      count_diff aggregate
105 void count_diff_lfta_ui_LFTA_AGGR_INIT_(gs_sp_t s) ;
106 void count_diff_lfta_ui_LFTA_AGGR_UPDATE_(gs_sp_t s, gs_uint32_t val) ;
107 void count_diff_lfta_ui_LFTA_AGGR_OUTPUT_(struct gs_string *res, gs_sp_t s) ;
108 void count_diff_lfta_ui_LFTA_AGGR_DESTROY_(gs_sp_t s) ;
109 gs_retval_t count_diff_lfta_ui_LFTA_AGGR_FLUSHME_(gs_sp_t s) ;
110
111 void count_diff_lfta_i_LFTA_AGGR_INIT_(gs_sp_t s) ;
112 void count_diff_lfta_i_LFTA_AGGR_UPDATE_(gs_sp_t s, gs_int32_t val) ;
113 void count_diff_lfta_i_LFTA_AGGR_OUTPUT_(struct gs_string *res, gs_sp_t s) ;
114 void count_diff_lfta_i_LFTA_AGGR_DESTROY_(gs_sp_t s) ;
115 gs_retval_t count_diff_lfta_i_LFTA_AGGR_FLUSHME_(gs_sp_t s) ;
116
117 void count_diff_lfta_ul_LFTA_AGGR_INIT_(gs_sp_t s) ;
118 void count_diff_lfta_ul_LFTA_AGGR_UPDATE_(gs_sp_t s, gs_uint64_t val) ;
119 void count_diff_lfta_ul_LFTA_AGGR_OUTPUT_(struct gs_string *res, gs_sp_t s) ;
120 void count_diff_lfta_ul_LFTA_AGGR_DESTROY_(gs_sp_t s) ;
121 gs_retval_t count_diff_lfta_ul_LFTA_AGGR_FLUSHME_(gs_sp_t s) ;
122
123 void count_diff_lfta_l_LFTA_AGGR_INIT_(gs_sp_t s) ;
124 void count_diff_lfta_l_LFTA_AGGR_UPDATE_(gs_sp_t s, gs_int64_t val) ;
125 void count_diff_lfta_l_LFTA_AGGR_OUTPUT_(struct gs_string *res, gs_sp_t s) ;
126 void count_diff_lfta_l_LFTA_AGGR_DESTROY_(gs_sp_t s) ;
127 gs_retval_t count_diff_lfta_l_LFTA_AGGR_FLUSHME_(gs_sp_t s) ;
128
129 void count_diff_lfta_s_LFTA_AGGR_INIT_(gs_sp_t s) ;
130 void count_diff_lfta_s_LFTA_AGGR_UPDATE_(gs_sp_t s, struct gs_string *val) ;
131 void count_diff_lfta_s_LFTA_AGGR_OUTPUT_(struct gs_string *res, gs_sp_t s) ;
132 void count_diff_lfta_s_LFTA_AGGR_DESTROY_(gs_sp_t s) ;
133 gs_retval_t count_diff_lfta_s_LFTA_AGGR_FLUSHME_(gs_sp_t s) ;
134
135
136 //              running_array_aggr aggregate
137 void running_array_aggr_lfta_LFTA_AGGR_INIT_(char* scratch);
138 void running_array_aggr_lfta_LFTA_AGGR_UPDATE_(char* scratch, gs_uint32_t val);
139 gs_retval_t running_array_aggr_lfta_LFTA_AGGR_FLUSHME_(char* scratch);
140 void running_array_aggr_lfta_LFTA_AGGR_OUTPUT_(struct gs_string* res, char* scratch);
141 void running_array_aggr_lfta_LFTA_AGGR_DESTROY_(char* scratch);
142
143 //////////////////////////////////////////////////////////////////
144 ///             Flip-s sample-based quantiles
145
146 /****************************************************************/
147 /* LFTA functions                                               */
148 /****************************************************************/
149
150 void quant_udaf_lfta3_LFTA_AGGR_INIT_(gs_sp_t);
151 void quant_udaf_lfta3_LFTA_AGGR_UPDATE_(gs_sp_t, gs_uint32_t);
152 gs_retval_t quant_udaf_lfta3_LFTA_AGGR_FLUSHME_(gs_sp_t);
153 void quant_udaf_lfta3_LFTA_AGGR_OUTPUT_(struct gs_string *, gs_sp_t);
154 void quant_udaf_lfta3_LFTA_AGGR_DESTROY_(gs_sp_t);
155
156 /////////////////////////////////////////////////////////
157 // ==============================================================
158 //      other rts functions.    
159
160 //              sum up unsigned integers expressed as a string with separators,
161 //              e.g. on input '34|45|56' and sep '|', return 135.
162 //              This kind of thing is common in Nokia PCMD data.
163 // gracefully handle empty entries, e.g. '|8|' should return 8
164 gs_int64_t sum_uint_in_list(struct gs_string *list, struct gs_string *sepchar);
165
166 //      Convert a string to a llong.
167 //      Has some protection to reject non-numeric characters.
168 //      a leading minus sign is allowed
169 gs_int64_t to_llong(struct gs_string *v);
170
171 #ifdef __cplusplus
172 }
173 #endif
174
175 #endif