cgma
NCubitFile::CIOWrapper Class Reference

#include <CubitFileIOWrapper.hpp>

List of all members.

Public Member Functions

 CIOWrapper (FILE *xpFile, UnsignedInt32 xeSourceEndian=CCubitFile::mintNativeEndian)
 CIOWrapper (UnsignedInt32 swap_endian, FILE *xpFile)
 CIOWrapper (FILE *xpFile, UnsignedInt32 xintAbsoluteOffset, UnsignedInt32 xintRelativeOffset)
virtual ~CIOWrapper ()
virtual UnsignedInt32 BeginWriteBlock (UnsignedInt32 xintAbsoluteOffset=0)
virtual void BeginRewriteBlock (UnsignedInt32 xintAbsoluteOffset, UnsignedInt32 xintRelativeOffset)
virtual void Write (const UnsignedInt32 *xpaintData, UnsignedInt32 xintCount)
virtual void Write (const char *xpachrData, UnsignedInt32 xintCount, UnsignedInt32 xint32bitPadded=0)
virtual void Write (const double *xpadblData, UnsignedInt32 xintCount)
virtual void Write (const char *xpachrData)
virtual UnsignedInt32 EndWriteBlock ()
virtual void BeginReadBlock (UnsignedInt32 xintAbsoluteOffset, UnsignedInt32 xintRelativeOffset=0)
virtual void Read (UnsignedInt32 *xpaintData, UnsignedInt32 xintCount)
virtual void Read (char *xpachrData, UnsignedInt32 xintCount, UnsignedInt32 xint32bitPadded=0)
virtual void Read (double *xpadblData, UnsignedInt32 xintCount)
virtual char * Read ()
virtual void EndReadBlock ()
virtual UnsignedInt32 get_endian ()
virtual UnsignedInt32 GetLocation ()

Private Attributes

FILE * mpFile
UnsignedInt32 mintSwapEndian
UnsignedInt32 mintBlockStart
UnsignedInt32 mintBlockEnd

Detailed Description

Definition at line 40 of file CubitFileIOWrapper.hpp.


Constructor & Destructor Documentation

CIOWrapper::CIOWrapper ( FILE *  xpFile,
UnsignedInt32  xeSourceEndian = CCubitFile::mintNativeEndian 
)

Definition at line 38 of file CubitFileIOWrapper.cpp.

{
    if(!xpFile)
        throw CCubitFile::ePassedNullPointer;
    mpFile = xpFile;
    mintSwapEndian = (xintSourceEndian != CCubitFile::mintNativeEndian);
    mintBlockStart = mintBlockEnd = 0;
}
CIOWrapper::CIOWrapper ( UnsignedInt32  swap_endian,
FILE *  xpFile 
)

Definition at line 47 of file CubitFileIOWrapper.cpp.

{
    if(!xpFile)
        throw CCubitFile::ePassedNullPointer;
    mpFile = xpFile;
    mintSwapEndian = swap_endian;
    mintBlockStart = mintBlockEnd = 0;
}
CIOWrapper::CIOWrapper ( FILE *  xpFile,
UnsignedInt32  xintAbsoluteOffset,
UnsignedInt32  xintRelativeOffset 
)

Definition at line 57 of file CubitFileIOWrapper.cpp.

{
    if(!xpFile)
        throw CCubitFile::ePassedNullPointer;
    mpFile = xpFile;
    mintBlockStart = mintBlockEnd = 0;

    if(NCubitFile::SetLocation(mpFile, xintAbsoluteOffset + xintRelativeOffset, SEEK_SET))
        throw CCubitFile::eFileSeekError;
    UnsignedInt32 lintSourceEndian;
    if(fread(&lintSourceEndian, sizeof(UnsignedInt32), 1, mpFile) != 1)
        throw CCubitFile::eFileReadError;
    mintSwapEndian = (lintSourceEndian != CCubitFile::mintNativeEndian);
}
CIOWrapper::~CIOWrapper ( ) [virtual]

