Isis 3 Programmer Reference
Blob.h
1#ifndef Blob_h
2#define Blob_h
8/* SPDX-License-Identifier: CC0-1.0 */
9
10#include <string>
11#include <QList>
12#include <QPair>
13
14#include "PvlObject.h"
15
16namespace Isis {
17 bool IsBlob(PvlObject &obj);
18 class Pvl;
51 class Blob {
52 public:
53 Blob(const QString &name, const QString &type);
54 Blob(const QString &name, const QString &type,
55 const QString &file);
56 Blob(const Blob &other);
57 Blob() = default;
58 Blob &operator=(const Blob &other);
59
60 virtual ~Blob();
61
62 QString Type() const;
63 QString Name() const;
64 int Size() const;
66
67 void Read(const QString &file, const std::vector<PvlKeyword>
68 keywords=std::vector<PvlKeyword>());
69 void Read(const QString &file, const Pvl &pvlLabels,
70 const std::vector<PvlKeyword> keywords = std::vector<PvlKeyword>());
71 virtual void Read(const Pvl &pvl, std::istream &is,
72 const std::vector<PvlKeyword> keywords = std::vector<PvlKeyword>());
73
74 void Write(const QString &file);
75 void Write(Pvl &pvl, std::fstream &stm,
76 const QString &detachedFileName = "", bool overwrite=true);
77
78
79 char *getBuffer();
80 void setData(const char *buffer, int nbytes);
81 void takeData(char *buffer, int nbytes);
82
83 protected:
84 void Find(const Pvl &pvl, const std::vector<PvlKeyword> keywords = std::vector<PvlKeyword>());
85 virtual void ReadInit();
86 virtual void ReadData(std::istream &is);
87 virtual void WriteInit();
88 virtual void WriteData(std::fstream &os);
89
91 QString p_blobName;
92
93 char *p_buffer;
96 QString p_type;
97 QString p_detached;
98 QString p_labelFile;
99 };
100};
101
102#endif
PvlObject p_blobPvl
Pvl Blob object.
Definition Blob.h:90
int Size() const
Accessor method that returns the number of bytes in the blob data.
Definition Blob.cpp:142
void setData(const char *buffer, int nbytes)
Set the data stored in the BLOB.
Definition Blob.cpp:382
void Read(const QString &file, const std::vector< PvlKeyword > keywords=std::vector< PvlKeyword >())
This method reads Pvl values from a specified file.
Definition Blob.cpp:255
QString p_labelFile
The file containing the labels.
Definition Blob.h:98
void Write(const QString &file)
Write the blob data out to a file.
Definition Blob.cpp:417
QString Type() const
Accessor method that returns a string containing the Blob type.
Definition Blob.cpp:124
void Find(const Pvl &pvl, const std::vector< PvlKeyword > keywords=std::vector< PvlKeyword >())
This method searches the given Pvl for the Blob by the Blob's type and name.
Definition Blob.cpp:167
BigInt p_startByte
Byte blob data starts at in buffer.
Definition Blob.h:94
virtual void WriteInit()
This virtual method for classes that inherit Blob.
Definition Blob.cpp:554
virtual void ReadInit()
This virtual method for classes that inherit Blob.
Definition Blob.cpp:341
QString Name() const
Accessor method that returns a string containing the Blob name.
Definition Blob.cpp:133
char * getBuffer()
Get the internal data buff of the Blob.
Definition Blob.cpp:546
virtual void WriteData(std::fstream &os)
Writes blob data to a stream.
Definition Blob.cpp:564
PvlObject & Label()
Accessor method that returns a PvlObject containing the Blob label.
Definition Blob.cpp:151
QString p_type
Type of data stored in the buffer.
Definition Blob.h:96
QString p_detached
Used for reading detached blobs.
Definition Blob.h:97
int p_nbytes
Size of blob data (in bytes)
Definition Blob.h:95
void takeData(char *buffer, int nbytes)
Set the data stored in the BLOB without copying it.
Definition Blob.cpp:398
Blob & operator=(const Blob &other)
This makes the two blob objects exactly the same (copies the blob)
Definition Blob.cpp:92
virtual ~Blob()
Destroys the Blob object.
Definition Blob.cpp:115
char * p_buffer
Buffer blob data is stored in.
Definition Blob.h:93
virtual void ReadData(std::istream &is)
Read binary data from an input stream into the Blob object.
Definition Blob.cpp:351
QString p_blobName
Name of the Blob object.
Definition Blob.h:91
Container for cube-like labels.
Definition Pvl.h:119
Contains Pvl Groups and Pvl Objects.
Definition PvlObject.h:61
This is free and unencumbered software released into the public domain.
Definition Apollo.h:16
bool IsBlob(PvlObject &obj)
Checks pvl object and returns whether or not it is a Blob.
Definition Blob.cpp:580
long long int BigInt
Big int.
Definition Constants.h:49