|
PLearn 0.1
|
VMatrix that can take its values from a possibly large file (greater than 2Gig) containing numbers in a user-given binary format, preceded by an arbitrary header whose length is user-given. More...
#include <BinaryNumbersVMatrix.h>


Public Member Functions | |
| BinaryNumbersVMatrix () | |
| Default constructor. | |
| virtual string | classname () const |
| virtual OptionList & | getOptionList () const |
| virtual OptionMap & | getOptionMap () const |
| virtual RemoteMethodMap & | getRemoteMethodMap () const |
| virtual BinaryNumbersVMatrix * | deepCopy (CopiesMap &copies) const |
| virtual void | build () |
| Simply calls inherited::build() then build_(). | |
| virtual void | makeDeepCopyFromShallowCopy (CopiesMap &copies) |
| Transforms a shallow copy into a deep copy. | |
Static Public Member Functions | |
| static string | _classname_ () |
| RowBufferedVMatrix. | |
| static OptionList & | _getOptionList_ () |
| static RemoteMethodMap & | _getRemoteMethodMap_ () |
| static Object * | _new_instance_for_typemap_ () |
| static bool | _isa_ (const Object *o) |
| static void | _static_initialize_ () |
| static const PPath & | declaringFile () |
Public Attributes | |
| PPath | filename |
| ### declare public option fields (such as build options) here | |
| string | format |
| int | header_size |
| bool | file_is_bigendian |
| int | row_size |
Static Public Attributes | |
| static StaticInitializer | _static_initializer_ |
Protected Member Functions | |
| virtual void | getNewRow (int i, const Vec &v) const |
| Fill the vector 'v' with the content of the i-th row. | |
| virtual | ~BinaryNumbersVMatrix () |
| destructor releases buffer and file pointer | |
Static Protected Member Functions | |
| static void | declareOptions (OptionList &ol) |
| Declares the class options. | |
Protected Attributes | |
| PRFileDesc * | f |
| void * | buffer |
Private Types | |
| typedef RowBufferedVMatrix | inherited |
Private Member Functions | |
| void | build_ () |
| This does the actual building. | |
VMatrix that can take its values from a possibly large file (greater than 2Gig) containing numbers in a user-given binary format, preceded by an arbitrary header whose length is user-given.
Definition at line 55 of file BinaryNumbersVMatrix.h.
typedef RowBufferedVMatrix PLearn::BinaryNumbersVMatrix::inherited [private] |
Reimplemented from PLearn::RowBufferedVMatrix.
Definition at line 57 of file BinaryNumbersVMatrix.h.
| PLearn::BinaryNumbersVMatrix::BinaryNumbersVMatrix | ( | ) |
Default constructor.
Definition at line 56 of file BinaryNumbersVMatrix.cc.
: format("u1"), header_size(0), file_is_bigendian(false), f(0), buffer(0) { }
| PLearn::BinaryNumbersVMatrix::~BinaryNumbersVMatrix | ( | ) | [protected, virtual] |
| string PLearn::BinaryNumbersVMatrix::_classname_ | ( | ) | [static] |
Reimplemented from PLearn::RowBufferedVMatrix.
Definition at line 54 of file BinaryNumbersVMatrix.cc.
| OptionList & PLearn::BinaryNumbersVMatrix::_getOptionList_ | ( | ) | [static] |
Reimplemented from PLearn::RowBufferedVMatrix.
Definition at line 54 of file BinaryNumbersVMatrix.cc.
| RemoteMethodMap & PLearn::BinaryNumbersVMatrix::_getRemoteMethodMap_ | ( | ) | [static] |
Reimplemented from PLearn::RowBufferedVMatrix.
Definition at line 54 of file BinaryNumbersVMatrix.cc.
Reimplemented from PLearn::RowBufferedVMatrix.
Definition at line 54 of file BinaryNumbersVMatrix.cc.
| Object * PLearn::BinaryNumbersVMatrix::_new_instance_for_typemap_ | ( | ) | [static] |
Reimplemented from PLearn::Object.
Definition at line 54 of file BinaryNumbersVMatrix.cc.
| StaticInitializer BinaryNumbersVMatrix::_static_initializer_ & PLearn::BinaryNumbersVMatrix::_static_initialize_ | ( | ) | [static] |
Reimplemented from PLearn::RowBufferedVMatrix.
Definition at line 54 of file BinaryNumbersVMatrix.cc.
| void PLearn::BinaryNumbersVMatrix::build | ( | ) | [virtual] |
Simply calls inherited::build() then build_().
Reimplemented from PLearn::VMatrix.
Definition at line 158 of file BinaryNumbersVMatrix.cc.
References PLearn::VMatrix::build(), and build_().
{
inherited::build();
build_();
}

