📄 ptapi.c
字号:
char utlbuf[256];/* Utility Buffer */ /* Check for valid point ID */ /* ------------------------ */ status = PTchkptid(pointID, "PTsizeof", &fid, &sdInterfaceID, &ptVgrpID); if (status == 0) { /* Get number of levels */ /* -------------------- */ nlevels = PTnlevels(pointID); /* Report error if no levels (vdatas) defined */ /* ------------------------------------------ */ if (nlevels == 0) { status = -1; HEpush(DFE_GENAPP, "PTsizeof", __FILE__, __LINE__); HEreport("No Levels Defined for point ID: %d\n", pointID); } /* If no problems ... */ /* ------------------ */ if (status == 0) { /* Parse field list */ /* ---------------- */ nflds = EHparsestr(fieldlist, ',', pntr, slen); /* Initialize fldlevels & found arrays */ /* ----------------------------------- */ for (j = 0; j < nflds; j++) { fldlevels[j] = -1; } for (j = 0; j < nflds; j++) { found[j] = 0; } /* Loop through all levels in point */ /* -------------------------------- */ for (i = 0; i < nlevels; i++) { /* Get level vdata ID */ /* ------------------ */ vdataID = PTXPoint[pointID % idOffset].vdID[i]; /* Loop through all fields in fieldlist */ /* ------------------------------------ */ for (j = 0; j < nflds; j++) { /* Copy field entry into utlbuf */ /* ---------------------------- */ memcpy(utlbuf, pntr[j], slen[j]); utlbuf[slen[j]] = 0; /* If field exists in level and not in a prevous one ... */ /* ----------------------------------------------------- */ if (VSfexist(vdataID, utlbuf) == 1 && found[j] == 0) { /* Increment total field size */ /* -------------------------- */ fldsz += VSsizeof(vdataID, utlbuf); /* Store field level & set found flag */ /* ---------------------------------- */ fldlevels[j] = i; found[j] = 1; } } } } } return (fldsz);}/*----------------------------------------------------------------------------|| BEGIN_PROLOG || || FUNCTION: PTnfields || || DESCRIPTION: Returns number of fields defined in a level. || || || Return Value Type Units Description || ============ ====== ========= ===================================== || nflds Number of fields in a level || || INPUTS: || pointID int32 point structure ID || level int32 level number (0 - based) || || || OUTPUTS: || strbufsize int32 String length of fieldlist || || NOTES: || || || Date Programmer Description || ====== ============ ================================================= || Jun 96 Joel Gales Original Programmer || Oct 96 Joel Gales Enlarge field string buffer || || END_PROLOG |-----------------------------------------------------------------------------*/int32PTnfields(int32 pointID, int32 level, int32 * strbufsize){ intn status = 0; /* routine return status variable */ int32 fid; /* HDF-EOS file id */ int32 sdInterfaceID; /* HDF SDS interface ID */ int32 idOffset = PTIDOFFSET; /* Point ID offset */ int32 ptVgrpID; /* Point Vgroup ID */ int32 nlevels; /* Number of levels in point */ int32 nflds; /* Number of fields in fieldlist */ int32 vdataID; /* Vdata ID */ char fieldbuf[VSFIELDMAX * FIELDNAMELENMAX]; /* Vdata fieldname buffer */ /* Check for valid point ID */ /* ------------------------ */ status = PTchkptid(pointID, "PTnfields", &fid, &sdInterfaceID, &ptVgrpID); if (status == 0) { /* Get number of levels */ /* -------------------- */ nlevels = PTnlevels(pointID); /* Report error if no levels (vdatas) defined */ /* ------------------------------------------ */ if (nlevels == 0) { status = -1; HEpush(DFE_GENAPP, "PTnfields", __FILE__, __LINE__); HEreport("No Levels Defined for point ID: %d\n", pointID); } else if (nlevels < level) { /* Report error if level # to large */ /* -------------------------------- */ status = -1; HEpush(DFE_GENAPP, "PTnfields", __FILE__, __LINE__); HEreport("Only %d levels Defined for point ID: %d\n", nlevels, pointID); } if (status == 0) { /* Get level vdata ID */ /* ------------------ */ vdataID = PTXPoint[pointID % idOffset].vdID[level]; /* Get number of fields in level & fieldlist */ /* ----------------------------------------- */ nflds = VSgetfields(vdataID, fieldbuf); /* Return fieldlist string size if requested */ /* ----------------------------------------- */ if (strbufsize != NULL) { *strbufsize = strlen(fieldbuf); } } } return (nflds);}/*----------------------------------------------------------------------------|| BEGIN_PROLOG || || FUNCTION: PTlevelindx || || DESCRIPTION: Returns index number for a named level. || || || Return Value Type Units Description || ============ ====== ========= ===================================== || n int32 Level number (0 - based) || || INPUTS: || pointID int32 point structure ID || levelname char point level name || || || OUTPUTS: || None || || NOTES: || || || Date Programmer Description || ====== ============ ================================================= || Jun 96 Joel Gales Original Programmer || || END_PROLOG |-----------------------------------------------------------------------------*/int32PTlevelindx(int32 pointID, char *levelname){ intn status = 0; /* routine return status variable */ int32 fid; /* HDF-EOS file id */ int32 sdInterfaceID; /* HDF SDS interface ID */ int32 idOffset = PTIDOFFSET; /* Point ID offset */ int32 ptVgrpID; /* Point Vgroup ID */ int32 nlevels; /* Number of levels in point */ int32 level = -1; /* Level corresponding to levelname */ char name[VSNAMELENMAX]; /* Level name */ /* Check for valid point id */ /* ------------------------ */ status = PTchkptid(pointID, "PTlevelindx", &fid, &sdInterfaceID, &ptVgrpID); if (status == 0) { /* Get number of levels */ /* -------------------- */ nlevels = PTnlevels(pointID); /* Loop through all levels in point */ /* -------------------------------- */ for (level = 0; level < nlevels; level++) { /* Get level name */ /* -------------- */ VSgetname(PTXPoint[pointID % idOffset].vdID[level], name); /* If it matches input levelname then exit loop */ /* -------------------------------------------- */ if (strcmp(name, levelname) == 0) { break; } } } /* Levelname not found so set error status */ /* --------------------------------------- */ if (level == nlevels) { level = -1; } return (level);}/*----------------------------------------------------------------------------|| BEGIN_PROLOG || || FUNCTION: PTgetlevelname || || DESCRIPTION: Returns level name || || || Return Value Type Units Description || ============ ====== ========= ===================================== || nflds Number of fields in a level || || INPUTS: || pointID int32 point structure ID || level int32 level number (0 - based) || || || OUTPUTS: || levelname char Level name || strbufsize int32 String length of fieldlist || || NOTES: || || || Date Programmer Description || ====== ============ ================================================= || Dec 96 Paul Harten Original Programmer || Dec 96 Joel Gales Modify to comform with coding standards || || END_PROLOG |-----------------------------------------------------------------------------*/intnPTgetlevelname(int32 pointID, int32 level, char *levelname, int32 * strbufsize){ intn status = 0; /* routine return status variable */ int32 fid; /* HDF-EOS file id */ int32 sdInterfaceID; /* HDF SDS interface ID */ int32 idOffset = PTIDOFFSET; /* Point ID offset */ int32 ptVgrpID; /* Point Vgroup ID */ int32 nlevels; /* Number of levels in point */ char name[VSNAMELENMAX]; /* Level name */ /* Check for valid point id */ /* ------------------------ */ status = PTchkptid(pointID, "PTgetlevelname", &fid, &sdInterfaceID, &ptVgrpID); if (status == 0) { /* Get number of levels */ /* -------------------- */ nlevels = PTnlevels(pointID); /* Report error if no levels (vdatas) defined */ /* ------------------------------------------ */ if (nlevels == 0) { status = -1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -