1 /****************************************************************************** 2 * 3 * NSSDC/CDF Header for CDF toolkit. 4 * 5 * Version 1.3c, 14-Nov-97, Hughes STX. 6 * 7 * Modification history: 8 * 9 * V1.0 9-Dec-94, J Love Original version. 10 * V1.0a 20-Jan-95, J Love IRIX 6.x (64-bit). 11 * V1.0b 3-Mar-95, J Love Pass `char' as `int'. `EncodeKeyDefinitions' 12 * prototype moved to `windoz.h'. 13 * V1.1 6-Apr-95, J Love POSIX. 14 * V1.1a 18-Apr-95, J Love More POSIX. 15 * V1.1b 22-May-95, J Love EPOCH styles. Added `MakeNUL'. Prototypes 16 * for `ASSIGNx', `EQx', etc. moved here. 17 * V1.1c 13-Jun-95, J Love EPOCH custom format. 18 * V1.2 1-Sep-95, J Love Added prototypes for routines used by 19 * CDFexport. Hyper groups. 20 * V1.2a 19-Sep-95, J Love Macintosh event handling. 21 * V1.2b 29-Sep-95, J Love Macintosh dialog filtering. Executing clock 22 * for Macintosh. Macintosh cursors. 23 * V1.3 24-Sep-96, J Love CDF V2.6. 24 * V1.3a 21-Feb-97, J Love Removed RICE. 25 * V1.3b 28-Feb-97, J Love Windows NT for MS Visual C/C++ on an IBM PC. 26 * V1.3c 14-Nov-97, J Love More Windows NT. 27 * V3.3 10-Jan-09, M Liu Added Mac or Linux on PPC running 64-bit mode. 28 * 29 *****************************************************************************/ 30 31 #if !defined(CDFTOOLSh_INCLUDEd__) 32 #define CDFTOOLSh_INCLUDEd__ 33 34 /***************************************************************************** 35 * Include files. 36 *****************************************************************************/ 37 38 #include "cdfdist.h" 39 40 /***************************************************************************** 41 * Miscellaneous. 42 *****************************************************************************/ 43 44 #define INPUT_MAJOR 0 45 #define useDEFAULTcacheSIZE 0 46 47 /***************************************************************************** 48 * Macintosh-specific... 49 *****************************************************************************/ 50 51 #if defined(mac) 52 # define RETURN_KEYCODE 36 53 # define ENTER_KEYCODE 76 54 # define PAGEup_KEYCODE 116 55 # define PAGEdown_KEYCODE 121 56 # define UParrow_KEYCODE 126 57 # define DOWNarrow_KEYCODE 125 58 # define PERIOD_KEYCODE 47 59 # define E_KEYCODE 14 60 # define R_KEYCODE 15 61 # define S_KEYCODE 1 62 # define Q_KEYCODE 12 63 # define O_KEYCODE 31 64 # define N_KEYCODE 45 65 # define SO_STATUS_LINE_LEN 83 66 # define ARROW_CURSOR (&(qd.arrow)) 67 # define CDF_CURSOR (*(GetCursor((short)(CDF_CURSORri)))) 68 #endif 69 70 /***************************************************************************** 71 * Abort keys for CDF Toolkit programs. On the Macintosh the Command-Period 72 * causes an abort. 73 *****************************************************************************/ 74 75 #if defined(vms) 76 # define ABORTkey(key) (key == KB_CTRL_Y || key == KB_CTRL_C) 77 #endif 78 79 #if defined(unix) || defined(posixSHELL) || defined(dos) || defined(win32) 80 # define ABORTkey(key) (key == KB_CTRL_C) 81 #endif 82 83 #if defined(mac) 84 # define ABORTkeyMAC(event) \ 85 ((((event.message & keyCodeMask) >> 8) == PERIOD_KEYCODE) && \ 86 ((event.modifiers & cmdKey) != 0)) 87 #endif 88 89 /***************************************************************************** 90 * CHECKforABORTso. 91 *****************************************************************************/ 92 93 #if defined(mac) 94 # define CHECKforABORTso CheckForAbortSOmac(); 95 #else 96 # if defined(win32) && !defined(ALONE) 97 # define CHECKforABORTso CheckForAbortSOwin32(); 98 # else 99 # define CHECKforABORTso \ 100 101 # endif 102 #endif 103 104 /***************************************************************************** 105 * Matching constants. 106 *****************************************************************************/ 107 108 #define NOMATCH (-1) 109 #define MATCHES (-2) 110 111 /***************************************************************************** 112 * Justification constants (used by `CatToString'). 113 *****************************************************************************/ 114 115 #define LEFT_JUSTIFY 1 116 #define CENTER_JUSTIFY 2 117 #define RIGHT_JUSTIFY 3 118 119 /***************************************************************************** 120 * Directory constants. 121 *****************************************************************************/ 122 123 #define DU_MAX_DIR_LEN 512 124 #define DU_MAX_NAME_LEN 256 125 #define DU_MAX_PATTERNS 16 126 127 /***************************************************************************** 128 * EPOCH/time constants. 129 *****************************************************************************/ 130 131 #define TIME_STAMP_LEN 31 132 133 #define EPOCH0_STYLE 0 /* Standard */ 134 #define EPOCH1_STYLE 1 135 #define EPOCH2_STYLE 2 136 #define EPOCH3_STYLE 3 137 #define EPOCHf_STYLE 4 /* Use C/Fortran format. */ 138 #define EPOCHx_STYLE 5 /* Use custom format. */ 139 140 /***************************************************************************** 141 * QOP constants. 142 *****************************************************************************/ 143 144 #define QOP_MAX_ARGVs 40 145 #define QOP_MAX_PARMs 40 146 #define QOP_MAX_QUALs 30 147 148 /***************************************************************************** 149 * QOP structure. 150 *****************************************************************************/ 151 152 typedef struct QOPstruct { 153 int Nparms; 154 char *parms[QOP_MAX_PARMs]; 155 int qualEntered[QOP_MAX_QUALs]; 156 char *qualOpt[QOP_MAX_QUALs]; 157 } QOP; 158 159 /****************************************************************************** 160 * Reporting constants. 161 ******************************************************************************/ 162 163 #define ERRORs 0 164 #define WARNs 1 165 #define INFOs 2 166 167 /****************************************************************************** 168 * Format specifiers. 169 ******************************************************************************/ 170 171 #if defined(alphaosf) || defined(IRIX64bit) || defined(SOLARIS64) || \ 172 defined(__amd64) || defined(__x86_64__) || defined(__ia64__) || \ 173 defined(__PPC64__) || defined(__ppc64__) 174 # define Int32FORMAT "%d" 175 # define Int64FORMAT "%lld" 176 # define Int32uFORMAT "%u" 177 # define Int32FORMATmod "" 178 # define Int32hexFORMAT "0x%08X" 179 # if defined(alphaosf) 180 # define Int64hexFORMAT "0x%016X" 181 # else 182 # define Int64hexFORMAT "0x%016llX" 183 # endif 184 #else 185 # define Int32FORMAT "%ld" 186 #if defined(win32) 187 # define Int64FORMAT "%I64d" 188 #else 189 # define Int64FORMAT "%lld" 190 #endif 191 # define Int32uFORMAT "%lu" 192 # define Int32FORMATmod "l" 193 # define Int32hexFORMAT "0x%08lX" 194 #if defined(win32) 195 # define Int64hexFORMAT "0x%016I64X" 196 #else 197 # define Int64hexFORMAT "0x%016llX" 198 #endif 199 #endif 200 201 /***************************************************************************** 202 * Possible variable value selections (for SkeletonTable). 203 *****************************************************************************/ 204 205 #define NOvalues 0 206 #define NRVvalues 1 207 #define RVvalues 2 208 #define ALLvalues 3 209 #define NAMEDvalues 4 210 211 /****************************************************************************** 212 * Current directory macro. 213 ******************************************************************************/ 214 215 #if defined(vms) 216 # define CURRENTDIRECTORY "[]" 217 #endif 218 #if defined(unix) || defined(dos) || defined(posixSHELL) || defined(win32) 219 # define CURRENTDIRECTORY "." 220 #endif 221 #if defined(mac) 222 # define CURRENTDIRECTORY ":" 223 #endif 224 225 /****************************************************************************** 226 * NoMoreAccess. 227 ******************************************************************************/ 228 229 #define NoMoreAccess(id) \ 230 (StatusBAD(BOO(id == NULL, \ 231 CDFlib(CONFIRM_,CDF_ACCESS_,NULL_), \ 232 CDFlib(SELECT_,CDF_,id,CONFIRM_,CDF_ACCESS_,NULL_)))) 233 234 /****************************************************************************** 235 * Hyper groups. 236 ******************************************************************************/ 237 238 #define HYPER_READ(id,zVar,hyperX,buffer) \ 239 CDFlib (SELECT_, CDF_, id, \ 240 BOO(zVar,zVAR_RECNUMBER_, \ 241 rVARs_RECNUMBER_), hyperX.recNumber, \ 242 BOO(zVar,zVAR_RECCOUNT_, \ 243 rVARs_RECCOUNT_), hyperX.recCount, \ 244 BOO(zVar,zVAR_RECINTERVAL_, \ 245 rVARs_RECINTERVAL_), hyperX.recInterval, \ 246 BOO(zVar,zVAR_DIMINDICES_, \ 247 rVARs_DIMINDICES_), hyperX.dimIndices, \ 248 BOO(zVar,zVAR_DIMCOUNTS_, \ 249 rVARs_DIMCOUNTS_), hyperX.dimCounts, \ 250 BOO(zVar,zVAR_DIMINTERVALS_, \ 251 rVARs_DIMINTERVALS_), hyperX.dimIntervals, \ 252 GET_, BOO(zVar,zVAR_HYPERDATA_,rVAR_HYPERDATA_), buffer, \ 253 NULL_) 254 255 #define HYPER_WRITE(id,zVar,hyperX,buffer) \ 256 CDFlib (SELECT_, CDF_, id, \ 257 BOO(zVar,zVAR_RECNUMBER_, \ 258 rVARs_RECNUMBER_), hyperX.recNumber, \ 259 BOO(zVar,zVAR_RECCOUNT_, \ 260 rVARs_RECCOUNT_), hyperX.recCount, \ 261 BOO(zVar,zVAR_RECINTERVAL_, \ 262 rVARs_RECINTERVAL_), hyperX.recInterval, \ 263 BOO(zVar,zVAR_DIMINDICES_, \ 264 rVARs_DIMINDICES_), hyperX.dimIndices, \ 265 BOO(zVar,zVAR_DIMCOUNTS_, \ 266 rVARs_DIMCOUNTS_), hyperX.dimCounts, \ 267 BOO(zVar,zVAR_DIMINTERVALS_, \ 268 rVARs_DIMINTERVALS_), hyperX.dimIntervals, \ 269 PUT_, BOO(zVar,zVAR_HYPERDATA_,rVAR_HYPERDATA_), buffer, \ 270 NULL_) 271 272 struct GroupStruct { 273 long nRecGroups; 274 long firstRecCount; 275 long lastRecCount; 276 long nDimGroups[CDF_MAX_DIMS]; 277 long firstDimCount[CDF_MAX_DIMS]; 278 long lastDimCount[CDF_MAX_DIMS]; 279 long recGroupN; /* Used for incrementing. */ 280 long dimGroupN[CDF_MAX_DIMS]; /* Used for incrementing. */ 281 }; 282 283 struct HyperStruct { 284 long recNumber; 285 long recCount; 286 long recInterval; 287 long dimIndices[CDF_MAX_DIMS]; 288 long dimCounts[CDF_MAX_DIMS]; 289 long dimIntervals[CDF_MAX_DIMS]; 290 }; 291 292 /****************************************************************************** 293 * PCT. 294 ******************************************************************************/ 295 296 #define NO_PCT (-1) 297 #define PCT(n,N,x,X) ((int)((n*100*X + 100*x)/(N*X))) 298 299 /***************************************************************************** 300 * Sizes/limits. 301 *****************************************************************************/ 302 303 #define SCREEN_WIDTH 80 304 #define SCREEN_HEIGHT 24 305 #define MAX_SCREENLINE_LEN 79 306 #define MAX_QUALIFIER_NAME_LEN 40 307 #define MAX_nonSTRING_VALUE_LEN 320 308 #define MAX_KEY_TOKEN_LEN 20 309 #define MAX_GZIP_TOKEN_LEN 6 310 #define MAX_TOKEN_LEN 30 311 #define MAX_SEVERITY_TEXT_LEN 20 312 #define MAX_MESSAGE_TEXT_LEN 80 313 #define MAX_PROGRAM_NAME_LEN 25 314 #define MAX_ENCODED_INT4_LEN 10 315 #define MAX_REPORTMASK_LEN 40 316 #define MAX_oTEXT_LEN 150 317 #define MAX_CACHESIZES_LEN 30 318 #define MAX_TOLERANCES_LEN 30 319 320 #if defined(BORLANDC) 321 # define BORLANDC_STACK_SIZE 12000u 322 # define BORLANDC_OVERLAY_SIZE 0x4000 /* 16-byte paragraphs. */ 323 #endif 324 325 #if defined(mac) 326 # define MAX_LINES_WHEN_PAGING 24 327 #else 328 # define MAX_LINES_WHEN_PAGING 22 329 #endif 330 331 /****************************************************************************** 332 * BLANKs78 (and BLANKs40). 333 * 334 * This macro is used to initialize a static character string to a size 335 * large enough to be used for a line in a window. Normally that would be 336 * 78 characters because the left-most and right-most columns of a window are 337 * part of the border. We'll make it a few more just in case a header line 338 * runs a little long (because of a value larger than expected). 339 * 340 ******************************************************************************/ 341 342 #define BLANKs78 " " 343 #define BLANKs40 " " 344 345 /***************************************************************************** 346 * Symbol(s) for displaying illegal/special values. 347 *****************************************************************************/ 348 349 #if defined(FP1cpu) || defined(FP2cpu) 350 # define NEGATIVEzeroSYMBOL "-0.0" 351 #endif 352 353 #if defined(FP3cpu) || defined(FP4cpu) 354 # define NEGATIVEzeroSYMBOL "<Illegal,-0.0>" 355 #endif 356 357 /***************************************************************************** 358 * Exit macros. 359 *****************************************************************************/ 360 361 #if defined(vms) 362 # define EXIT_SUCCESS_ SS$_NORMAL 363 # define EXIT_FAILURE_ SS$_ABORT 364 #else 365 # define EXIT_SUCCESS_ 0 366 # define EXIT_FAILURE_ 1 367 #endif 368 369 #define Exit exit(EXIT_SUCCESS_) 370 #define ExitBAD exit(EXIT_FAILURE_) 371 372 /***************************************************************************** 373 * Byte/short extraction macros. 374 *****************************************************************************/ 375 376 #define HighSHORTinLONG(l) ((short) (l >> 16)) 377 #define LowSHORTinLONG(l) ((short) (l & 0xFFFF)) 378 379 /****************************************************************************** 380 * `main' macros. 381 ******************************************************************************/ 382 383 #if defined(mac) 384 # define MAIN int main () 385 #else 386 # define MAIN int main (argc, argv) int argc; char *argv[]; 387 #endif 388 389 /****************************************************************************** 390 * NULpString. 391 * Macro to check if a Pascal null-string (length of zero). 392 ******************************************************************************/ 393 394 #define NULpString(string) (string[0] == 0) 395 396 /****************************************************************************** 397 * AOSs1/AOSs2/.../AOSsN. 398 * These macros are necessary because some compilers (eg. GNU C, the Digital 399 * C compiler on a DEC Alpha running OpenVMS, etc.) seem to have a problem with 400 * initialized arrays of arrays of characters (arrays of strings). If an 401 * attempt is made to modify one of the strings an access violation will occur. 402 * In those cases where there are two or more arrays of strings with the same 403 * number of strings, two separate macros will be needed to keep duplicate 404 * variable names from occurring (eg. AOSs1 & AOSs1A). 405 ******************************************************************************/ 406 407 #define AOSs1(arrayofstrings,string0) \ 408 static char _1line0_[] = string0; \ 409 static char *arrayofstrings[] = { _1line0_ }; 410 411 #define AOSs1A(arrayofstrings,string0) \ 412 static char _1Aline0_[] = string0; \ 413 static char *arrayofstrings[] = { _1Aline0_ }; 414 415 #define AOSs1B(arrayofstrings,string0) \ 416 static char _1Bline0_[] = string0; \ 417 static char *arrayofstrings[] = { _1Bline0_ }; 418 419 #define AOSs1C(arrayofstrings,string0) \ 420 static char _1Cline0_[] = string0; \ 421 static char *arrayofstrings[] = { _1Cline0_ }; 422 423 #define AOSs1D(arrayofstrings,string0) \ 424 static char _1Dline0_[] = string0; \ 425 static char *arrayofstrings[] = { _1Dline0_ }; 426 427 #define AOSs1E(arrayofstrings,string0) \ 428 static char _1Eline0_[] = string0; \ 429 static char *arrayofstrings[] = { _1Eline0_ }; 430 431 #define AOSs2(arrayofstrings,string0,string1) \ 432 static char _2line0_[] = string0; \ 433 static char _2line1_[] = string1; \ 434 static char *arrayofstrings[] = { _2line0_, _2line1_ }; 435 436 #define AOSs2A(arrayofstrings,string0,string1) \ 437 static char _2Aline0_[] = string0; \ 438 static char _2Aline1_[] = string1; \ 439 static char *arrayofstrings[] = { _2Aline0_, _2Aline1_ }; 440 441 #define AOSs2B(arrayofstrings,string0,string1) \ 442 static char _2Bline0_[] = string0; \ 443 static char _2Bline1_[] = string1; \ 444 static char *arrayofstrings[] = { _2Bline0_, _2Bline1_ }; 445 446 #define AOSs2C(arrayofstrings,string0,string1) \ 447 static char _2Cline0_[] = string0; \ 448 static char _2Cline1_[] = string1; \ 449 static char *arrayofstrings[] = { _2Cline0_, _2Cline1_ }; 450 451 #define AOSs3(arrayofstrings,string0,string1,string2) \ 452 static char _3line0_[] = string0; \ 453 static char _3line1_[] = string1; \ 454 static char _3line2_[] = string2; \ 455 static char *arrayofstrings[] = { _3line0_, _3line1_, _3line2_ }; 456 457 #define AOSs4(arrayofstrings,string0,string1,string2,string3) \ 458 static char _4line0_[] = string0; \ 459 static char _4line1_[] = string1; \ 460 static char _4line2_[] = string2; \ 461 static char _4line3_[] = string3; \ 462 static char *arrayofstrings[] = { _4line0_, _4line1_, _4line2_, _4line3_ }; 463 464 #define AOSs5(arrayofstrings,string0,string1,string2,string3,string4) \ 465 static char _5line0_[] = string0; \ 466 static char _5line1_[] = string1; \ 467 static char _5line2_[] = string2; \ 468 static char _5line3_[] = string3; \ 469 static char _5line4_[] = string4; \ 470 static char *arrayofstrings[] = { \ 471 _5line0_, _5line1_, _5line2_, _5line3_, _5line4_ \ 472 }; 473 474 #define AOSs6(arrayofstrings,string0,string1,string2,string3,string4,string5) \ 475 static char _6line0_[] = string0; \ 476 static char _6line1_[] = string1; \ 477 static char _6line2_[] = string2; \ 478 static char _6line3_[] = string3; \ 479 static char _6line4_[] = string4; \ 480 static char _6line5_[] = string5; \ 481 static char *arrayofstrings[] = { \ 482 _6line0_, _6line1_, _6line2_, _6line3_, _6line4_, _6line5_ \ 483 }; 484 485 #define AOSs11(arrayofstrings,string0,string1,string2,string3,string4,string5,string6,string7,string8,string9,string10) \ 486 static char _11line0_[] = string0; \ 487 static char _11line1_[] = string1; \ 488 static char _11line2_[] = string2; \ 489 static char _11line3_[] = string3; \ 490 static char _11line4_[] = string4; \ 491 static char _11line5_[] = string5; \ 492 static char _11line6_[] = string6; \ 493 static char _11line7_[] = string7; \ 494 static char _11line8_[] = string8; \ 495 static char _11line9_[] = string9; \ 496 static char _11line10_[] = string10; \ 497 static char *arrayofstrings[] = { \ 498 _11line0_, _11line1_, _11line2_, _11line3_, _11line4_, _11line5_, \ 499 _11line6_, _11line7_, _11line8_, _11line9_, _11line10_ \ 500 }; 501 502 #define AOSs15(arrayofstrings,string0,string1,string2,string3,string4,string5,string6,string7,string8,string9,string10,string11,string12,string13,string14) \ 503 static char _15line0_[] = string0; \ 504 static char _15line1_[] = string1; \ 505 static char _15line2_[] = string2; \ 506 static char _15line3_[] = string3; \ 507 static char _15line4_[] = string4; \ 508 static char _15line5_[] = string5; \ 509 static char _15line6_[] = string6; \ 510 static char _15line7_[] = string7; \ 511 static char _15line8_[] = string8; \ 512 static char _15line9_[] = string9; \ 513 static char _15line10_[] = string10; \ 514 static char _15line11_[] = string11; \ 515 static char _15line12_[] = string12; \ 516 static char _15line13_[] = string13; \ 517 static char _15line14_[] = string14; \ 518 static char *arrayofstrings[] = { \ 519 _15line0_, _15line1_, _15line2_, _15line3_, _15line4_, _15line5_, \ 520 _15line6_, _15line7_, _15line8_, _15line9_, _15line10_, _15line11_, \ 521 _15line12_, _15line13_, _15line14_ \ 522 }; 523 524 #define AOSs18(arrayofstrings,string0,string1,string2,string3,string4,string5,string6,string7,string8,string9,string10,string11,string12,string13,string14,string15,string16,string17) \ 525 static char _18line0_[] = string0; \ 526 static char _18line1_[] = string1; \ 527 static char _18line2_[] = string2; \ 528 static char _18line3_[] = string3; \ 529 static char _18line4_[] = string4; \ 530 static char _18line5_[] = string5; \ 531 static char _18line6_[] = string6; \ 532 static char _18line7_[] = string7; \ 533 static char _18line8_[] = string8; \ 534 static char _18line9_[] = string9; \ 535 static char _18line10_[] = string10; \ 536 static char _18line11_[] = string11; \ 537 static char _18line12_[] = string12; \ 538 static char _18line13_[] = string13; \ 539 static char _18line14_[] = string14; \ 540 static char _18line15_[] = string15; \ 541 static char _18line16_[] = string16; \ 542 static char _18line17_[] = string17; \ 543 static char *arrayofstrings[] = { \ 544 _18line0_, _18line1_, _18line2_, _18line3_, _18line4_, _18line5_, \ 545 _18line6_, _18line7_, _18line8_, _18line9_, _18line10_, _18line11_, \ 546 _18line12_, _18line13_, _18line14_, _18line15_, _18line16_, _18line17_ \ 547 }; 548 549 /****************************************************************************** 550 * MAKEbooARGv/MAKEstrARGv. 551 * Macros used to build argc/argv on a Macintosh and under Win32. 552 ******************************************************************************/ 553 554 #if defined(mac) || defined(win32) 555 # define MAKEbooARGv(argv,n,boo,t,f) { \ 556 char tS[] = t; \ 557 char fS[] = f; \ 558 size_t len = strlen (BOO(boo,tS,fS)); \ 559 (*argv)[n] = (char *) cdf_AllocateMemory (len + 1, FatalError); \ 560 strcpyX ((*argv)[n++], BOO(boo,tS,fS), 0); \ 561 } 562 # define MAKEstrARGv(argv,n,str) { \ 563 char *s = (char *) str; \ 564 (*argv)[n] = (char *) cdf_AllocateMemory (strlen(s) + 1, FatalError);\ 565 strcpyX ((*argv)[n++], s, 0); \ 566 } 567 #endif 568 569 /****************************************************************************** 570 * Global variables. 571 ******************************************************************************/ 572 573 #if defined(TOOLBOX1) 574 # if defined(mac) 575 Logical pagingOn = FALSE; /* Online help doesn't need to be paged. */ 576 # else 577 Logical pagingOn = TRUE; /* So online help will be paged. */ 578 # endif 579 int soLineCount = 0; 580 char pgmName[MAX_PROGRAM_NAME_LEN+1] = ""; 581 #else 582 extern Logical pagingOn; 583 extern int soLineCount; 584 extern char pgmName[MAX_PROGRAM_NAME_LEN+1]; 585 #endif 586 587 #if defined(mac) 588 # if defined(TOOLBOX2) 589 WindowPtr soWindowP = NULL; /* If NULL, then a FSI toolkit program. */ 590 TEHandle soTextH; 591 ControlHandle soVscrollH; 592 Rect soTextRect; 593 MenuHandle appleMenuHso, fileMenuHso; 594 short soDestHeight; 595 short soViewHeight; 596 short soLineHeight; 597 int soNviewLines; 598 Point soAtPoint; 599 Rect soStatusRect; 600 char soStatusLine[SO_STATUS_LINE_LEN+1] = ""; 601 clock_t startClock; 602 int lastSecond; 603 # else 604 extern WindowPtr soWindowP; 605 extern TEHandle soTextH; 606 extern ControlHandle soVscrollH; 607 extern Rect soTextRect; 608 extern MenuHandle appleMenuHso, fileMenuHso; 609 extern short soDestHeight; 610 extern short soViewHeight; 611 extern short soLineHeight; 612 extern int soNviewLines; 613 extern Point soAtPoint; 614 extern Rect soStatusRect; 615 extern char soStatusLine[SO_STATUS_LINE_LEN+1]; 616 extern clock_t startClock; 617 extern int lastSecond; 618 # endif 619 #endif 620 621 /***************************************************************************** 622 * Function prototypes. 623 *****************************************************************************/ 624 625 void ASSIGNx PROTOARGs((void *, void *, long, long)); 626 Logical EQx PROTOARGs((void *, void *, long, long)); 627 Logical NEx PROTOARGs((void *, void *, long, long)); 628 Logical LEx PROTOARGs((void *, void *, long, long)); 629 Logical LTx PROTOARGs((void *, void *, long, long)); 630 Logical GEx PROTOARGs((void *, void *, long, long)); 631 Logical GTx PROTOARGs((void *, void *, long, long)); 632 Logical IsDir PROTOARGs((char *)); 633 Logical IsWild PROTOARGs((char *)); 634 Logical IsCDF PROTOARGs((char *)); 635 void EncodeRecordJustify PROTOARGs((char *string, long recN, int minWidth)); 636 void EncodeIndicesJustify PROTOARGs(( 637 char *string, long numDims, long indices[], int minWidth 638 )); 639 void EncodeRecordIndicesJustify PROTOARGs(( 640 char *string, long recN, long numDims, long indices[], int minWidth 641 )); 642 void Justify PROTOARGs((char *string, int minWidth)); 643 void RemoveLeadingBlanks PROTOARGs((char *string)); 644 void RemoveTrailingBlanks PROTOARGs((char *string)); 645 void RemoveWhiteSpace PROTOARGs((char *string)); 646 void CopyToField PROTOARGs((char *string, char *field, int length)); 647 void CopyFromField PROTOARGs((char *field, int length, char *string)); 648 void CatToString PROTOARGs(( 649 char *string, char *cat, int length, int justify, char *more 650 )); 651 double SystemClock PROTOARGs((void)); 652 void ParsePath PROTOARGs(( 653 char *path, char dir[DU_MAX_DIR_LEN+1], char name[DU_MAX_NAME_LEN+1] 654 )); 655 QOP *Qop PROTOARGs((int, char *[], char *[], int *)); 656 FILE *OnlineHelpFP PROTOARGs((char *, char *)); 657 void PageOLH PROTOARGs((char *, char *)); 658 int WriteOut PROTOARGs((FILE *, char *)); 659 char PickDelimiter PROTOARGs((char *, size_t)); 660 void ConvertDataType PROTOARGs((long, long, void *, long, long, void *)); 661 int EncodeDimensionality PROTOARGs((char *, long, long *)); 662 int EncodeVariances PROTOARGs((char *, long, long, long *)); 663 int EncodeRecordIndices PROTOARGs((char *, long, long, long, long *, long *)); 664 int EncodeRecordIndicesVARY PROTOARGs((char *, long, long, long *)); 665 int EncodeString PROTOARGs((long, char *, char *, int, int)); 666 int EncodeValue PROTOARGs((long, void *, char *, int)); 667 int EncodeValueFormat PROTOARGs(( 668 long dataType, void *binary, char *text, char *format, int minWidth, 669 int maxWidth, int style 670 )); 671 int EncodeValuesFormat PROTOARGs(( 672 long dataType, long numElems, void *binary, char *text, char *format, 673 int minWidth, int maxWidth, int style 674 )); 675 void EncodeNegativeZero PROTOARGs((char *string, char *format)); 676 void WriteStringValue PROTOARGs((FILE *, long, void *, int, int)); 677 void WriteEntryValue PROTOARGs((FILE *, long, long, void *, int, int)); 678 char *EncodingToken PROTOARGs((long)); 679 char *MajorityToken PROTOARGs((long)); 680 char *FormatToken PROTOARGs((long)); 681 char *ScopeToken PROTOARGs((long)); 682 char *VarianceToken PROTOARGs((long)); 683 char *TFvarianceToken PROTOARGs((long)); 684 char *DataTypeToken PROTOARGs((long)); 685 char *CompressionToken PROTOARGs((long cType, long cParms[CDF_MAX_PARMS])); 686 char *SparsenessToken PROTOARGs(( 687 long sRecordsType, long sArraysType, long sArraysParms[CDF_MAX_PARMS] 688 )); 689 char *ChecksumToken PROTOARGs((long)); 690 long WhichDataType PROTOARGs((char *)); 691 long WhichFormat PROTOARGs((char *)); 692 long WhichMajority PROTOARGs((char *)); 693 long WhichEncoding PROTOARGs((char *)); 694 long WhichCompression PROTOARGs((char *, long *, long *)); 695 long WhichRecSparseness PROTOARGs((char *)); 696 long WhichChecksum PROTOARGs((char *)); 697 Logical DecodeValues PROTOARGs((char *, long, long *, void **, int)); 698 Logical DecodeVariances PROTOARGs((char *, long, long *, long *)); 699 Logical DecodeDelimitedString PROTOARGs((char *, char *)); 700 Logical DecodeDimensionality PROTOARGs((char *, long *, long *)); 701 Logical DecodeRecordAndIndices PROTOARGs(( 702 char *string, long *recN, long *nIndices, long indices[CDF_MAX_DIMS] 703 )); 704 char *NextNonSpace PROTOARGs((char *cp)); 705 char *NextNonDigit PROTOARGs((char *cp)); 706 int FormatWidth PROTOARGs((char *)); 707 int FormatPrecision PROTOARGs((char *)); 708 char *strstrIgCase PROTOARGs((char *string, char *substring)); 709 char *strchrIgCase PROTOARGs((char *str, int chr)); 710 int strcmpIgCase PROTOARGs((char *string1, char *string2)); 711 int strncmpIgCase PROTOARGs((char *string1, char *string2, size_t count)); 712 int strncmpIgCasePattern PROTOARGs((char *string1, char *string2, 713 size_t count 714 )); 715 void OutputWithMargin PROTOARGs(( 716 FILE *fp, char *text, int maxLen, int marginLen 717 )); 718 void InitPctLog PROTOARGs((int *lastPct, Logical *pctOn)); 719 void UpdatePctLog PROTOARGs((int pct, int *lastPct)); 720 void RefreshPctLog PROTOARGs((int lastPct)); 721 void CleanupPctLog PROTOARGs((Logical *pctOn)); 722 void Ncharacters PROTOARGs((FILE *fp, int nChars, int chr)); 723 void CatNcharacters PROTOARGs((char *string, int nChars, int chr)); 724 void CpyNcharacters PROTOARGs((char *string, int nChars, int chr)); 725 Logical TFqualifier PROTOARGs(( 726 QOP *qop, Logical *variable, int Tx, int Fx, Logical defaultTF, 727 char *conflictText 728 )); 729 Logical S2qualifierLong PROTOARGs(( 730 QOP *qop, long *variable, int S1x, long S1, int S2x, long S2, long defaultS, 731 char *conflictText 732 )); 733 Logical S3qualifierLong PROTOARGs(( 734 QOP *qop, long *variable, int S1x, long S1, int S2x, long S2, int S3x, 735 long S3, long defaultS, char *conflictText 736 )); 737 void BlankPadRight PROTOARGs((char *string, int count)); 738 CDFstatus GetFormatEntry PROTOARGs((Logical, long, char **)); 739 Logical ParseOptionList PROTOARGs(( 740 int nTokens, char *tokens[], char *list, Logical present[] 741 )); 742 char *NULedString PROTOARGs((char *existingString, size_t nCharacters)); 743 void ReadCharStdIn PROTOARGs((char *key)); 744 void WriteStringStdOut PROTOARGs((char *string, size_t length)); 745 void DisplayError PROTOARGs((char *message)); 746 void DisplayWarning PROTOARGs((char *message)); 747 void DisplayInfo PROTOARGs((char *message)); 748 int DirList PROTOARGs(( 749 char *dir, int patternC, char **patternS, char ***dirS, char ***nameS 750 )); 751 int CDFdirList PROTOARGs((char *path, char ***dirS, char ***nameS)); 752 void RemoveExtensions PROTOARGs((int, char **)); 753 char *TempCharStr PROTOARGs((int character)); 754 void DisplayStatistics PROTOARGs(( 755 char *label, vSTATS *vStatsDotCDF, vSTATS *vStatsStage, 756 vSTATS *vStatsCompress 757 )); 758 void BuildStatistics PROTOARGs(( 759 char *label, vSTATS *vStats, char temp1[MAX_SCREENLINE_LEN+1], 760 char temp2[MAX_SCREENLINE_LEN+1], char temp3[MAX_SCREENLINE_LEN+1] 761 )); 762 int WriteOutSO VARPROTOARGs((char *format, ...)); 763 int WriteOutFP VARPROTOARGs((FILE *fp, char *format, ...)); 764 void IncrRecordIndicesFirstLast PROTOARGs(( 765 Logical rowMajor, long *recordN, long numDims, long first[], long last[], 766 long indices[] 767 )); 768 void IncrIndicesFirstLastRow PROTOARGs(( 769 long numDims, long first[], long last[], long indices[] 770 )); 771 void IncrIndicesFirstLastCol PROTOARGs(( 772 long numDims, long first[], long last[], long indices[] 773 )); 774 Logical AllocateBuffers PROTOARGs(( 775 long nRecords, long numDims, long dimSizes[], struct GroupStruct *groups, 776 int nScalarBuffers, int nHyperBuffers, Byte **handles[], 777 size_t nValueBytes[], Logical rowMajor, int minNofHypers, 778 void (*fatalFnc) PROTOARGs((char *msg)) 779 )); 780 void InitHyperParms PROTOARGs(( 781 struct HyperStruct *hyperX, struct GroupStruct *groups, long numDims, 782 long *nHypers, long *nValues 783 )); 784 void IncrHyperParms PROTOARGs(( 785 struct HyperStruct *hyperX, struct GroupStruct *groups, long numDims, 786 Logical rowMajor, long *nValues 787 )); 788 Logical HyperFullRecord PROTOARGs((struct GroupStruct *groups, long numDims)); 789 long HypersPerRecord PROTOARGs((struct GroupStruct *groups, long numDims)); 790 Logical HyperStartOfRecord PROTOARGs(( 791 struct HyperStruct *hyperX, long numDims 792 )); 793 void WriteOutPct PROTOARGs((int pct)); 794 Logical SwitchMajority PROTOARGs(( 795 Byte *buffer, Logical rowMajor, long numDims, long dimSizes[], 796 long recCount, size_t nValueBytes 797 )); 798 Logical CompressedCDF PROTOARGs((char *CDFpath)); 799 Logical SameCompressions PROTOARGs(( 800 long cType1, long cParms1[CDF_MAX_PARMS], 801 long cType2, long cParms2[CDF_MAX_PARMS] 802 )); 803 Logical SameSparsenesses PROTOARGs(( 804 long sRecordsType1, long sArraysType1, long sArraysParms1[CDF_MAX_PARMS], 805 long sRecordsType2, long sArraysType2, long sArraysParms2[CDF_MAX_PARMS] 806 )); 807 int LongWidth PROTOARGs((long value)); 808 int Long64Width PROTOARGs((OFF_T value)); 809 void DisplayIdentification PROTOARGs((char *name)); 810 Logical ParseCacheSizes PROTOARGs(( 811 char *sizes, long *workingCache, long *stageCache, long *compressCache 812 )); 813 int FindUniqueMatch PROTOARGs((char *target, char *strings[])); 814 void ParseStringForTokens PROTOARGs((int token, char *string, char *items[])); 815 int GetNumTokens PROTOARGs((int token, char *string)); 816 817 #if defined(mac) 818 void MacExecuteSO PROTOARGs(( 819 Logical (*exeFnc)(int argC, char *argV[]), 820 Logical (*qopFnc)(int *argC, char **argV[]) 821 )); 822 void MacExecuteFSI PROTOARGs(( 823 Logical (*exeFnc)(int argC, char *argV[]), 824 Logical (*qopFnc)(int *argC, char **argV[]) 825 )); 826 void MacExecuteTimer PROTOARGs((Logical (*exeFnc)(), int argC, char *argV[])); 827 void MacMessageDialog PROTOARGs((char *severityText, char *messageText)); 828 void InitMacUI PROTOARGs((void)); 829 void FreeMacQOPs PROTOARGs((int argC, char *argV[])); 830 void CalcBounds PROTOARGs(( 831 Rect *rect, int width, int height, double topPct, double leftPct 832 )); 833 void ResetSO PROTOARGs((Logical clear)); 834 void InitMacSO PROTOARGs((void)); 835 void InitMacMenusSO PROTOARGs((void)); 836 void InitMacFSI PROTOARGs((void)); 837 void InitMacMenusFSI PROTOARGs((void)); 838 void UpdateSOscrollBars PROTOARGs((void)); 839 void DrawStatusLine PROTOARGs((char *text)); 840 void MacReadKeySO PROTOARGs((char *key)); 841 Logical SaveSO PROTOARGs((Logical as)); 842 Logical BuildMacPath PROTOARGs(( 843 FSSpec *spec, char path[DU_MAX_PATH_LEN+1], Logical stripExt 844 )); 845 void DisplayAbout PROTOARGs((void)); 846 void WriteOutMacSO PROTOARGs((char *text)); 847 void WriteStringSO PROTOARGs((char *string, size_t length)); 848 void MacSOoverFlow PROTOARGs((void)); 849 void CheckForAbortSOmac PROTOARGs((void)); 850 void RemoveCDFSktExtension PROTOARGs(( 851 char *sktName, char *sktPath 852 )); 853 pascal Boolean FilterForCDFs PROTOARGs((ParmBlkPtr pb)); 854 pascal Boolean FilterForSKTs PROTOARGs((ParmBlkPtr pb)); 855 # ifndef __MWERKS__ 856 pascal void OutlineDefaultButton PROTOARGs((DialogPtr window, short itemN)); 857 pascal Boolean FilterDialogQOPfsi PROTOARGs(( 858 DialogPtr dialog, EventRecord *event, short *itemN 859 )); 860 pascal Boolean FilterDialogQOPso PROTOARGs(( 861 DialogPtr dialog, EventRecord *event, short *itemN 862 )); 863 # else 864 pascal void OutlineDefaultButton PROTOARGs((DialogPtr window, SInt16 itemN)); 865 pascal Boolean FilterDialogQOPfsi PROTOARGs(( 866 DialogPtr dialog, EventRecord *event, SInt16 *itemN 867 )); 868 pascal Boolean FilterDialogQOPso PROTOARGs(( 869 DialogPtr dialog, EventRecord *event, SInt16 *itemN 870 )); 871 # endif 872 #endif 873 874 #if defined(__cplusplus) 875 extern "C" { 876 #endif 877 void FatalError PROTOARGs((char *message)); 878 char *StatusCodeReportOptions PROTOARGs((Logical e, Logical w, Logical i)); 879 #if defined(win32) 880 # if defined(SO) 881 void CheckForAbortSOwin32 PROTOARGs((void)); 882 void WriteOutWin32 PROTOARGs((char *text)); 883 # else 884 void TransferTextAttrs PROTOARGs((char *text, char *attrs)); 885 void SetCursorPosition PROTOARGs((int row, int col)); 886 # endif 887 void WinMessageDialog PROTOARGs((char *severityText, char *messageText)); 888 void DebugMessage PROTOARGs((char *text)); 889 #endif 890 #if defined(__cplusplus) 891 } 892 #endif 893 894 /*****************************************************************************/ 895 896 #endif 897