123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219 |
- /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * Copyright by The HDF Group. *
- * Copyright by the Board of Trustees of the University of Illinois. *
- * 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. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
- /* Packet Table wrapper classes
- *
- * Wraps the H5PT Packet Table C functions in C++ objects
- *
- * Nat Furrer and James Laird
- * February 2004
- */
- #ifndef H5PTWRAP_H
- #define H5PTWRAP_H
- /* Public HDF5 header */
- #include "hdf5.h"
- #include "H5PTpublic.h"
- #include "H5api_adpt.h"
- class H5_HLCPPDLL PacketTable {
- public:
- /* Null constructor
- * Sets table_id to H5I_INVALID_HID
- */
- PacketTable();
- /* "Open" Constructor
- * Opens an existing packet table, which can contain either fixed-length or
- * variable-length packets.
- */
- PacketTable(hid_t fileID, const char *name);
- /* "Open" Constructor - will be deprecated because of char* name */
- PacketTable(hid_t fileID, char *name);
- /* Destructor
- * Cleans up the packet table
- */
- virtual ~PacketTable();
- /* IsValid
- * Returns true if this packet table is valid, false otherwise.
- * Use this after the constructor to ensure HDF did not have
- * any trouble making or opening the packet table.
- */
- bool IsValid() const;
- /* IsVariableLength
- * Return 1 if this packet table uses variable-length datatype,
- * return 0 if it is Fixed Length. Returns -1 if the table is
- * invalid (not open).
- */
- int IsVariableLength() const;
- /* ResetIndex
- * Sets the "current packet" index to point to the first packet in the
- * packet table
- */
- void ResetIndex() const;
- /* SetIndex
- * Sets the current packet to point to the packet specified by index.
- * Returns 0 on success, negative on failure (if index is out of bounds)
- */
- int SetIndex(hsize_t index) const;
- /* GetIndex
- * Returns the position of the current packet.
- * On failure, returns 0 and error is set to negative.
- */
- hsize_t GetIndex(int &error) const;
- /* GetPacketCount
- * Returns the number of packets in the packet table. Error
- * is set to 0 on success. On failure, returns 0 and
- * error is set to negative.
- */
- hsize_t GetPacketCount(int &error) const;
- hsize_t
- GetPacketCount()
- {
- int ignoreError;
- return GetPacketCount(ignoreError);
- }
- /* GetTableId
- * Returns the identifier of the packet table.
- */
- hid_t GetTableId() const;
- /* GetDatatype
- * Returns the datatype identifier used by the packet table, on success,
- * or FAIL, on failure.
- * Note: it is best to avoid using this identifier in applications, unless
- * the desired functionality cannot be performed via the packet table ID.
- */
- hid_t GetDatatype() const;
- /* GetDataset
- * Returns the dataset identifier associated with the packet table, on
- * success, or FAIL, on failure.
- * Note: it is best to avoid using this identifier in applications, unless
- * the desired functionality cannot be performed via the packet table ID.
- */
- hid_t GetDataset() const;
- /* FreeBuff
- * Frees the buffers created when variable-length packets are read.
- * Takes the number of hvl_t structs to be freed and a pointer to their
- * location in memory.
- * Returns 0 on success, negative on error.
- */
- int FreeBuff(size_t numStructs, hvl_t *buffer) const;
- protected:
- hid_t table_id;
- };
- class H5_HLCPPDLL FL_PacketTable : virtual public PacketTable {
- public:
- /* Constructor
- * Creates a packet table to store either fixed- or variable-length packets.
- * Takes the ID of the file the packet table will be created in, the ID of
- * the property list to specify compression, the name of the packet table,
- * the ID of the datatype, and the size of a memory chunk used in chunking.
- */
- FL_PacketTable(hid_t fileID, const char *name, hid_t dtypeID, hsize_t chunkSize = 0,
- hid_t plistID = H5P_DEFAULT);
- /* Constructors - deprecated
- * Creates a packet table in which to store fixed length packets.
- * Takes the ID of the file the packet table will be created in, the name of
- * the packet table, the ID of the datatype of the set, the size
- * of a memory chunk used in chunking, and the desired compression level
- * (0-9, or -1 for no compression).
- * Note: these overloaded constructors will be deprecated in favor of the
- * constructor above.
- */
- FL_PacketTable(hid_t fileID, hid_t plist_id, const char *name, hid_t dtypeID, hsize_t chunkSize);
- FL_PacketTable(hid_t fileID, char *name, hid_t dtypeID, hsize_t chunkSize, int compression = 0);
- /* "Open" Constructor
- * Opens an existing fixed-length packet table.
- * Fails if the packet table specified is variable-length.
- */
- FL_PacketTable(hid_t fileID, const char *name);
- /* "Open" Constructor - will be deprecated because of char* name */
- FL_PacketTable(hid_t fileID, char *name);
- /* Destructor
- * Cleans up the packet table
- */
- virtual ~FL_PacketTable()
- {
- }
- /* AppendPacket
- * Adds a single packet to the packet table. Takes a pointer
- * to the location of the data in memory.
- * Returns 0 on success, negative on failure
- */
- int AppendPacket(void *data);
- /* AppendPackets (multiple packets)
- * Adds multiple packets to the packet table. Takes the number of packets
- * to be added and a pointer to their location in memory.
- * Returns 0 on success, -1 on failure.
- */
- int AppendPackets(size_t numPackets, void *data);
- /* GetPacket (indexed)
- * Gets a single packet from the packet table. Takes the index
- * of the packet (with 0 being the first packet) and a pointer
- * to memory where the data should be stored.
- * Returns 0 on success, negative on failure
- */
- int GetPacket(hsize_t index, void *data);
- /* GetPackets (multiple packets)
- * Gets multiple packets at once, all packets between
- * startIndex and endIndex inclusive. Also takes a pointer to
- * the memory where these packets should be stored.
- * Returns 0 on success, negative on failure.
- */
- int GetPackets(hsize_t startIndex, hsize_t endIndex, void *data);
- /* GetNextPacket (single packet)
- * Gets the next packet in the packet table. Takes a pointer to
- * memory where the packet should be stored.
- * Returns 0 on success, negative on failure. Index
- * is not advanced to the next packet on failure.
- */
- int GetNextPacket(void *data);
- /* GetNextPackets (multiple packets)
- * Gets the next numPackets packets in the packet table. Takes a
- * pointer to memory where these packets should be stored.
- * Returns 0 on success, negative on failure. Index
- * is not advanced on failure.
- */
- int GetNextPackets(size_t numPackets, void *data);
- };
- /* Removed "#ifdef VLPT_REMOVED" block. 03/08/2016, -BMR */
- #endif /* H5PTWRAP_H */
|