| void PLearn::BinaryNumbersVMatrix::build_ | ( | ) | [private] |
This does the actual building.
Reimplemented from PLearn::VMatrix.
Definition at line 142 of file BinaryNumbersVMatrix.cc.
References buffer, f, filename, format, row_size, PLearn::VMatrix::updateMtime(), and PLearn::VMatrix::width_.
Referenced by build().
{
if (f)
PR_Close(f);
updateMtime(filename);
f = PR_Open(filename.c_str(), PR_RDONLY, 0666);
if (width_>0)
{
if (buffer)
delete[] (char*)buffer;
row_size = width_*(format[1]-'0');
buffer = (void*) (new char[row_size]);
}
}


| string PLearn::BinaryNumbersVMatrix::classname | ( | ) | const [virtual] |
Reimplemented from PLearn::Object.
Definition at line 54 of file BinaryNumbersVMatrix.cc.
| void PLearn::BinaryNumbersVMatrix::declareOptions | ( | OptionList & | ol | ) | [static, protected] |
Declares the class options.
Reimplemented from PLearn::VMatrix.
Definition at line 111 of file BinaryNumbersVMatrix.cc.
References PLearn::OptionBase::buildoption, PLearn::declareOption(), PLearn::VMatrix::declareOptions(), file_is_bigendian, filename, format, header_size, PLearn::OptionBase::learntoption, and row_size.
{
declareOption(ol, "filename", &BinaryNumbersVMatrix::filename,
OptionBase::buildoption,
"Name of file to be read.");
declareOption(ol, "format", &BinaryNumbersVMatrix::format,
OptionBase::buildoption,
"2-character specification of binary format of the numbers in the file:\n"
" u1 = 1-byte unsigned integers\n"
" u2 = 1-byte unsigned integers\n"
" i4 = 4-byte signed integers\n"
" f4 = 4-byte floating point\n"
" f8 = 8-byte floating point\n");
declareOption(ol, "header_size", &BinaryNumbersVMatrix::header_size,
OptionBase::buildoption,
"Number of bytes of header at beginning of file.");
declareOption(ol, "file_is_bigendian", &BinaryNumbersVMatrix::file_is_bigendian,
OptionBase::buildoption,
"Whether the byte order is 'BIG ENDIAN' or not.");
declareOption(ol, "row_size", &BinaryNumbersVMatrix::row_size,
OptionBase::learntoption,
"Number of bytes in each row");
// Now call the parent class' declareOptions
inherited::declareOptions(ol);
}

| static const PPath& PLearn::BinaryNumbersVMatrix::declaringFile | ( | ) | [inline, static] |
Reimplemented from PLearn::RowBufferedVMatrix.
Definition at line 102 of file BinaryNumbersVMatrix.h.
:
//##### Protected Options ###############################################
| BinaryNumbersVMatrix * PLearn::BinaryNumbersVMatrix::deepCopy | ( | CopiesMap & | copies | ) | const [virtual] |
Reimplemented from PLearn::RowBufferedVMatrix.
Definition at line 54 of file BinaryNumbersVMatrix.cc.
Fill the vector 'v' with the content of the i-th row.
'v' is assumed to be the right size.
Implements PLearn::RowBufferedVMatrix.
Definition at line 61 of file BinaryNumbersVMatrix.cc.
References buffer, PLearn::endianswap2(), PLearn::endianswap4(), PLearn::endianswap8(), f, file_is_bigendian, format, header_size, i, PLearn::TVec< T >::length(), PLASSERT_MSG, PLERROR, row_size, and PLearn::VMatrix::width_.
{
PLASSERT_MSG(v.length()==width_,"BinaryNumbersVMatrix::getNewRow(i,v) with v.length!= vmatrix width");
PRInt64 offset = i;
offset *= row_size;
offset += header_size;
PR_Seek64(f,offset,PR_SEEK_SET);
PR_Read(f,buffer,row_size);
bool swap_endian=false;
#ifdef LITTLEENDIAN
if(file_is_bigendian)
swap_endian=true;
#endif
#ifdef BIGENDIAN
if(!file_is_bigendian)
swap_endian=true;
#endif
int l=v.length();
if (format=="u1")
for (int i=0;i<l;i++)
v[i] = (real)((unsigned char*)buffer)[i];
else if (format=="u2") {
if (swap_endian)
endianswap2(buffer,width_);
for (int i=0;i<l;i++)
v[i] = (real)((unsigned short*)buffer)[i];
}
else if (format=="i4") {
if (swap_endian)
endianswap4(buffer,width_);
for (int i=0;i<l;i++)
v[i] = (real)((int*)buffer)[i];
}
else if (format=="f4") {
if (swap_endian)
endianswap4(buffer,width_);
for (int i=0;i<l;i++)
v[i] = (real)((float*)buffer)[i];
}
else if (format=="f8") {
if (swap_endian)
endianswap8(buffer,width_);
for (int i=0;i<l;i++)
v[i] = (real)((double*)buffer)[i];
}
else
PLERROR("BinaryNumbersVMatrix: unknown format = %s\n",format.c_str());
}

| OptionList & PLearn::BinaryNumbersVMatrix::getOptionList | ( | ) | const [virtual] |
Reimplemented from PLearn::Object.
Definition at line 54 of file BinaryNumbersVMatrix.cc.
| OptionMap & PLearn::BinaryNumbersVMatrix::getOptionMap | ( | ) | const [virtual] |
Reimplemented from PLearn::Object.
Definition at line 54 of file BinaryNumbersVMatrix.cc.
| RemoteMethodMap & PLearn::BinaryNumbersVMatrix::getRemoteMethodMap | ( | ) | const [virtual] |
Reimplemented from PLearn::Object.
Definition at line 54 of file BinaryNumbersVMatrix.cc.
| void PLearn::BinaryNumbersVMatrix::makeDeepCopyFromShallowCopy | ( | CopiesMap & | copies | ) | [virtual] |
Transforms a shallow copy into a deep copy.
Reimplemented from PLearn::RowBufferedVMatrix.
Definition at line 164 of file BinaryNumbersVMatrix.cc.
References PLearn::RowBufferedVMatrix::makeDeepCopyFromShallowCopy().
{
inherited::makeDeepCopyFromShallowCopy(copies);
}

Reimplemented from PLearn::RowBufferedVMatrix.
Definition at line 102 of file BinaryNumbersVMatrix.h.
void* PLearn::BinaryNumbersVMatrix::buffer [protected] |
Definition at line 87 of file BinaryNumbersVMatrix.h.
Referenced by build_(), getNewRow(), and ~BinaryNumbersVMatrix().
PRFileDesc* PLearn::BinaryNumbersVMatrix::f [protected] |
Definition at line 86 of file BinaryNumbersVMatrix.h.
Referenced by build_(), getNewRow(), and ~BinaryNumbersVMatrix().
Definition at line 76 of file BinaryNumbersVMatrix.h.
Referenced by declareOptions(), and getNewRow().
### declare public option fields (such as build options) here
Definition at line 64 of file BinaryNumbersVMatrix.h.
Referenced by build_(), and declareOptions().
Definition at line 70 of file BinaryNumbersVMatrix.h.
Referenced by build_(), declareOptions(), and getNewRow().
Definition at line 73 of file BinaryNumbersVMatrix.h.
Referenced by declareOptions(), and getNewRow().
Definition at line 81 of file BinaryNumbersVMatrix.h.
Referenced by build_(), declareOptions(), and getNewRow().
1.7.4