23#define FFND_LIB_VER "4.2.3"
26#error "You must define FREEFORM as a preprocessor name."
27#error "You must do this for the benefit of files in the FreeForm project"
28#error "which do not include freeform.h"
88#define TOO_MANY_MACHINES
97#define FF_OS FF_OS_DOS
100#define FF_CC FF_CC_MSVC1
105#error "A PC compiler has already been defined"
107#define FF_CC FF_CC_MSVC4
112#define FF_CC FF_CC_MSVC1
120#define TOO_MANY_MACHINES
129#define FF_OS FF_OS_UNIX
130#define FF_CC FF_CC_UNIX
137#define TOO_MANY_MACHINES
146#define FF_OS FF_OS_UNIX
147#define FF_CC FF_CC_UNIX
154#define TOO_MANY_MACHINES
163#define FF_OS FF_OS_UNIX
164#define FF_CC FF_CC_UNIX
171#define TOO_MANY_MACHINES
180#define FF_OS FF_OS_MAC
181#define FF_CC FF_CC_MACCW
188#define TOO_MANY_MACHINES
197#define FF_OS FF_OS_UNIX
198#define FF_CC FF_CC_UNIX
205#define TOO_MANY_MACHINES
214#define FF_OS FF_OS_UNIX
215#define FF_CC FF_CC_UNIX
222#define TOO_MANY_MACHINES
231#define FF_OS FF_OS_UNIX
232#define FF_CC FF_CC_UNIX
243#define TOO_MANY_MACHINES
252#define FF_OS FF_OS_UNIX
253#define FF_CC FF_CC_UNIX
258#error "Machine type has not been defined."
259#error "Please define one in your makefile or project."
262#ifdef TOO_MANY_MACHINES
263#error "More than one machine type has been defined"
265#error "PC is currently defined"
268#error "SUN is currently defined"
271#error "IRIS4 is currently defined"
274#error "MAC is currently defined"
277#error "IBM6000 is currently defined"
280#error "HP9000 is currently defined"
283#error "DEC_ALPHA is currently defined"
286#error "IRIX is currently defined"
288#error "Please check your makefile or project."
291#if !defined(LONGS_ARE_32) && !defined(LONGS_ARE_64)
292#error "longs have not been defined as either 32 or 64 bits"
293#error "This should never happen, contact support"
297#error "A C compiler has not been defined"
298You should define one of the following:
313#error "An operating system has not been defined"
314You should define one of the following:
334#define UNIX_DIR_SEPARATOR '/'
335#define UNIX_DIR_SEPARATOR_STRING "/"
337#define MAC_DIR_SEPARATOR ':'
338#define MAC_DIR_SEPARATOR_STRING ":"
340#define DOS_DIR_SEPARATOR '\\'
341#define DOS_DIR_SEPARATOR_STRING "\\"
347#if FF_OS == FF_OS_MACOS
349#define NATIVE_DIR_SEPARATOR MAC_DIR_SEPARATOR
350#define NATIVE_DIR_SEPARATOR_STRING MAC_DIR_SEPARATOR_STRING
354#if FF_OS == FF_OS_DOS
356#define NATIVE_DIR_SEPARATOR DOS_DIR_SEPARATOR
357#define NATIVE_DIR_SEPARATOR_STRING DOS_DIR_SEPARATOR_STRING
361#if FF_OS == FF_OS_UNIX
363#define NATIVE_DIR_SEPARATOR UNIX_DIR_SEPARATOR
364#define NATIVE_DIR_SEPARATOR_STRING UNIX_DIR_SEPARATOR_STRING
376#define FFNT_FLOAT32 8
377#define FFNT_FLOAT64 9
380#ifdef WANT_NCSA_TYPES
382typedef signed char int8;
383typedef unsigned char uint8;
384typedef signed short int int16;
385typedef unsigned short int uint16;
386typedef float float32;
387typedef double float64;
399#define SIZE_INT128 16
400#define SIZE_UINT128 16
402#define SIZE_FLOAT32 4
403#define SIZE_FLOAT64 8
404#define SIZE_ENOTE SIZE_FLOAT64
405#define SIZE_FLOAT128 16
407typedef double big_var_type;
408typedef big_var_type align_var_type;
410#define FFV_INT8_MIN (-SCHAR_MAX-1)
411#define FFV_INT8_MAX SCHAR_MAX
412#define FFV_UINT8_MIN 0
413#define FFV_UINT8_MAX UCHAR_MAX
414#define FFV_INT16_MIN (-SHRT_MAX-1)
415#define FFV_INT16_MAX SHRT_MAX
416#define FFV_UINT16_MIN 0
417#define FFV_UINT16_MAX USHRT_MAX
418#define FFV_FLOAT32_MIN -FLT_MAX
419#define FFV_FLOAT32_MAX FLT_MAX
420#define FFV_FLOAT64_MIN -DBL_MAX
421#define FFV_FLOAT64_MAX DBL_MAX
422#define FFV_ENOTE_MIN FFV_FLOAT64_MIN
423#define FFV_ENOTE_MAX FFV_FLOAT64_MAX
425#define FFV_FLOAT32_EPSILON FLT_EPSILON
426#define FFV_FLOAT64_EPSILON DBL_EPSILON
427#define FFV_ENOTE_EPSILON FFV_FLOAT64_EPSILON
429extern const char *fft_cnv_flags[FFNT_ENOTE + 1];
430extern const char *fft_cnv_flags_width[FFNT_ENOTE + 1];
431extern const char *fft_cnv_flags_prec[FFNT_ENOTE + 1];
432extern const char *fft_cnv_flags_width_prec[FFNT_ENOTE + 1];
437#error "longs have been defined as both 32 and 64 bits"
438#error "This should never happen, contact support"
441#ifdef WANT_NCSA_TYPES
443typedef signed long int int32;
444typedef unsigned long int uint32;
450#define FFV_INT32_MIN (-LONG_MAX-1)
451#define FFV_INT32_MAX LONG_MAX
452#define FFV_UINT32_MIN 0
453#define FFV_UINT32_MAX ULONG_MAX
454#define FFV_INT64_MIN 0
455#define FFV_INT64_MAX 0
456#define FFV_UINT64_MIN 0
457#define FFV_UINT64_MAX 0
464#error "longs have been defined as both 32 and 64 bits"
465#error "This should never happen, contact support"
468#ifdef WANT_NCSA_TYPES
470typedef signed int int32;
471typedef unsigned int uint32;
472typedef signed long int int64;
473typedef unsigned long int uint64;
477#define FFV_INT32_MIN (-INT_MAX-1)
478#define FFV_INT32_MAX INT_MAX
479#define FFV_UINT32_MIN 0
480#define FFV_UINT32_MAX UINT_MAX
481#define FFV_INT64_MIN (-LONG_MAX-1)
482#define FFV_INT64_MAX LONG_MAX
483#define FFV_UINT64_MIN 0
484#define FFV_UINT64_MAX ULONG_MAX
488typedef double ff_enote;
492#define FFV_NULL (FF_TYPES_t)0x00000000
494#define FFV_SIZE_1 (FF_TYPES_t)0x00000001
495#define FFV_SIZE_2 (FF_TYPES_t)0x00000002
496#define FFV_UNSIGNED (FF_TYPES_t)0x00000004
497#define FFV_INTEGER (FF_TYPES_t)0x00000008
498#define FFV_REAL (FF_TYPES_t)0x00000010
499#define FFV_TEXT (FF_TYPES_t)0x00000020
502#define FFV_CHAR FFV_TEXT
504#define FFV_CONSTANT (FF_TYPES_t)0x00000040
505#define FFV_INITIAL (FF_TYPES_t)0x00000080
506#define FFV_EOL (FF_TYPES_t)0x00000140
509#define FFV_DATA_TYPES (FF_TYPES_t)0x000001FF
511#define FFV_CONVERT (FF_TYPES_t)0x00000200
512#define FFV_EQUATION (FF_TYPES_t)0x00000400
513#define FFNT_CONSTANT (FF_TYPES_t)0x00000800
514#define FFNT_EQUIV (FF_TYPES_t)0x00001000
515#define FFV_TRANSLATOR (FF_TYPES_t)0x00002000
516#define FFV_ORPHAN (FF_TYPES_t)0x00004000
517#define FFV_EQN (FF_TYPES_t)0x00008000
518#define FFV_BIT_FIELD (FF_TYPES_t)0x00010000
520#define FFV_RECORD (FF_TYPES_t)0x00010000
521#define FFV_INTERNAL (FF_TYPES_t)0x00020000
522#define FFV_DELIM_VALUE (FF_TYPES_t)0x00040000
523#define FFV_DELIM_ITEM (FF_TYPES_t)0x00080000
524#define FFV_PARAM_NAME (FF_TYPES_t)0x00100000
525#define FFV_PARAM_VALUE (FF_TYPES_t)0x00200000
527#define DONT_USE_THIS_BIT_PATTERN 0x40000000
529#define FFV_INT8 ( FFV_INTEGER)
530#define FFV_UINT8 (FFV_UNSIGNED | FFV_INTEGER)
531#define FFV_INT16 ( FFV_INTEGER | FFV_SIZE_1)
532#define FFV_UINT16 (FFV_UNSIGNED | FFV_INTEGER | FFV_SIZE_1)
533#define FFV_INT32 ( FFV_INTEGER | FFV_SIZE_2)
534#define FFV_UINT32 (FFV_UNSIGNED | FFV_INTEGER | FFV_SIZE_2)
535#define FFV_INT64 ( FFV_INTEGER | FFV_SIZE_1 | FFV_SIZE_2)
536#define FFV_UINT64 (FFV_UNSIGNED | FFV_INTEGER | FFV_SIZE_1 | FFV_SIZE_2)
537#define FFV_FLOAT32 ( FFV_REAL | FFV_SIZE_2)
538#define FFV_FLOAT64 ( FFV_REAL | FFV_SIZE_1 | FFV_SIZE_2)
539#define FFV_ENOTE ( FFV_REAL)
541#define FFV_UCHAR FFV_UINT8
542#define FFV_SHORT FFV_INT16
543#define FFV_USHORT FFV_UINT16
546#define FFV_LONG FFV_INT32
547#define FFV_ULONG FFV_UINT32
551#define FFV_LONG FFV_INT64
552#define FFV_ULONG FFV_UINT64
555#define FFV_FLOAT FFV_FLOAT32
556#define FFV_DOUBLE FFV_FLOAT64
558#define IS_TEXT_TYPE(t) (FFV_DATA_TYPE_TYPE(t) == FFV_TEXT)
559#define IS_INT8_TYPE(t) (FFV_DATA_TYPE_TYPE(t) == FFV_INT8)
560#define IS_UINT8_TYPE(t) (FFV_DATA_TYPE_TYPE(t) == FFV_UINT8)
561#define IS_INT16_TYPE(t) (FFV_DATA_TYPE_TYPE(t) == FFV_INT16)
562#define IS_UINT16_TYPE(t) (FFV_DATA_TYPE_TYPE(t) == FFV_UINT16)
563#define IS_INT32_TYPE(t) (FFV_DATA_TYPE_TYPE(t) == FFV_INT32)
564#define IS_UINT32_TYPE(t) (FFV_DATA_TYPE_TYPE(t) == FFV_UINT32)
565#define IS_INT64_TYPE(t) (FFV_DATA_TYPE_TYPE(t) == FFV_INT64)
566#define IS_UINT64_TYPE(t) (FFV_DATA_TYPE_TYPE(t) == FFV_UINT64)
567#define IS_FLOAT32_TYPE(t) (FFV_DATA_TYPE_TYPE(t) == FFV_FLOAT32)
568#define IS_FLOAT64_TYPE(t) (FFV_DATA_TYPE_TYPE(t) == FFV_FLOAT64)
569#define IS_ENOTE_TYPE(t) (FFV_DATA_TYPE_TYPE(t) == FFV_ENOTE)
570#define IS_EQN_TYPE(t) ((t) & FFV_EQN)
571#define IS_CONSTANT_TYPE(t)((t) ? (((t) & FFV_CONSTANT) == FFV_CONSTANT) : FALSE)
572#define IS_INITIAL_TYPE(t) ((t) ? (((t) & FFV_INITIAL) == FFV_INITIAL) : FALSE)
574#define IS_RECORD_TYPE(t) ((t) & FFV_RECORD)
576#define IS_INTERNAL_TYPE(t) ((t) & FFV_INTERNAL)
578#define IS_DELIM_VALUE_TYPE(t) ((t) & FFV_DELIM_VALUE)
579#define IS_DELIM_ITEM_TYPE(t) ((t) & FFV_DELIM_ITEM)
580#define IS_PARAM_NAME_TYPE(t) ((t) & FFV_PARAM_NAME)
581#define IS_PARAM_VALUE_TYPE(t) ((t) & FFV_PARAM_VALUE)
583#define IS_TEXT(v) IS_TEXT_TYPE(FFV_DATA_TYPE(v))
584#define IS_INT8(v) IS_INT8_TYPE(FFV_DATA_TYPE(v))
585#define IS_UINT8(v) IS_UINT8_TYPE((FFV_DATA_TYPE(v))
586#define IS_INT16(v) IS_INT16_TYPE(FFV_DATA_TYPE(v))
587#define IS_UINT16(v) IS_UINT16_TYPE(FFV_DATA_TYPE(v))
588#define IS_INT32(v) IS_INT32_TYPE(FFV_DATA_TYPE(v))
589#define IS_UINT32(v) IS_UINT32_TYPE(FFV_DATA_TYPE(v))
590#define IS_INT64(v) IS_INT64_TYPE(FFV_DATA_TYPE(v))
591#define IS_UINT64(v) IS_UINT64_TYPE(FFV_DATA_TYPE(v))
592#define IS_FLOAT32(v) IS_FLOAT32_TYPE(FFV_DATA_TYPE(v))
593#define IS_FLOAT64(v) IS_FLOAT64_TYPE(FFV_DATA_TYPE(v))
594#define IS_ENOTE(v) IS_ENOTE_TYPE(FFV_DATA_TYPE(v))
595#define IS_EQN(v) IS_EQN_TYPE(FFV_TYPE(v))
597#define IS_RECORD_VAR(v) IS_RECORD_TYPE(FFV_TYPE(v))
599#define IS_INTERNAL_VAR(v) IS_INTERNAL_TYPE(FFV_TYPE(v))
601#define IS_DELIM_VALUE_VAR(v) IS_DELIM_VALUE_TYPE(FFV_TYPE(v))
602#define IS_DELIM_ITEM_VAR(v) IS_DELIM_ITEM_TYPE(FFV_TYPE(v))
603#define IS_PARAM_NAME_VAR(v) IS_PARAM_NAME_TYPE(FFV_TYPE(v))
604#define IS_PARAM_VALUE_VAR(v) IS_PARAM_VALUE_TYPE(FFV_TYPE(v))
606#define IS_UNSIGNED(v) (FFV_DATA_TYPE(v) & FFV_UNSIGNED)
607#define IS_INTEGER(v) (FFV_DATA_TYPE(v) & FFV_INTEGER)
608#define IS_REAL(v) (FFV_DATA_TYPE(v) & FFV_REAL)
610#define IS_UNSIGNED_TYPE(t) (FFV_DATA_TYPE_TYPE(t) & FFV_UNSIGNED)
611#define IS_INTEGER_TYPE(t) (FFV_DATA_TYPE_TYPE(t) & FFV_INTEGER)
612#define IS_REAL_TYPE(t) (FFV_DATA_TYPE_TYPE(t) & FFV_REAL)
614#define IS_BIT_FIELD(v) ((v) ? (((v)->type & FFV_BIT_FIELD) == FFV_BIT_FIELD) : FALSE)
615#define IS_CONVERT(v) ((v) ? (((v)->type & FFV_CONVERT) == FFV_CONVERT) : FALSE)
616#define IS_CONSTANT(v) ((v) ? IS_CONSTANT_TYPE(FFV_TYPE(v)) : FALSE)
617#define IS_INITIAL(v) ((v) ? IS_INITIAL_TYPE(FFV_TYPE(v)) : FALSE)
618#define IS_EQUATION(v) ((v) ? ((v)->type & FFV_EQUATION) == FFV_EQUATION : FALSE)
619#define IS_TRANSLATOR(v) ((v) ? ((v)->type & FFV_TRANSLATOR) == FFV_TRANSLATOR : FALSE)
620#define IS_ORPHAN_VAR(v) ((v) ? ((v)->type & FFV_ORPHAN) == FFV_ORPHAN : FALSE)
621#define IS_EOL(v) ((v) ? ((v)->type & FFV_EOL) == FFV_EOL : FALSE)
622#define IS_FLAG(v) ((v) ? (v)->type == FF_VAR_TYPE_FLAG : FALSE)
624typedef unsigned long FF_TYPES_t;
625#define FF_VAR_TYPE_FLAG (FF_TYPES_t)0xffffffff
627#define IS_KEYWORDED_PARAMETER(p) ((p)[0] == '$')
635#define NUM_VARIABLE_TYPES 25
636extern FFF_LOOKUP variable_types[NUM_VARIABLE_TYPES];
639#define FFF_FILE_TYPES (FFF_BINARY | FFF_ASCII | FFF_FLAT)
640#define FFF_DATA_TYPES (FFF_DATA | FFF_HEADER | FFF_FILE | FFF_REC)
641#define FFF_GROUP (FFF_FILE_TYPES | FFF_DATA_TYPES)
646#define FFF_NULL (FF_TYPES_t)0x00000000
647#define FFF_BINARY (FF_TYPES_t)0x00000001
648#define FFF_ASCII (FF_TYPES_t)0x00000002
649#define FFF_FLAT (FF_TYPES_t)0x00000004
652#define FFF_TABLE (FF_TYPES_t)0x00000008
653#define FFF_HEADER (FF_TYPES_t)0x00000010
654#define FFF_FILE (FF_TYPES_t)0x00000020
655#define FFF_REC (FF_TYPES_t)0x00000040
656#define FFF_DATA (FF_TYPES_t)0x00000080
658#define FFF_SEPARATE (FF_TYPES_t)0x00000100
659#define FFF_VARIED (FF_TYPES_t)0x00000200
660#define FFF_INPUT (FF_TYPES_t)0x00000400
661#define FFF_OUTPUT (FF_TYPES_t)0x00000800
662#define FFF_IO (FF_TYPES_t)0x00000C00
664#define FFF_SCALE (FF_TYPES_t)0x00001000
665#define FFF_ADD_HERE (FF_TYPES_t)0x00002000
666#define FFF_DELETE_ME (FF_TYPES_t)0X00008000
668#define FF_ARRAY (FF_TYPES_t)0x40000000
669#define FFF_RECORD (FF_TYPES_t)0x80000000
672#define IS_ARRAY_TYPE(t) ((t) & FF_ARRAY)
673#define IS_ARRAY(x) IS_ARRAY_TYPE(FFF_TYPE(x))
675#define FFF_ALL_TYPES (FF_TYPES_t)0x0000FFFF
678#define IS_BINARY_TYPE(t) ((t) & FFF_BINARY)
679#define IS_ASCII_TYPE(t) ((t) & FFF_ASCII)
680#define IS_FLAT_TYPE(t) ((t) & FFF_FLAT)
682#define IS_TABLE_TYPE(t) ((t) & FFF_TABLE)
683#define IS_DATA_TYPE(t) ((t) & FFF_DATA)
684#define IS_HEADER_TYPE(t) ((t) & FFF_HEADER)
685#define IS_FILE_TYPE(t) ((t) & FFF_FILE)
686#define IS_REC_TYPE(t) ((t) & FFF_REC)
687#define IS_FILE_HEADER_TYPE(t) (IS_FILE_TYPE(t) && IS_HEADER_TYPE(t))
688#define IS_REC_HEADER_TYPE(t) (IS_REC_TYPE(t) && IS_HEADER_TYPE(t))
689#define IS_SEPARATE_TYPE(t) ((t) & FFF_SEPARATE)
690#define IS_EMBEDDED_TYPE(t) (!IS_SEPARATE_TYPE(t))
691#define IS_VARIED_TYPE(t) ((t) & FFF_VARIED)
692#define IS_INPUT_TYPE(t) ((t) & FFF_INPUT)
693#define IS_OUTPUT_TYPE(t) ((t) & FFF_OUTPUT)
694#define IS_SCALE_TYPE(t) ((t) & FFF_SCALE)
696#define IS_RECORD_FORMAT_TYPE(t) ((t) & FFF_RECORD)
698#define IS_BINARY(f) IS_BINARY_TYPE(FFF_TYPE(f))
699#define IS_ASCII(f) IS_ASCII_TYPE(FFF_TYPE(f))
700#define IS_FLAT(f) IS_FLAT_TYPE(FFF_TYPE(f))
702#define IS_TABLE(f) IS_TABLE_TYPE(FFF_TYPE(f))
703#define IS_DATA(f) IS_DATA_TYPE(FFF_TYPE(f))
704#define IS_HEADER(f) IS_HEADER_TYPE(FFF_TYPE(f))
705#define IS_FILE(f) IS_FILE_TYPE(FFF_TYPE(f))
706#define IS_FILE_HEADER(f) (IS_FILE_HEADER_TYPE(FFF_TYPE(f)))
707#define IS_REC_HEADER(f) (IS_REC_HEADER_TYPE(FFF_TYPE(f)))
708#define IS_REC(f) IS_REC_TYPE(FFF_TYPE(f))
709#define IS_SEPARATE(f) IS_SEPARATE_TYPE(FFF_TYPE(f))
710#define IS_EMBEDDED(f) (!IS_SEPARATE(f))
711#define IS_VARIED(f) IS_VARIED_TYPE(FFF_TYPE(f))
712#define IS_INPUT(f) IS_INPUT_TYPE(FFF_TYPE(f))
713#define IS_OUTPUT(f) IS_OUTPUT_TYPE(FFF_TYPE(f))
714#define IS_SCALE(f) IS_SCALE_TYPE(FFF_TYPE(f))
716#define IS_RECORD_FORMAT(f) IS_RECORD_FORMAT_TYPE(FFF_TYPE(f))
718#define NUM_FORMAT_TYPES 71
719extern FFF_LOOKUP format_types[NUM_FORMAT_TYPES];
721#define FF_DBG_LOG "ff_debug.log"
722#define FF_DBG_LOG_SIZE 10240
731#if defined(DEBUG) || defined(_DEBUG) && !defined(FF_DBG)
735#define assert(exp) ff_err_assert(exp)
738#define ff_err_assert(exp) ((void)0)
740#define ff_err_assert(exp) ( (exp) ? (void)0 : _ff_err_assert(#exp, __FILE__, __LINE__) )
741void _ff_err_assert(
char *,
char *,
unsigned);
746#define FF_VALIDATE(o) (((o) && ((void *)(o) == (o)->check_address)) ? (void)0 : _ff_err_assert(#o, __FILE__, __LINE__))
748#define FF_VALIDATE(o)
760#define DOUBLE_UP DBL_EPSILON
761#define FLOAT_UP FLT_EPSILON
764#if FF_CC == FF_CC_UNIX
767#include <sys/types.h>
775#if FF_CC == FF_CC_MSVC1 || FF_CC == FF_CC_MSVC4
779#include <sys\types.h>
794#if FF_CC == FF_CC_MSVC1
800typedef char HUGE *FF_DATA_BUFFER;
801typedef void HUGE *FF_DATA_PTR;
803typedef char **FF_STRING_HANDLE;
806#define FD_FORMAT(fd) ((fd)->format)
807#define FFF_FIRST(fl) dll_first(fl)
808#define FFF_NEXT(fl) dll_next(fl)
809#define FD_FIRST(fdl) dll_first(fdl)
810#define FD_LAST(fdl) dll_last(fdl)
811#define FFV_FIRST_VARIABLE(f) ((VARIABLE_LIST)dll_first((f)->variables))
812#define FFV_NEXT_VARIABLE(vl) dll_next(vl)
813#define FORMAT_LENGTH(f) ((size_t)(f)->length)
814#define FF_VAR_LENGTH(v) ((size_t)(v)->end_pos - (size_t)(v)->start_pos + (size_t)1)
816#define FFV_TYPE(v) ((v)->type)
817#define FFV_DATA_TYPE_TYPE(t) ((t) & FFV_DATA_TYPES)
818#define FFV_DATA_TYPE(v) FFV_DATA_TYPE_TYPE(FFV_TYPE(v))
819#define FFF_TYPE(f) ((f)->type)
820#define FFF_FORMAT_TYPE(f) (FFF_TYPE(f) & FFF_ALL_TYPES)
821#define FD_TYPE(fd) (FFF_TYPE((fd)->format) & FFF_DATA_TYPES)
823#define FD_IS_NATIVE_BYTE_ORDER(fd) (endian() == (BOOLEAN)(fd)->state.byte_order)
825#define MAX_PV_LENGTH MAX_PATH
826#define MAX_NAME_LENGTH MAX_PV_LENGTH
827#define TMP_BUFFER_SIZE 1024
828#define LOGGING_QUANTA 10240U
829#define SCRATCH_QUANTA 1024U
831#define FMT_BUFSIZE_BUFFER_SIZE 4096
838typedef unsigned FF_BSS_t;
844typedef struct struct_ff_bufsize FF_BUFSIZE, *FF_BUFSIZE_PTR, **FF_BUFSIZE_HANDLE;
851 unsigned short usage;
853 FF_BSS_t total_bytes;
860#define BUFSIZE_TOTAL_BYTES_UNKNOWN INT_MAX
873 FF_BUFSIZE_PTR input_bufsize;
874 char *input_format_file;
875 char *input_format_title;
876 char *input_format_buffer;
879 FF_BUFSIZE_PTR output_bufsize;
880 char *output_format_file;
881 char *output_format_title;
882 char *output_format_buffer;
885 unsigned long cache_size;
886 long records_to_read;
889 BOOLEAN error_prompt;
892 double SDE_grid_size;
893 double SDE_grid_size2;
894 double SDE_grid_size3;
897 char *cv_list_file_dir;
900 BOOLEAN cv_maxmin_only;
903 char *sdts_terms_file;
907 unsigned int set_cv_precision : 1;
908 unsigned int is_stdin_redirected : 1;
909 unsigned int is_stdout_redirected : 1;
910 unsigned int format_title : 1;
911 unsigned int format_file : 1;
924typedef DLL_NODE_PTR FORMAT_LIST,
928 FORMAT_DATA_MAP_LIST,
929 FF_ARRAY_CONDUIT_LIST,
933typedef DLL_NODE_HANDLE FORMAT_LIST_HANDLE,
934 VARIABLE_LIST_HANDLE,
935 FORMAT_DATA_LIST_HANDLE,
936 PROCESS_INFO_LIST_HANDLE,
937 FORMAT_DATA_MAP_LIST_HANDLE,
938 FF_ARRAY_CONDUIT_LIST_HANDLE,
939 FF_ERROR_LIST_HANDLE,
940 FF_DATA_FLAG_LIST_HANDLE;
942typedef struct struct_ff_error FF_ERROR, *FF_ERROR_PTR, **FF_ERROR_HANDLE;
958#define FF_MAX_NAME MAX_PATH
960#define FFV_MISC_INIT NULL
962typedef unsigned long FF_NDX_t;
978 VARIABLE_LIST variables;
982 unsigned int num_vars;
986#define FORMAT_NAME_INIT "Format Was Untitled"
987#define FORMAT_LOCUS_INIT "Unknown Origin"
988#define FORMAT_LOCUS_GV_EDIT "GeoVu Format Editor"
1000#include <eval_eqn.h>
1007 void *check_address;
1014} TRANSLATOR, *TRANSLATOR_PTR;
1023 void* check_address;
1025 unsigned long cur_record;
1026 unsigned long min_record;
1027 unsigned long max_record;
1032} MAX_MIN, *MAX_MIN_PTR;
1037 void *check_address;
1039 EQUATION_INFO_PTR eqn_info;
1042 TRANSLATOR_PTR nt_trans;
1051 char *array_desc_str;
1066 void *check_address;
1069 FF_BUFSIZE_PTR data;
1072 unsigned int byte_order : 1;
1073 unsigned int new_record : 1;
1074 unsigned int locked : 1;
1075 unsigned int unused : 13;
1079typedef FORMAT_DATA NAME_TABLE,
1081 **NAME_TABLE_HANDLE;
1083typedef FORMAT_DATA_LIST NAME_TABLE_LIST,
1084 *NAME_TABLE_LIST_HANDLE;
1086#include <name_tab.h>
1096 void *check_address;
1098 FORMAT_DATA_PTR input;
1099 FORMAT_DATA_PTR middle;
1100 FORMAT_DATA_PTR output;
1103typedef enum enum_pp_object
1105 PPO_FORMAT_LIST = 0,
1107 ADD_YOUR_TYPE_HERE = 2
1119 FORMAT_LIST_HANDLE hf_list;
1122 FF_TYPES_t nt_io_type;
1123 NAME_TABLE_LIST_HANDLE hnt_list;
1125 void *add_your_object_here;
1127 PP_OBJECT_TYPES ppo_type;
1133typedef unsigned long FF_ARRAY_OFFSET_t;
1139 void *check_address;
1142 FF_ARRAY_DIPOLE_PTR mate;
1143 FORMAT_DATA_MAPPING_PTR format_data_mapping;
1144 ARRAY_MAPPING_PTR array_mapping;
1149#if defined(_DEBUG) || defined(DEBUG)
1153 FF_BUFSIZE_PTR bufsize;
1159 FF_BUFSIZE_PTR bufsize;
1164 FF_ARRAY_OFFSET_t first_array_offset;
1165 FF_ARRAY_OFFSET_t current_array_offset;
1167 unsigned long bytes_left;
1168 unsigned long bytes_done;
1181 void *check_address;
1183 char name[FF_MAX_NAME];
1184 FF_ARRAY_DIPOLE_PTR input;
1185 FF_ARRAY_DIPOLE_PTR output;
1196 void *check_address;
1197 void *locked_buffer;
1200 FF_ARRAY_DIPOLE_PTR pole;
1202 PROCESS_INFO_PTR mate;
1212 void *check_address;
1218} FF_DATA_FLAG, *FF_DATA_FLAG_PTR;
1222VARIABLE_PTR FF_VARIABLE(VARIABLE_LIST);
1223FORMAT_PTR FF_FORMAT(FORMAT_LIST);
1224FORMAT_DATA_PTR FD_FORMAT_DATA(FORMAT_DATA_LIST);
1225FF_ARRAY_CONDUIT_PTR FF_AC(FF_ARRAY_CONDUIT_LIST);
1226PROCESS_INFO_PTR FF_PI(PROCESS_INFO_LIST);
1227FF_ERROR_PTR FF_EP(FF_ERROR_LIST);
1228FF_DATA_FLAG_PTR FF_DF(FF_DATA_FLAG_LIST);
1230DLL_NODE_PTR dll_next(DLL_NODE_PTR node);
1231DLL_NODE_PTR dll_previous(DLL_NODE_PTR node);
1234#define FF_VARIABLE(vl) ((VARIABLE_PTR)(vl)->data.u.var)
1235#define FF_FORMAT(fl) ((FORMAT_PTR)(fl)->data.u.fmt)
1236#define FD_FORMAT_DATA(fdl) ((FORMAT_DATA_PTR)(fdl)->data.u.fd)
1237#define FF_AC(acl) ((FF_ARRAY_CONDUIT_PTR)(acl)->data.u.ac)
1238#define FF_PI(pil) ((PROCESS_INFO_PTR)(pil)->data.u.pi)
1239#define FF_EP(el) ((FF_ERROR_PTR)(el)->data.u.err)
1240#define FF_DF(dfl) ((FF_DATA_FLAG_PTR)(dfl)->data.u.df)
1242#define dll_next(n) ((n)->next)
1243#define dll_previous(n) ((n)->previous)
1247DLL_NODE_PTR dll_first(DLL_NODE_PTR node);
1248DLL_NODE_PTR dll_last(DLL_NODE_PTR node);
1250typedef enum enum_ff_dll_data_types
1259 DLL_HEAD_NODE = SHRT_MAX
1270 FF_ARRAY_CONDUIT_PTR ac;
1271 PROCESS_INFO_PTR pi;
1273 FF_DATA_FLAG_PTR df;
1275 FF_DLL_DATA_TYPES type;
1281 void *check_address;
1284 DLL_NODE_PTR previous;
1287 unsigned int status;
1297 void *check_address;
1301 EQUATION_INFO_PTR eqn_info;
1303 FF_ARRAY_CONDUIT_LIST array_conduit_list;
1305 NAME_TABLE_LIST table_list;
1306} DATA_BIN, *DATA_BIN_PTR, **DATA_BIN_HANDLE;
1311 void *check_address;
1318 long num_array_elements;
1319} FF_ARRAY_DIM_INFO, *FF_ARRAY_DIM_INFO_PTR, **FF_ARRAY_DIM_INFO_HANDLE;
1321#define DEFAULT_CACHE_SIZE 16384L
1323#define FF_MAX_CACHE_SIZE (unsigned long)UINT_MAX
1325#define DBSET_INPUT_FORMATS 1
1326#define DBSET_OUTPUT_FORMATS 2
1327#define DBSET_HEADERS 3
1328#define DBSET_READ_EQV 4
1329#define DBSET_CACHE_SIZE 5
1330#define DBSET_HEADER_FILE_NAMES 6
1331#define DBSET_QUERY_RESTRICTION 7
1332#define DBSET_VARIABLE_RESTRICTION 8
1333#define DBSET_BYTE_ORDER 9
1334#define DBSET_CREATE_CONDUITS 10
1335#define DBSET_USER_UPDATE_FORMATS 11
1336#define DBSET_INIT_CONDUITS 12
1337#define DBSET_FORMAT_MAPPINGS 13
1338#define DBSET_EQUATION_VARIABLES 14
1339#define DBSET_SETUP_STDIN 15
1340#define DBSET_VAR_MINMAX 16
1342#define DBASK_FORMAT_SUMMARY 1
1343#define DBASK_PROCESS_INFO 2
1344#define DBASK_VAR_NAMES 3
1345#define DBASK_VAR_MINS 4
1346#define DBASK_VAR_MAXS 5
1347#define DBASK_VAR_UNITS 6
1348#define DBASK_VAR_FLAGS 7
1349#define DBASK_ARRAY_DIM_NAMES 8
1350#define DBASK_ARRAY_DIM_INFO 9
1351#define DBASK_BYTES_TO_PROCESS 10
1352#define DBASK_FORMAT_DESCRIPTION 11
1353#define DBASK_FORMAT_LIST_DESCRIPTION 12
1354#define DBASK_TAB_TO_ARRAY_FORMAT_DESCRIPTION 13
1355#define DBASK_FORMAT_DESCRIPTION_TO_USER 14
1356#define DBASK_FORMAT_LIST_DESCRIPTION_TO_USER 15
1358#define DBDO_READ_FORMATS 1
1359#define DBDO_WRITE_FORMATS 2
1360#define DBDO_CONVERT_DATA 3
1361#define DBDO_BYTE_SWAP 4
1362#define DBDO_FILTER_ON_QUERY 5
1363#define DBDO_CONVERT_FORMATS 6
1364#define DBDO_PROCESS_FORMATS 7
1365#define DBDO_READ_STDIN 8
1366#define DBDO_CHECK_STDOUT 9
1367#define DBDO_PROCESS_DATA 10
1370#define DBDO_WRITE_OUTPUT_FMT_FILE 255
1373#error "NT_ANYWHERE is already defined!"
1375#define NT_HEADERS FFF_FILE | FFF_REC | FFF_HEADER
1376#define NT_TABLE FFF_TABLE
1378#define NT_INPUT FFF_INPUT | NT_HEADERS | NT_TABLE
1379#define NT_OUTPUT FFF_OUTPUT | NT_HEADERS | NT_TABLE
1381#define NT_ANYWHERE FFF_FILE | FFF_REC | FFF_HEADER | FFF_TABLE
1384#define PINFO_POLE(pi) ((pi)->pole)
1385#define PINFO_FD(pi) (PINFO_POLE(pi)->fd)
1386#define PINFO_DATA(pi) (PINFO_FD(pi)->data)
1387#define PINFO_BUFFER(pi) (PINFO_DATA(pi)->buffer)
1388#define PINFO_BYTES_USED(pi) (PINFO_DATA(pi)->bytes_used)
1389#define PINFO_TOTAL_BYTES(pi) (PINFO_DATA(pi)->total_bytes)
1390#define PINFO_STATE(pi) (PINFO_FD(pi)->state)
1391#define PINFO_LOCKED(pi) (PINFO_STATE(pi).locked)
1392#define PINFO_NEW_RECORD(pi) (PINFO_STATE(pi).new_record)
1393#define PINFO_BYTE_ORDER(pi) (PINFO_STATE(pi).byte_order)
1394#define PINFO_FORMAT(pi) (PINFO_FD(pi)->format)
1396#define PINFO_SUPER_ARRAY_BYTES(pi) (PINFO_ARRAY_MAP(pi)->super_array->contig_size)
1397#define PINFO_SUB_ARRAY_BYTES(pi) (PINFO_ARRAY_MAP(pi)->sub_array->contig_size)
1399#define PINFO_SUPER_ARRAY_ELS(pi) (PINFO_ARRAY_MAP(pi)->super_array->total_elements)
1400#define PINFO_SUB_ARRAY_ELS(pi) (PINFO_ARRAY_MAP(pi)->sub_array->total_elements)
1402#define PINFO_ARRAY_BYTES(pi) (PINFO_ARRAY_MAP(pi)->super_array->contig_size)
1404#define PINFO_ARRAY_DIMS(pi) (PINFO_ARRAY_MAP(pi)->super_array->num_dim)
1405#define PINFO_ARRAY_NAME(pi, dim) (PINFO_ARRAY_MAP(pi)->super_array->dim_name[dim])
1406#define PINFO_ARRAY_DIM_SIZE(pi, dim) (PINFO_ARRAY_MAP(pi)->super_array->dim_size[dim])
1409#define PINFO_TYPE(pi) (PINFO_FORMAT(pi)->type)
1410#define PINFO_NAME(pi) (PINFO_FORMAT(pi)->name)
1411#define PINFO_ORIGIN(pi) (PINFO_FORMAT(pi)->locus)
1412#define PINFO_RECL(pi) (FORMAT_LENGTH(PINFO_FORMAT(pi)))
1413#define PINFO_CACHEL(pi) (PINFO_TOTAL_BYTES(pi) - 1)
1414#define PINFO_NUMVARS(pi) (PINFO_FORMAT(pi)->num_vars)
1415#define PINFO_IS_FILE(pi) (PINFO_POLE(pi)->connect.id & NDARRS_FILE)
1416#define PINFO_IS_BUFFER(pi) (PINFO_POLE(pi)->connect.id & NDARRS_BUFFER)
1417#define PINFO_IS_ARRAY(pi) (IS_ARRAY(PINFO_FORMAT(pi)))
1418#define PINFO_IS_BROKEN(pi) (PINFO_ARRAY_MAP(pi)->sub_array->type == NDARRT_BROKEN)
1419#define PINFO_FNAME(pi) (PINFO_POLE(pi)->connect.locus.filename)
1420#define PINFO_LOCUS_BUFSIZE(pi) (PINFO_POLE(pi)->connect.locus.bufsize)
1421#define PINFO_LOCUS_BUFFER(pi) (PINFO_POLE(pi)->connect.locus.bufsize->buffer)
1422#define PINFO_LOCUS_SIZE(pi) (PINFO_POLE(pi)->connect.locus.bufsize->total_bytes)
1423#define PINFO_LOCUS_FILLED(pi) (PINFO_POLE(pi)->connect.locus.bufsize->bytes_used)
1424#define PINFO_FIRST_ARRAY_OFFSET(pi) (PINFO_POLE(pi)->connect.file_info.first_array_offset)
1425#define PINFO_CURRENT_ARRAY_OFFSET(pi) (PINFO_POLE(pi)->connect.file_info.current_array_offset)
1426#define PINFO_ARRAY_DONE(pi) (PINFO_POLE(pi)->connect.array_done)
1427#define PINFO_BYTES_LEFT(pi) (PINFO_POLE(pi)->connect.bytes_left)
1428#define PINFO_BYTES_DONE(pi) (PINFO_POLE(pi)->connect.bytes_done)
1429#define PINFO_ARRAY_MAP(pi) (PINFO_POLE(pi)->array_mapping)
1430#define PINFO_ID(pi) (PINFO_POLE(pi)->connect.id)
1431#define PINFO_FORMAT_MAP(pi) (PINFO_POLE(pi)->format_data_mapping)
1433#define PINFO_SUPER_ARRAY(pi) (PINFO_ARRAY_MAP(pi)->super_array)
1434#define PINFO_SUB_ARRAY(pi) (PINFO_ARRAY_MAP(pi)->sub_array)
1436#define PINFO_NUM_DIMS(pi) (PINFO_ARRAY_MAP(pi)->super_array->num_dim)
1438#define PINFO_DIM_NAME(pi,i) (PINFO_ARRAY_MAP(pi)->super_array->dim_name[i])
1439#define PINFO_DIM_START_INDEX(pi, i) (PINFO_ARRAY_MAP(pi)->super_array->start_index[i])
1440#define PINFO_DIM_END_INDEX(pi, i) (PINFO_ARRAY_MAP(pi)->super_array->end_index[i])
1441#define PINFO_DIM_GRANULARITY(pi, i) (PINFO_ARRAY_MAP(pi)->super_array->granularity[i])
1442#define PINFO_DIM_SEPARATION(pi, i) (PINFO_ARRAY_MAP(pi)->super_array->separation[i])
1443#define PINFO_DIM_GROUPING(pi, i) (PINFO_ARRAY_MAP(pi)->super_array->grouping[i])
1445#define PINFO_MATE(pi) ((pi)->mate)
1448#define PINFO_MATE_POLE(pi) PINFO_POLE(PINFO_MATE(pi))
1449#define PINFO_MATE_FD(pi) PINFO_FD(PINFO_MATE(pi))
1450#define PINFO_MATE_DATA(pi) PINFO_DATA(PINFO_MATE(pi))
1451#define PINFO_MATE_BUFFER(pi) PINFO_BUFFER(PINFO_MATE(pi))
1452#define PINFO_MATE_BYTES_USED(pi) PINFO_BYTES_USED(PINFO_MATE(pi))
1453#define PINFO_MATE_TOTAL_BYTES(pi) PINFO_TOTAL_BYTES(PINFO_MATE(pi))
1454#define PINFO_MATE_STATE(pi) PINFO_STATE(PINFO_MATE(pi))
1455#define PINFO_MATE_LOCKED(pi) PINFO_LOCKED(PINFO_MATE(pi))
1456#define PINFO_MATE_NEW_RECORD(pi) PINFO_NEW_RECORD(PINFO_MATE(pi))
1457#define PINFO_MATE_BYTE_ORDER(pi) PINFO_BYTE_ORDER(PINFO_MATE(pi))
1458#define PINFO_MATE_FORMAT(pi) PINFO_FORMAT(PINFO_MATE(pi))
1460#define PINFO_MATE_SUPER_ARRAY_BYTES(pi) PINFO_SUPER_ARRAY_BYTES(PINFO_MATE(pi))
1461#define PINFO_MATE_SUB_ARRAY_BYTES(pi) PINFO_SUB_ARRAY_BYTES(PINFO_MATE(pi))
1463#define PINFO_MATE_SUPER_ARRAY_ELS(pi) PINFO_SUPER_ARRAY_ELS(PINFO_MATE(pi))
1464#define PINFO_MATE_SUB_ARRAY_ELS(pi) PINFO_SUB_ARRAY_ELS(PINFO_MATE(pi))
1466#define PINFO_MATE_ARRAY_BYTES(pi) (PINFO_MATE_ARRAY_MAP(pi)->sub_array->contig_size)
1468#define PINFO_MATE_SUPER_ARRAY(pi) (PINFO_MATE_ARRAY_MAP(pi)->super_array)
1469#define PINFO_MATE_SUB_ARRAY(pi) (PINFO_MATE_ARRAY_MAP(pi)->sub_array)
1472#define PINFO_MATE_TYPE(pi) PINFO_TYPE(PINFO_MATE(pi))
1473#define PINFO_MATE_NAME(pi) PINFO_NAME(PINFO_MATE(pi))
1474#define PINFO_MATE_ORIGIN(pi) PINFO_ORIGIN(PINFO_MATE(pi))
1475#define PINFO_MATE_RECL(pi) PINFO_RECL(PINFO_MATE(pi))
1476#define PINFO_MATE_CACHEL(pi) PINFO_CACHEL(PINFO_MATE(pi))
1477#define PINFO_MATE_NUMVARS(pi) PINFO_NUMVARS(PINFO_MATE(pi))
1478#define PINFO_MATE_IS_FILE(pi) PINFO_IS_FILE(PINFO_MATE(pi))
1479#define PINFO_MATE_IS_BUFFER(pi) (PINFO_MATE_POLE(pi)->connect.id & NDARRS_BUFFER)
1480#define PINFO_MATE_FNAME(pi) PINFO_FNAME(PINFO_MATE(pi))
1481#define PINFO_MATE_LOCUS(pi) PINFO_LOCUS(PINFO_MATE(pi))
1482#define PINFO_MATE_ARRAY_OFFSET(pi) PINFO_ARRAY_OFFSET(PINFO_MATE(pi))
1483#define PINFO_MATE_ARRAY_DONE(pi) PINFO_ARRAY_DONE(PINFO_MATE(pi))
1484#define PINFO_MATE_BYTES_LEFT(pi) PINFO_BYTES_LEFT(PINFO_MATE(pi))
1485#define PINFO_MATE_BYTES_DONE(pi) PINFO_BYTES_DONE(PINFO_MATE(pi))
1486#define PINFO_MATE_BUFFER_SIZE(pi) PINFO_BUFFER_SIZE(PINFO_MATE(pi))
1487#define PINFO_MATE_ARRAY_MAP(pi) PINFO_ARRAY_MAP(PINFO_MATE(pi))
1488#define PINFO_MATE_ID(pi) PINFO_ID(PINFO_MATE(pi))
1490void dll_assign(
void *data, FF_DLL_DATA_TYPES type, DLL_NODE_PTR node);
1492typedef BOOLEAN (*pgenobj_cmp_t)(
void *,
void *);
1494int list_replace_items(pgenobj_cmp_t lmi_cmp, DLL_NODE_PTR
list);
1498size_t ffv_type_size(FF_TYPES_t var_type);
1500DLL_NODE_PTR dll_init(
void);
1501DLL_NODE_PTR dll_add(DLL_NODE_PTR);
1502DLL_NODE_PTR dll_insert(DLL_NODE_PTR next_node);
1503void dll_delete(DLL_NODE_PTR);
1504void dll_delete_node(DLL_NODE_PTR);
1505int dll_free_list(DLL_NODE_PTR head);
1506int dll_free_holdings(DLL_NODE_PTR head);
1507void dll_rewind(DLL_NODE_HANDLE head_handle);
1510#define FFF_NAME_CASE (FF_TYPES_t)2
1512int db_set(DATA_BIN_PTR,
int, ...);
1513int db_ask(DATA_BIN_PTR,
int, ...);
1514int db_do(DATA_BIN_PTR,
int, ...);
1517FORMAT_DATA_PTR fd_get_header(DATA_BIN_PTR dbin, FF_TYPES_t header_type);
1518FORMAT_DATA_PTR fd_get_data(DATA_BIN_PTR dbin, FF_TYPES_t data_type);
1520void db_format_list_mark_io(FORMAT_LIST f_list, FF_TYPES_t format_type,
char *input_file_name,
char *output_file_name);
1521FORMAT_DATA_PTR fd_find_format_data(FORMAT_DATA_LIST, ...);
1522FORMAT_PTR db_find_format(FORMAT_LIST, ...);
1524int nt_ask(DATA_BIN_PTR, FF_TYPES_t origin,
char *name, FF_TYPES_t value_type,
void *value);
1525int nt_put(DATA_BIN_PTR, FF_TYPES_t origin,
char *name, FF_TYPES_t value_type,
void *value);
1526BOOLEAN nt_askexist(DATA_BIN_PTR, FF_TYPES_t,
char *);
1527char *nt_find_user_name(DATA_BIN_PTR dbin, FF_TYPES_t origin_type,
char *value_name, NAME_TABLE_HANDLE);
1528char *nt_find_geovu_name(DATA_BIN_PTR dbin, FF_TYPES_t origin_type,
char *geovu_name, NAME_TABLE_HANDLE);
1530int db_init(FF_STD_ARGS_PTR, DATA_BIN_HANDLE,
int (*error_cb)(
int));
1532void db_destroy(DATA_BIN_PTR);
1533BOOLEAN endian(
void);
1535int create_array_conduit_list
1537 FORMAT_DATA_LIST format_data_list,
1538 FF_STD_ARGS_PTR std_args,
1539 FF_ARRAY_CONDUIT_LIST_HANDLE array_conduit_list_handle
1542char *ff_lookup_string(FFF_LOOKUP_PTR, FF_TYPES_t);
1543FF_TYPES_t ff_lookup_number(FFF_LOOKUP_PTR,
char *);
1544int ff_file_to_bufsize(
char *fname, FF_BUFSIZE_HANDLE);
1545int ff_bufsize_to_textfile_overwrite(
char *, FF_BUFSIZE_PTR);
1546int ff_bufsize_to_textfile_append(
char *, FF_BUFSIZE_PTR);
1548int parse_command_line(
int,
char **, FF_STD_ARGS_PTR);
1550int ff_put_binary_data(VARIABLE_PTR var,
void *in_data_ptr,
size_t in_var_length, FF_TYPES_t in_data_type,
void *out_data_ptr, FF_TYPES_t out_format_type);
1551int calculate_variable(VARIABLE_PTR var, FORMAT_PTR format,
char *input_ptr,
double *d);
1552int ff_get_double(VARIABLE_PTR,
void *,
double *, FF_TYPES_t);
1553int ff_binary_to_string(
void *source, FF_TYPES_t data_type,
int precision,
char *target);
1555int ff_copy_variable(VARIABLE_PTR source, VARIABLE_PTR target);
1556FORMAT_PTR ff_copy_format(FORMAT_PTR format);
1558BOOLEAN ff_format_comp(FORMAT_PTR, FORMAT_PTR);
1559int ff_text_pre_parser(
char *origin, FF_BUFSIZE_PTR, PP_OBJECT_PTR pp_object);
1560VARIABLE_PTR ff_make_variable(VARIABLE_PTR);
1561FORMAT_PTR ff_create_format(
char *name,
char *origin);
1562void ff_destroy_format(FORMAT_PTR);
1563void ff_destroy_variable(VARIABLE_PTR);
1564VARIABLE_PTR ff_create_variable(
char *name);
1566FF_STD_ARGS_PTR ff_create_std_args(
void);
1567void ff_destroy_std_args(FF_STD_ARGS_PTR);
1569void fd_destroy_format_data_list(FORMAT_DATA_LIST format_data_list);
1571FF_DATA_FLAG_PTR ff_create_data_flag(
void);
1572void ff_destroy_data_flag(FF_DATA_FLAG_PTR);
1574FORMAT_PTR ff_find_format(FORMAT_LIST, ...);
1575FORMAT_PTR ff_afm2bfm(FORMAT_PTR,
char *new_name);
1576FORMAT_PTR ff_xfm2struct(FORMAT_PTR,
char *new_name);
1577size_t ffv_ascii_type_size(VARIABLE_PTR var);
1578FORMAT_PTR ff_bfm2dfm(FORMAT_PTR format,
char *new_name);
1579int format_to_ISO8211DDR(FORMAT_PTR format,
const char *first_fields, FF_BUFSIZE_HANDLE ddf);
1580VARIABLE_PTR ff_find_variable(
char *, FORMAT_PTR);
1581VARIABLE_PTR ff_new_name(FORMAT_PTR,
char *,
char *);
1582unsigned char ff_var_length(VARIABLE_PTR);
1583int btype_to_btype(
void *src_value, FF_TYPES_t src_type,
void *dest_value, FF_TYPES_t dest_type);
1584BOOLEAN type_cmp(FF_TYPES_t type,
void *value0,
void *value1);
1587FF_BUFSIZE_PTR ff_create_bufsize(
long total_bytes);
1588int ff_resize_bufsize(
long new_size, FF_BUFSIZE_HANDLE hbufsize);
1589void ff_destroy_bufsize(FF_BUFSIZE_PTR bufsize);
1590void ff_destroy_array_conduit(FF_ARRAY_CONDUIT_PTR conduit);
1591void ff_destroy_array_pole(FF_ARRAY_DIPOLE_PTR pole);
1592void ff_destroy_error(FF_ERROR_PTR error);
1593void fd_destroy_format_data(FORMAT_DATA_PTR fd);
1594FORMAT_DATA_PTR fd_create_format_data(FORMAT_PTR format,
long data_size,
char *name);
1596void ff_destroy_process_info_list(PROCESS_INFO_LIST);
1597void ff_destroy_process_info(PROCESS_INFO_PTR);
1599int ff_create_format_data_mapping
1601 FORMAT_DATA_PTR input,
1602 FORMAT_DATA_PTR output,
1603 FORMAT_DATA_MAPPING_HANDLE pd_h
1606void ff_destroy_format_data_mapping(FORMAT_DATA_MAPPING_PTR pd);
1608void ff_destroy_array_conduit_list(FF_ARRAY_CONDUIT_LIST conduit_list);
1610int new_name_string__(
const char *new_name, FF_STRING_HANDLE name_h);
1612int make_tabular_format_array_mapping
1614 PROCESS_INFO_PTR pinfo,
1620int initialize_middle_data
1622 FORMAT_DATA_PTR input,
1623 FORMAT_DATA_PTR output,
1624 FORMAT_DATA_PTR middle
1627int ff_process_format_data_mapping(FORMAT_DATA_MAPPING_PTR pd);
1629void update_format_var
1631 FF_TYPES_t data_type,
1632 FF_NDX_t bytes_per_pixel,
1637int update_following_offsets_or_size
1639 PROCESS_INFO_PTR updater,
1640 PROCESS_INFO_LIST updater_list,
1645#define MM_MAX_MIN 101
1646#define MM_MISSING_DATA_FLAGS 102
1649int mm_free(MAX_MIN_PTR);
1650double mm_getmx(VARIABLE_PTR);
1651double mm_getmn(VARIABLE_PTR);
1652int mm_make(VARIABLE_PTR);
1653int mm_print(VARIABLE_PTR);
1654int mm_set(VARIABLE_PTR, ...);
1658typedef int FF_CVF(VARIABLE_PTR,
double*, FORMAT_PTR, FF_DATA_BUFFER);
1662ARRAY_DESCRIPTOR_PTR ndarr_create_from_str(DATA_BIN_PTR dbin,
char *arraystr);
1666FF_CVF cv_abs_sign_to_value;
1668FF_CVF cv_date_string;
1669FF_CVF cv_time_string;
1673FF_CVF cv_degabs_nsew;
1676FF_CVF cv_feet_to_meters;
1684FF_CVF cv_meters_to_feet;
1697int do_log(FF_BUFSIZE_PTR log_bufsize,
char *format, ...);
1698int wfprintf(FILE *stream,
const char *format, ...);
1700int newform(FF_STD_ARGS_PTR std_args, FF_BUFSIZE_PTR log, FILE *to_user);
1702int checkvar(FF_STD_ARGS_PTR std_args, FF_BUFSIZE_PTR log, FILE *to_user);
1704int ff_lock(PROCESS_INFO_PTR pinfo,
void **hbuffer,
unsigned long *psize);
1705int ff_unlock(PROCESS_INFO_PTR pinfo,
void **hbuffer);
1707FF_DATA_BUFFER ff_strnstr(
char *pcPattern, FF_DATA_BUFFER pcText,
size_t uTextLen);
1709int get_output_delims