Fixed newline characters throughout the code
[com/gs-lite.git] / include / schemaparser.h
index 5046efe..7d13a4c 100644 (file)
-/* ------------------------------------------------\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
+/* ------------------------------------------------
+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
+