GRASS GIS 7 Programmer's Manual  7.2.0(2016)-exported
shpopen.c File Reference
#include <grass/shapefil.h>
#include <math.h>
#include <limits.h>
#include <assert.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.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)
 

Typedefs

typedef unsigned char uchar
 
typedef int int32
 

Functions

void SHPWriteHeader (SHPHandle psSHP)
 
SHPHandle SHPAPI_CALL SHPOpen (const char *pszLayer, const char *pszAccess)
 
SHPHandle SHPAPI_CALL SHPOpenLL (const char *pszLayer, const char *pszAccess, SAHooks *psHooks)
 
void SHPAPI_CALL SHPClose (SHPHandle psSHP)
 
void SHPAPI_CALL SHPGetInfo (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, 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;int i, bHasM, bHasZ;psObject=(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, NULL, NULL, nVertices, padfX, padfY, padfZ, NULL)
 
int SHPAPI_CALL SHPWriteObject (SHPHandle psSHP, int nShapeId, SHPObject *psObject)
 
SHPObject SHPAPI_CALL1SHPReadObject (SHPHandle psSHP, int hEntity){ int nEntitySize, nRequiredSize;SHPObject *psShape;char pszErrorMsg[128];if(hEntity< 0||hEntity >=psSHP->nRecords) return(NULL
 
 if (nEntitySize > psSHP->nBufSize)
 
 if (psSHP->pabyRec==NULL)
 
 if (psSHP->sHooks.FSeek(psSHP->fpSHP, psSHP->panRecOffset[hEntity], 0) !=0||psSHP->sHooks.FRead(psSHP->pabyRec, nEntitySize, 1, psSHP->fpSHP) !=1)
 
 if (8+4 > nEntitySize)
 
 if (bBigEndian)
 
else if (psShape->nSHPType==SHPT_MULTIPOINT||psShape->nSHPType==SHPT_MULTIPOINTM||psShape->nSHPType==SHPT_MULTIPOINTZ)
 
 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 (SHPHandle hSHP, SHPObject *psObject)
 

Variables

psObject nSHPType = nSHPType
 
psObject nShapeId = nShapeId
 
psObject bMeasureIsUsed = FALSE
 
 else
 
 bHasZ = FALSE
 
psObject nVertices = nVertices
 
 nEntitySize = psSHP->panRecSize[hEntity]+8
 
 psShape = (SHPObject *) calloc(1,sizeof(SHPObject))
 

Macro Definition Documentation

◆ ByteCopy

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

Definition at line 249 of file shpopen.c.

Referenced by SHPCreateLL(), and SHPWriteHeader().

◆ FALSE

#define FALSE   0

Definition at line 245 of file shpopen.c.

Referenced by if(), SHPCreateLL(), SHPOpenLL(), and SHPRewindObject().

◆ MAX

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

Definition at line 252 of file shpopen.c.

Referenced by SHPComputeExtents().

◆ MIN

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

Definition at line 251 of file shpopen.c.

Referenced by SHPComputeExtents().

◆ TRUE

#define TRUE   1

Definition at line 246 of file shpopen.c.

Referenced by if(), SHPCreateLL(), SHPOpenLL(), and SHPWriteObject().

Typedef Documentation

◆ int32

typedef int int32

Definition at line 241 of file shpopen.c.

◆ uchar

typedef unsigned char uchar

Definition at line 236 of file shpopen.c.

Function Documentation

◆ if() [1/8]

◆ if() [2/8]

◆ if() [3/8]

if ( nEntitySize  ,
psSHP->  nBufSize 
)

Definition at line 1521 of file shpopen.c.

References SHPInfo::pabyRec.

◆ if() [4/8]

if ( psSHP->  pabyRec = NULL)

Definition at line 1543 of file shpopen.c.

References NULL.

◆ if() [5/8]

if ( psSHP->sHooks.FSeek(psSHP->fpSHP, psSHP->panRecOffset[hEntity], 0) !  = 0 || psSHP->sHooks.FRead( psSHP->pabyRec, nEntitySize, 1,                   psSHP->fpSHP ) != 1)

Definition at line 1551 of file shpopen.c.

References SAHooks::Error, NULL, and SHPInfo::sHooks.

◆ if() [6/8]

if ( 8+  4,
nEntitySize   
)

◆ if() [7/8]

if ( bBigEndian  )

Definition at line 1581 of file shpopen.c.

◆ if() [8/8]

◆ return() [1/2]

return ( psObject  )

◆ return() [2/2]

return ( psShape  )

◆ SHPClose()

◆ SHPComputeExtents() [1/2]

◆ SHPComputeExtents() [2/2]

SHPComputeExtents ( psObject  )

◆ SHPCreate()

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

Definition at line 789 of file shpopen.c.

References SASetupDefaultHooks(), SHPAPI_CALL, and SHPCreateLL().

◆ SHPCreateLL()

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

Definition at line 807 of file shpopen.c.

References ByteCopy, SAHooks::Error, FALSE, SAHooks::FOpen, NULL, and TRUE.

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 
)

Referenced by SHPComputeExtents().

◆ SHPCreateSimpleObject()

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

◆ SHPDestroyObject()

void SHPAPI_CALL SHPDestroyObject ( SHPObject psShape)

◆ SHPGetInfo()

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

◆ SHPOpen()

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

Definition at line 426 of file shpopen.c.

References SASetupDefaultHooks(), SHPAPI_CALL, and SHPOpenLL().

◆ SHPOpenLL()

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

◆ SHPPartTypeName()

const char SHPAPI_CALL1* SHPPartTypeName ( int  nPartType)

◆ SHPReadObject()

SHPObject SHPAPI_CALL1* SHPReadObject ( SHPHandle  psSHP,
int  hEntity 
) -> nRecords) return(NULL

◆ SHPRewindObject()

◆ SHPTypeName()

◆ SHPWriteHeader()

void SHPWriteHeader ( SHPHandle  psSHP)

Definition at line 301 of file shpopen.c.

References ByteCopy, SAHooks::Error, SHPInfo::fpSHX, SHPInfo::nFileSize, NULL, and SHPInfo::sHooks.

Referenced by SHPClose().

◆ SHPWriteObject()

int SHPAPI_CALL SHPWriteObject ( SHPHandle  psSHP,
int  nShapeId,
SHPObject psObject 
)

Variable Documentation

◆ bHasZ

bHasZ = FALSE

Definition at line 1032 of file shpopen.c.

Referenced by SHPComputeExtents().

◆ bMeasureIsUsed

psShape bMeasureIsUsed = FALSE

Definition at line 1007 of file shpopen.c.

◆ else

else
Initial value:
{
bHasM = FALSE
#define FALSE
Definition: shpopen.c:245

Definition at line 1030 of file shpopen.c.

◆ nEntitySize

nEntitySize = psSHP->panRecSize[hEntity]+8

Definition at line 1520 of file shpopen.c.

◆ nShapeId

psShape nShapeId = nShapeId

Definition at line 1006 of file shpopen.c.

Referenced by SHPComputeExtents().

◆ nSHPType

psObject nSHPType = nSHPType

Definition at line 1005 of file shpopen.c.

Referenced by SHPComputeExtents().

◆ nVertices

psObject nVertices = nVertices

Definition at line 1098 of file shpopen.c.

Referenced by if(), and SHPComputeExtents().

◆ psShape

memcpy & psShape = (SHPObject *) calloc(1,sizeof(SHPObject))

Definition at line 1567 of file shpopen.c.