Definition at line 73 of file CubitFileIOWrapper.cpp.

{
}

Member Function Documentation

void CIOWrapper::BeginReadBlock ( UnsignedInt32  xintAbsoluteOffset,
UnsignedInt32  xintRelativeOffset = 0 
) [virtual]

Definition at line 166 of file CubitFileIOWrapper.cpp.

{
    if(NCubitFile::SetLocation(mpFile, xintAbsoluteOffset + xintRelativeOffset, SEEK_SET))
        throw CCubitFile::eFileSeekError;
}
void CIOWrapper::BeginRewriteBlock ( UnsignedInt32  xintAbsoluteOffset,
UnsignedInt32  xintRelativeOffset 
) [virtual]

Definition at line 90 of file CubitFileIOWrapper.cpp.

{
    mintBlockEnd = mintBlockStart = xintAbsoluteOffset + xintRelativeOffset;
    if(NCubitFile::SetLocation(mpFile, mintBlockStart, SEEK_SET))
        throw CCubitFile::eFileSeekError;
}
UnsignedInt32 CIOWrapper::BeginWriteBlock ( UnsignedInt32  xintAbsoluteOffset = 0) [virtual]

Definition at line 78 of file CubitFileIOWrapper.cpp.

void CIOWrapper::EndReadBlock ( ) [virtual]

Definition at line 239 of file CubitFileIOWrapper.cpp.

Definition at line 153 of file CubitFileIOWrapper.cpp.

{
    UnsignedInt32 lintBlockEnd = NCubitFile::GetLocation(mpFile);
    if((UnsignedInt32)lintBlockEnd != mintBlockEnd)
        throw CCubitFile::eCorruptBlock;
    UnsignedInt32 lintLength = mintBlockEnd - mintBlockStart;
    mintBlockEnd = mintBlockStart = 0;
    return lintLength;
}
virtual UnsignedInt32 NCubitFile::CIOWrapper::get_endian ( ) [inline, virtual]

Definition at line 68 of file CubitFileIOWrapper.hpp.

{ return mintSwapEndian; }  

Definition at line 259 of file CubitFileIOWrapper.cpp.

void CIOWrapper::Read ( UnsignedInt32 xpaintData,
UnsignedInt32  xintCount 
) [virtual]

Definition at line 174 of file CubitFileIOWrapper.cpp.

{
    if(fread(xpaintData, sizeof(UnsignedInt32), xintCount, mpFile) != xintCount)
        throw CCubitFile::eFileReadError;
    if(mintSwapEndian)
        SwapEndian<UnsignedInt32>(xintCount, xpaintData);
}
void CIOWrapper::Read ( char *  xpachrData,
UnsignedInt32  xintCount,
UnsignedInt32  xint32bitPadded = 0 
) [virtual]

Definition at line 182 of file CubitFileIOWrapper.cpp.

{
    if(xintCount) {
        if(fread(xpachrData, sizeof(char), xintCount, mpFile) != xintCount)
            throw CCubitFile::eFileReadError;
    }
    if(xint32bitPadded) {
        char lachrPad[8]; // , *lpachrData = NULL;
        UnsignedInt32 lintMod = (xintCount % sizeof(UnsignedInt32));
        if(lintMod) {
            lintMod = sizeof(UnsignedInt32) - lintMod;
            if(fread(&lachrPad, sizeof(char), lintMod, mpFile) != lintMod)
                throw CCubitFile::eFileReadError;
        }
    }
}
void CIOWrapper::Read ( double *  xpadblData,
UnsignedInt32  xintCount 
) [virtual]

Definition at line 200 of file CubitFileIOWrapper.cpp.

{
    if(fread(xpadblData, sizeof(double), xintCount, mpFile) != xintCount)
        throw CCubitFile::eFileReadError;
    if(mintSwapEndian)
        SwapEndian<double>(xintCount, xpadblData);
}
char * CIOWrapper::Read ( ) [virtual]

Definition at line 208 of file CubitFileIOWrapper.cpp.

