Qt 4.8
Public Functions | Public Variables | List of all members
QHttpMultiPartIODevice Class Reference

#include <qhttpmultipart_p.h>

Inheritance diagram for QHttpMultiPartIODevice:
QIODevice QObject

Public Functions

virtual bool atEnd () const
 Returns true if the current read and write position is at the end of the device (i.e. More...
 
virtual qint64 bytesAvailable () const
 Returns the number of bytes that are available for reading. More...
 
virtual qint64 bytesToWrite () const
 For buffered devices, this function returns the number of bytes waiting to be written. More...
 
virtual void close ()
 First emits aboutToClose(), then closes the device and sets its OpenMode to NotOpen. More...
 
virtual bool isSequential () const
 Returns true if this device is sequential; otherwise returns false. More...
 
 QHttpMultiPartIODevice (QHttpMultiPartPrivate *parentMultiPart)
 
virtual qint64 readData (char *data, qint64 maxSize)
 Reads up to maxSize bytes from the device into data, and returns the number of bytes read or -1 if an error occurred. More...
 
virtual bool reset ()
 Seeks to the start of input for random-access devices. More...
 
virtual qint64 size () const
 For open random-access devices, this function returns the size of the device. More...
 
virtual qint64 writeData (const char *data, qint64 maxSize)
 Writes up to maxSize bytes from data to the device. More...
 
 ~QHttpMultiPartIODevice ()
 
- Public Functions inherited from QIODevice
virtual bool canReadLine () const
 Returns true if a complete line of data can be read from the device; otherwise returns false. More...
 
QString errorString () const
 Returns a human-readable description of the last device error that occurred. More...
 
bool getChar (char *c)
 Reads one character from the device and stores it in c. More...
 
bool isOpen () const
 Returns true if the device is open; otherwise returns false. More...
 
bool isReadable () const
 Returns true if data can be read from the device; otherwise returns false. More...
 
bool isTextModeEnabled () const
 Returns true if the Text flag is enabled; otherwise returns false. More...
 
bool isWritable () const
 Returns true if data can be written to the device; otherwise returns false. More...
 
virtual bool open (OpenMode mode)
 Opens the device and sets its OpenMode to mode. More...
 
OpenMode openMode () const
 Returns the mode in which the device has been opened; i.e. More...
 
qint64 peek (char *data, qint64 maxlen)
 Reads at most maxSize bytes from the device into data, without side effects (i. More...
 
QByteArray peek (qint64 maxlen)
 Peeks at most maxSize bytes from the device, returning the data peeked as a QByteArray. More...
 
virtual qint64 pos () const
 For random-access devices, this function returns the position that data is written to or read from. More...
 
bool putChar (char c)
 Writes the character c to the device. More...
 
 QIODevice ()
 Constructs a QIODevice object. More...
 
 QIODevice (QObject *parent)
 Constructs a QIODevice object with the given parent. More...
 
qint64 read (char *data, qint64 maxlen)
 Reads at most maxSize bytes from the device into data, and returns the number of bytes read. More...
 
QByteArray read (qint64 maxlen)
 Reads at most maxSize bytes from the device, and returns the data read as a QByteArray. More...
 
QByteArray readAll ()
 Reads all available data from the device, and returns it as a QByteArray. More...
 
qint64 readLine (char *data, qint64 maxlen)
 This function reads a line of ASCII characters from the device, up to a maximum of maxSize - 1 bytes, stores the characters in data, and returns the number of bytes read. More...
 
QByteArray readLine (qint64 maxlen=0)
 Reads a line from the device, but no more than maxSize characters, and returns the result as a QByteArray. More...
 
virtual bool seek (qint64 pos)
 For random-access devices, this function sets the current position to pos, returning true on success, or false if an error occurred. More...
 
void setTextModeEnabled (bool enabled)
 If enabled is true, this function sets the Text flag on the device; otherwise the Text flag is removed. More...
 
void ungetChar (char c)
 Puts the character c back into the device, and decrements the current position unless the position is 0. More...
 
virtual bool waitForBytesWritten (int msecs)
 For buffered devices, this function waits until a payload of buffered written data has been written to the device and the bytesWritten() signal has been emitted, or until msecs milliseconds have passed. More...
 
virtual bool waitForReadyRead (int msecs)
 Blocks until new data is available for reading and the readyRead() signal has been emitted, or until msecs milliseconds have passed. More...
 
qint64 write (const char *data, qint64 len)
 Writes at most maxSize bytes of data from data to the device. More...
 
qint64 write (const char *data)
 Writes data from a zero-terminated string of 8-bit characters to the device. More...
 
qint64 write (const QByteArray &data)
 Writes the content of byteArray to the device. More...
 
virtual ~QIODevice ()
 The destructor is virtual, and QIODevice is an abstract base class. More...
 
- Public Functions inherited from QObject
bool blockSignals (bool b)
 If block is true, signals emitted by this object are blocked (i.e., emitting a signal will not invoke anything connected to it). More...
 
const QObjectListchildren () const
 Returns a list of child objects. More...
 
bool connect (const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoConnection) const
 
bool disconnect (const char *signal=0, const QObject *receiver=0, const char *member=0)
 
bool disconnect (const QObject *receiver, const char *member=0)
 
void dumpObjectInfo ()
 Dumps information about signal connections, etc. More...
 
void dumpObjectTree ()
 Dumps a tree of children to the debug output. More...
 
QList< QByteArraydynamicPropertyNames () const
 Returns the names of all properties that were dynamically added to the object using setProperty(). More...
 
virtual bool event (QEvent *)
 This virtual function receives events to an object and should return true if the event e was recognized and processed. More...
 
virtual bool eventFilter (QObject *, QEvent *)
 Filters events if this object has been installed as an event filter for the watched object. More...
 
template<typename T >
findChild (const QString &aName=QString()) const
 Returns the child of this object that can be cast into type T and that is called name, or 0 if there is no such object. More...
 
template<typename T >
QList< T > findChildren (const QString &aName=QString()) const
 Returns all children of this object with the given name that can be cast to type T, or an empty list if there are no such objects. More...
 
template<typename T >
QList< T > findChildren (const QRegExp &re) const
 
bool inherits (const char *classname) const
 Returns true if this object is an instance of a class that inherits className or a QObject subclass that inherits className; otherwise returns false. More...
 
void installEventFilter (QObject *)
 Installs an event filter filterObj on this object. More...
 
bool isWidgetType () const
 Returns true if the object is a widget; otherwise returns false. More...
 
void killTimer (int id)
 Kills the timer with timer identifier, id. More...
 
virtual const QMetaObjectmetaObject () const
 Returns a pointer to the meta-object of this object. More...
 
void moveToThread (QThread *thread)
 Changes the thread affinity for this object and its children. More...
 
QString objectName () const
 
QObjectparent () const
 Returns a pointer to the parent object. More...
 
QVariant property (const char *name) const
 Returns the value of the object's name property. More...
 
Q_INVOKABLE QObject (QObject *parent=0)
 Constructs an object with parent object parent. More...
 
void removeEventFilter (QObject *)
 Removes an event filter object obj from this object. More...
 
void setObjectName (const QString &name)
 
void setParent (QObject *)
 Makes the object a child of parent. More...
 
bool setProperty (const char *name, const QVariant &value)
 Sets the value of the object's name property to value. More...
 
void setUserData (uint id, QObjectUserData *data)
 
bool signalsBlocked () const
 Returns true if signals are blocked; otherwise returns false. More...
 
int startTimer (int interval)
 Starts a timer and returns a timer identifier, or returns zero if it could not start a timer. More...
 
QThreadthread () const
 Returns the thread in which the object lives. More...
 
QObjectUserDatauserData (uint id) const
 
virtual ~QObject ()
 Destroys the object, deleting all its child objects. More...
 

Public Variables

qint64 deviceSize
 
QHttpMultiPartPrivatemultiPart
 
QList< qint64partOffsets
 
qint64 readPointer
 

Additional Inherited Members

- Public Types inherited from QIODevice
enum  OpenModeFlag {
  NotOpen = 0x0000, ReadOnly = 0x0001, WriteOnly = 0x0002, ReadWrite = ReadOnly | WriteOnly,
  Append = 0x0004, Truncate = 0x0008, Text = 0x0010, Unbuffered = 0x0020
}
 This enum is used with open() to describe the mode in which a device is opened. More...
 
- Public Slots inherited from QObject
void deleteLater ()
 Schedules this object for deletion. More...
 
- Signals inherited from QIODevice
void aboutToClose ()
 This signal is emitted when the device is about to close. More...
 
void bytesWritten (qint64 bytes)
 This signal is emitted every time a payload of data has been written to the device. More...
 
void readChannelFinished ()
 This signal is emitted when the input (reading) stream is closed in this device. More...
 
void readyRead ()
 This signal is emitted once every time new data is available for reading from the device. More...
 
- Signals inherited from QObject
void destroyed (QObject *=0)
 This signal is emitted immediately before the object obj is destroyed, and can not be blocked. More...
 
- Static Public Functions inherited from QObject
static bool connect (const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
 Creates a connection of the given type from the signal in the sender object to the method in the receiver object. More...
 
static bool connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type=Qt::AutoConnection)
 
static bool disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *member)
 Disconnects signal in object sender from method in object receiver. More...
 
static bool disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &member)
 
