Isis 3 Programmer Reference
Isis::Blob Class Reference

#include <Blob.h>

Inheritance diagram for Isis::Blob:
Inheritance graph
Collaboration diagram for Isis::Blob:
Collaboration graph

Public Member Functions

 Blob (const QString &name, const QString &type)
 Constructs a Blob object using a name and type. More...
 
 Blob (const QString &name, const QString &type, const QString &file)
 Constructs a Blob object using a name, type, and reading Pvl values from a file. More...
 
 Blob (const Blob &other)
 This copies the blob object. More...
 
Bloboperator= (const Blob &other)
 This makes the two blob objects exactly the same (copies the blob) More...
 
virtual ~Blob ()
 Destroys the Blob object. More...
 
QString Type () const
 Accessor method that returns a string containing the Blob type. More...
 
QString Name () const
 Accessor method that returns a string containing the Blob name. More...
 
int Size () const
 Accessor method that returns the number of bytes in the blob data. More...
 
PvlObjectLabel ()
 Accessor method that returns a PvlObject containing the Blob label. More...
 
void Read (const QString &file)
 This method reads Pvl values from a specified file. More...
 
void Read (const QString &file, const Pvl &pvlLabels)
 This method reads the given a file and labels. More...
 
virtual void Read (const Pvl &pvl, std::istream &is)
 This method reads the Blob data from an open input file stream. More...
 
void Write (const QString &file)
 Write the blob data out to a file. More...
 
void Write (Pvl &pvl, std::fstream &stm, const QString &detachedFileName="")
 Write the blob data out to a Pvl object. More...
 

Protected Member Functions

void Find (const Pvl &pvl)
 This method searches the given Pvl for the Blob by the Blob's type and name. More...
 
virtual void ReadInit ()
 This virtual method for classes that inherit Blob. More...
 
virtual void ReadData (std::istream &is)
 Read binary data from an input stream into the Blob object. More...
 
virtual void WriteInit ()
 This virtual method for classes that inherit Blob. More...
 
virtual void WriteData (std::fstream &os)
 Writes blob data to a stream. More...
 

Protected Attributes

PvlObject p_blobPvl
 Pvl Blob object. More...
 
QString p_blobName
 Name of the Blob object. More...
 
char * p_buffer
 Buffer blob data is stored in. More...
 
BigInt p_startByte
 Byte blob data starts at in buffer. More...
 
int p_nbytes
 Size of blob data (in bytes) More...
 
QString p_type
 Type of data stored in the buffer. More...
 
QString p_detached
 Used for reading detached blobs. More...
 
QString p_labelFile
 The file containing the labels. More...
 

Detailed Description

Author
????-??-?? Unknown
History:

2006-04-04 Jeff Anderson Class was not overwriting existing blobs correctly.

2007-02-20 Elizabeth Miller Fixed bug with OriginalLabel naming and modified to be backwards compatible

????-??-?? Steven Lambright Added copy constructor, assignment operator

2010-05-15 Steven Lambright Changed Read to use an istream instead of an fstream

2011-05-25 Janet Barrett and Steven Lambright Added a Read method that takes the pvl labels so they do not have to be re-read, which is a very expensive operation.

2012-10-04 Jeannie Backer Added include due to forward declaration in TableField. Ordered includes and added forward declaration. Fixed header definition statement. Moved method implementation to cpp and reordered methods in cpp. Added documentation. Improved test coverage in all categories. Added padding to control statements. References #1169.

2013-01-11 Steven Lambright and Tracie Sucharski - Fixed support of writing blobs in very large cubes. This was caused by calling the wrong number to string conversion function. Introduced when refactoring the IString class. Fixes #1388.

Todo:
Write class description, history, etc.

Definition at line 64 of file Blob.h.

Constructor & Destructor Documentation

◆ Blob() [1/3]

Isis::Blob::Blob ( const QString &  name,
const QString &  type 
)

Constructs a Blob object using a name and type.

Parameters
nameThe blob name
typeThe blob type

Definition at line 44 of file Blob.cpp.

