PostGIS  3.3.9dev-r@@SVN_REVISION@@

◆ lwt_RemoveIsoNode()

int lwt_RemoveIsoNode ( LWT_TOPOLOGY topo,
LWT_ELEMID  node 
)

Remove an isolated node.

For ST_RemoveIsoNode

Parameters
topothe topology to operate on
nodethe identifier of the node to be moved
Returns
0 on success, -1 on error (liblwgeom error handler will be invoked with error message)

Definition at line 3777 of file lwgeom_topo.c.

3778 {
3779  LWT_ISO_NODE *node;
3780  int n = 1;
3781 
3782  node = _lwt_GetIsoNode( topo, nid );
3783  if ( ! node ) return -1;
3784 
3785  n = lwt_be_deleteNodesById( topo, &nid, n );
3786  if ( n == -1 )
3787  {
3788  lwfree(node);
3789  lwerror("Backend error: %s", lwt_be_lastErrorMessage(topo->be_iface));
3790  return -1;
3791  }
3792  if ( n != 1 )
3793  {
3794  lwfree(node);
3795  lwerror("Unexpected error: %d nodes deleted when expecting 1", n);
3796  return -1;
3797  }
3798 
3799  if ( ! lwt_be_checkTopoGeomRemIsoNode(topo, nid) )
3800  {
3801  lwfree(node);
3803  return -1;
3804  }
3805 
3806  lwfree(node);
3807  return 0; /* success */
3808 }
void lwfree(void *mem)
Definition: lwutil.c:242
void lwerror(const char *fmt,...)
Write a notice out to the error handler.
Definition: lwutil.c:190
const char * lwt_be_lastErrorMessage(const LWT_BE_IFACE *be)
Definition: lwgeom_topo.c:119
static int lwt_be_deleteNodesById(const LWT_TOPOLOGY *topo, const LWT_ELEMID *ids, uint64_t numelems)
Definition: lwgeom_topo.c:208
static LWT_ISO_NODE * _lwt_GetIsoNode(LWT_TOPOLOGY *topo, LWT_ELEMID nid)
Definition: lwgeom_topo.c:3699
static int lwt_be_checkTopoGeomRemIsoNode(LWT_TOPOLOGY *topo, LWT_ELEMID node_id)
Definition: lwgeom_topo.c:356
const LWT_BE_IFACE * be_iface

References _lwt_GetIsoNode(), LWT_TOPOLOGY_T::be_iface, lwerror(), lwfree(), lwt_be_checkTopoGeomRemIsoNode(), lwt_be_deleteNodesById(), and lwt_be_lastErrorMessage().

Here is the call graph for this function: