-/* ------------------------------------------------\r
-Copyright 2014 AT&T Intellectual Property\r
- Licensed under the Apache License, Version 2.0 (the "License");\r
- you may not use this file except in compliance with the License.\r
- You may obtain a copy of the License at\r
-\r
- http://www.apache.org/licenses/LICENSE-2.0\r
-\r
- Unless required by applicable law or agreed to in writing, software\r
- distributed under the License is distributed on an "AS IS" BASIS,\r
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- See the License for the specific language governing permissions and\r
- limitations under the License.\r
- ------------------------------------------- */\r
-#ifndef __INTERFACE_IMPL_INCLUDED__\r
-#define __INTERFACE_IMPL_INCLUDED__\r
-\r
-#include"schemaparser.h"\r
-\r
-\r
- #include"type_indicators.h"\r
- #include"type_objects.h"\r
- #include"parse_fta.h"\r
- #include "gstypes.h"\r
-\r
-\r
-\r
-\r
-// access_result (access_fcn)(char *tuple, int offset);\r
-class tuple_access_info{\r
-public:\r
- std::string field_name;\r
- int offset;\r
- data_type *pdt;\r
-\r
-\r
- tuple_access_info(){\r
- pdt = NULL;\r
- offset = 0;\r
- };\r
-\r
- int init(field_entry *fe){\r
- field_name = fe->get_name();\r
- pdt = new data_type(fe->get_type());\r
- return(pdt->type_indicator());\r
- };\r
-};\r
-\r
-class param_block_info{\r
-public:\r
- std::string param_name;\r
- access_result value;\r
- data_type *pdt;\r
- unsigned int offset;\r
- bool value_set;\r
-\r
- param_block_info(){\r
- pdt = NULL;\r
- offset = 0;\r
- value_set = false;\r
- };\r
-\r
- int init(var_pair_t *vp){\r
- value_set = false;\r
- param_name = vp->name;\r
- pdt = new data_type(vp->val);\r
- switch(pdt->get_type()){\r
- case int_t:\r
- value.r.i=0; break;\r
- case u_int_t:\r
- case u_short_t:\r
- case bool_t:\r
- value.r.ui=0; break;\r
- case floating_t:\r
- value.r.f = 0.0; break;\r
- case u_llong_t:\r
- value.r.ul = 0; break;\r
- case llong_t:\r
- value.r.l=0; break;\r
- case timeval_t:\r
- value.r.t.tv_sec=0; value.r.t.tv_usec=0; break;\r
- case v_str_t:\r
- value.r.vs.length = 0; value.r.vs.offset = 0; value.r.vs.reserved=0; break;\r
- case fstring_t:\r
- value.r.fs.data = NULL;\r
- value.r.fs.size = 0;\r
- break;\r
- default:\r
- break;\r
- }\r
- return(pdt->type_indicator());\r
- };\r
-};\r
-\r
-\r
-\r
-class query_rep{\r
-public:\r
- std::string name;\r
-\r
- std::vector<tuple_access_info> field_info;\r
- int min_tuple_size;\r
-\r
- std::vector<param_block_info> param_info;\r
- int min_param_size;\r
-\r
- query_rep(std::string nm, int ntuples, int nparams) :\r
- name(nm), field_info(ntuples), param_info(nparams) {\r
- min_tuple_size = 0;\r
- min_param_size = 0;\r
- };\r
-\r
- int set_field_info(int f, field_entry *fe){\r
- if(f<0 || f>=field_info.size()) return(-1);\r
- return(field_info[f].init(fe));\r
- };\r
-\r
- int finalize_field_info(){\r
- int f;\r
- int curr_pos = 0;\r
- int fld_undefined = 0;\r
- for(f=0;f<field_info.size();++f){\r
- field_info[f].offset = curr_pos;\r
- int sz = field_info[f].pdt->type_size();\r
- if(sz==0) fld_undefined = 1;\r
- curr_pos += sz;\r
- }\r
- min_tuple_size = curr_pos;\r
- if(fld_undefined) return(-1);\r
- else return(0);\r
- };\r
-\r
- int set_param_info(int p, var_pair_t *vp){\r
- if(p<0 || p>=param_info.size()) return(-1);\r
- return(param_info[p].init(vp));\r
- };\r
-\r
- int finalize_param_info(){\r
- int p;\r
- int curr_pos = 0;\r
- int fld_undefined = 0;\r
- for(p=0;p<param_info.size();++p){\r
- param_info[p].offset = curr_pos;\r
- int sz = param_info[p].pdt->type_size();\r
- if(sz==0) fld_undefined = 1;\r
- curr_pos += sz;\r
- }\r
- min_param_size = curr_pos;\r
- if(fld_undefined) return(-1);\r
- else return(0);\r
- };\r
-\r
-\r
-};\r
-\r
-// Diagnostic tool.\r
-void ftaschema_debugdump(int sch_handle);\r
-\r
-#endif\r
-\r
+/* ------------------------------------------------
+Copyright 2014 AT&T Intellectual Property
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ------------------------------------------- */
+#ifndef __INTERFACE_IMPL_INCLUDED__
+#define __INTERFACE_IMPL_INCLUDED__
+
+#include"schemaparser.h"
+
+
+ #include"type_indicators.h"
+ #include"type_objects.h"
+ #include"parse_fta.h"
+ #include "gstypes.h"
+
+
+
+
+// access_result (access_fcn)(char *tuple, int offset);
+class tuple_access_info{
+public:
+ std::string field_name;
+ int offset;
+ data_type *pdt;
+
+
+ tuple_access_info(){
+ pdt = NULL;
+ offset = 0;
+ };
+
+ int init(field_entry *fe){
+ field_name = fe->get_name();
+ pdt = new data_type(fe->get_type());
+ return(pdt->type_indicator());
+ };
+};
+
+class param_block_info{
+public:
+ std::string param_name;
+ access_result value;
+ data_type *pdt;
+ unsigned int offset;
+ bool value_set;
+
+ param_block_info(){
+ pdt = NULL;
+ offset = 0;
+ value_set = false;
+ };
+
+ int init(var_pair_t *vp){
+ value_set = false;
+ param_name = vp->name;
+ pdt = new data_type(vp->val);
+ switch(pdt->get_type()){
+ case int_t:
+ value.r.i=0; break;
+ case u_int_t:
+ case u_short_t:
+ case bool_t:
+ value.r.ui=0; break;
+ case floating_t:
+ value.r.f = 0.0; break;
+ case u_llong_t:
+ value.r.ul = 0; break;
+ case llong_t:
+ value.r.l=0; break;
+ case timeval_t:
+ value.r.t.tv_sec=0; value.r.t.tv_usec=0; break;
+ case v_str_t:
+ value.r.vs.length = 0; value.r.vs.offset = 0; value.r.vs.reserved=0; break;
+ case fstring_t:
+ value.r.fs.data = NULL;
+ value.r.fs.size = 0;
+ break;
+ default:
+ break;
+ }
+ return(pdt->type_indicator());
+ };
+};
+
+
+
+class query_rep{
+public:
+ std::string name;
+
+ std::vector<tuple_access_info> field_info;
+ int min_tuple_size;
+
+ std::vector<param_block_info> param_info;
+ int min_param_size;
+
+ query_rep(std::string nm, int ntuples, int nparams) :
+ name(nm), field_info(ntuples), param_info(nparams) {
+ min_tuple_size = 0;
+ min_param_size = 0;
+ };
+
+ int set_field_info(int f, field_entry *fe){
+ if(f<0 || f>=field_info.size()) return(-1);
+ return(field_info[f].init(fe));
+ };
+
+ int finalize_field_info(){
+ int f;
+ int curr_pos = 0;
+ int fld_undefined = 0;
+ for(f=0;f<field_info.size();++f){
+ field_info[f].offset = curr_pos;
+ int sz = field_info[f].pdt->type_size();
+ if(sz==0) fld_undefined = 1;
+ curr_pos += sz;
+ }
+ min_tuple_size = curr_pos;
+ if(fld_undefined) return(-1);
+ else return(0);
+ };
+
+ int set_param_info(int p, var_pair_t *vp){
+ if(p<0 || p>=param_info.size()) return(-1);
+ return(param_info[p].init(vp));
+ };
+
+ int finalize_param_info(){
+ int p;
+ int curr_pos = 0;
+ int fld_undefined = 0;
+ for(p=0;p<param_info.size();++p){
+ param_info[p].offset = curr_pos;
+ int sz = param_info[p].pdt->type_size();
+ if(sz==0) fld_undefined = 1;
+ curr_pos += sz;
+ }
+ min_param_size = curr_pos;
+ if(fld_undefined) return(-1);
+ else return(0);
+ };
+
+
+};
+
+// Diagnostic tool.
+void ftaschema_debugdump(int sch_handle);
+
+#endif
+