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

📄 ehapi.c

📁 GIS系统支持库Geospatial Data Abstraction Library代码.GDAL is a translator library for raster geospatial dat
💻 C
📖 第 1 页 / 共 5 页
字号:
|                                                                             ||                                                                             ||  Return Value    Type     Units     Description                             ||  ============   ======  =========   =====================================   ||  status         intn                return status (0) SUCCEED, (-1) FAIL    ||                                                                             ||  INPUTS:                                                                    ||  dimlist        char                Original dimension list                 ||                                                                             ||  OUTPUTS:                                                                   ||  revdimlist     char                Reversed dimension list                 ||                                                                             ||  NOTES:                                                                     ||                                                                             ||                                                                             ||   Date     Programmer   Description                                         ||  ======   ============  =================================================   ||  Jun 96   Joel Gales    Original Programmer                                 ||                                                                             ||  END_PROLOG                                                                 |-----------------------------------------------------------------------------*/intnEHrevflds(char *dimlist, char *revdimlist){    intn            status = 0;	/* routine return status variable */    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           *tempPtr;	/* Temporary string pointer */    char           *tempdimlist;/* Temporary dimension list */    /* Copy dimlist into temp dimlist */    /* ------------------------------ */    tempdimlist = (char *) malloc(strlen(dimlist) + 1);    if(tempdimlist == NULL)    { 	HEpush(DFE_NOSPACE,"EHrevflds", __FILE__, __LINE__);	return(-1);    }    strcpy(tempdimlist, dimlist);    /* Count number of entries in search string list */    /* --------------------------------------------- */    nentries = EHparsestr(tempdimlist, ',', NULL, NULL);    /* Allocate string pointer and length arrays */    /* ----------------------------------------- */    ptr = (char **) calloc(nentries, sizeof(char *));    if(ptr == NULL)    { 	HEpush(DFE_NOSPACE,"EHrevflds", __FILE__, __LINE__);	free(tempdimlist);	return(-1);    }    slen = (int32 *) calloc(nentries, sizeof(int32));    if(slen == NULL)    { 	HEpush(DFE_NOSPACE,"EHrevflds", __FILE__, __LINE__);	free(ptr);	free(tempdimlist);	return(-1);    }    /* Parse search string */    /* ------------------- */    nentries = EHparsestr(tempdimlist, ',', ptr, slen);    /* Reverse entries in string pointer array */    /* --------------------------------------- */    for (indx = 0; indx < nentries / 2; indx++)    {	tempPtr = ptr[indx];	ptr[indx] = ptr[nentries - 1 - indx];	ptr[nentries - 1 - indx] = tempPtr;    }    /* Replace comma delimitors by nulls */    /* --------------------------------- */    for (indx = 0; indx < nentries - 1; indx++)    {	*(ptr[indx] - 1) = 0;    }    /* Build new string list */    /* --------------------- */    status = EHloadliststr(ptr, nentries, revdimlist, ',');    free(slen);    free(ptr);    free(tempdimlist);    return (status);}/*----------------------------------------------------------------------------||  BEGIN_PROLOG                                                               ||                                                                             ||  FUNCTION: EHcntOBJECT                                                      ||                                                                             ||  DESCRIPTION: Determines number of OBJECTs in metadata GROUP                ||                                                                             ||                                                                             ||  Return Value    Type     Units     Description                             ||  ============   ======  =========   =====================================   ||  count          int32               Number of OBJECTs in GROUP              ||                                                                             ||  INPUTS:                                                                    ||  metabur        char                Begin & end metadata pointer array      ||                                                                             ||  OUTPUTS:                                                                   ||             None                                                            ||                                                                             ||  NOTES:                                                                     ||                                                                             ||                                                                             ||   Date     Programmer   Description                                         ||  ======   ============  =================================================   ||  Sep 96   Joel Gales    Original Programmer                                 ||                                                                             ||  END_PROLOG                                                                 |-----------------------------------------------------------------------------*/int32EHcntOBJECT(char *metabuf[]){    int32           count = 0;	/* Counter */    char           *metaptr;	/* Beginning of metadata section */    char           *endptr;	/* End of metadata section */    char           *tempptr;	/* Pointer within metadata section */    /* Get Pointers to beginning and ending of metadata section */    /* -------------------------------------------------------- */    metaptr = metabuf[0];    endptr = metabuf[1];    /* Find number of "END_OBJECT" strings within section */    /* -------------------------------------------------- */    tempptr = metaptr;    while (tempptr < endptr && tempptr != NULL)    {	tempptr = strstr(tempptr + 1, "END_OBJECT");	count++;    }    count--;    return (count);}/*----------------------------------------------------------------------------||  BEGIN_PROLOG                                                               ||                                                                             ||  FUNCTION: EHcntGROUP                                                       ||                                                                             ||  DESCRIPTION: Determines number of GROUPs in metadata GROUP                 ||                                                                             ||                                                                             ||  Return Value    Type     Units     Description                             ||  ============   ======  =========   =====================================   ||  count          int32               Number of GROUPs in GROUP               ||                                                                             ||  INPUTS:                                                                    ||  metabur        char                Begin & end metadata pointer array      ||                                                                             ||  OUTPUTS:                                                                   ||             None                                                            ||                                                                             ||  NOTES:                                                                     ||                                                                             ||                                                                             ||   Date     Programmer   Description                                         ||  ======   ============  =================================================   ||  Sep 96   Joel Gales    Original Programmer                                 ||                                                                             ||  END_PROLOG                                                                 |-----------------------------------------------------------------------------*/int32EHcntGROUP(char *metabuf[]){    int32           count = 0;	/* Counter */    char           *metaptr;	/* Beginning of metadata section */    char           *endptr;	/* End of metadata section */    char           *tempptr;	/* Pointer within metadata section */    /* Get Pointers to beginning and ending of metadata section */    /* -------------------------------------------------------- */    metaptr = metabuf[0];    endptr = metabuf[1];    /* Find number of "END_GROUP" strings within section */    /* ------------------------------------------------- */    tempptr = metaptr;    while (tempptr < endptr && tempptr != NULL)    {	tempptr = strstr(tempptr + 1, "END_GROUP");	count++;    }    count--;    return (count);}/*----------------------------------------------------------------------------||  BEGIN_PROLOG                                                               ||                                                                             ||  FUNCTION: EHmetalist                                                       ||                                                                             ||  DESCRIPTION: Converts string list to metadata list                         ||                                                                             ||                                                                             ||  Return Value    Type     Units     Description                             ||  ============   ======  =========   =====================================   ||  status         intn                return status (0) SUCCEED, (-1) FAIL    ||                                                                             ||  INPUTS:                                                                    ||  instring       char                Input string list                       ||                                                                             ||  OUTPUTS:                                                                   ||  outstring      char                Output metadata string                  ||                                                                             ||  NOTES:                                                                     ||                                                                             ||                                                                             ||   Date     Programmer   Description                                         ||  ======   ============  =================================================   ||  Jun 96   Joel Gales    Original Programmer                                 ||                                                                             ||  END_PROLOG                                                                 |-----------------------------------------------------------------------------*/intnEHmetalist(char *instring, char *outstring){    intn            i;		/* Loop index */    intn            status = 0;	/* routine return status variable */    int32           nentries;	/* Number of entries in search string */    int32           listlen = 1;/* String list length */    int32          *slen;	/* Pointer to string length array */    char          **ptr;	/* Pointer to string pointer array */    /* Count number of entries in search string list */    /* --------------------------------------------- */    nentries = EHparsestr(instring, ',', NULL, NULL);    /* Allocate string pointer and length arrays */    /* ----------------------------------------- */    ptr = (char **) calloc(nentries, sizeof(char *));    if(ptr == NULL)    { 	HEpush(DFE_NOSPACE,"EHmetalist", __FILE__, __LINE__);	return(-1);    }    slen = (int32 *) calloc(nentries, sizeof(int32));    if(slen == NULL)    { 	HEpush(DFE_NOSPACE,"EHmetalist", __FILE__, __LINE__);	free(ptr);	return(-1);    }    /* Parse input string */    /* ------------------ */    nentries = EHparsestr(instring, ',', ptr, slen);    /* Start output string with leading "(" */    /* ------------------------------------ */    strcpy(outstring, "(");    /* Loop through all entries */    /* ------------------------ */    for (i = 0; i < nentries; i++)    {	/* Add double quote (") to output string */	/* ------------------------------------- */	strcat(outstring, "\"");	listlen++;	/* Add input string entry to output string */	/* --------------------------------------- */	memcpy(outstring + listlen, ptr[i], slen[i]);	listlen += slen[i];	outstring[listlen] = 0;	/* Add closing double quote (") to output string */	/* --------------------------------------------- */	strcat(outstring, "\"");	listlen++;	outstring[listlen] = 0;	/* Add comma delimitor to output string */	/* ------------------------------------ */	if (i != (nentries - 1))	{	    strcat(outstring, ",");	    listlen++;	}	/*

⌨️ 快捷键说明

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