static uint registerUserData ()
 
static QString tr (const char *sourceText, const char *comment=0, int n=-1)
 
static QString trUtf8 (const char *sourceText, const char *comment=0, int n=-1)
 
- Static Public Variables inherited from QObject
static const QMetaObject staticMetaObject
 This variable stores the meta-object for the class. More...
 
- Protected Functions inherited from QIODevice
 QIODevice (QIODevicePrivate &dd, QObject *parent=0)
 
virtual qint64 readLineData (char *data, qint64 maxlen)
 Reads up to maxSize characters into data and returns the number of characters read. More...
 
void setErrorString (const QString &errorString)
 Sets the human readable description of the last device error that occurred to str. More...
 
void setOpenMode (OpenMode openMode)
 Sets the OpenMode of the device to openMode. More...
 
- Protected Functions inherited from QObject
virtual void childEvent (QChildEvent *)
 This event handler can be reimplemented in a subclass to receive child events. More...
 
virtual void connectNotify (const char *signal)
 This virtual function is called when something has been connected to signal in this object. More...
 
virtual void customEvent (QEvent *)
 This event handler can be reimplemented in a subclass to receive custom events. More...
 
virtual void disconnectNotify (const char *signal)
 This virtual function is called when something has been disconnected from signal in this object. More...
 
 QObject (QObjectPrivate &dd, QObject *parent=0)
 