◆ Blob() [2/3]

Isis::Blob::Blob ( const QString &  name,
const QString &  type,
const QString &  file 
)

Constructs a Blob object using a name, type, and reading Pvl values from a file.

Parameters
nameThe blob name
typeThe blob type
fileThe filename to read from.

Definition at line 65 of file Blob.cpp.

References Isis::FileName::expanded().

◆ Blob() [3/3]

Isis::Blob::Blob ( const Blob other)

This copies the blob object.

Parameters
otherBlob to be copied

Definition at line 81 of file Blob.cpp.

References p_blobName, p_blobPvl, p_buffer, p_detached, p_labelFile, p_nbytes, p_startByte, and p_type.

◆ ~Blob()

Isis::Blob::~Blob ( )
virtual

Destroys the Blob object.

Definition at line 131 of file Blob.cpp.

Member Function Documentation

◆ Find()

void Isis::Blob::Find ( const Pvl pvl)
protected

This method searches the given Pvl for the Blob by the Blob's type and name.

If found, the start byte, number of bytes are read from the Pvl. Also, if a keyword label pointer is found, the filename for the detached blob is stored and the pointer is removed from the blob pvl.

Parameters
pvlThe Pvl to be searched

Definition at line 179 of file Blob.cpp.

References _FILEINFO_, Isis::PvlContainer::isNamed(), Isis::PvlObject::object(), Isis::PvlObject::objects(), and Isis::FileName::path().

◆ Label()

◆ Name()

QString Isis::Blob::Name ( ) const

Accessor method that returns a string containing the Blob name.

Returns
string The name of the blob.

Definition at line 149 of file Blob.cpp.

Referenced by Isis::Shape::isFootprintable(), Isis::Image::isFootprintable(), Isis::SpicePosition::LoadCache(), and Isis::Cube::write().

◆ operator=()

Blob & Isis::Blob::operator= ( const Blob other)

This makes the two blob objects exactly the same (copies the blob)

Parameters
otherBlob to be copied
Returns
Copied Blob

Definition at line 108 of file Blob.cpp.

References p_blobName, p_blobPvl, p_buffer, p_detached, p_labelFile, p_nbytes, p_startByte, and p_type.

◆ Read() [1/3]

void Isis::Blob::Read ( const QString &  file)

This method reads Pvl values from a specified file.

Parameters
fileThe filename to read from.
Exceptions
iException::Io- Unable to open file
iException::Pvl- Invalid label format

Definition at line 243 of file Blob.cpp.

References _FILEINFO_, and Isis::Pvl::read().

Referenced by Isis::History::History(), Isis::OriginalLabel::OriginalLabel(), Isis::OriginalXmlLabel::OriginalXmlLabel(), Isis::History::Read(), Isis::Cube::read(), and Isis::Table::Table().

◆ Read() [2/3]

void Isis::Blob::Read ( const QString &  file,
const Pvl pvlLabels 
)

This method reads the given a file and labels.

Parameters
fileThe filename to read from.
pvlLabelsA Pvl containing the label information.
Exceptions
iException::Io- Unable to open file

Definition at line 268 of file Blob.cpp.

References _FILEINFO_, and Isis::Message::FileOpen().

◆ Read() [3/3]

void Isis::Blob::Read ( const Pvl pvl,
std::istream &  istm 
)
virtual

This method reads the Blob data from an open input file stream.

Parameters
pvlA Pvl containing the label information.
istmThe input file stream containing the blob data to be read.
Exceptions
iException::Io- Unable to open file

Reimplemented in Isis::History.

Definition at line 303 of file Blob.cpp.

References _FILEINFO_, and Isis::Message::FileOpen().

◆ ReadData()

void Isis::Blob::ReadData ( std::istream &  stream)
protectedvirtual

Read binary data from an input stream into the Blob object.

Parameters
streamThe input stream to read from.
Exceptions
IException::Io- Error reading data from stream

Reimplemented in Isis::ImagePolygon, Isis::Table, and Isis::OriginalXmlLabel.

