Home || Visual Search || Applications || Architecture || Important Messages || OGL || Src

template<class ArrayT>
void Impala::Core::Matrix::VirtualMatrixIOBufferReader< ArrayT >::Init ( Util::IOBuffer buffer,
bool  ownBuffer 
) [inline, private]

Definition at line 172 of file VirtualMatrixIOBufferReader.h.

References Impala::Util::IOBuffer::cBzipBlockSize, Impala::Util::IOBuffer::GetPosition(), ILOG_ERROR, Impala::Core::Matrix::VirtualMatrixIOBufferReader< ArrayT >::mBaseOffset, Impala::Core::Matrix::VirtualMatrixIOBufferReader< ArrayT >::mBinary, Impala::Core::Matrix::VirtualMatrixIOBufferReader< ArrayT >::mChunkBuffer, Impala::Core::Matrix::VirtualMatrixIOBufferReader< ArrayT >::mChunkBufferWrapper, Impala::Core::Matrix::VirtualMatrixIOBufferReader< ArrayT >::mChunkCount, Impala::Core::Matrix::VirtualMatrixIOBufferReader< ArrayT >::mChunkOffsets, Impala::Core::Matrix::VirtualMatrixIOBufferReader< ArrayT >::mChunkSize, Impala::Core::Matrix::VirtualMatrixIOBufferReader< ArrayT >::mCompressor, Impala::Core::Matrix::VirtualMatrixIOBufferReader< ArrayT >::mCurrentChunk, Impala::Core::Matrix::VirtualMatrixIOBufferReader< ArrayT >::mElemSize, Impala::Core::Matrix::VirtualMatrixIOBufferReader< ArrayT >::mHeight, Impala::Core::Matrix::VirtualMatrixIOBufferReader< ArrayT >::mIOBuffer, Impala::Core::Matrix::VirtualMatrixIOBufferReader< ArrayT >::mLinesPerChunk, Impala::Core::Matrix::VirtualMatrixIOBufferReader< ArrayT >::mLinesPerCompressedBlock, Impala::Core::Matrix::VirtualMatrixIOBufferReader< ArrayT >::mNrA, Impala::Core::Matrix::VirtualMatrixIOBufferReader< ArrayT >::mOwnBuffer, Impala::Core::Matrix::VirtualMatrixIOBufferReader< ArrayT >::mVersion, Impala::Core::Matrix::VirtualMatrixIOBufferReader< ArrayT >::mWidth, Impala::Util::IOBuffer::SetPosition(), and Impala::Core::Matrix::VirtualMatrixIOBufferReader< ArrayT >::SwitchToChunk().

Referenced by Impala::Core::Matrix::VirtualMatrixIOBufferReader< ArrayT >::VirtualMatrixIOBufferReader().

00173     {
00174         mIOBuffer = buffer;
00175         mOwnBuffer = ownBuffer;
00176         mBaseOffset = buffer->GetPosition();
00177         mChunkOffsets = 0;
00178         mChunkBuffer = 0;
00179         if (! Array::ReadRawHeader<ArrayT>
00180                 (mIOBuffer, &mVersion, &mBinary, &mElemSize, &mWidth, &mHeight,
00181                  &mNrA, mCompressor, &mLinesPerCompressedBlock))
00182         {
00183             ILOG_ERROR("Could not parse header");
00184             return;
00185         }
00186         if (!mBinary)
00187         {
00188             ILOG_ERROR("Only binary files are supported");
00189         }
00190         if (mElemSize != 1)
00191         {
00192             ILOG_ERROR("IOBuffer does not contain a Matrix");
00193         }
00194 
00195         Int64 lineSize = sizeof(StorT) * mWidth;
00196         buffer->SetPosition(mBaseOffset + 200);
00197         if (mLinesPerCompressedBlock > 0)
00198         {
00199             mLinesPerChunk = mLinesPerCompressedBlock;
00200         }
00201         else
00202         {
00203             // uncompressed file: still use the same chunk size
00204             mLinesPerChunk = Util::IOBuffer::cBzipBlockSize / lineSize;
00205         }
00206         mChunkCount = mHeight / mLinesPerChunk;
00207         if (mHeight % mLinesPerChunk != 0)
00208             mChunkCount++;
00209         mChunkSize = lineSize * mLinesPerChunk;
00210         mChunkOffsets = new Int64[mChunkCount+1];
00211         mChunkOffsets[0] = mBaseOffset + 200;
00212         for (Int64 i=1 ; i<mChunkCount+1 ; i++)
00213         {
00214             if (mLinesPerCompressedBlock == 0)
00215             {
00216                 mChunkOffsets[i] = mChunkOffsets[i-1] + mChunkSize;
00217             }
00218             else
00219             {
00220                 mChunkOffsets[i] = -1;
00221             }
00222         }
00223 
00224         mChunkBuffer = new StorT[mWidth * mLinesPerChunk];
00225         mChunkBufferWrapper = new ArrayT(mWidth * mLinesPerChunk, 1, 0, 0,
00226                                          mChunkBuffer, true);
00227         mCurrentChunk = -1;
00228         SwitchToChunk(0);
00229     }

Here is the call graph for this function:


Generated on Thu Jan 13 09:20:23 2011 for ImpalaSrc by  doxygen 1.5.1