1 /* ------------------------------------------------
\r
2 Copyright 2014 AT&T Intellectual Property
\r
3 Licensed under the Apache License, Version 2.0 (the "License");
\r
4 you may not use this file except in compliance with the License.
\r
5 You may obtain a copy of the License at
\r
7 http://www.apache.org/licenses/LICENSE-2.0
\r
9 Unless required by applicable law or agreed to in writing, software
\r
10 distributed under the License is distributed on an "AS IS" BASIS,
\r
11 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
12 See the License for the specific language governing permissions and
\r
13 limitations under the License.
\r
14 ------------------------------------------- */
\r
15 #ifndef __INTERFACE_IMPL_INCLUDED__
\r
16 #define __INTERFACE_IMPL_INCLUDED__
\r
18 #include"schemaparser.h"
\r
21 #include"type_indicators.h"
\r
22 #include"type_objects.h"
\r
23 #include"parse_fta.h"
\r
24 #include "gstypes.h"
\r
29 // access_result (access_fcn)(char *tuple, int offset);
\r
30 class tuple_access_info{
\r
32 std::string field_name;
\r
37 tuple_access_info(){
\r
42 int init(field_entry *fe){
\r
43 field_name = fe->get_name();
\r
44 pdt = new data_type(fe->get_type());
\r
45 return(pdt->type_indicator());
\r
49 class param_block_info{
\r
51 std::string param_name;
\r
52 access_result value;
\r
54 unsigned int offset;
\r
63 int init(var_pair_t *vp){
\r
65 param_name = vp->name;
\r
66 pdt = new data_type(vp->val);
\r
67 switch(pdt->get_type()){
\r
73 value.r.ui=0; break;
\r
75 value.r.f = 0.0; break;
\r
77 value.r.ul = 0; break;
\r
81 value.r.t.tv_sec=0; value.r.t.tv_usec=0; break;
\r
83 value.r.vs.length = 0; value.r.vs.offset = 0; value.r.vs.reserved=0; break;
\r
85 value.r.fs.data = NULL;
\r
86 value.r.fs.size = 0;
\r
91 return(pdt->type_indicator());
\r
101 std::vector<tuple_access_info> field_info;
\r
102 int min_tuple_size;
\r
104 std::vector<param_block_info> param_info;
\r
105 int min_param_size;
\r
107 query_rep(std::string nm, int ntuples, int nparams) :
\r
108 name(nm), field_info(ntuples), param_info(nparams) {
\r
109 min_tuple_size = 0;
\r
110 min_param_size = 0;
\r
113 int set_field_info(int f, field_entry *fe){
\r
114 if(f<0 || f>=field_info.size()) return(-1);
\r
115 return(field_info[f].init(fe));
\r
118 int finalize_field_info(){
\r
121 int fld_undefined = 0;
\r
122 for(f=0;f<field_info.size();++f){
\r
123 field_info[f].offset = curr_pos;
\r
124 int sz = field_info[f].pdt->type_size();
\r
125 if(sz==0) fld_undefined = 1;
\r
128 min_tuple_size = curr_pos;
\r
129 if(fld_undefined) return(-1);
\r
133 int set_param_info(int p, var_pair_t *vp){
\r
134 if(p<0 || p>=param_info.size()) return(-1);
\r
135 return(param_info[p].init(vp));
\r
138 int finalize_param_info(){
\r
141 int fld_undefined = 0;
\r
142 for(p=0;p<param_info.size();++p){
\r
143 param_info[p].offset = curr_pos;
\r
144 int sz = param_info[p].pdt->type_size();
\r
145 if(sz==0) fld_undefined = 1;
\r
148 min_param_size = curr_pos;
\r
149 if(fld_undefined) return(-1);
\r
156 // Diagnostic tool.
\r
157 void ftaschema_debugdump(int sch_handle);
\r