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" 298 You should define one of the following:
313 #error "An operating system has not been defined" 314 You 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 371 #define FFNT_UINT16 3 373 #define FFNT_UINT32 5 375 #define FFNT_UINT64 7 376 #define FFNT_FLOAT32 8 377 #define FFNT_FLOAT64 9 378 #define FFNT_ENOTE 10 380 #ifdef WANT_NCSA_TYPES 382 typedef signed char int8;
383 typedef unsigned char uint8;
384 typedef signed short int int16;
385 typedef unsigned short int uint16;
386 typedef float float32;
387 typedef double float64;
394 #define SIZE_UINT16 2 396 #define SIZE_UINT32 4 398 #define SIZE_UINT64 8 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 407 typedef double big_var_type;
408 typedef 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 429 extern const char *fft_cnv_flags[FFNT_ENOTE + 1];
430 extern const char *fft_cnv_flags_width[FFNT_ENOTE + 1];
431 extern const char *fft_cnv_flags_prec[FFNT_ENOTE + 1];
432 extern 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 443 typedef signed long int int32;
444 typedef 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 470 typedef signed int int32;
471 typedef unsigned int uint32;
472 typedef signed long int int64;
473 typedef 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 488 typedef 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) 624 typedef 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 636 extern 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 719 extern 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__) ) 741 void _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> 768 #include <sys/stat.h> 775 #if FF_CC == FF_CC_MSVC1 || FF_CC == FF_CC_MSVC4 779 #include <sys\types.h> 780 #include <sys\stat.h> 784 #include <dl_lists.h> 785 #include <os_utils.h> 786 #include <memtrack.h> 794 #if FF_CC == FF_CC_MSVC1 800 typedef char HUGE *FF_DATA_BUFFER;
801 typedef void HUGE *FF_DATA_PTR;
803 typedef 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 838 typedef unsigned FF_BSS_t;
851 unsigned short usage;
853 FF_BSS_t total_bytes;
860 #define BUFSIZE_TOTAL_BYTES_UNKNOWN INT_MAX 874 char *input_format_file;
875 char *input_format_title;
876 char *input_format_buffer;
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;
958 #define FF_MAX_NAME MAX_PATH 960 #define FFV_MISC_INIT NULL 962 typedef unsigned long FF_NDX_t;
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;
1023 void* check_address;
1025 unsigned long cur_record;
1026 unsigned long min_record;
1027 unsigned long max_record;
1037 void *check_address;
1051 char *array_desc_str;
1066 void *check_address;
1072 unsigned int byte_order : 1;
1073 unsigned int new_record : 1;
1074 unsigned int locked : 1;
1075 unsigned int unused : 13;
1086 #include <name_tab.h> 1096 void *check_address;
1103 typedef enum enum_pp_object
1105 PPO_FORMAT_LIST = 0,
1107 ADD_YOUR_TYPE_HERE = 2
1122 FF_TYPES_t nt_io_type;
1125 void *add_your_object_here;
1127 PP_OBJECT_TYPES ppo_type;
1133 typedef unsigned long FF_ARRAY_OFFSET_t;
1139 void *check_address;
1149 #if defined(_DEBUG) || defined(DEBUG) 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];
1196 void *check_address;
1197 void *locked_buffer;
1212 void *check_address;
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) 1250 typedef enum enum_ff_dll_data_types
1259 DLL_HEAD_NODE = SHRT_MAX
1260 } FF_DLL_DATA_TYPES;
1275 FF_DLL_DATA_TYPES type;
1281 void *check_address;
1287 unsigned int status;
1297 void *check_address;
1311 void *check_address;
1318 long num_array_elements;
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)) 1490 void dll_assign(
void *data, FF_DLL_DATA_TYPES type,
DLL_NODE_PTR node);
1492 typedef BOOLEAN (*pgenobj_cmp_t)(
void *,
void *);
1494 int list_replace_items(pgenobj_cmp_t lmi_cmp,
DLL_NODE_PTR list);
1498 size_t ffv_type_size(FF_TYPES_t var_type);
1510 #define FFF_NAME_CASE (FF_TYPES_t)2 1520 void db_format_list_mark_io(
FORMAT_LIST f_list, FF_TYPES_t format_type,
char *input_file_name,
char *output_file_name);
1524 int nt_ask(
DATA_BIN_PTR, FF_TYPES_t origin,
char *name, FF_TYPES_t value_type,
void *value);
1525 int nt_put(
DATA_BIN_PTR, FF_TYPES_t origin,
char *name, FF_TYPES_t value_type,
void *value);
1533 BOOLEAN endian(
void);
1535 int create_array_conduit_list
1550 int 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);
1552 int ff_get_double(
VARIABLE_PTR,
void *,
double *, FF_TYPES_t);
1553 int ff_binary_to_string(
void *source, FF_TYPES_t data_type,
int precision,
char *target);
1561 FORMAT_PTR ff_create_format(
char *name,
char *origin);
1583 int btype_to_btype(
void *src_value, FF_TYPES_t src_type,
void *dest_value, FF_TYPES_t dest_type);
1584 BOOLEAN type_cmp(FF_TYPES_t type,
void *value0,
void *value1);
1599 int ff_create_format_data_mapping
1610 int new_name_string__(
const char *new_name, FF_STRING_HANDLE name_h);
1612 int make_tabular_format_array_mapping
1620 int initialize_middle_data
1629 void update_format_var
1631 FF_TYPES_t data_type,
1632 FF_NDX_t bytes_per_pixel,
1637 int update_following_offsets_or_size
1645 #define MM_MAX_MIN 101 1646 #define MM_MISSING_DATA_FLAGS 102 1666 FF_CVF cv_abs_sign_to_value;
1668 FF_CVF cv_date_string;
1669 FF_CVF cv_time_string;
1673 FF_CVF cv_degabs_nsew;
1676 FF_CVF cv_feet_to_meters;
1678 FF_CVF cv_geog_quad;
1679 FF_CVF cv_geog_sign;
1684 FF_CVF cv_meters_to_feet;
1688 FF_CVF cv_sea_flags;
1689 FF_CVF cv_slu_flags;
1698 int wfprintf(FILE *stream,
const char *format, ...);
1707 FF_DATA_BUFFER ff_strnstr(
char *pcPattern, FF_DATA_BUFFER pcText,
size_t uTextLen);
1709 int get_output_delims