⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ehapi.c

📁 GIS系统支持库Geospatial Data Abstraction Library代码.GDAL is a translator library for raster geospatial dat
💻 C
📖 第 1 页 / 共 5 页
字号:
|  FUNCTION: EHstrwithin                                                      ||                                                                             ||  DESCRIPTION: Searchs for string within target string                       ||                                                                             ||                                                                             ||  Return Value    Type     Units     Description                             ||  ============   ======  =========   =====================================   ||  indx           int32               Element index (0 - based)               ||                                                                             ||  INPUTS:                                                                    ||  target         char                Target string                           ||  search         char                Search string                           ||  delim          char                Delimitor                               ||                                                                             ||  OUTPUTS:                                                                   ||             None                                                            ||                                                                             ||  NOTES:                                                                     ||                                                                             ||                                                                             ||   Date     Programmer   Description                                         ||  ======   ============  =================================================   ||  Jun 96   Joel Gales    Original Programmer                                 ||  Jan 97   Joel Gales    Change ptr & slen to dynamic arrays                 ||                                                                             ||  END_PROLOG                                                                 |-----------------------------------------------------------------------------*/int32EHstrwithin(char *target, char *search, char delim){    intn            found = 0;	/* Target string found flag */    int32           indx;	/* Loop index */    int32           nentries;	/* Number of entries in search string */    int32          *slen;	/* Pointer to string length array */    char          **ptr;	/* Pointer to string pointer array */    char            buffer[128];/* Buffer to hold "test" string entry */    /* Count number of entries in search string list */    /* --------------------------------------------- */    nentries = EHparsestr(search, delim, NULL, NULL);    /* Allocate string pointer and length arrays */    /* ----------------------------------------- */    ptr = (char **) calloc(nentries, sizeof(char *));    if(ptr == NULL)    { 	HEpush(DFE_NOSPACE,"EHstrwithin", __FILE__, __LINE__);	return(-1);    }    slen = (int32 *) calloc(nentries, sizeof(int32));    if(slen == NULL)    { 	HEpush(DFE_NOSPACE,"EHstrwithin", __FILE__, __LINE__);	free(ptr);	return(-1);    }    /* Parse search string */    /* ------------------- */    nentries = EHparsestr(search, delim, ptr, slen);    /* Loop through all elements in search string list */    /* ----------------------------------------------- */    for (indx = 0; indx < nentries; indx++)    {	/* Copy string entry into buffer */	/* ----------------------------- */	memcpy(buffer, ptr[indx], slen[indx]);	buffer[slen[indx]] = 0;	/* Compare target string with string entry */	/* --------------------------------------- */	if (strcmp(target, buffer) == 0)	{	    found = 1;	    break;	}    }    /* If not found set return to -1 */    /* ----------------------------- */    if (found == 0)    {	indx = -1;    }    free(slen);    free(ptr);    return (indx);}/*----------------------------------------------------------------------------||  BEGIN_PROLOG                                                               ||                                                                             ||  FUNCTION: EHloadliststr                                                    ||                                                                             ||  DESCRIPTION: Builds list string from string array                          ||                                                                             ||                                                                             ||  Return Value    Type     Units     Description                             ||  ============   ======  =========   =====================================   ||  status         intn                return status (0) SUCCEED, (-1) FAIL    ||                                                                             ||  INPUTS:                                                                    ||  ptr            char                String pointer array                    ||  nentries       int32               Number of string array elements         ||  delim          char                Delimitor                               ||                                                                             ||  OUTPUTS:                                                                   ||  liststr        char                Output list string                      ||                                                                             ||  NOTES:                                                                     ||                                                                             ||                                                                             ||   Date     Programmer   Description                                         ||  ======   ============  =================================================   ||  Jun 96   Joel Gales    Original Programmer                                 ||                                                                             ||  END_PROLOG                                                                 |-----------------------------------------------------------------------------*/intnEHloadliststr(char *ptr[], int32 nentries, char *liststr, char delim){    intn            status = 0;	/* routine return status variable */    int32           i;		/* Loop index */    int32           slen;	/* String entry length */    int32           off = 0;	/* Position of next entry along string list */    char            dstr[2];    /* string version of input variable "delim" */    dstr[0] = delim;    dstr[1] = '\0';    /* Loop through all entries in string array */    /* ---------------------------------------- */    for (i = 0; i < nentries; i++)    {	/* Get string length of string array entry */	/* --------------------------------------- */	slen = strlen(ptr[i]);	/* Copy string entry to string list */	/* -------------------------------- */	memcpy(liststr + off, ptr[i], slen + 1);	/* Concatenate with delimitor */	/* -------------------------- */	if (i != nentries - 1)	{	    strcat(liststr, dstr);	}	/* Get position of next entry for string list */	/* ------------------------------------------ */	off += slen + 1;    }    return (status);}/*----------------------------------------------------------------------------||  BEGIN_PROLOG                                                               ||                                                                             ||  FUNCTION: EHgetid                                                          ||                                                                             ||  DESCRIPTION: Get Vgroup/Vdata ID from name                                 ||                                                                             ||                                                                             ||  Return Value    Type     Units     Description                             ||  ============   ======  =========   =====================================   ||  outID          int32               Output ID                               ||                                                                             ||  INPUTS:                                                                    ||  fid            int32               HDF-EOS file ID                         ||  vgid           int32               Vgroup ID                               ||  objectname     char                object name                             ||  code           intn                object code (0 - Vgroup, 1 - Vdata)     ||  access         char                access ("w/r")                          ||                                                                             ||                                                                             ||  OUTPUTS:                                                                   ||             None                                                            ||                                                                             ||  NOTES:                                                                     ||                                                                             ||                                                                             ||   Date     Programmer   Description                                         ||  ======   ============  =================================================   ||  Jun 96   Joel Gales    Original Programmer                                 ||                                                                             ||  END_PROLOG                                                                 |-----------------------------------------------------------------------------*/int32EHgetid(int32 fid, int32 vgid, char *objectname, intn code, char *access){    intn            i;		/* Loop index */    int32           nObjects;	/* # of objects in Vgroup */    int32          *tags;	/* Pnt to Vgroup object tags array */    int32          *refs;	/* Pnt to Vgroup object refs array */    int32           id;		/* Object ID */    int32           outID = -1;	/* Desired object ID */    char            name[128];	/* Object name */    /* Get Number of objects */    /* --------------------- */    nObjects = Vntagrefs(vgid);    /* If objects exist ... */    /* -------------------- */    if (nObjects != 0)    {	/* Get tags and references of objects */	/* ---------------------------------- */	tags = (int32 *) malloc(sizeof(int32) * nObjects);	if(tags == NULL)	{ 	    HEpush(DFE_NOSPACE,"EHgetid", __FILE__, __LINE__);	    return(-1);	}	refs = (int32 *) malloc(sizeof(int32) * nObjects);	if(refs == NULL)	{ 	    HEpush(DFE_NOSPACE,"EHgetid", __FILE__, __LINE__);	    free(tags);	    return(-1);	}	Vgettagrefs(vgid, tags, refs, nObjects);	/* Vgroup ID Section */	/* ----------------- */	if (code == 0)	{	    /* Loop through objects */	    /* -------------------- */	    for (i = 0; i < nObjects; i++)	    {		/* If object is Vgroup ... */		/* ----------------------- */		if (*(tags + i) == DFTAG_VG)		{		    /* Get ID and name */		    /* --------------- */		    id = Vattach(fid, *(refs + i), access);		    Vgetname(id, name);		    /* If name equals desired object name get ID */		    /* ----------------------------------------- */		    if (strcmp(name, objectname) == 0)		    {			outID = id;			break;		    }		    /* If not desired object then detach */		    /* --------------------------------- */		    Vdetach(id);		}	    }	} else if (code == 1)	{	    /* Loop through objects */	    /* -------------------- */	    for (i = 0; i < nObjects; i++)	    {		/* If object is Vdata ... */		/* ---------------------- */		if (*(tags + i) == DFTAG_VH)		{		    /* Get ID and name */		    /* --------------- */		    id = VSattach(fid, *(refs + i), access);		    VSgetname(id, name);		    /* If name equals desired object name get ID */		    /* ----------------------------------------- */		    if (EHstrwithin(objectname, name, ',') != -1)		    {			outID = id;			break;		    }		    /* If not desired object then detach */		    /* --------------------------------- */		    VSdetach(id);		}	    }	}	free(tags);	free(refs);    }    return (outID);}/*----------------------------------------------------------------------------||  BEGIN_PROLOG                                                               ||                                                                             ||  FUNCTION: EHrevflds                                                        ||                                                                             ||  DESCRIPTION: Reverses elements in a string list                            |

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -