19 #ifndef OPENVDB_TOOLS_STREAM_COMPRESSION_HAS_BEEN_INCLUDED    20 #define OPENVDB_TOOLS_STREAM_COMPRESSION_HAS_BEEN_INCLUDED    24 #include <tbb/spin_mutex.h>    29 class TestStreamCompression;
    34 namespace compression {
    62     const size_t bufferBytes, 
const char* uncompressedBuffer, 
const size_t uncompressedBytes);
    73     const size_t uncompressedBytes, 
size_t& compressedBytes, 
const bool resize = 
true);
    89     const size_t bufferBytes, 
const char* compressedBuffer);
    99     const size_t expectedBytes, 
const bool resize = 
true);
   117 #ifdef OPENVDB_USE_DELAYED_LOADING   118         io::MappedFile::Ptr mappedFile;
   121         std::streamoff filepos;
   122         long compressedBytes;
   123         long uncompressedBytes;
   127     using Ptr = std::shared_ptr<Page>;
   136     long uncompressedBytes() 
const;
   140     const char* buffer(
const int index) 
const;
   143     void readHeader(std::istream&);
   147     void readBuffers(std::istream&, 
bool delayed);
   150     bool isOutOfCore() 
const;
   154     void copy(
const std::unique_ptr<
char[]>& temp, 
int pageSize);
   157     void decompress(
const std::unique_ptr<
char[]>& temp);
   162     std::unique_ptr<Info> mInfo = std::unique_ptr<Info>(
new Info);
   163     std::unique_ptr<char[]> mData;
   164     tbb::spin_mutex mMutex;
   173     using Ptr = std::unique_ptr<PageHandle>;
   185     int size()
 const { 
return mSize; }
   189     std::unique_ptr<char[]> read();
   195     friend class ::TestStreamCompression;
   210     using Ptr = std::shared_ptr<PagedInputStream>;
   230     void read(
PageHandle::Ptr& pageHandle, std::streamsize n, 
bool delayed = 
true);
   234     int mUncompressedBytes = 0;
   235     std::istream* mIs = 
nullptr;
   237     bool mSizeOnly = 
false;
   247     using Ptr = std::shared_ptr<PagedOutputStream>;
   270     void compressAndWrite(
const char* buffer, 
size_t size);
   273     void resize(
size_t size);
   275     std::unique_ptr<char[]> mData = std::unique_ptr<char[]>(
new char[
PageSize]);
   276     std::unique_ptr<char[]> mCompressedData = 
nullptr;
   279     std::ostream* mOs = 
nullptr;
   280     bool mSizeOnly = 
false;
   288 #endif // OPENVDB_TOOLS_STREAM_COMPRESSION_HAS_BEEN_INCLUDED 
std::shared_ptr< PagedInputStream > Ptr
Definition: StreamCompression.h:210
 
Stores a variable-size, compressed, delayed-load Page of data that is loaded into memory when accesse...
Definition: StreamCompression.h:112
 
void setSizeOnly(bool sizeOnly)
Size-only mode tags the stream as only reading size data. 
Definition: StreamCompression.h:217
 
OPENVDB_API std::unique_ptr< char[]> bloscDecompress(const char *buffer, const size_t expectedBytes, const bool resize=true)
Decompress and return the the heap-allocated uncompressed buffer. 
 
static const int PageSize
Definition: StreamCompression.h:106
 
std::shared_ptr< Page > Ptr
Definition: StreamCompression.h:127
 
static const int BLOSC_MINIMUM_BYTES
Definition: StreamCompression.h:39
 
bool sizeOnly() const 
Definition: StreamCompression.h:255
 
std::istream & getInputStream()
Definition: StreamCompression.h:221
 
static const int BLOSC_PAD_BYTES
Definition: StreamCompression.h:43
 
std::shared_ptr< PagedOutputStream > Ptr
Definition: StreamCompression.h:247
 
#define OPENVDB_ASSERT(X)
Definition: Assert.h:41
 
Ptr copy()
Return a copy of this PageHandle. 
Definition: StreamCompression.h:192
 
bool sizeOnly() const 
Definition: StreamCompression.h:218
 
std::ostream & getOutputStream()
Set and get the output stream. 
Definition: StreamCompression.h:258
 
Definition: Exceptions.h:13
 
std::unique_ptr< PageHandle > Ptr
Definition: StreamCompression.h:173
 
void setInputStream(std::istream &is)
Definition: StreamCompression.h:222
 
std::shared_ptr< T > SharedPtr
Definition: Types.h:95
 
int size() const 
Return the size of the buffer. 
Definition: StreamCompression.h:185
 
OPENVDB_API std::unique_ptr< char[]> bloscCompress(const char *buffer, const size_t uncompressedBytes, size_t &compressedBytes, const bool resize=true)
Compress and return the heap-allocated compressed buffer. 
 
A PageHandle holds a unique ptr to a Page and a specific stream pointer to a point within the decompr...
Definition: StreamCompression.h:170
 
OPENVDB_API size_t bloscCompressedSize(const char *buffer, const size_t uncompressedBytes)
Convenience wrapper to retrieve the compressed size of buffer when compressed. 
 
void setSizeOnly(bool sizeOnly)
Size-only mode tags the stream as only writing size data. 
Definition: StreamCompression.h:254
 
A Paging wrapper to std::istream that is responsible for reading from a given input stream and creati...
Definition: StreamCompression.h:207
 
#define OPENVDB_VERSION_NAME
The version namespace name for this library version. 
Definition: version.h.in:121
 
void setOutputStream(std::ostream &os)
Definition: StreamCompression.h:259
 
OPENVDB_API bool bloscCanCompress()
Returns true if compression is available. 
 
OPENVDB_API size_t bloscUncompressedSize(const char *buffer)
Retrieves the uncompressed size of buffer when uncompressed. 
 
A Paging wrapper to std::ostream that is responsible for writing from a given output stream at interv...
Definition: StreamCompression.h:244
 
#define OPENVDB_USE_VERSION_NAMESPACE
Definition: version.h.in:218