Definition at line 340 of file Blob.cpp.

References _FILEINFO_.

Referenced by Isis::OriginalXmlLabel::ReadData().

◆ ReadInit()

void Isis::Blob::ReadInit ( )
protectedvirtual

This virtual method for classes that inherit Blob.

It is not defined in the Blob class.

Reimplemented in Isis::Table.

Definition at line 330 of file Blob.cpp.

◆ Size()

int Isis::Blob::Size ( ) const

Accessor method that returns the number of bytes in the blob data.

Returns
int Number of bytes in the blob data.

Definition at line 158 of file Blob.cpp.

◆ Type()

QString Isis::Blob::Type ( ) const

Accessor method that returns a string containing the Blob type.

Returns
string Type of blob.

Definition at line 140 of file Blob.cpp.

Referenced by Isis::Shape::isFootprintable(), Isis::Image::isFootprintable(), and Isis::Cube::write().

◆ Write() [1/2]

void Isis::Blob::Write ( const QString &  file)

Write the blob data out to a file.

Parameters
fileThe filename to write to.
Exceptions
IException::Io- Unable to open file
IException::Io- Error preparing to write data to file
IException::Io- Error creating file

Definition at line 369 of file Blob.cpp.

References _FILEINFO_, Isis::PvlObject::addObject(), Isis::PvlObject::findObject(), Isis::toString(), and Isis::Pvl::write().

Referenced by Isis::Cube::write().

◆ Write() [2/2]

void Isis::Blob::Write ( Pvl pvl,
std::fstream &  stm,
const QString &  detachedFileName = "" 
)

Write the blob data out to a Pvl object.

Parameters
pvlThe pvl object to update
stmstream to write data to
detachedFileNameIf the stream is detached from the labels give the name of the file

Definition at line 418 of file Blob.cpp.

References Isis::PvlObject::addObject(), Isis::PvlContainer::name(), Isis::PvlObject::object(), Isis::PvlObject::objects(), and Isis::toString().

◆ WriteData()

void Isis::Blob::WriteData ( std::fstream &  stream)
protectedvirtual

Writes blob data to a stream.

Parameters
streamOutput steam blob data will be written to
Exceptions
IException::Io- Error writing data to stream

Reimplemented in Isis::ImagePolygon, Isis::Table, and Isis::OriginalXmlLabel.

Definition at line 502 of file Blob.cpp.

References _FILEINFO_.

◆ WriteInit()

void Isis::Blob::WriteInit ( )
protectedvirtual

This virtual method for classes that inherit Blob.

It is not defined in the Blob class.

Reimplemented in Isis::ImagePolygon, Isis::Table, Isis::History, Isis::OriginalLabel, and Isis::OriginalXmlLabel.

Definition at line 492 of file Blob.cpp.

Member Data Documentation

◆ p_blobName

QString Isis::Blob::p_blobName
protected

Name of the Blob object.

Definition at line 95 of file Blob.h.

Referenced by Blob(), Isis::Table::operator+=(), operator=(), Isis::Table::ReadData(), and Isis::ImagePolygon::ReadData().

◆ p_blobPvl

◆ p_buffer

◆ p_detached

QString Isis::Blob::p_detached
protected

Used for reading detached blobs.

Definition at line 101 of file Blob.h.

Referenced by Blob(), and operator=().

◆ p_labelFile

QString Isis::Blob::p_labelFile
protected

The file containing the labels.

Definition at line 102 of file Blob.h.

Referenced by Blob(), and operator=().

◆ p_nbytes

◆ p_startByte

BigInt Isis::Blob::p_startByte
protected

Byte blob data starts at in buffer.

Definition at line 98 of file Blob.h.

Referenced by Blob(), operator=(), Isis::Table::ReadData(), and Isis::ImagePolygon::ReadData().

◆ p_type

QString Isis::Blob::p_type
protected

Type of data stored in the buffer.

Definition at line 100 of file Blob.h.

Referenced by Blob(), operator=(), and Isis::ImagePolygon::ReadData().


The documentation for this class was generated from the following files: