summaryrefslogtreecommitdiffstats
path: root/mimelib/multipar.h
diff options
context:
space:
mode:
Diffstat (limited to 'mimelib/multipar.h')
-rw-r--r--mimelib/multipar.h129
1 files changed, 129 insertions, 0 deletions
diff --git a/mimelib/multipar.h b/mimelib/multipar.h
new file mode 100644
index 000000000..f6de628aa
--- /dev/null
+++ b/mimelib/multipar.h
@@ -0,0 +1,129 @@
+//=============================================================================
+// File: multipar.h
+// Contents: Declarations for MultiparBodyPart and MultipartMessage
+// Maintainer: Doug Sauder <dwsauder@fwb.gulf.net>
+// WWW: http://www.fwb.gulf.net/~dwsauder/mimepp.html
+//
+// Copyright (c) 1996, 1997 Douglas W. Sauder
+// All rights reserved.
+//
+// IN NO EVENT SHALL DOUGLAS W. SAUDER BE LIABLE TO ANY PARTY FOR DIRECT,
+// INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF
+// THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF DOUGLAS W. SAUDER
+// HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// DOUGLAS W. SAUDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT
+// NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+// PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS"
+// BASIS, AND DOUGLAS W. SAUDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE,
+// SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+//
+//=============================================================================
+
+#ifndef MULTIPAR_H
+#define MULTIPAR_H
+
+#include "basicmsg.h"
+
+
+class MultipartBodyPart {
+
+public:
+
+ MultipartBodyPart();
+ virtual ~MultipartBodyPart();
+
+ // Get or set the 'Content-Type' header field
+ // + The member functions that involve enumerated types (ints)
+ // will work only for well-known types or subtypes. The enum
+ // values are defined in <mimepp/enum.h>.
+ // Type
+ const DwString& TypeStr() const;
+ int Type() const;
+ void SetTypeStr(const DwString& aStr);
+ void SetType(int aType);
+ // Subtype
+ const DwString& SubtypeStr() const;
+ int Subtype() const;
+ void SetSubtypeStr(const DwString& aStr);
+ void SetSubtype(int aSubtype);
+
+ // Get or set the 'Content-Transfer-Encoding' header field
+ // + The member functions that involve enumerated types (ints)
+ // will work only for well-known encodings. The enum values
+ // are defined in <mimepp/enum.h>.
+ const DwString& ContentTransferEncodingStr() const;
+ int ContentTransferEncoding() const;
+ void SetContentTransferEncodingStr(const DwString& aStr);
+ void SetContentTransferEncoding(int aCte);
+
+ // Cte is short for ContentTransferEncoding.
+ // These functions are an alternative to the ones with longer names.
+ const DwString& CteStr() const;
+ int Cte() const;
+ void SetCteStr(const DwString& aStr);
+ void SetCte(int aCte);
+
+ // Get or set the 'Content-Description' header field
+ const DwString& ContentDescription() const;
+ void SetContentDescription(const DwString& aStr);
+
+ // Get or set the 'Content-Disposition' header field
+ const DwString& ContentDisposition() const;
+ void SetContentDisposition(const DwString& aStr);
+
+ // Get or set the body of this body part
+ const DwString& Body() const;
+ void SetBody(const DwString& aStr);
+
+protected:
+
+ DwString mType;
+ DwString mSubtype;
+ DwString mCte;
+ DwString mContentDescription;
+ DwString mContentDisposition;
+ DwString mBody;
+
+};
+
+
+class MultipartMessage : public BasicMessage {
+
+public:
+
+ // Use this constructor to create a new multipart message
+ MultipartMessage();
+
+ // Use this constructor to create a wrapper for a DwMessage that has
+ // been parsed and has been verified as a multipart
+ MultipartMessage(DwMessage* aMsg);
+
+ virtual ~MultipartMessage();
+
+ // This virtual function is overridden from BasicMessage. In
+ // MultipartMessage, we add the Content-Type header field with
+ // type Multipart and subtype Mixed
+ virtual void SetAutomaticFields();
+
+ // Return the number of body parts contained
+ int NumberOfParts() const;
+
+ // Get the body part at position in aIdx. Indexing starts at 0.
+ // If there is no body part at that index, aPart will have its
+ // attributes set to empty values.
+ void BodyPart(int aIdx, MultipartBodyPart& aPart);
+
+ // Set the body part at position in aIdx. Indexing starts at 0.
+ // If you have aIdx = 10 and there are only 2 body parts, 7 empty
+ // body parts will be created to fill slots 2 through 8. If you
+ // just want to add a body part at the end, use AddBodyPart().
+ void SetBodyPart(int aIdx, const MultipartBodyPart& aPart);
+
+ // Append a body part to the message.
+ void AddBodyPart(const MultipartBodyPart& aPart);
+
+};
+
+#endif
+