Added quantiling UDAFs
[com/gs-lite.git] / include / schemaparser.h
index 7d13a4c..5046efe 100644 (file)
-/* ------------------------------------------------
-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_LIB_INCLUDED__
-#define __INTERFACE_LIB_INCLUDED__
-#include "gsconfig.h"
-#include "gstypes.h"
-
-#include<stdio.h>
-#include "byteswap.h"
-#include "type_indicators.h"
-#include "fta.h"
-#include <fta_stat.h>
-/* #include"type_objects.h"            */
-/* #include"parse_fta.h"               */
-
-
-/*//////////////////////////////////////////////////////
-////                   Include data type definitions.  */
-
-/*                     Include vstring.h to get the vstring definition. */
-
-/* XXXX OS This data definitions and prototypes are mirrored in schemaparser.h
- * any changes have to be reflected there !!
- */
-
-#include"vstring.h"
-
-#include<sys/time.h>
-/*
-#ifndef _TIMEVAL_T
-#define _TIMEVAL_T
-struct timeval {
-    long  tv_sec;
-    long  tv_usec;
-};
-#endif
-*/
-
-struct fstring_str{
-       gs_int32_t size;
-       gs_sp_t data;   // gs_int8_t *
-};
-
-/*                     Universal result holder.        */
-#ifndef _struct_access_result_defined_
-#define _struct_access_result_defined_
-struct access_result {
-       int field_data_type; // as defined
-       union {
-               gs_int32_t i;
-               gs_uint32_t ui;
-               gs_int64_t l;
-               gs_uint64_t ul;
-               gs_float_t f;
-               struct timeval t;               // defined in sys/time.h
-               struct vstring vs;
-               struct fstring_str fs;
-               struct hfta_ipv6_str ip6;
-       } r;
-};
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/*//////////////////////////////////////
-////           Version functions               */
-
-gs_int32_t get_schemaparser_version();
-gs_int32_t *get_schemaparser_accepted_versions();      // returns zero-terminated array
-gs_int32_t schemaparser_accepts_version(gs_int32_t v); // 1 if true, 0 o'wise.
-
-
-/*/////////////////////////////////////////////////
-////                   Helper functions        */
-
-// int fta_field_size(int dt, int *is_udef);
-
-
-/*///////////////////////////////////////////////////
-////                   Interface functions     */
-
-
-/*///  FTA management          ////////////// */
-
-/*                     Create a new schema representation, return
-                       an integer handle.
-                       Input is a char array with the stream schema.
-                       returns -1 on error.
-                       Diagnostics written to stderr.
-                       use the _prot version to also to accept a PROTOCOL (table)
-*/
-
-gs_schemahandle_t ftaschema_parse_string(gs_csp_t f);  // gs_csp_t is const char *
-gs_schemahandle_t ftaschema_parse_string_prot(gs_csp_t f);     // gs_csp_t is const char *
-
-/*                     Create a new schema representation, return
-                       an integer handle.
-                       Input is a STREAM schema in a file.
-                       use the _prot version to also to accept a PROTOCOL (table)
-                       returns -1 on error.
-                       Diagnostics written to stderr.
-*/
-gs_schemahandle_t ftaschema_parse_file(FILE *f);
-gs_schemahandle_t ftaschema_parse_file_prot(FILE *f);
-
-/*                     Release memory used by the schema representation.
-                       return non-zero on error.
-*/
-gs_int32_t ftaschema_free(gs_schemahandle_t sh);       // gs_sp_t is char *
-
-/* name of fta schema null terminated */
-/* Returns NULL if sh is out of bounds.        */
-/* NO ALLOCATION IS PERFORMED!   Must treat result as const. */
-gs_sp_t ftaschema_name(gs_schemahandle_t sh);
-
-/*             key of fta
-               This function is omitted because we are using name only.
-FTAkey * ftaschema_key(schema_handle sh);
-*/
-
-/*/////                Tuple management        //////////////////// */
-
-/* number of entries in a tuple */
-/* Return -1 if the schema handle is out of range.     */
-gs_int32_t ftaschema_tuple_len(gs_schemahandle_t sh);
-
-
-/* tuple entry name */
-/* Returns NULL if sh or index is out of bounds.       */
-/* NO ALLOCATION IS PERFORMED!   Must treat result as const. */
-gs_sp_t ftaschema_field_name(gs_schemahandle_t sh, gs_uint32_t index);
-
-
-/* returns field offset by name (for direct access)  */
-/* if sh is out of bounds, or if fieldname is not the name of a field,
-   or len is too small,
-   return value is -1 (field_offset) / UNDEFINED_TYPE (field_type)
-       gs_sp_t is char *
-*/
-gs_int32_t ftaschema_get_field_offset_by_name(gs_schemahandle_t sh, gs_csp_t fieldname);
-gs_int32_t ftaschema_get_field_type_by_name(gs_schemahandle_t sh, gs_csp_t fieldname);
-
-/* get field_offset, field_type bu index instead of name */
-gs_int32_t ftaschema_get_field_offset_by_index(gs_schemahandle_t sh, gs_int32_t index);
-gs_int32_t ftaschema_get_field_type_by_index(gs_schemahandle_t sh, gs_int32_t index);
-
-
-/* returns field value based on name */
-/* if sh is out of bounds, or if fieldname is not the name of a field,
-   or len is too small,
-   return value is of type UNDEFINED_TYPE
-   NO COPYING IS PERFORMED FOR vstring TYPES.
-       gs_sp_t is char *
-*/
-struct access_result ftaschema_get_field_by_name(gs_schemahandle_t sh,
-                               gs_csp_t fieldname, void * data, gs_int32_t len);
-
-/* return field value by index */
-/* if sh is out of bounds, or if fieldname is not the name of a field,
-   or len is too small,
-   return value is of type UNDEFINED_TYPE
-   NO COPYING IS PERFORMED FOR vstring TYPES.
-*/
-struct access_result ftaschema_get_field_by_index(gs_schemahandle_t sh,
-                               gs_uint32_t index, void * data, gs_uint32_t len);
-
-/* The following functions deals with temporal status tuples */
-
-//             Get location of eof, temporal-tuple metadata.
-gs_int32_t ftaschema_get_tuple_metadata_offset(gs_schemahandle_t sh);
-
-/* checks whether tuple is temporal
-  return value 1 indicates that tuple istemporal, 0 - not temporal
-*/
-gs_int32_t ftaschema_is_temporal_tuple(gs_int32_t schema_handle, void *data);
-//gs_int32_t ftaschema_is_temporal_tuple_offset(int metadata_offset, void *data) ;
-#define ftaschema_is_temporal_tuple_offset(metadata_offset,data) (*((gs_sp_t)(data) + (metadata_offset)) == TEMPORAL_TUPLE)
-
-/* checks whether tuple is special end-of_file tuple
-  return value 1 indicates that tuple is eof_tuple, 0 - otherwise
-*/
-gs_int32_t ftaschema_is_eof_tuple(gs_int32_t schema_handle, void *data);
-gs_int32_t ftaschema_is_eof_tuple_offset(int metadata_offset, void *data) ;
-
-
-
-
-
-/* extracts the trace from the temporal tuple */
-gs_int32_t ftaschema_get_trace(gs_int32_t schema_handle, void* data,
-       gs_int32_t len,
-       gs_uint64_t * trace_id, gs_uint32_t* sz, fta_stat** trace );
-
-
-/*     The following functions operate directly on the tuple
-    to return field values.  Problem set to 1 if the len is too small.
-    unpack_vstr does not make a copy of the buffer.
-       Neither does unpack_fstring
-*/
-gs_uint32_t fta_unpack_uint(void *data, gs_int32_t len, gs_uint32_t offset, gs_int32_t *problem);
-gs_uint32_t fta_unpack_ushort(void *data, gs_int32_t len, gs_uint32_t offset, gs_int32_t *problem);
-gs_uint32_t fta_unpack_bool(void *data, gs_int32_t len, gs_uint32_t offset, gs_int32_t *problem);
-gs_int32_t fta_unpack_int(void *data, gs_int32_t len, gs_uint32_t offset, gs_int32_t *problem);
-gs_uint64_t fta_unpack_ullong(void *data, gs_int32_t len, gs_uint32_t offset, gs_int32_t *problem);
-gs_int64_t fta_unpack_llong(void *data, gs_int32_t len, gs_uint32_t offset, gs_int32_t *problem);
-gs_float_t fta_unpack_float(void *data, gs_int32_t len, gs_uint32_t offset, gs_int32_t *problem);
-struct timeval fta_unpack_timeval(void *data, gs_int32_t len, gs_uint32_t offset, gs_int32_t *problem);
-struct vstring fta_unpack_vstr(void *data, gs_int32_t len, gs_uint32_t offset, gs_int32_t *problem);
-struct hfta_ipv6_str fta_unpack_ipv6(void *data, gs_int32_t len, gs_uint32_t offset, gs_int32_t *problem);
-gs_sp_t fta_unpack_fstring(void *data, gs_int32_t len, gs_uint32_t offset, gs_int32_t *problem);
-
-gs_uint32_t fta_unpack_uint_nocheck(void *data, gs_uint32_t offset);
-gs_uint32_t fta_unpack_ushort_nocheck(void *data, gs_uint32_t offset);
-gs_uint32_t fta_unpack_bool_nocheck(void *data, gs_uint32_t offset);
-gs_int32_t fta_unpack_int_nocheck(void *data, gs_uint32_t offset);
-gs_uint64_t fta_unpack_ullong_nocheck(void *data, gs_uint32_t offset);
-gs_int64_t fta_unpack_llong_nocheck(void *data, gs_uint32_t offset);
-gs_float_t fta_unpack_float_nocheck(void *data, gs_uint32_t offset);
-struct timeval fta_unpack_timeval_nocheck(void *data, gs_uint32_t offset);
-struct hfta_ipv6_str fta_unpack_ipv6_nocheck(void *data, gs_uint32_t offset);
-
-//             THe same as above, but no ntoh xform
-gs_uint32_t fta_unpack_uint_noxf(void *data, gs_int32_t len, gs_uint32_t offset, gs_int32_t *problem);
-gs_uint32_t fta_unpack_ushort_noxf(void *data, gs_int32_t len, gs_uint32_t offset, gs_int32_t *problem);
-gs_uint32_t fta_unpack_bool_noxf(void *data, gs_int32_t len, gs_uint32_t offset, gs_int32_t *problem);
-gs_int32_t fta_unpack_int_noxf(void *data, gs_int32_t len, gs_uint32_t offset, gs_int32_t *problem);
-gs_uint64_t fta_unpack_ullong_noxf(void *data, gs_int32_t len, gs_uint32_t offset, gs_int32_t *problem);
-gs_int64_t fta_unpack_llong_noxf(void *data, gs_int32_t len, gs_uint32_t offset, gs_int32_t *problem);
-gs_float_t fta_unpack_float_noxf(void *data, gs_int32_t len, gs_uint32_t offset, gs_int32_t *problem);
-struct timeval fta_unpack_timeval_noxf(void *data, gs_int32_t len, gs_uint32_t offset, gs_int32_t *problem);
-struct hfta_ipv6_str fta_unpack_ipv6_noxf(void *data, gs_int32_t len, gs_uint32_t offset, gs_int32_t *problem);
-struct vstring fta_unpack_vstr_noxf(void *data, gs_int32_t len, gs_uint32_t offset, gs_int32_t *problem);
-gs_sp_t fta_unpack_fstring_noxf(void *data, gs_int32_t len, gs_uint32_t offset, gs_int32_t *problem);
-
-gs_uint32_t fta_unpack_uint_noxf_nocheck(void *data, gs_uint32_t offset);
-gs_uint32_t fta_unpack_ushort_noxf_nocheck(void *data, gs_uint32_t offset);
-gs_uint32_t fta_unpack_bool_noxf_nocheck(void *data, gs_uint32_t offset);
-gs_int32_t fta_unpack_int_noxf_nocheck(void *data, gs_uint32_t offset);
-gs_uint64_t fta_unpack_ullong_noxf_nocheck(void *data, gs_uint32_t offset);
-gs_int64_t fta_unpack_llong_noxf_nocheck(void *data, gs_uint32_t offset);
-gs_float_t fta_unpack_float_noxf_nocheck(void *data, gs_uint32_t offset);
-struct timeval fta_unpack_timeval_noxf_nocheck(void *data, gs_uint32_t offset);
-struct hfta_ipv6_str fta_unpack_ipv6_noxf_nocheck(void *data, gs_uint32_t offset);
-
-
-
-/*///////              Param block management          ///////////////*/
-
-
-/* number of parameters */
-/*     Return -1 if sh is out of bounds        */
-gs_int32_t ftaschema_parameter_len(gs_schemahandle_t sh);
-
-/* parameter entry name */
-/*     Return NULL if sh or index is out of bounds.    */
-/*     NO COPYING IS PERFORMED */
-gs_sp_t ftaschema_parameter_name(gs_schemahandle_t sh, gs_uint32_t index);
-
-/*
-               No need to create param handles, it is done at schema parse time.
-               (downside: must be careful to set all parameters if
-                the user sends param blocks to multiple instances)
-
-        creates a parameter structure handle for a particular schema
-paramhandle ftaschema_create_paramhandle(schema_handle sh);
-
-        frees a parameter structure handle
-int ftaschema_free_paramhandle(paramhandle ph);
-*/
-
-
-/* set parameter value for parameter handle */
-/*     Pass in the parameter in its char string representation. */
-/*  Return value is -1 on error, else 0        */
-gs_int32_t ftaschema_setparam_by_name(gs_schemahandle_t sh, gs_sp_t param_name,
-                              gs_sp_t param_val, gs_int32_t len);
-
-/* set parameter value for parameter handle */
-/*     Pass in the parameter in its char string representation. */
-/*  Return value is -1 on error, else 0        */
-gs_int32_t ftaschema_setparam_by_index(gs_schemahandle_t sh, gs_int32_t index,
-                               gs_sp_t param_val, gs_int32_t len);
-
-/* creates the parameter block which can be passed in control and
-   init operations. The function allocates the memory returned and
-   the caller is responsible to free it.
-   Return value is -1 on error, else 0.
-   ALL VALUES CONVERTED TO NETWORK BYTE ORDER
-   */
-
-gs_int32_t ftaschema_create_param_block(gs_schemahandle_t sh, void ** block, gs_int32_t * size);
-
-//void ftaschema_debugdump(int handle);
-
-#ifdef __cplusplus
-}
-#endif
-
-
-#endif
-
+/* ------------------------------------------------\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
+\r
+#ifndef __INTERFACE_LIB_INCLUDED__\r
+#define __INTERFACE_LIB_INCLUDED__\r
+#include "gsconfig.h"\r
+#include "gstypes.h"\r
+\r
+#include<stdio.h>\r
+#include "byteswap.h"\r
+#include "type_indicators.h"\r
+#include "fta.h"\r
+#include <fta_stat.h>\r
+/* #include"type_objects.h"            */\r
+/* #include"parse_fta.h"               */\r
+\r
+\r
+/*//////////////////////////////////////////////////////\r
+////                   Include data type definitions.  */\r
+\r
+/*                     Include vstring.h to get the vstring definition. */\r
+\r
+/* XXXX OS This data definitions and prototypes are mirrored in schemaparser.h\r
+ * any changes have to be reflected there !!\r
+ */\r
+\r
+#include"vstring.h"\r
+\r
+#include<sys/time.h>\r
+/*\r
+#ifndef _TIMEVAL_T\r
+#define _TIMEVAL_T\r
+struct timeval {\r
+    long  tv_sec;\r
+    long  tv_usec;\r
+};\r
+#endif\r
+*/\r
+\r
+struct fstring_str{\r
+       gs_int32_t size;\r
+       gs_sp_t data;   // gs_int8_t *\r
+};\r
+\r
+/*                     Universal result holder.        */\r
+#ifndef _struct_access_result_defined_\r
+#define _struct_access_result_defined_\r
+struct access_result {\r
+       int field_data_type; // as defined\r
+       union {\r
+               gs_int32_t i;\r
+               gs_uint32_t ui;\r
+               gs_int64_t l;\r
+               gs_uint64_t ul;\r
+               gs_float_t f;\r
+               struct timeval t;               // defined in sys/time.h\r
+               struct vstring vs;\r
+               struct fstring_str fs;\r
+               struct hfta_ipv6_str ip6;\r
+       } r;\r
+};\r
+#endif\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+\r
+/*//////////////////////////////////////\r
+////           Version functions               */\r
+\r
+gs_int32_t get_schemaparser_version();\r
+gs_int32_t *get_schemaparser_accepted_versions();      // returns zero-terminated array\r
+gs_int32_t schemaparser_accepts_version(gs_int32_t v); // 1 if true, 0 o'wise.\r
+\r
+\r
+/*/////////////////////////////////////////////////\r
+////                   Helper functions        */\r
+\r
+// int fta_field_size(int dt, int *is_udef);\r
+\r
+\r
+/*///////////////////////////////////////////////////\r
+////                   Interface functions     */\r
+\r
+\r
+/*///  FTA management          ////////////// */\r
+\r
+/*                     Create a new schema representation, return\r
+                       an integer handle.\r
+                       Input is a char array with the stream schema.\r
+                       returns -1 on error.\r
+                       Diagnostics written to stderr.\r
+                       use the _prot version to also to accept a PROTOCOL (table)\r
+*/\r
+\r
+gs_schemahandle_t ftaschema_parse_string(gs_csp_t f);  // gs_csp_t is const char *\r
+gs_schemahandle_t ftaschema_parse_string_prot(gs_csp_t f);     // gs_csp_t is const char *\r
+\r
+/*                     Create a new schema representation, return\r
+                       an integer handle.\r
+                       Input is a STREAM schema in a file.\r
+                       use the _prot version to also to accept a PROTOCOL (table)\r
+                       returns -1 on error.\r
+                       Diagnostics written to stderr.\r
+*/\r
+gs_schemahandle_t ftaschema_parse_file(FILE *f);\r
+gs_schemahandle_t ftaschema_parse_file_prot(FILE *f);\r
+\r
+/*                     Release memory used by the schema representation.\r
+                       return non-zero on error.\r
+*/\r
+gs_int32_t ftaschema_free(gs_schemahandle_t sh);       // gs_sp_t is char *\r
+\r
+/* name of fta schema null terminated */\r
+/* Returns NULL if sh is out of bounds.        */\r
+/* NO ALLOCATION IS PERFORMED!   Must treat result as const. */\r
+gs_sp_t ftaschema_name(gs_schemahandle_t sh);\r
+\r
+/*             key of fta\r
+               This function is omitted because we are using name only.\r
+FTAkey * ftaschema_key(schema_handle sh);\r
+*/\r
+\r
+/*/////                Tuple management        //////////////////// */\r
+\r
+/* number of entries in a tuple */\r
+/* Return -1 if the schema handle is out of range.     */\r
+gs_int32_t ftaschema_tuple_len(gs_schemahandle_t sh);\r
+\r
+\r
+/* tuple entry name */\r
+/* Returns NULL if sh or index is out of bounds.       */\r
+/* NO ALLOCATION IS PERFORMED!   Must treat result as const. */\r
+gs_sp_t ftaschema_field_name(gs_schemahandle_t sh, gs_uint32_t index);\r
+\r
+\r
+/* returns field offset by name (for direct access)  */\r
+/* if sh is out of bounds, or if fieldname is not the name of a field,\r
+   or len is too small,\r
+   return value is -1 (field_offset) / UNDEFINED_TYPE (field_type)\r
+       gs_sp_t is char *\r
+*/\r
+gs_int32_t ftaschema_get_field_offset_by_name(gs_schemahandle_t sh, gs_csp_t fieldname);\r
+gs_int32_t ftaschema_get_field_type_by_name(gs_schemahandle_t sh, gs_csp_t fieldname);\r
+\r
+/* get field_offset, field_type bu index instead of name */\r
+gs_int32_t ftaschema_get_field_offset_by_index(gs_schemahandle_t sh, gs_int32_t index);\r
+gs_int32_t ftaschema_get_field_type_by_index(gs_schemahandle_t sh, gs_int32_t index);\r
+\r
+\r
+/* returns field value based on name */\r
+/* if sh is out of bounds, or if fieldname is not the name of a field,\r
+   or len is too small,\r
+   return value is of type UNDEFINED_TYPE\r
+   NO COPYING IS PERFORMED FOR vstring TYPES.\r
+       gs_sp_t is char *\r
+*/\r
+struct access_result ftaschema_get_field_by_name(gs_schemahandle_t sh,\r
+                               gs_csp_t fieldname, void * data, gs_int32_t len);\r
+\r
+/* return field value by index */\r
+/* if sh is out of bounds, or if fieldname is not the name of a field,\r
+   or len is too small,\r
+   return value is of type UNDEFINED_TYPE\r
+   NO COPYING IS PERFORMED FOR vstring TYPES.\r
+*/\r
+struct access_result ftaschema_get_field_by_index(gs_schemahandle_t sh,\r
+                               gs_uint32_t index, void * data, gs_uint32_t len);\r
+\r
+/* The following functions deals with temporal status tuples */\r
+\r
+//             Get location of eof, temporal-tuple metadata.\r
+gs_int32_t ftaschema_get_tuple_metadata_offset(gs_schemahandle_t sh);\r
+\r
+/* checks whether tuple is temporal\r
+  return value 1 indicates that tuple istemporal, 0 - not temporal\r
+*/\r
+gs_int32_t ftaschema_is_temporal_tuple(gs_int32_t schema_handle, void *data);\r
+//gs_int32_t ftaschema_is_temporal_tuple_offset(int metadata_offset, void *data) ;\r
+#define ftaschema_is_temporal_tuple_offset(metadata_offset,data) (*((gs_sp_t)(data) + (metadata_offset)) == TEMPORAL_TUPLE)\r
+\r
+/* checks whether tuple is special end-of_file tuple\r
+  return value 1 indicates that tuple is eof_tuple, 0 - otherwise\r
+*/\r
+gs_int32_t ftaschema_is_eof_tuple(gs_int32_t schema_handle, void *data);\r
+gs_int32_t ftaschema_is_eof_tuple_offset(int metadata_offset, void *data) ;\r
+\r
+\r
+\r
+\r
+\r
+/* extracts the trace from the temporal tuple */\r
+gs_int32_t ftaschema_get_trace(gs_int32_t schema_handle, void* data,\r
+       gs_int32_t len,\r
+       gs_uint64_t * trace_id, gs_uint32_t* sz, fta_stat** trace );\r
+\r
+\r
+/*     The following functions operate directly on the tuple\r
+    to return field values.  Problem set to 1 if the len is too small.\r
+    unpack_vstr does not make a copy of the buffer.\r
+       Neither does unpack_fstring\r
+*/\r
+gs_uint32_t fta_unpack_uint(void *data, gs_int32_t len, gs_uint32_t offset, gs_int32_t *problem);\r
+gs_uint32_t fta_unpack_ushort(void *data, gs_int32_t len, gs_uint32_t offset, gs_int32_t *problem);\r
+gs_uint32_t fta_unpack_bool(void *data, gs_int32_t len, gs_uint32_t offset, gs_int32_t *problem);\r
+gs_int32_t fta_unpack_int(void *data, gs_int32_t len, gs_uint32_t offset, gs_int32_t *problem);\r
+gs_uint64_t fta_unpack_ullong(void *data, gs_int32_t len, gs_uint32_t offset, gs_int32_t *problem);\r
+gs_int64_t fta_unpack_llong(void *data, gs_int32_t len, gs_uint32_t offset, gs_int32_t *problem);\r
+gs_float_t fta_unpack_float(void *data, gs_int32_t len, gs_uint32_t offset, gs_int32_t *problem);\r
+struct timeval fta_unpack_timeval(void *data, gs_int32_t len, gs_uint32_t offset, gs_int32_t *problem);\r
+struct vstring fta_unpack_vstr(void *data, gs_int32_t len, gs_uint32_t offset, gs_int32_t *problem);\r
+struct hfta_ipv6_str fta_unpack_ipv6(void *data, gs_int32_t len, gs_uint32_t offset, gs_int32_t *problem);\r
+gs_sp_t fta_unpack_fstring(void *data, gs_int32_t len, gs_uint32_t offset, gs_int32_t *problem);\r
+\r
+gs_uint32_t fta_unpack_uint_nocheck(void *data, gs_uint32_t offset);\r
+gs_uint32_t fta_unpack_ushort_nocheck(void *data, gs_uint32_t offset);\r
+gs_uint32_t fta_unpack_bool_nocheck(void *data, gs_uint32_t offset);\r
+gs_int32_t fta_unpack_int_nocheck(void *data, gs_uint32_t offset);\r
+gs_uint64_t fta_unpack_ullong_nocheck(void *data, gs_uint32_t offset);\r
+gs_int64_t fta_unpack_llong_nocheck(void *data, gs_uint32_t offset);\r
+gs_float_t fta_unpack_float_nocheck(void *data, gs_uint32_t offset);\r
+struct timeval fta_unpack_timeval_nocheck(void *data, gs_uint32_t offset);\r
+struct hfta_ipv6_str fta_unpack_ipv6_nocheck(void *data, gs_uint32_t offset);\r
+\r
+//             THe same as above, but no ntoh xform\r
+gs_uint32_t fta_unpack_uint_noxf(void *data, gs_int32_t len, gs_uint32_t offset, gs_int32_t *problem);\r
+gs_uint32_t fta_unpack_ushort_noxf(void *data, gs_int32_t len, gs_uint32_t offset, gs_int32_t *problem);\r
+gs_uint32_t fta_unpack_bool_noxf(void *data, gs_int32_t len, gs_uint32_t offset, gs_int32_t *problem);\r
+gs_int32_t fta_unpack_int_noxf(void *data, gs_int32_t len, gs_uint32_t offset, gs_int32_t *problem);\r
+gs_uint64_t fta_unpack_ullong_noxf(void *data, gs_int32_t len, gs_uint32_t offset, gs_int32_t *problem);\r
+gs_int64_t fta_unpack_llong_noxf(void *data, gs_int32_t len, gs_uint32_t offset, gs_int32_t *problem);\r
+gs_float_t fta_unpack_float_noxf(void *data, gs_int32_t len, gs_uint32_t offset, gs_int32_t *problem);\r
+struct timeval fta_unpack_timeval_noxf(void *data, gs_int32_t len, gs_uint32_t offset, gs_int32_t *problem);\r
+struct hfta_ipv6_str fta_unpack_ipv6_noxf(void *data, gs_int32_t len, gs_uint32_t offset, gs_int32_t *problem);\r
+struct vstring fta_unpack_vstr_noxf(void *data, gs_int32_t len, gs_uint32_t offset, gs_int32_t *problem);\r
+gs_sp_t fta_unpack_fstring_noxf(void *data, gs_int32_t len, gs_uint32_t offset, gs_int32_t *problem);\r
+\r
+gs_uint32_t fta_unpack_uint_noxf_nocheck(void *data, gs_uint32_t offset);\r
+gs_uint32_t fta_unpack_ushort_noxf_nocheck(void *data, gs_uint32_t offset);\r
+gs_uint32_t fta_unpack_bool_noxf_nocheck(void *data, gs_uint32_t offset);\r
+gs_int32_t fta_unpack_int_noxf_nocheck(void *data, gs_uint32_t offset);\r
+gs_uint64_t fta_unpack_ullong_noxf_nocheck(void *data, gs_uint32_t offset);\r
+gs_int64_t fta_unpack_llong_noxf_nocheck(void *data, gs_uint32_t offset);\r
+gs_float_t fta_unpack_float_noxf_nocheck(void *data, gs_uint32_t offset);\r
+struct timeval fta_unpack_timeval_noxf_nocheck(void *data, gs_uint32_t offset);\r
+struct hfta_ipv6_str fta_unpack_ipv6_noxf_nocheck(void *data, gs_uint32_t offset);\r
+\r
+\r
+\r
+/*///////              Param block management          ///////////////*/\r
+\r
+\r
+/* number of parameters */\r
+/*     Return -1 if sh is out of bounds        */\r
+gs_int32_t ftaschema_parameter_len(gs_schemahandle_t sh);\r
+\r
+/* parameter entry name */\r
+/*     Return NULL if sh or index is out of bounds.    */\r
+/*     NO COPYING IS PERFORMED */\r
+gs_sp_t ftaschema_parameter_name(gs_schemahandle_t sh, gs_uint32_t index);\r
+\r
+/*\r
+               No need to create param handles, it is done at schema parse time.\r
+               (downside: must be careful to set all parameters if\r
+                the user sends param blocks to multiple instances)\r
+\r
+        creates a parameter structure handle for a particular schema\r
+paramhandle ftaschema_create_paramhandle(schema_handle sh);\r
+\r
+        frees a parameter structure handle\r
+int ftaschema_free_paramhandle(paramhandle ph);\r
+*/\r
+\r
+\r
+/* set parameter value for parameter handle */\r
+/*     Pass in the parameter in its char string representation. */\r
+/*  Return value is -1 on error, else 0        */\r
+gs_int32_t ftaschema_setparam_by_name(gs_schemahandle_t sh, gs_sp_t param_name,\r
+                              gs_sp_t param_val, gs_int32_t len);\r
+\r
+/* set parameter value for parameter handle */\r
+/*     Pass in the parameter in its char string representation. */\r
+/*  Return value is -1 on error, else 0        */\r
+gs_int32_t ftaschema_setparam_by_index(gs_schemahandle_t sh, gs_int32_t index,\r
+                               gs_sp_t param_val, gs_int32_t len);\r
+\r
+/* creates the parameter block which can be passed in control and\r
+   init operations. The function allocates the memory returned and\r
+   the caller is responsible to free it.\r
+   Return value is -1 on error, else 0.\r
+   ALL VALUES CONVERTED TO NETWORK BYTE ORDER\r
+   */\r
+\r
+gs_int32_t ftaschema_create_param_block(gs_schemahandle_t sh, void ** block, gs_int32_t * size);\r
+\r
+//void ftaschema_debugdump(int handle);\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+\r
+#endif\r
+\r