int receivers (const char *signal) const
 Returns the number of receivers connected to the signal. More...
 
QObjectsender () const
 Returns a pointer to the object that sent the signal, if called in a slot activated by a signal; otherwise it returns 0. More...
 
int senderSignalIndex () const
 
virtual void timerEvent (QTimerEvent *)
 This event handler can be reimplemented in a subclass to receive timer events for the object. More...
 
- Protected Variables inherited from QObject
QScopedPointer< QObjectDatad_ptr
 
- Static Protected Variables inherited from QObject
static const QMetaObject staticQtMetaObject
 

Detailed Description

Definition at line 118 of file qhttpmultipart_p.h.

Constructors and Destructors

◆ QHttpMultiPartIODevice()

QHttpMultiPartIODevice::QHttpMultiPartIODevice ( QHttpMultiPartPrivate parentMultiPart)
inline

Definition at line 121 of file qhttpmultipart_p.h.

121  :
122  QIODevice(), multiPart(parentMultiPart), readPointer(0), deviceSize(-1) {
123  }
QHttpMultiPartPrivate * multiPart
QIODevice()
Constructs a QIODevice object.
Definition: qiodevice.cpp:390

◆ ~QHttpMultiPartIODevice()

QHttpMultiPartIODevice::~QHttpMultiPartIODevice ( )
inline

Definition at line 125 of file qhttpmultipart_p.h.

125  {
126  }

Functions

◆ atEnd()

virtual bool QHttpMultiPartIODevice::atEnd ( ) const
inlinevirtual

Returns true if the current read and write position is at the end of the device (i.e.

there is no more data available for reading on the device); otherwise returns false.

For some devices, atEnd() can return true even though there is more data to read. This special case only applies to devices that generate data in direct response to you calling read() (e.g., /dev or /proc files on Unix and Mac OS X, or console input / stdin on all platforms).

See also
bytesAvailable(), read(), isSequential()

Reimplemented from QIODevice.

Definition at line 128 of file qhttpmultipart_p.h.

128  {
129  return readPointer == size();
130  }
virtual qint64 size() const
For open random-access devices, this function returns the size of the device.

◆ bytesAvailable()

virtual qint64 QHttpMultiPartIODevice::bytesAvailable ( ) const
inlinevirtual

Returns the number of bytes that are available for reading.

This function is commonly used with sequential devices to determine the number of bytes to allocate in a buffer before reading.

Subclasses that reimplement this function must call the base implementation in order to include the size of QIODevices' buffer. Example:

qint64 CustomDevice::bytesAvailable() const
{
return buffer.size() + QIODevice::bytesAvailable();
}
See also
bytesToWrite(), readyRead(), isSequential()

Reimplemented from QIODevice.

Definition at line 132 of file qhttpmultipart_p.h.

132  {
133  return size() - readPointer;
134  }
virtual qint64 size() const
For open random-access devices, this function returns the size of the device.

◆ bytesToWrite()

virtual qint64 QHttpMultiPartIODevice::bytesToWrite ( ) const
inlinevirtual

For buffered devices, this function returns the number of bytes waiting to be written.

For devices with no buffer, this function returns 0.

See also
bytesAvailable(), bytesWritten(), isSequential()

Reimplemented from QIODevice.

Definition at line 143 of file qhttpmultipart_p.h.

143  {
144  return 0;
145  }

◆ close()

virtual void QHttpMultiPartIODevice::close ( )
inlinevirtual

First emits aboutToClose(), then closes the device and sets its OpenMode to NotOpen.

The error string is also reset.

See also
setOpenMode() OpenMode

Reimplemented from QIODevice.

Definition at line 136 of file qhttpmultipart_p.h.

136  {
137  readPointer = 0;
138  partOffsets.clear();
139  deviceSize = -1;
141  }
QList< qint64 > partOffsets
virtual void close()
First emits aboutToClose(), then closes the device and sets its OpenMode to NotOpen.
Definition: qiodevice.cpp:590
void clear()
Removes all items from the list.
Definition: qlist.h:764

◆ isSequential()

bool QHttpMultiPartIODevice::isSequential ( ) const
virtual

Returns true if this device is sequential; otherwise returns false.

Sequential devices, as opposed to a random-access devices, have no concept of a start, an end, a size, or a current position, and they do not support seeking. You can only read from the device when it reports that data is available. The most common example of a sequential device is a network socket. On Unix, special files such as /dev/zero and fifo pipes are sequential.

Regular files, on the other hand, do support random access. They have both a size and a current position, and they also support seeking backwards and forwards in the data stream. Regular files are non-sequential.

The QIODevice implementation returns false.

See also
bytesAvailable()

Reimplemented from QIODevice.

Definition at line 477 of file qhttpmultipart.cpp.

478 {
479  for (int a = 0; a < multiPart->parts.count(); a++) {
480  QIODevice *device = multiPart->parts.at(a).d->bodyDevice;
481  // we are sequential if any of the bodyDevices of our parts are sequential;
482  // when reading from a byte array, we are not sequential
483  if (device && device->isSequential())
484  return true;
485  }
486  return false;
487 }
long ASN1_INTEGER_get ASN1_INTEGER * a
int count(const T &t) const
Returns the number of occurrences of value in the list.
Definition: qlist.h:891
const T & at(int i) const
Returns the item at index position i in the list.
Definition: qlist.h:468
QSharedDataPointer< QHttpPartPrivate > d
virtual bool isSequential() const
Returns true if this device is sequential; otherwise returns false.
Definition: qiodevice.cpp:454
QList< QHttpPart > parts
QHttpMultiPartPrivate * multiPart
QIODevice * bodyDevice
The QIODevice class is the base interface class of all I/O devices in Qt.
Definition: qiodevice.h:66

◆ readData()

qint64 QHttpMultiPartIODevice::readData ( char *  data,
qint64  maxSize 
)
virtual

Reads up to maxSize bytes from the device into data, and returns the number of bytes read or -1 if an error occurred.

