GRASS GIS 8 Programmer's Manual  8.5.0dev(2024)-36359e2344
shpopen.c File Reference
#include "shapefil_private.h"
#include <assert.h>
#include <errno.h>
#include <limits.h>
#include <math.h>
#include <stdbool.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
Include dependency graph for shpopen.c:

Go to the source code of this file.

Macros

#define FALSE   0
 
#define TRUE   1
 
#define ByteCopy(a, b, c)   memcpy(b, a, c)
 
#define MIN(a, b)   ((a < b) ? a : b)
 
#define MAX(a, b)   ((a > b) ? a : b)
 

Functions

void SHPAPI_CALL SHPWriteHeader (SHPHandle psSHP)
 
SHPHandle SHPAPI_CALL SHPOpen (const char *pszLayer, const char *pszAccess)
 
SHPHandle SHPAPI_CALL SHPOpenLL (const char *pszLayer, const char *pszAccess, const SAHooks *psHooks)
 
SHPHandle SHPAPI_CALL SHPOpenLLEx (const char *pszLayer, const char *pszAccess, const SAHooks *psHooks, int bRestoreSHX)
 
int SHPAPI_CALL SHPRestoreSHX (const char *pszLayer, const char *pszAccess, const SAHooks *psHooks)
 
void SHPAPI_CALL SHPClose (SHPHandle psSHP)
 
void SHPAPI_CALL SHPSetFastModeReadObject (SHPHandle hSHP, int bFastMode)
 
void SHPAPI_CALL SHPGetInfo (const SHPHandle psSHP, int *pnEntities, int *pnShapeType, double *padfMinBound, double *padfMaxBound)
 
SHPHandle SHPAPI_CALL SHPCreate (const char *pszLayer, int nShapeType)
 
SHPHandle SHPAPI_CALL SHPCreateLL (const char *pszLayer, int nShapeType, const SAHooks *psHooks)
 
void SHPAPI_CALL SHPComputeExtents (SHPObject *psObject)
 
