/******************************************************************************
*
* NSSDC/CDF CDFexport header file.
*
* Version 1.2e, 14-Dec-97, Hughes STX.
*
* Modification history:
*
* V1.0 13-Sep-95, J Love Original version.
* V1.1 26-Aug-96, J Love CDF V2.6.
* V1.2 15-Nov-96, J Love Added `simple' environment and batch mode.
* V1.2a 15-Jan-97, J Love Added prompts for settings file. Added `help'
* qualifier.
* V1.2b 21-Feb-97, J Love Removed RICE.
* V1.2c 31-Mar-97, J Love Allow FieldWindow fields to exceed their
* on-screen width.
* V1.2d 17-Nov-97, J Love Windows NT/Visual C++.
* V1.2e 14-Dec-97, J Love Added ALPHAVMSi encoding.
*
******************************************************************************/
#if !defined(___cdfxport_h___)
#define ___cdfxport_h___
/******************************************************************************
* Include files.
******************************************************************************/
#include "widgets.h"
#if defined(mac)
# include "cdfxp.rh"
#endif
/******************************************************************************
* Parameters/qualifiers/options.
******************************************************************************/
#define CDFparm 0
#define INITIALqual 0
#define PROMPTqual 1
#define NOPROMPTqual 2
#define CACHEqual 3
#define ZMODEqual 4
#define NEG2POSFP0qual 5
#define NONEG2POSFP0qual 6
#define REPORTqual 7
#define STATSqual 8
#define NOSTATSqual 9
#define ABOUTqual 10
#define SIMPLEqual 11
#define NOSIMPLEqual 12
#define CDFqual 13
#define TEXTqual 14
#define SETTINGSqual 15
#define BATCHqual 16
#define HELPqual 17
#define FORMATopt 0
#define NOFORMATopt 1
#define FILTERopt 2
#define NOFILTERopt 3
#define FILLVALopt 4
#define NOFILLVALopt 5
#define SINGLEopt 6
#define MULTIopt 7
#define HOSTopt 8
#define NETWORKopt 9
#define EPOCHopt 10
#define EPOCH1opt 11
#define EPOCH2opt 12
#define EPOCH3opt 13
#define EPOCHFopt 14
#define EPOCHXopt 15
#define HORIZONTALopt 16
#define VERTICALopt 17
#define RECORDopt 18
#define NORECORDopt 19
#define INDICESopt 20
#define NOINDICESopt 21
#define ROWopt 22
#define COLUMNopt 23
#define VALIDMINopt 24
#define NOVALIDMINopt 25
#define MONOTONopt 26
#define NOMONOTONopt 27
#define VALIDMAXopt 28
#define NOVALIDMAXopt 29
#define FILLSopt 30
#define NOFILLSopt 31
#define EXCLUSIVEopt 32
#define NOEXCLUSIVEopt 33
#define OUTPUTopt 34
#define NOOUTPUTopt 35
#define DELETEopt 36
#define NODELETEopt 37
#define PREALLOCATEopt 38
#define NOPREALLOCATEopt 39
#define HEADINGopt 40
#define NOHEADINGopt 41
/******************************************************************************
* Miscellaneous.
******************************************************************************/
#define CDFnameLEN 31
#define NUMscreenLINES 18
#define SCREENtextMAX (NUMscreenLINES*(SCREEN_WIDTH-2+1))
#define MAXvalueLEN 150
#define MAXminMaxLEN 150
#define MAXfillLEN 150
#define MAXitemFieldLEN 150
#define MAXwidthLEN 5
#define MAXreserveLEN 7
#define MAXblockingLEN 8
#define MAXrecordNumberLEN 11
#define MAXdimensionIndexLEN 11
#define MAXgENTRYencodedLEN 150
#define MAXwalkingVARs 13
#define NOWAIT 0
#define NOBEEPWAIT -10
#define NOBEEPWAIT1 -1
#define NOBEEPWAIT2 -2
#define BEEPWAIT 10
#define BEEPWAIT1 1
#define BEEPWAIT2 2
#define AMBIGUOUSopt -1
#define UNKNOWNopt -2
#define RECORDt 0
#define INDICESt 1
#define VARIABLEt 2
#define MIN_RECORD_WIDTH 6
#define MIN_INDICES_WIDTH 11
#define MIN_VARIABLE_WIDTH 8
#define NOminMax (-1)
#define NA_RESERVE (-1)
#define PART_ 0 /* `Simple' mode. */
#define PART1 1
#define PART2 2
#define PART3 3
#define PART4 4
#define MAX_ENCODING ALPHAVMSi_ENCODING
#define MAX_COMPRESSION GZIP_COMPRESSION
#define MAX_CHECKSUM MD5_CHECKSUM
#define MAX_SETTINGS_LEN 200
#define PASSED 1
#define FAILED 2
#define FATAL 3
#define SUCCESS 1
#define FATALin 2
#define FATALout 3
#define EQsearch 0
#define LTsearch 1
#define LEsearch 2
#define GTsearch 3
#define GEsearch 4
#define BLANKs255 "\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
"
/******************************************************************************
* `Batch' mode.
******************************************************************************/
#define noBATCH 0
#define BATCHcdf 1
#define BATCHtext 2
#define BATCH(mode) (mode != noBATCH)
/******************************************************************************
* `Simple' mode.
******************************************************************************/
#define FORCEeachFilterSIMPLE FALSE
#define FORCEoverallFilterSIMPLE FALSE
#define FORCEfillsSIMPLE FALSE
#define FORCEfillvalSIMPLE FALSE
#define FORCEvalidminSIMPLE FALSE
#define FORCEvalidmaxSIMPLE FALSE
#define FORCEmonotonSIMPLE FALSE
#define NAsingleSIMPLE FALSE
#define NAnetworkSIMPLE FALSE
#define NAshowSIMPLE FALSE
#define NAexclusiveSIMPLE FALSE
#define NAdeleteSIMPLE FALSE
#define NApreAllocateSIMPLE FALSE
#define SCREENkey_SIMPLE KB_CTRL_A
#define FILEkey_SIMPLE KB_CTRL_B
#define SAVEkey_SIMPLE KB_CTRL_J
#define RESTOREkey_SIMPLE KB_CTRL_L
#if defined(alphaosf) || defined(IRIX64bit) || defined(SOLARIS64) || \
defined(__amd64) || defined(__x86_64__) || defined(__ia64__)
# define Int32FORMATstandard "%11d"
# define Int32uFORMATstandard "%10d"
#else
# define Int32FORMATstandard "%11ld"
# define Int32uFORMATstandard "%10ld"
#endif
#define EPOCHx_FORMAT_STANDARD "*Unsupported*"
/******************************************************************************
* Field numbers/locations.
******************************************************************************/
#define CDFfn 0
#define CDFfieldLINEn 0
#define CDFfieldCOLn 8
#define CDFfieldLEN 70
#define CDFfieldMAX CDF_PATHNAME_LEN
#define CDFvarsRecsLINEn 1
#define NAMEitemCOLnSIMPLE 0
#define NAMEitemLENsimple 71
#define OUTPUTitemCOLnSIMPLE 72
#define OUTPUTitemLENsimple 6
#define NAMEitemCOLn 0
#define NAMEitemLEN 21
#define SPECitemCOLn 22
#define SPECitemLEN 9
#define DIMENitemCOLn 32
#define DIMENitemLEN 27
#define VARYSitemCOLn 60
#define VARYSitemLEN 11
#define OUTPUTitemCOLn 72
#define OUTPUTitemLEN 6
#define MINitemCOLn 22
#define MINitemLEN 24 /* Maximum of the possible styles. */
#define MAXitemCOLn 47
#define MAXitemLEN 24 /* Maximum of the possible styles. */
#define FILTERitemCOLn 72
#define FILTERitemLEN 6
#define FILLitemCOLn 22
#define FILLitemLEN 26
#define MONOitemCOLn 49
#define MONOitemLEN 13
#define FORMATitemCOLn 63
#define FORMATitemLEN 9
#define WIDTHitemCOLn 73
#define WIDTHitemLEN 5
#define SPARSEitemCOLn 22
#define SPARSEitemLEN 19
#define COMPRESSitemCOLn 42
#define COMPRESSitemLEN 19
#define RESERVEitemCOLn 62
#define RESERVEitemLEN 7
#define BLOCKINGitemCOLn 70
#define BLOCKINGitemLEN 8
#define nSELWINDOWcolsMAX 5
#define nSELWINDOWcols1 5
#define nSELWINDOWcols2 4
#define nSELWINDOWcols3 5
#define nSELWINDOWcols4 5
#define nSELWINDOWcols_ 2 /* `Simple' mode. */
#define WALKleftLEN 21
#define WALKrightLEN 56
/******************************************************************************
* Column numbers.
******************************************************************************/
#define NAMEcxSIMPLE 0
#define OUTPUTcxSIMPLE 1
#define NAMEcx 0
#define SPECcx 1
#define DIMENcx 2
#define VARYScx 3
#define OUTPUTcx 4
#define MINcx 1
#define MAXcx 2
#define FILTERcx 3
#define FILLcx 1
#define MONOcx 2
#define FORMATcx 3
#define WIDTHcx 4
#define SPARSEcx 1
#define COMPRESScx 2
#define RESERVEcx 3
#define BLOCKINGcx 4
/******************************************************************************
* Row numbers.
******************************************************************************/
#define FILTERrx 0
#define FILLSrx 1
#define CDFFORMATrx 2
#define ENCODINGrx 3
#define EPOCHrx 4
#define hvMODErx 5
#define MAJORrx 6
#define SHOWrx 7
#define SPACINGrx 8
#define DELETErx 9
#define PREALLOCrx 10
#define HEADINGrx 11
/******************************************************************************
* Item numbers.
******************************************************************************/
#define NONEin 0
#define RLE0in 1
#define HUFF0in 2
#define AHUFF0in 3
#define GZIPin 4
/* #define ZLIB0in 5 */
#define NOsRECORDSin 0
#define PADsRECORDSin 1
#define PREVsRECORDSin 2
#define MD5in 1
/******************************************************************************
* Actions.
******************************************************************************/
#define TOSCREENact 0
#define TOFILEact 1
#define TOCDFact 2
#define WALKact 3
#define OUTPUTallITEMSact 4
#define OUTPUTnoITEMSact 5
#define FILTERallITEMSact 6
#define FILTERnoITEMSact 7
#define SETcdfCOMPRESSact 8
#define SETvarCOMPRESSact 9
#define SAVEact 10
#define RESTOREact 11
#define SETMONOact 12
#define TOCDFv2act 13
#define SETcdfCHECKSUMact 14
/******************************************************************************
* Help identifiers.
******************************************************************************/
#define CDFhelpID 1
#define CDFShelpID 2
#define VAR1helpID 3
#define VAR2helpID 4
#define VAR3helpID 5
#define ACTIONhelpID 6
#define OPTIONhelpID 7
#define MINmaxRECORDhelpID 8
#define MINmaxINDICEShelpID 9
#define MINmaxVALUEhelpID 10
#define FILLhelpID 11
#define FORMAThelpID 12
#define WIDTHhelpID 13
#define SCREENhelpID 14
#define oFILEhelpID 15
#define oCDFhelpID 16
#define VAR4helpID 17
#define BLOCKINGhelpID 18
#define COMPRESShelpID 19
#define SPARSEhelpID 20
#define RESERVEhelpID 21
#define GZIPhelpID 23
#define WALKriHelpID 24
#define WALKvarHelpID 25
#define RECORDhelpID 26
#define INDEXhelpID 27
#define VALUEhelpID 28
#define SEARCHTYPEhelpID 29
#define VARhelpID 30 /* `Simple' mode. */
#define SETFILEhelpID 31
#define ACTIONv32helpID 32
#define CHECKSUMhelpID 33
#define OLHhelpID 99
/******************************************************************************
* Output types.
******************************************************************************/
#define OUTPUTtoSCREENh 1
#define OUTPUTtoSCREENv 2
#define OUTPUTtoFILEh 3
#define OUTPUTtoFILEv 4
#define OUTPUTtoCDF 5
/******************************************************************************
* Monotonicities.
******************************************************************************/
#define NAmono (-1)
#define UNKNOWNmono 0
#define INCREASEmono 1
#define DECREASEmono 2
#define FALSEmono 3
/******************************************************************************
* Filter status.
******************************************************************************/
#define PASSes 1
#define SHOWit 2
#define FAILline 3
#define FAILrecord 4
#define SHOWline(status) (status == PASSes || status == SHOWit)
/******************************************************************************
* NEWkeyDEFs.
******************************************************************************/
#define NEWkeyDEFS(EWkey,keyDefs,batchMode) \
if (!BATCH(batchMode)) { \
EWkey->eText = keyDefs; \
EditWindow (UPDATEew, EWkey, LogicalTRUE); \
}
/******************************************************************************
* VALUEinBUFFER.
******************************************************************************/
#define VALUEinBUFFER(Var,valueN) \
(Var->buffer + (size_t) (valueN * Var->nValueBytes))
/******************************************************************************
* MAJORITYtoOUT.
******************************************************************************/
#define MAJORITYtoOUT(outMajority,inMajority) \
BOO(outMajority == INPUT_MAJOR,inMajority,outMajority)
/******************************************************************************
* RECORDfailedFILTER, INDICESfailedFILTER, and VARfailedFILTER.
******************************************************************************/
#define RECORDfailedFILTER(Item,recN) \
(Item->filter && \
(!RecordPassesMin(Item,recN) || !RecordPassesMax(Item,recN)))
#define INDICESfailedFILTER(Item,indices) \
(Item->filter && \
(!IndicesPassMin(Item,indices) || !IndicesPassMax(Item,indices)))
#define VARfailedFILTER(Item,value) \
(Item->filter && \
(!VarPassesMin(Item,value) || !VarPassesMax(Item,value)))
/******************************************************************************
* SELECTcdf.
******************************************************************************/
#define SELECTcdf(id) CDFlib(SELECT_,CDF_,id,NULL_);
/******************************************************************************
* MINorMAXexists.
******************************************************************************/
#define MINorMAXexists(Item) \
(Item->type == RECORDt && \
(Item->Record->min != NOminMax || \
Item->Record->max != NOminMax)) || \
(Item->type == INDICESt && \
(Item->Indices->minNumDims != NOminMax || \
Item->Indices->maxNumDims != NOminMax)) || \
(Item->type == VARIABLEt && \
(Item->Var->min != NULL || \
Item->Var->max != NULL))
/******************************************************************************
* FILTER.
******************************************************************************/
#define FILTER(Item,opt) (opt.overallFilter && Item->filter)
/******************************************************************************
* USEFILL.
******************************************************************************/
#define USEFILL(Var,opt) (opt.useFills && Var->fill != NULL)
/******************************************************************************
* WRITEFILL.
******************************************************************************/
#define WRITEFILL(Var,opt) \
(USEFILL(Var,opt) && NEx(Var->fill,Var->pad,Var->dataType,Var->numElems))
/******************************************************************************
* NRVtoOUTPUT.
******************************************************************************/
#define NRVtoOUTPUT(Item) \
(Item->output && !Item->Var->recVary)
/******************************************************************************
* HYPERget/put and SINGLEget/put.
******************************************************************************/
#define SINGLEget(id,varN,zVar,recNumber,dimIndices,buffer) \
CDFlib (SELECT_, CDF_, id, \
BOO(zVar,zVAR_,rVAR_), varN, \
BOO(zVar,zVAR_RECNUMBER_,rVARs_RECNUMBER_), recNumber, \
BOO(zVar,zVAR_DIMINDICES_,rVARs_DIMINDICES_), dimIndices, \
GET_, BOO(zVar,zVAR_DATA_,rVAR_DATA_), buffer, \
NULL_)
#define SINGLEput(id,varN,zVar,recNumber,dimIndices,buffer) \
CDFlib (SELECT_, CDF_, id, \
BOO(zVar,zVAR_,rVAR_), varN, \
BOO(zVar,zVAR_RECNUMBER_,rVARs_RECNUMBER_), recNumber, \
BOO(zVar,zVAR_DIMINDICES_,rVARs_DIMINDICES_), dimIndices, \
PUT_, BOO(zVar,zVAR_DATA_,rVAR_DATA_), buffer, \
NULL_)
#define HYPERget(id,varN,zVar,recNumber,recCount,dimIndices,dimCounts,buffer) \
CDFlib (SELECT_, CDF_, id, \
BOO(zVar,zVAR_,rVAR_), varN, \
BOO(zVar,zVAR_RECNUMBER_,rVARs_RECNUMBER_), recNumber, \
BOO(zVar,zVAR_RECCOUNT_,rVARs_RECCOUNT_), recCount, \
BOO(zVar,zVAR_DIMINDICES_,rVARs_DIMINDICES_), dimIndices, \
BOO(zVar,zVAR_DIMCOUNTS_,rVARs_DIMCOUNTS_), dimCounts, \
GET_, BOO(zVar,zVAR_HYPERDATA_,rVAR_HYPERDATA_), buffer, \
NULL_)
#define HYPERput(id,varN,zVar,recNumber,recCount,dimIndices,dimCounts,buffer) \
CDFlib (SELECT_, CDF_, id, \
BOO(zVar,zVAR_,rVAR_), varN, \
BOO(zVar,zVAR_RECNUMBER_,rVARs_RECNUMBER_), recNumber, \
BOO(zVar,zVAR_RECCOUNT_,rVARs_RECCOUNT_), recCount, \
BOO(zVar,zVAR_DIMINDICES_,rVARs_DIMINDICES_), dimIndices, \
BOO(zVar,zVAR_DIMCOUNTS_,rVARs_DIMCOUNTS_), dimCounts, \
PUT_, BOO(zVar,zVAR_HYPERDATA_,rVAR_HYPERDATA_), buffer, \
NULL_)
/******************************************************************************
* Record structure.
******************************************************************************/
struct RecordStruct {
long min;
long max;
};
/******************************************************************************
* Indices structure.
******************************************************************************/
struct IndicesStruct {
long numDims;
long dimSizes[CDF_MAX_DIMS];
long indices[CDF_MAX_DIMS];
long minNumDims;
long minIndices[CDF_MAX_DIMS];
long maxNumDims;
long maxIndices[CDF_MAX_DIMS];
};
/******************************************************************************
* Variable structure.
******************************************************************************/
struct VarStruct {
long varN; /* Number. */
long numDims; /* Number of dimensions. */
long dimSizes[CDF_MAX_DIMS];
/* Dimension sizes (conceptual). */
long nRecordValues; /* Number of values per record (conceptual). */
long dataType; /* Data type. */
long numElems; /* Number of elements (of the data type) per value. */
long recVary; /* Record variance. */
long dimVarys[CDF_MAX_DIMS];
/* Dimension variances. */
long maxRec; /* Maximum record written. */
long blocking; /* Blocking factor. */
long reserve; /* Reserve percentage. */
long sRecordsType; /* Sparse records type. */
long sArraysType; /* Sparse arrays type. */
long sArraysParms[CDF_MAX_PARMS];
/* Sparse arrays parameters. */
long cType; /* Compression type. */
long cParms[CDF_MAX_PARMS];
/* Compression parameters. */
long valueN; /* Value number. */
long indices[CDF_MAX_DIMS];
/* Indices for this variable. */
long varNo; /* Corresponding variable number in an output CDF. */
long oRecords; /* Number of records to be written to the corresponding
variable in an output CDF. */
void *min; /* Minimum filter value. */
void *max; /* Maximum filter value. */
void *fill; /* FILLVAL entry converted to variable's data type. */
void *pad; /* Pad value. */
void *value; /* Buffer for one value. */
Byte *buffer; /* Buffer for many values. */
char *name; /* Variable name. */
char *format; /* Format (C or Fortran). */
size_t nValueBytes; /* Number of bytes per variable value. */
int monotonic; /* `INCREASEmono' if this variable is monotonic
increase, `DECREASEmono' if monotonic decrease,
`FALSEmono' if not monotonic, or `UNKNOWNmono'
if monotonicity is unknown. */
Logical zVar; /* TRUE if a zVariable, FALSE if an rVariable. */
Logical scalar; /* Scalar variable? */
};
/******************************************************************************
* Item structure.
******************************************************************************/
struct ItemStruct {
int type; /* RECORDSt, INDICESt, or VARIABLEt. */
int width;
Logical outputSetting; /* Setting on the SelectionWindow. */
Logical filterSetting; /* Setting on the SelectionWindow. */
Logical output; /* If item should be output. */
Logical filter; /* If item should be filtered. */
Logical inclusive;
struct VarStruct *Var;
struct RecordStruct *Record;
struct IndicesStruct *Indices;
struct ItemStruct *nextItem;
struct ItemStruct *nextExport;
struct ItemStruct *nextScalar;
struct ItemStruct *nextHyper;
};
/******************************************************************************
* Options structure.
******************************************************************************/
struct OptionStruct {
long encoding; /* Encoding for output CDFs. */
long majority; /* Majority for listings/output CDFs. */
Logical eachFilter; /* Initial filter setting for each
item/variable (yes/no). */
Logical overallFilter; /* Overall use of filters? */
Logical useFills; /* Use fill values? */
Logical useFORMAT; /* Use FORMAT attribute entries? */
Logical useFILLVAL; /* Use FILLVAL attribute entries? */
Logical useVALIDMIN; /* Use VALIDMIN attribute entries? */
Logical useVALIDMAX; /* Use VALIDMAX attribute entries? */
Logical useMONOTON; /* Use MONOTON attribute entries? */
Logical singleFile;
Logical horizontalMode;
Logical showRecord;
Logical showIndices;
Logical showFiltered;
Logical exclusive;
Logical outputItem; /* Initial output setting for each
item/variable (yes/no). */
Logical deleteExisting; /* Delete existing CDFs? */
Logical preAllocate; /* Preallocate variable records? */
Logical textHeading; /* Display heading line in text files? */
int epochStyle;
int spacing;
};
/******************************************************************************
* Global variables.
******************************************************************************/
#if defined(CDFXP)
int batchMode = noBATCH;
Logical simpleMode = DEFAULTsimpleEXPORT;
Logical dumpStats = DEFAULTstatsEXPORT;
Logical report[3] = {
REPORTerrorsDEFAULT, REPORTwarningsDEFAULT, REPORTinfosDEFAULT
};
long inMajority;
struct OptionStruct opt;
int nItems;
struct ItemStruct *itemHead;
struct FieldWindowStruct *FWcdf;
struct ItemWindowStruct *IWsel;
struct EditWindowStruct *EWkey;
struct EditWindowStruct *EWmsg;
long workingCache = useDEFAULTcacheSIZE;
long stageCache = useDEFAULTcacheSIZE;
long compressCache = useDEFAULTcacheSIZE;
char na[] = "n/a";
char dots[] = "...";
char *monos[] = { "n/a", "Unknown", "Increase", "Decrease", "False" };
char *epochStyles[] = {
"standard", "alternate/1", "alternate/2", "alternate/3",
"Format/C_Fortran", "Format/custom"
};
char *encodings[] = {
NULL, "NETWORK", "SUN", "VAX", "DECSTATION", "SGi", "IBMPC", "IBMRS",
"HOST", "MAC", NULL, "HP", "NeXT", "ALPHAOSF1", "ALPHAVMSd", "ALPHAVMSg",
"ALPHAVMSi", "PowerPC",
};
char *majorities[] = { "input", "row", "column" };
char *compressions[] = { "no", "rle", "huff", "ahuff", "gzip" };
char *checksums[] = {"no", "md5"};
char readingCDF[] = "reading input CDF";
char writingCDF[] = "writing output CDF";
long dimIndices_0[CDF_MAX_DIMS] = { 0,0,0,0,0,0,0,0,0,0 };
long dimCounts_1[CDF_MAX_DIMS] = { 1,1,1,1,1,1,1,1,1,1 };
long CDFcType;
long CDFcParms[CDF_MAX_PARMS];
long NrVars, NzVars;
long rMaxRec, zMaxRec;
long CDFchecksum;
#if DEFAULTsimpleEXPORT
char settingsFile[DU_MAX_PATH_LEN+1] = "simple.set";
#else
char settingsFile[DU_MAX_PATH_LEN+1] = "export.set";
#endif
char outputText[DU_MAX_PATH_LEN+1] = "default.lis";
char outputCDF[CDF_PATHNAME_LEN+1] = "default";
#else
extern int batchMode;
extern Logical simpleMode;
extern Logical dumpStats;
extern Logical report[3];
extern long inMajority;
extern struct OptionStruct opt;
extern int nItems;
extern struct ItemStruct *itemHead;
extern struct FieldWindowStruct *FWcdf;
extern struct ItemWindowStruct *IWsel;
extern struct EditWindowStruct *EWkey;
extern struct EditWindowStruct *EWmsg;
extern long workingCache, stageCache, compressCache;
extern char na[];
extern char dots[];
extern char *monos[];
extern char *epochStyles[];
extern char *encodings[];
extern char *majorities[];
extern char *compressions[];
extern char *checksums[];
extern char readingCDF[];
extern char writingCDF[];
extern long dimIndices_0[CDF_MAX_DIMS];
extern long dimCounts_1[CDF_MAX_DIMS];
extern long CDFcType;
extern long CDFcParms[CDF_MAX_PARMS];
extern long NrVars, NzVars;
extern long rMaxRec, zMaxRec;
extern long CDFchecksum;
extern char settingsFile[DU_MAX_PATH_LEN+1];
extern char outputText[DU_MAX_PATH_LEN+1];
extern char outputCDF[CDF_PATHNAME_LEN+1];
#endif
/******************************************************************************
* Function prototypes.
******************************************************************************/
Logical ExportCDFs PROTOARGs((int argC, char *argV[]));
void CDFexportMenu PROTOARGs((
char *iniSpec, Logical prompt, long zMode, Logical negToPosFp0
));
void ExportCDFsSpec PROTOARGs((
char *path, long zMode, Logical negToPosFp0, char *varLabel0,
char *varHeader0[]
));
void ExportCDF PROTOARGs((char *path, long zMode, Logical negToPosFp0));
Logical LoadCDF PROTOARGs((void));
Logical LoadSelectionWindow PROTOARGs((int part));
void LoadCDFwindow PROTOARGs((char *path));
void SelectionWindow PROTOARGs((Logical *noMoreAccess));
Logical SelectionWindow1 PROTOARGs((Logical *noMoreAccess));
Logical SelectionWindow2 PROTOARGs((Logical *noMoreAccess));
Logical SelectionWindow3 PROTOARGs((Logical *noMoreAccess));
Logical SelectionWindow4 PROTOARGs((Logical *noMoreAccess));
Logical ActionMenu PROTOARGs((int part));
void OptionMenu PROTOARGs((void));
Logical ConfirmExit PROTOARGs((void));
void DisplayStatus PROTOARGs((CDFstatus status, char *text));
int DisplayMessage PROTOARGs((char *message, int wait));
int MatchOption PROTOARGs((char *option, char *validOptions[]));
void FreeItems PROTOARGs((void));
int LongValueWidth PROTOARGs((long value));
int RecordIndicesWidth PROTOARGs((
long lastRec, long numDims, long dimSizes[], int type
));
void FreeToScreen PROTOARGs((
char *header[], char *scrLines[], char *trailer[]
));
Logical PromptFor PROTOARGs((
char *value, int valueL, int cursorAt, char *label, int helpID
));
Logical PromptForMinMax PROTOARGs((struct ItemStruct *Item, Logical min));
Logical PromptForFill PROTOARGs((struct VarStruct *Var));
Logical PromptForReserve PROTOARGs((struct VarStruct *Var));
Logical PromptForBlocking PROTOARGs((struct VarStruct *Var));
Logical PromptForWidth PROTOARGs((struct ItemStruct *Item));
Logical PromptForFormat PROTOARGs((struct ItemStruct *Item));
Logical PromptForCompression PROTOARGs((
long *cType, long cParms[CDF_MAX_PARMS]
));
Logical PromptForSparseness PROTOARGs((struct VarStruct *Var));
Logical PromptForChecksum PROTOARGs((long *checksum));
Logical FlipItems PROTOARGs((int itemX));
int VariableWidth PROTOARGs((struct VarStruct *Var));
void SaveSettings PROTOARGs((void));
void RestoreSettings PROTOARGs((void));
Logical ToWalk PROTOARGs((void));
Logical ToScreenHori PROTOARGs((void));
Logical ToFileHori PROTOARGs((void));
CDFstatus EncodeLineHori PROTOARGs((
char *line, long recN, int *filterStatus, struct ItemStruct *exportHead,
Logical standard
));
Logical ToScreenVert PROTOARGs((void));
Logical ToFileVert PROTOARGs((void));
CDFstatus EncodeLineVert PROTOARGs((
char *line, long recN, long valueN, long numDims,
long indices[CDF_MAX_DIMS], Logical same, int *filterStatus,
struct ItemStruct *exportHead, Logical outRowMajor, Logical standard
));
Logical ListAttributes PROTOARGs((FILE *oFp, Logical *cdfFatal));
Logical ToCDF PROTOARGs((CDFid inID));
int ToCDFsameGt0 PROTOARGs((
CDFid inID, CDFid outID, long firstRec, long lastRec, long numDims,
long dimSizes[], long firstIndices[], long outMajority,
struct ItemStruct *exportHead
));
int ToCDFdiffOrZero PROTOARGs((
CDFid inID, CDFid outID, long firstRec, long lastRec, long outMajority,
struct ItemStruct *exportHead
));
int OutputNRVvalues PROTOARGs((
CDFid inID, CDFid outID, struct ItemStruct *exportHead, Logical same,
long dimSizes[], long firstIndices[], long outMajority
));
Logical OutputHyperBuffer PROTOARGs((
CDFid outID, long varNo, Logical zVar, long outMajority, long recNumber,
long recCount, long dimIndices[], long dimCounts[], long numDims,
long dimSizes[], Byte *buffer, long nValues, Logical fullRecord,
size_t nValueBytes, long nRecordValues
));
int CopyAttributesANDgEntries PROTOARGs((
CDFid inID, CDFid outID, long *nAttrs
));
int CopyVariablesANDrzEntries PROTOARGs((
CDFid inID, CDFid outID, long nAttrs, Logical same, long numDims,
long dimSizes[], struct ItemStruct *exportHead
));
Logical FirstLastRecord PROTOARGs((
long *firstRec, long *lastRec, Logical toCDF, struct ItemStruct *exportHead
));
Logical FirstLastIndices PROTOARGs((
long numDims, long dimSizes[], long firstIndices[], long lastIndices[],
long *nValues, Logical toCDF, struct ItemStruct *exportHead
));
Logical ScalarVariable PROTOARGs((struct VarStruct *Var));
Logical DimensionalVariable PROTOARGs((struct VarStruct *Var, int *dimN));
Logical OneDimensionVaries PROTOARGs((struct VarStruct *Var));
Logical ReadScalarValue PROTOARGs((struct VarStruct *Var, long recN));
Logical ReadDimensionalValue PROTOARGs((
struct VarStruct *Var, long indices[]
));
Logical ValidFormat PROTOARGs((char *format));
Logical SameDimensionalities PROTOARGs((
long *numDims, long dimSizes[], struct ItemStruct *exportHead
));
void ValidateRecordIndices PROTOARGs((
int type, Logical same, long numDims, struct ItemStruct *exportHead
));
Logical VarPassesMin PROTOARGs((struct ItemStruct *Item, void *value));
Logical VarPassesMax PROTOARGs((struct ItemStruct *Item, void *value));
Logical RecordPassesMin PROTOARGs((struct ItemStruct *Item, long recN));
Logical RecordPassesMax PROTOARGs((struct ItemStruct *Item, long recN));
Logical IndicesPassMin PROTOARGs((struct ItemStruct *Item, long indices[]));
Logical IndicesPassMax PROTOARGs((struct ItemStruct *Item, long indices[]));
void DisplayPctComplete PROTOARGs((int pct, char *msg));
void UpdateToScreen PROTOARGs((
struct EditWindowStruct *EWscr, char *trailerMsg, long at, long total
));
Logical SetItemMonotonicities PROTOARGs((void));
Logical SetVarMonotonicity PROTOARGs((struct VarStruct *Var));
void BuildExportList PROTOARGs((
struct ItemStruct **exportHead, Logical walking
));
void RemoveExportItems PROTOARGs((struct ItemStruct **exportHead));
void FreeExportBuffers PROTOARGs((struct ItemStruct *exportHead));
void FilterHypers PROTOARGs((struct ItemStruct *hyperHead, long nValues));
long FindFirstRecord PROTOARGs((
long recX, struct ItemStruct *scalarHead, Logical filteringScalars,
long recCount
));
long FindLastRecord PROTOARGs((
long recF, struct ItemStruct *scalarHead, Logical filteringScalars,
long recCount
));
void FilterBuffer PROTOARGs((
struct ItemStruct *Item, Byte *buffer, long nValues
));
Logical AbortListing PROTOARGs((FILE *oFp, char *line));
Logical AbortCDF PROTOARGs((struct ItemStruct *exportHead));
int PreAllocateRecords PROTOARGs((
CDFid inID, CDFid outID, struct ItemStruct *scalarHead,
struct ItemStruct *hyperHead, long *firstRec, long *lastRec
));
void OptDefaults PROTOARGs((void));
#if defined(mac)
Logical ExportQOPs PROTOARGs((
int *argC, char **argV[]
));
#endif
/*****************************************************************************/
#endif /* ___cdfxport_h___ */
syntax highlighted by Code2HTML, v. 0.9.1