If there are no bytes to be read and there can never be more bytes available (examples include socket closed, pipe closed, sub-process finished), this function returns -1.

This function is called by QIODevice. Reimplement this function when creating a subclass of QIODevice.

When reimplementing this function it is important that this function reads all the required data before returning. This is required in order for QDataStream to be able to operate on the class. QDataStream assumes all the requested information was read and therefore does not retry reading if there was a problem.

See also
read() readLine() writeData()

Implements QIODevice.

Definition at line 497 of file qhttpmultipart.cpp.

498 {
499  qint64 bytesRead = 0, index = 0;
500 
501  // skip the parts we have already read
502  while (index < multiPart->parts.count() &&
504  + multiPart->boundary.count() + 6) // 6 == 2 boundary dashes, \r\n after boundary, \r\n after multipart
505  index++;
506 
507  // read the data
508  while (bytesRead < maxSize && index < multiPart->parts.count()) {
509 
510  // check whether we need to read the boundary of the current part
511  QByteArray boundaryData = "--" + multiPart->boundary + "\r\n";
512  qint64 boundaryCount = boundaryData.count();
513  qint64 partIndex = readPointer - partOffsets.at(index);
514  if (partIndex < boundaryCount) {
515  qint64 boundaryBytesRead = qMin(boundaryCount - partIndex, maxSize - bytesRead);
516  memcpy(data + bytesRead, boundaryData.constData() + partIndex, boundaryBytesRead);
517  bytesRead += boundaryBytesRead;
518  readPointer += boundaryBytesRead;
519  partIndex += boundaryBytesRead;
520  }
521 
522  // check whether we need to read the data of the current part
523  if (bytesRead < maxSize && partIndex >= boundaryCount && partIndex < boundaryCount + multiPart->parts.at(index).d->size()) {
524  qint64 dataBytesRead = multiPart->parts[index].d->readData(data + bytesRead, maxSize - bytesRead);
525  if (dataBytesRead == -1)
526  return -1;
527  bytesRead += dataBytesRead;
528  readPointer += dataBytesRead;
529  partIndex += dataBytesRead;
530  }
531 
532  // check whether we need to read the ending CRLF of the current part
533  if (bytesRead < maxSize && partIndex >= boundaryCount + multiPart->parts.at(index).d->size()) {
534  if (bytesRead == maxSize - 1)
535  return bytesRead;
536  memcpy(data + bytesRead, "\r\n", 2);
537  bytesRead += 2;
538  readPointer += 2;
539  index++;
540  }
541  }
542  // check whether we need to return the final boundary
543  if (bytesRead < maxSize && index == multiPart->parts.count()) {
544  QByteArray finalBoundary = "--" + multiPart->boundary + "--\r\n";
545  qint64 boundaryIndex = readPointer + finalBoundary.count() - size();
546  qint64 lastBoundaryBytesRead = qMin(finalBoundary.count() - boundaryIndex, maxSize - bytesRead);
547  memcpy(data + bytesRead, finalBoundary.constData() + boundaryIndex, lastBoundaryBytesRead);
548  bytesRead += lastBoundaryBytesRead;
549  readPointer += lastBoundaryBytesRead;
550  }
551  return bytesRead;
552 }
QList< qint64 > partOffsets
Q_DECL_CONSTEXPR const T & qMin(const T &a, const T &b)
Definition: qglobal.h:1215
The QByteArray class provides an array of bytes.
Definition: qbytearray.h:135
virtual qint64 size() const
For open random-access devices, this function returns the size of the device.
const T & at(int i) const
Returns the item at index position i in the list.
Definition: qlist.h:468
static const char * data(const QByteArray &arr)
__int64 qint64
Definition: qglobal.h:942
QSharedDataPointer< QHttpPartPrivate > d
QListData::Data * d
Definition: qlist.h:118
const char * constData() const
Returns a pointer to the data stored in the byte array.
Definition: qbytearray.h:433
int count(char c) const
Returns the number of occurrences of character ch in the byte array.
QList< QHttpPart > parts
QHttpMultiPartPrivate * multiPart
quint16 index
qint64 size() const

◆ reset()

bool QHttpMultiPartIODevice::reset ( )
virtual

Seeks to the start of input for random-access devices.