SHPObject SHPAPI_CALL1SHPCreateObject (int nSHPType, int nShapeId, int nParts, const int *panPartStart, const int *panPartType, int nVertices, const double *padfX, const double *padfY, const double *padfZ, const double *padfM){ SHPObject *psObject=STATIC_CAST(SHPObject *, calloc(1, sizeof(SHPObject))
 
 if (nSHPType==SHPT_ARCM||nSHPType==SHPT_POINTM||nSHPType==SHPT_POLYGONM||nSHPType==SHPT_MULTIPOINTM)
 
 if (nVertices > 0)
 
 SHPComputeExtents (psObject)
 
 return (psObject)
 
SHPObject SHPAPI_CALL1SHPCreateSimpleObject (int nSHPType, int nVertices, const double *padfX, const double *padfY, const double *padfZ){ return(SHPCreateObject(nSHPType, -1, 0, SHPLIB_NULLPTR, SHPLIB_NULLPTR, nVertices, padfX, padfY, padfZ, SHPLIB_NULLPTR)
 
int SHPAPI_CALL SHPWriteObject (SHPHandle psSHP, int nShapeId, const SHPObject *psObject)
 
SHPObject SHPAPI_CALL1SHPReadObject (const SHPHandle psSHP, int hEntity){ if(hEntity< 0||hEntity >=psSHP->nRecords) return SHPLIB_NULLPTR;if(psSHP->panRecOffset[hEntity]==0 &&psSHP->fpSHX !=SHPLIB_NULLPTR
 
 if (nEntitySize > psSHP->nBufSize)
 
 if (psSHP->pabyRec==SHPLIB_NULLPTR)
 
 if (psSHP->sHooks.FSeek(psSHP->fpSHP, psSHP->panRecOffset[hEntity], 0) !=0)
 
 if (nBytesRead >=8 &&nBytesRead==nEntitySize - 8)
 
else if (nBytesRead !=nEntitySize)
 
 if (8+4 > nEntitySize)
 
 if (psShape->nSHPType==SHPT_POLYGON||psShape->nSHPType==SHPT_ARC||psShape->nSHPType==SHPT_POLYGONZ||psShape->nSHPType==SHPT_POLYGONM||psShape->nSHPType==SHPT_ARCZ||psShape->nSHPType==SHPT_ARCM||psShape->nSHPType==SHPT_MULTIPATCH)
 
 return (psShape)
 
const char SHPAPI_CALL1SHPTypeName (int nSHPType){ switch(nSHPType
 
const char SHPAPI_CALL1SHPPartTypeName (int nPartType){ switch(nPartType
 
void SHPAPI_CALL SHPDestroyObject (SHPObject *psShape)
 
int SHPAPI_CALL SHPRewindObject (const SHPHandle hSHP, SHPObject *psObject)
 

Variables

psObject nSHPType = nSHPType
 
psObject nShapeId = nShapeId
 
psObject bMeasureIsUsed = FALSE
 
bool bHasM
 
bool bHasZ = false
 
 else
 
psObject nVertices = nVertices
 
const int nEntitySize = psSHP->panRecSize[hEntity] + 8
 
const int nBytesRead
 
SHPObjectpsShape
 
psShape bFastModeReadObject = psSHP->bFastModeReadObject
 

Macro Definition Documentation

◆ ByteCopy

#define ByteCopy (   a,
  b,
 
)    memcpy(b, a, c)

Definition at line 31 of file shpopen.c.

◆ FALSE

#define FALSE   0

Definition at line 27 of file shpopen.c.

◆ MAX

#define MAX (   a,
  b 
)    ((a > b) ? a : b)

Definition at line 34 of file shpopen.c.

◆ MIN

#define MIN (   a,
  b 
)    ((a < b) ? a : b)

Definition at line 33 of file shpopen.c.

◆ TRUE

#define TRUE   1

Definition at line 28 of file shpopen.c.

Function Documentation

◆ if() [1/9]

if ( 8+  4,
nEntitySize   
)

Definition at line 1978 of file shpopen.c.

References nEntitySize, and SHPLIB_NULLPTR.

◆ if() [2/9]

Definition at line 1962 of file shpopen.c.

References nEntitySize, and SHPLIB_NULLPTR.

◆ if() [3/9]

if ( nBytesRead >=8 &&  nBytesRead = nEntitySize - 8)

Definition at line 1942 of file shpopen.c.

References nBytesRead, SHP_SWAP32, and SHPLIB_NULLPTR.

◆ if() [4/9]

if ( nEntitySize  ,
psSHP->  nBufSize 
)

Definition at line 1843 of file shpopen.c.

References nEntitySize, SHPLIB_NULLPTR, and STATIC_CAST.

◆ if() [5/9]

Definition at line 1149 of file shpopen.c.

References bHasM, and bHasZ.

Referenced by SHPWriteObject().

◆ if() [6/9]

◆ if() [7/9]

◆ if() [8/9]

if ( psSHP->  pabyRec = SHPLIB_NULLPTR)

Definition at line 1906 of file shpopen.c.

References SHPLIB_NULLPTR.

◆ if() [9/9]

if ( psSHP->sHooks.FSeek(psSHP->fpSHP, psSHP->panRecOffset[hEntity], 0) !  = 0)

Definition at line 1913 of file shpopen.c.

References SHPLIB_NULLPTR.

◆ return() [1/2]

return ( psObject  )

◆ return() [2/2]

return ( psShape  )

◆ SHPClose()

◆ SHPComputeExtents() [1/2]

SHPComputeExtents ( psObject  )

◆ SHPComputeExtents() [2/2]

◆ SHPCreate()

SHPHandle SHPAPI_CALL SHPCreate ( const char *  pszLayer,
int  nShapeType 
)

Definition at line 914 of file shpopen.c.

References SASetupDefaultHooks(), and SHPCreateLL().

◆ SHPCreateLL()

SHPHandle SHPAPI_CALL SHPCreateLL ( const char *  pszLayer,
int  nShapeType,
const SAHooks psHooks 
)

Definition at line 930 of file shpopen.c.

Referenced by SHPCreate().

◆ SHPCreateObject()

SHPObject SHPAPI_CALL1* SHPCreateObject ( int  nSHPType,
int  nShapeId,
int  nParts,
const int *  panPartStart,
const int *  panPartType,
int  nVertices,
const double *  padfX,
const double *  padfY,
const double *  padfZ,
const double *  padfM 
)

References STATIC_CAST.

Referenced by SHPCreateSimpleObject().

◆ SHPCreateSimpleObject()

SHPObject SHPAPI_CALL1* SHPCreateSimpleObject ( int  nSHPType,
int  nVertices,
const double *  padfX,
const double *  padfY,
const double *  padfZ 
)

◆ SHPDestroyObject()

◆ SHPGetInfo()

void SHPAPI_CALL SHPGetInfo ( const SHPHandle  psSHP,
int *  pnEntities,
int *  pnShapeType,
double *  padfMinBound,
double *  padfMaxBound 
)

◆ SHPOpen()

SHPHandle SHPAPI_CALL SHPOpen ( const char *  pszLayer,
const char *  pszAccess 
)

Definition at line 213 of file shpopen.c.

References SASetupDefaultHooks(), and SHPOpenLL().

◆ SHPOpenLL()

SHPHandle SHPAPI_CALL SHPOpenLL ( const char *  pszLayer,
const char *  pszAccess,
const SAHooks psHooks 
)

Definition at line 245 of file shpopen.c.

References SHPInfo::bUpdated, FALSE, SHPInfo::sHooks, SHPLIB_NULLPTR, and STATIC_CAST.

Referenced by SHPOpen(), and SHPOpenLLEx().

◆ SHPOpenLLEx()

SHPHandle SHPAPI_CALL SHPOpenLLEx ( const char *  pszLayer,
const char *  pszAccess,
const SAHooks psHooks,
int  bRestoreSHX 
)

Definition at line 586 of file shpopen.c.

References SHPLIB_NULLPTR, SHPOpenLL(), and SHPRestoreSHX().

◆ SHPPartTypeName()

const char SHPAPI_CALL1* SHPPartTypeName ( int  nPartType)

◆ SHPReadObject()

SHPObject SHPAPI_CALL1* SHPReadObject ( const SHPHandle  psSHP,
int  hEntity 
)

Definition at line 1785 of file shpopen.c.

References SHP_SWAP32, SHPLIB_NULLPTR, and STATIC_CAST.

◆ SHPRestoreSHX()

int SHPAPI_CALL SHPRestoreSHX ( const char *  pszLayer,
const char *  pszAccess,
const SAHooks psHooks 
)

Definition at line 607 of file shpopen.c.

Referenced by SHPOpenLLEx().

◆ SHPRewindObject()

◆ SHPSetFastModeReadObject()

void SHPAPI_CALL SHPSetFastModeReadObject ( SHPHandle  hSHP,
int  bFastMode 
)

◆ SHPTypeName()

◆ SHPWriteHeader()

◆ SHPWriteObject()

Variable Documentation

◆ bFastModeReadObject

psShape bFastModeReadObject = psSHP->bFastModeReadObject

Definition at line 2014 of file shpopen.c.

◆ bHasM

bool bHasM

Definition at line 1146 of file shpopen.c.

Referenced by if().

◆ bHasZ

bHasZ = false

Definition at line 1147 of file shpopen.c.

Referenced by if().

◆ bMeasureIsUsed

psShape bMeasureIsUsed = FALSE

Definition at line 1141 of file shpopen.c.

◆ else

else
Initial value:
{
bHasM = false
bool bHasM
Definition: shpopen.c:1146

Definition at line 1160 of file shpopen.c.

◆ nBytesRead

const int nBytesRead
Initial value:
int, psSHP->sHooks.FRead(psSHP->pabyRec, 1, nEntitySize, psSHP->fpSHP))
#define STATIC_CAST(type, x)
const int nEntitySize
Definition: shpopen.c:1842

Definition at line 1929 of file shpopen.c.

Referenced by if().

◆ nEntitySize

const int nEntitySize = psSHP->panRecSize[hEntity] + 8

Definition at line 1842 of file shpopen.c.

Referenced by if().

◆ nShapeId

psShape nShapeId = nShapeId

Definition at line 1140 of file shpopen.c.

Referenced by SHPWriteObject().

◆ nSHPType

psShape nSHPType = nSHPType

Definition at line 1139 of file shpopen.c.

Referenced by SHPCreateSimpleObject(), and SHPTypeName().

◆ nVertices

psObject nVertices = nVertices

Definition at line 1228 of file shpopen.c.

Referenced by if(), and SHPCreateSimpleObject().

◆ psShape

SHPObject* psShape

Definition at line 1997 of file shpopen.c.

Referenced by if(), and SHPDestroyObject().