Exemplo n.º 1
0
void HDF5Dataset::DestroyH5Objects( HDF5GroupObjects *poH5Object )
{
    // Visit all objects.
    for( unsigned i = 0; i < poH5Object->nbObjs; i++ )
        DestroyH5Objects(poH5Object->poHchild + i);

    if( poH5Object->poHparent ==nullptr )
        return;

    // Erase some data.
    CPLFree(poH5Object->paDims);
    poH5Object->paDims = nullptr;

    CPLFree(poH5Object->pszPath);
    poH5Object->pszPath = nullptr;

    CPLFree(poH5Object->pszName);
    poH5Object->pszName = nullptr;

    CPLFree(poH5Object->pszUnderscorePath);
    poH5Object->pszUnderscorePath = nullptr;

    if( poH5Object->native > 0 )
        H5Tclose(poH5Object->native);
    poH5Object->native = 0;

    // All Children are visited and can be deleted.
    if( poH5Object->nbObjs != 0 )
    {
        CPLFree(poH5Object->poHchild);
        poH5Object->poHchild = nullptr;
    }
}
Exemplo n.º 2
0
HDF5Dataset::~HDF5Dataset()
{
    CSLDestroy( papszMetadata );
    if( hHDF5 > 0 )
	H5Fclose( hHDF5 );
    if( hGroupID > 0 )
	H5Gclose( hGroupID );
    CSLDestroy( papszSubDatasets );
    if( poH5RootGroup != NULL ){
	DestroyH5Objects( poH5RootGroup );
	CPLFree( poH5RootGroup->pszName );
	CPLFree( poH5RootGroup->pszPath );
	CPLFree( poH5RootGroup->pszUnderscorePath );
	CPLFree( poH5RootGroup->poHchild );
	CPLFree( poH5RootGroup );
    }
}
Exemplo n.º 3
0
void HDF5Dataset::DestroyH5Objects( HDF5GroupObjects *poH5Object )
{
    unsigned i;

/* -------------------------------------------------------------------- */
/*      Visit all objects                                               */
/* -------------------------------------------------------------------- */

    for( i=0; i < poH5Object->nbObjs; i++ )
        if( poH5Object->poHchild+i != NULL )
            DestroyH5Objects( poH5Object->poHchild+i );

    if( poH5Object->poHparent ==NULL )
        return;

/* -------------------------------------------------------------------- */
/*      Erase some data                                                 */
/* -------------------------------------------------------------------- */
    CPLFree( poH5Object->paDims );
    poH5Object->paDims = NULL;

    CPLFree( poH5Object->pszPath );
    poH5Object->pszPath = NULL;

    CPLFree( poH5Object->pszName );
    poH5Object->pszName = NULL;

    CPLFree( poH5Object->pszUnderscorePath );
    poH5Object->pszUnderscorePath = NULL;
    
    if( poH5Object->native > 0 )
        H5Tclose( poH5Object->native );
    poH5Object->native = 0;

/* -------------------------------------------------------------------- */
/*      All Children are visited and can be deleted.                    */
/* -------------------------------------------------------------------- */
    if( ( i==poH5Object->nbObjs ) && ( poH5Object->nbObjs!=0 ) ) {
        CPLFree( poH5Object->poHchild );
        poH5Object->poHchild = NULL;
    }

}