OpenVDB  9.0.1
Classes | Namespaces | Typedefs | Enumerations | Functions | Variables
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

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

Typedefs

using fileSize_t = uint64_t
 

Enumerations

enum  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. More...
 
uint64_t stringHash (const std::string &str)
 Return a uint64_t hash key of a std::string. More...
 
uint64_t reverseEndianness (uint64_t val)
 Return a uint64_t with its bytes reversed so we can check for endianness. More...
 
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) More...
 
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) More...
 
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) More...
 
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) More...
 
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) More...
 
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) More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
bool hasGrid (const std::string &fileName, const std::string &gridName)
 Return true if the file contains a grid with the specified name. More...
 
bool hasGrid (std::istream &is, const std::string &gridName)
 Return true if the stream contains a grid with the specified name. More...
 
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. More...
 
std::vector< GridMetaData > readGridMetaData (std::istream &is)
 Reads and returns a vector of meta data for all the grids found in the specified stream. More...
 

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