Loading...
Searching...
No Matches
IO.h File Reference

Implements I/O for NanoVDB grids. Features optional BLOSC and ZIP file compression, support for multiple grids per file as well as multiple grid types. More...

`#include "../NanoVDB.h"`
`#include "GridHandle.h"`
`#include <fstream>`
`#include <iostream>`
`#include <string>`
`#include <sstream>`
`#include <cstring>`
`#include <memory>`
`#include <vector>`

Go to the source code of this file.

## Classes

struct | Header
| Data encoded at the head of each segment of a file or stream. More...
struct | MetaData
| Data encoded for each of the grids associated with a segment. More...
struct | GridMetaData
struct | Segment

## Namespaces

namespace | nanovdb
namespace | nanovdb::io
namespace | nanovdb::io::Internal
| Internal functions for compressed read/write of a NanoVDB GridHandle into a stream.

## Typedefs

using | fileSize_t = uint64_t

## Enumerations

enum class | Codec : uint16_t { NONE = 0 , ZIP = 1 , BLOSC = 2 , END = 3 }
| Optional compression codecs. More...

## Functions

const char * | toStr (Codec codec)
template<typename BufferT>
static fileSize_t | write (std::ostream &os, const GridHandle< BufferT > &handle, Codec codec)
template<typename BufferT>
static void | read (std::istream &is, GridHandle< BufferT > &handle, Codec codec)
uint64_t | stringHash (const char *cstr)
| Standard hash function to use on strings; std::hash may vary by platform/implementation and is know to produce frequent collisions.
uint64_t | stringHash (const std::string &str)
| Return a uint64_t hash key of a std::string.
uint64_t | reverseEndianness (uint64_t val)
| Return a uint64_t with its bytes reversed so we can check for endianness.
template<typename BufferT>
void | writeGrid (const std::string &fileName, const GridHandle< BufferT > &handle, Codec codec=Codec::NONE, int verbose=0)
| Write a single grid to file (over-writing existing content of the file).
template<typename BufferT>
void | writeGrid (std::ostream &os, const GridHandle< BufferT > &handle, Codec codec=Codec::NONE)
| Write a single grid to stream (starting at the current position).
template<typename BufferT = HostBuffer, template< typename... > class VecT = std::vector>
void | writeGrids (const std::string &fileName, const VecT< GridHandle< BufferT > > &handles, Codec codec=Codec::NONE, int verbose=0)
| Write multiple grids to file (over-writing existing content of the file).
template<typename BufferT = HostBuffer, template< typename... > class VecT = std::vector>
void | writeGrids (std::ostream &os, const VecT< GridHandle< BufferT > > &handles, Codec codec=Codec::NONE)
| Writes multiple grids to stream (starting at its current position).
template<typename BufferT = HostBuffer>
GridHandle< BufferT > | readGrid (const std::string &fileName, uint64_t n=0, int verbose=0, const BufferT &buffer=BufferT())
| Read the n'th grid from file (defaults to first grid).
template<typename BufferT = HostBuffer>
GridHandle< BufferT > | readGrid (std::istream &is, uint64_t n=0, const BufferT &buffer=BufferT())
| Read the n'th grid from stream (defaults to first grid).
template<typename BufferT = HostBuffer>
GridHandle< BufferT > | readGrid (const std::string &fileName, const std::string &gridName, int verbose=0, const BufferT &buffer=BufferT())
| Read the first grid with a specific name.
template<typename BufferT = HostBuffer>
GridHandle< BufferT > | readGrid (std::istream &is, const std::string &gridName, const BufferT &buffer=BufferT())
| Read the first grid with a specific name.
template<typename BufferT = HostBuffer, template< typename... > class VecT = std::vector>
VecT< GridHandle< BufferT > > | readGrids (const std::string &fileName, int verbose=0, const BufferT &buffer=BufferT())
| Read all the grids in the file.
template<typename BufferT = HostBuffer, template< typename... > class VecT = std::vector>
VecT< GridHandle< BufferT > > | readGrids (std::istream &is, const BufferT &buffer=BufferT())
| Real all grids at the current position of the input stream.
bool | hasGrid (const std::string &fileName, const std::string &gridName)
| Return true if the file contains a grid with the specified name.
bool | hasGrid (std::istream &is, const std::string &gridName)
| Return true if the stream contains a grid with the specified name.
std::vector< GridMetaData > | readGridMetaData (const std::string &fileName)
| Reads and returns a vector of meta data for all the grids found in the specified file.
std::vector< GridMetaData > | readGridMetaData (std::istream &is)
| Reads and returns a vector of meta data for all the grids found in the specified stream.

## Variables

static constexpr fileSize_t | MAX_SIZE = 1UL << 30

## Detailed Description

Implements I/O for NanoVDB grids. Features optional BLOSC and ZIP file compression, support for multiple grids per file as well as multiple grid types.

Author
  Ken Museth

Date
  May 1, 2020

Note
  This file does NOT depend on OpenVDB, but optionally on ZIP and BLOSC