Returns true on success; otherwise returns false (for example, if the device is not open).

Note that when using a QTextStream on a QFile, calling reset() on the QFile will not have the expected result because QTextStream buffers the file. Use the QTextStream::seek() function instead.

See also
seek()

Reimplemented from QIODevice.

Definition at line 489 of file qhttpmultipart.cpp.

490 {
491  for (int a = 0; a < multiPart->parts.count(); a++)
492  if (!multiPart->parts[a].d->reset())
493  return false;
494  readPointer = 0;
495  return true;
496 }
long ASN1_INTEGER_get ASN1_INTEGER * a
int count(const T &t) const
Returns the number of occurrences of value in the list.
Definition: qlist.h:891
QListData::Data * d
Definition: qlist.h:118
QList< QHttpPart > parts
QHttpMultiPartPrivate * multiPart

◆ size()

qint64 QHttpMultiPartIODevice::size ( ) const
virtual

For open random-access devices, this function returns the size of the device.

For open sequential devices, bytesAvailable() is returned.

If the device is closed, the size returned will not reflect the actual size of the device.

See also
isSequential(), pos()

Reimplemented from QIODevice.

Definition at line 458 of file qhttpmultipart.cpp.

459 {
460  // if not done yet, we calculate the size and the offsets of each part,
461  // including boundary (needed later in readData)
462  if (deviceSize == -1) {
463  qint64 currentSize = 0;
464  qint64 boundaryCount = multiPart->boundary.count();
465  for (int a = 0; a < multiPart->parts.count(); a++) {
466  partOffsets.append(currentSize);
467  // 4 additional bytes for the "--" before and the "\r\n" after the boundary,
468  // and 2 bytes for the "\r\n" after the content
469  currentSize += boundaryCount + 4 + multiPart->parts.at(a).d->size() + 2;
470  }
471  currentSize += boundaryCount + 6; // size for ending boundary, 2 beginning and ending dashes and "\r\n"
472  deviceSize = currentSize;
473  }
474  return deviceSize;
475 }
QList< qint64 > partOffsets
long ASN1_INTEGER_get ASN1_INTEGER * a
int count(const T &t) const
Returns the number of occurrences of value in the list.
Definition: qlist.h:891
void append(const T &t)
Inserts value at the end of the list.
Definition: qlist.h:507
const T & at(int i) const
Returns the item at index position i in the list.
Definition: qlist.h:468
__int64 qint64
Definition: qglobal.h:942
QSharedDataPointer< QHttpPartPrivate > d
int count(char c) const
Returns the number of occurrences of character ch in the byte array.
QList< QHttpPart > parts
QHttpMultiPartPrivate * multiPart
qint64 size() const

◆ writeData()

qint64 QHttpMultiPartIODevice::writeData ( const char *  data,
qint64  maxSize 
)
virtual

Writes up to maxSize bytes from data to the device.

Returns the number of bytes written, or -1 if an error occurred.

This function is called by QIODevice. Reimplement this function when creating a subclass of QIODevice.

When reimplementing this function it is important that this function writes all the data available before returning. This is required in order for QDataStream to be able to operate on the class. QDataStream assumes all the information was written and therefore does not retry writing if there was a problem.

See also
read() write()

Implements QIODevice.

Definition at line 554 of file qhttpmultipart.cpp.

555 {
556  Q_UNUSED(data);
557  Q_UNUSED(maxSize);
558  return -1;
559 }
static const char * data(const QByteArray &arr)
#define Q_UNUSED(x)
Indicates to the compiler that the parameter with the specified name is not used in the body of a fun...
Definition: qglobal.h:1729

Properties

◆ deviceSize

qint64 QHttpMultiPartIODevice::deviceSize
mutable

Definition at line 156 of file qhttpmultipart_p.h.

◆ multiPart

QHttpMultiPartPrivate* QHttpMultiPartIODevice::multiPart

Definition at line 153 of file qhttpmultipart_p.h.

◆ partOffsets

QList<qint64> QHttpMultiPartIODevice::partOffsets
mutable

Definition at line 155 of file qhttpmultipart_p.h.

◆ readPointer

qint64 QHttpMultiPartIODevice::readPointer

Definition at line 154 of file qhttpmultipart_p.h.


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