hdf5/test/null_vfd_plugin.c

168 lines
5.1 KiB
C
Raw Permalink Normal View History

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Copyright by The HDF Group. *
* All rights reserved. *
* *
* This file is part of HDF5. The full HDF5 copyright notice, including *
* terms governing use, modification, and redistribution, is contained in *
* the COPYING file, which can be found at the root of the source code *
* distribution tree, or in https://www.hdfgroup.org/licenses. *
* If you do not have access to either file, you may request a copy from *
* help@hdfgroup.org. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/* Purpose: A simple Virtual File Driver (VFD) with almost no functionality
* that is used for testing basic VFD plugin handling (registration, etc.).
*/
/* Public HDF5 headers */
#include "hdf5.h"
/* For HDF5 plugin functionality */
#include "H5PLextern.h"
/* This driver's header */
#include "null_vfd_plugin.h"
/* Prototypes */
static H5FD_t *H5FD_null_open(const char *name, unsigned flags, hid_t fapl_id, haddr_t maxaddr);
static herr_t H5FD_null_close(H5FD_t *_file);
static herr_t H5FD_null_read(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, size_t size,
void *buf);
static herr_t H5FD_null_write(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, size_t size,
const void *buf);
static haddr_t H5FD_null_get_eoa(const H5FD_t *_file, H5FD_mem_t type);
static herr_t H5FD_null_set_eoa(H5FD_t *_file, H5FD_mem_t type, haddr_t addr);
static haddr_t H5FD_null_get_eof(const H5FD_t *_file, H5FD_mem_t type);
static const H5FD_class_t H5FD_null_g = {
H5FD_CLASS_VERSION, /* struct version */
NULL_VFD_VALUE, /* value */
NULL_VFD_NAME, /* name */
1, /* maxaddr */
H5F_CLOSE_WEAK, /* fc_degree */
NULL, /* terminate */
NULL, /* sb_size */
NULL, /* sb_encode */
NULL, /* sb_decode */
0, /* fapl_size */
NULL, /* fapl_get */
NULL, /* fapl_copy */
NULL, /* fapl_free */
0, /* dxpl_size */
NULL, /* dxpl_copy */
NULL, /* dxpl_free */
H5FD_null_open, /* open */
H5FD_null_close, /* close */
NULL, /* cmp */
NULL, /* query */
NULL, /* get_type_map */
NULL, /* alloc */
NULL, /* free */
H5FD_null_get_eoa, /* get_eoa */
H5FD_null_set_eoa, /* set_eoa */
H5FD_null_get_eof, /* get_eof */
NULL, /* get_handle */
H5FD_null_read, /* read */
H5FD_null_write, /* write */
NULL, /* read_vector */
NULL, /* write_vector */
NULL, /* read_selection */
NULL, /* write_selection */
NULL, /* flush */
NULL, /* truncate */
NULL, /* lock */
NULL, /* unlock */
NULL, /* del */
NULL, /* ctl */
H5FD_FLMAP_DICHOTOMY /* fl_map */
};
static H5FD_t *
H5FD_null_open(const char *name, unsigned flags, hid_t fapl_id, haddr_t maxaddr)
{
(void)name;
(void)flags;
(void)fapl_id;
(void)maxaddr;
return NULL;
}
static herr_t
H5FD_null_close(H5FD_t *_file)
{
(void)_file;
return 0;
}
static herr_t
H5FD_null_read(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, size_t size, void *buf)
{
(void)_file;
(void)type;
(void)dxpl_id;
(void)addr;
(void)size;
(void)buf;
return 0;
}
static herr_t
H5FD_null_write(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, size_t size, const void *buf)
{
(void)_file;
(void)type;
(void)dxpl_id;
(void)addr;
(void)size;
(void)buf;
return 0;
}
static haddr_t
H5FD_null_get_eoa(const H5FD_t *_file, H5FD_mem_t type)
{
(void)_file;
(void)type;
return HADDR_UNDEF;
}
static herr_t
H5FD_null_set_eoa(H5FD_t *_file, H5FD_mem_t type, haddr_t addr)
{
(void)_file;
(void)type;
(void)addr;
return 0;
}
static haddr_t
H5FD_null_get_eof(const H5FD_t *_file, H5FD_mem_t type)
{
(void)_file;
(void)type;
return HADDR_UNDEF;
}
/* These two functions are necessary to load this plugin using
* the HDF5 library.
*/
H5PL_type_t
H5PLget_plugin_type(void)
{
return H5PL_TYPE_VFD;
}
const void *
H5PLget_plugin_info(void)
{
return &H5FD_null_g;
}