{
    UnsignedInt32 lintLength, lintMod;
    char lachrPad[8], *lpachrData = NULL;
    if(fread(&lintLength, sizeof(UnsignedInt32), 1, mpFile) != 1)
        throw CCubitFile::eFileReadError;
    if(mintSwapEndian)
        SwapEndian<UnsignedInt32>(1, &lintLength);
    if(lintLength) {
        lpachrData = new char[lintLength + 1];
        if(!lpachrData)
            throw CCubitFile::eMemoryError;
        if(fread(lpachrData, sizeof(char), lintLength, mpFile) != lintLength) {
            delete[] lpachrData;
            throw CCubitFile::eFileReadError;
        }   
        lpachrData[lintLength] = '\0';
        lintMod = (lintLength % sizeof(UnsignedInt32));
        if(lintMod) {
            lintMod = sizeof(UnsignedInt32) - lintMod;
            if(fread(&lachrPad, sizeof(char), lintMod, mpFile) != lintMod) {
                delete[] lpachrData;
                throw CCubitFile::eFileReadError;
            }
        }
    }
    return lpachrData;
}
void CIOWrapper::Write ( const UnsignedInt32 xpaintData,
UnsignedInt32  xintCount 
) [virtual]

Definition at line 98 of file CubitFileIOWrapper.cpp.

{
    if(fwrite(xpaintData, sizeof(UnsignedInt32), xintCount, mpFile) != xintCount)
        throw CCubitFile::eFileWriteError;
    mintBlockEnd += (sizeof(UnsignedInt32) * xintCount);
}
void CIOWrapper::Write ( const char *  xpachrData,
UnsignedInt32  xintCount,
UnsignedInt32  xint32bitPadded = 0 
) [virtual]

Definition at line 105 of file CubitFileIOWrapper.cpp.

{
    if(xintCount) {
        if(fwrite(xpachrData, sizeof(char), xintCount, mpFile) != xintCount)
            throw CCubitFile::eFileWriteError;
    }
    UnsignedInt32 lintMod = 0;
    if(xint32bitPadded) {
        lintMod = (xintCount % sizeof(UnsignedInt32));
        if(lintMod) {
            lintMod = sizeof(UnsignedInt32) - lintMod;
            if(fwrite("\0\0\0\0", sizeof(char), lintMod, mpFile) != lintMod)
                throw CCubitFile::eFileWriteError;
        }
    }
    mintBlockEnd += (sizeof(char) * (xintCount + lintMod));
}
void CIOWrapper::Write ( const double *  xpadblData,
UnsignedInt32  xintCount 
) [virtual]

Definition at line 124 of file CubitFileIOWrapper.cpp.

{
    if(fwrite(xpadblData, sizeof(double), xintCount, mpFile) != xintCount)
        throw CCubitFile::eFileWriteError;
    mintBlockEnd += (sizeof(double) * xintCount);
}
void CIOWrapper::Write ( const char *  xpachrData) [virtual]

Definition at line 131 of file CubitFileIOWrapper.cpp.

{
    UnsignedInt32 lintLength = xpachrData ? std::strlen(xpachrData) : 0;
    UnsignedInt32 lintMod = (lintLength % sizeof(UnsignedInt32));
    if(fwrite(&lintLength, sizeof(UnsignedInt32), 1, mpFile) != 1)
        throw CCubitFile::eFileWriteError;
    if(lintLength) {
        if(fwrite(xpachrData, sizeof(char), lintLength, mpFile) != lintLength)
            throw CCubitFile::eFileWriteError;
        if(lintMod) {
            lintMod = sizeof(UnsignedInt32) - lintMod;
            if(fwrite("\0\0\0\0", sizeof(char),  lintMod, mpFile) != lintMod)
                throw CCubitFile::eFileWriteError;
        }
    }
    mintBlockEnd +=
        (sizeof(UnsignedInt32) + sizeof(char) * (lintLength + lintMod));
}

Member Data Documentation

Definition at line 73 of file CubitFileIOWrapper.hpp.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines