Dacons LLP Mailit for C/C++ Version 1.0.8

EmaiMessage.hpp

Go to the documentation of this file.
00001 
00014 #ifndef __EMAIMESSAGE_HPP__
00015 #define __EMAIMESSAGE_HPP__
00016 
00017 #include <EmaiMessage.h>
00018 #include <EmaiObject.hpp>
00019 #include <EmaiExceptions.hpp>
00020 #include <string>
00021 
00027 namespace Emai
00028 {
00029 
00030 typedef std::basic_string<EmaiChar>     String;
00031 typedef std::basic_string<EmaiUniChar>  UniString;
00032 
00041 class StringList : public Object<EmaiStringList>
00042 {
00043 protected:
00044 
00045 public:
00046 
00047                                         StringList(
00048                                                 EmaiOptions inOptions = EmaiNullOptions);
00049 
00050                                         StringList(
00051                                                 EmaiStringList inStringList,
00052                                                 bool inAddRef);
00053 
00054                                         StringList(
00055                                                 const StringList& inCopy);
00056 
00057     StringList&                         operator = (
00058                                                 const StringList& inCopy);
00059 
00060 
00061     void                                AddString(
00062                                                 EmaiConstUniCharPtr inString,
00063                                                 EmaiOptions inOptions = EmaiNullOptions);
00064 
00065     EmaiUint32                          GetCount(
00066                                                 EmaiOptions inOptions = EmaiNullOptions);
00067 
00068     EmaiConstUniCharPtr                 GetString(
00069                                                 EmaiUint32 inIndex,
00070                                                 EmaiOptions inOptions = EmaiNullOptions);
00071 
00072 };
00073 
00082 class ContactList : public Object<EmaiContactList>
00083 {
00084 protected:
00085 
00086 public:
00087 
00088                                         ContactList(
00089                                                 EmaiOptions inOptions = EmaiNullOptions);
00090 
00091                                         ContactList(
00092                                                 EmaiContactList inContactList,
00093                                                 bool inAddRef);
00094 
00095                                         ContactList(
00096                                                 const ContactList& inCopy);
00097 
00098     ContactList&                        operator = (
00099                                                 const ContactList& inCopy);
00100 
00101 
00115     void                                AddContact(
00116                                                 EmaiConstUniCharPtr inName,
00117                                                 EmaiConstUniCharPtr inAddress,
00118                                                 EmaiOptions inOptions = EmaiNullOptions);
00119 
00129     EmaiUint32                          GetCount(
00130                                                 EmaiOptions inOptions = EmaiNullOptions);
00131 
00144     EmaiConstUniCharPtr                 GetName(
00145                                                 EmaiUint32 inIndex,
00146                                                 EmaiOptions inOptions = EmaiNullOptions);
00147 
00160     EmaiConstUniCharPtr                 GetAddress(
00161                                                 EmaiUint32 inIndex,
00162                                                 EmaiOptions inOptions = EmaiNullOptions);
00163 };
00164 
00177 class ContentField : public Object<EmaiContentField>
00178 {
00179 protected:
00180 
00181 public:
00182 
00183                                         ContentField(
00184                                                 EmaiConstUniCharPtr inValue,
00185                                                 EmaiOptions inOptions = EmaiNullOptions);
00186 
00187                                         ContentField(
00188                                                 EmaiContentField inContentField,
00189                                                 bool inAddRef);
00190 
00191                                         ContentField(
00192                                                 const ContentField& inCopy);
00193 
00194     ContentField&                       operator = (
00195                                                 const ContentField& inCopy);
00196 
00197 
00209     void                                AddParameter(
00210                                                 EmaiConstUniCharPtr inParamName,
00211                                                 EmaiConstUniCharPtr inParamValue,
00212                                                 EmaiOptions inOptions = EmaiNullOptions);
00213 
00225     EmaiConstUniCharPtr                 GetValue(
00226                                                 EmaiOptions inOptions = EmaiNullOptions);
00227 
00238     EmaiUint32                          GetParameterCount(
00239                                                 EmaiOptions inOptions = EmaiNullOptions);
00240 
00253     EmaiConstUniCharPtr                 GetParameterName(
00254                                                 EmaiUint32 inIndex,
00255                                                 EmaiOptions inOptions = EmaiNullOptions);
00256 
00269     EmaiConstUniCharPtr                 GetParameterValue(
00270                                                 EmaiUint32 inIndex,
00271                                                 EmaiOptions inOptions = EmaiNullOptions);
00272 
00286     EmaiConstUniCharPtr                 FindParameterValue(
00287                                                 EmaiConstUniCharPtr inParamName,
00288                                                 EmaiOptions inOptions = EmaiNullOptions);
00289 };
00290 
00298 class MessagePart : public Object<EmaiMessagePart>
00299 {
00300 protected:
00301 
00302                                         MessagePart();//no implementation
00303 
00304 public:
00305     
00306                                         ~MessagePart();
00307     
00311                                         MessagePart(
00312                                                 const EmaiPartData& inData,
00313                                                 EmaiOptions inOptions = EmaiNullOptions);
00314 
00318                                         MessagePart(
00319                                                 EmaiMessagePart inMessagePart,
00320                                                 bool inAddRef);
00321 
00325                                         MessagePart(
00326                                                 const MessagePart& inCopy);
00327 
00328     MessagePart&                        operator = (
00329                                                 const MessagePart& inCopy);
00330                                         
00340     void                                AddSubParts(
00341                                                 const EmaiMessagePart inSubParts[],
00342                                                 EmaiUint32 inSubPartCount,
00343                                                 EmaiOptions inOptions = EmaiNullOptions);
00344 
00360     void                                GetSubParts(
00361                                                 EmaiMessagePart outSubParts[],
00362                                                 EmaiUint32* ioSubPartCount,
00363                                                 EmaiOptions inOptions = EmaiNullOptions);
00364 
00375     void                                GetData(
00376                                                 EmaiPartData& outData,
00377                                                 EmaiOptions inOptions = EmaiNullOptions);
00378 };
00379 
00387 class Message : public Object<EmaiMessage>
00388 {
00389 protected:
00390 
00391                                         Message();//no implementation
00392 
00393 public:
00394 
00395                                         ~Message();
00396 
00400                                         Message(
00401                                                 MessagePart& inRootPart,
00402                                                 EmaiOptions inOptions = EmaiNullOptions);
00403 
00407                                         Message(
00408                                                 const void* inData,
00409                                                 EmaiUint32 inDataSize,
00410                                                 EmaiOptions inOptions = EmaiNullOptions);
00411 
00415                                         Message(
00416                                                 EmaiMessage inMessage,
00417                                                 bool inAddRef);
00421                                         Message(
00422                                                 const Message& inCopy);
00423     Message&                            operator = (
00424                                                 const Message& inCopy);
00425                                         
00426     void                                SetContactList(
00427                                                 const Emai::ContactList& inContactList,
00428                                                 EmaiOptions inOptions);
00429 
00443     void                                SetField(
00444                                                 EmaiConstUniCharPtr inFieldName,
00445                                                 EmaiConstUniCharPtr inFieldValue,
00446                                                 EmaiOptions inOptions = EmaiNullOptions);
00447 
00448     /*
00449     // @brief   Copies contact field from the message header.
00450     //
00451     // @param   inOptions - EmaiFrom, EmaiTo, etc
00452     //
00453     // @return  On exit will be filled with copy of the contact list
00454     //                  from the message, any modifications of the returned
00455     //                  contact list doesn't affect message contacts
00456     //
00457     // @see     EmaiMessageCopyContactList
00458     */
00459     ContactList                         CopyContactList(
00460                                                 EmaiOptions inOptions);
00474     EmaiConstUniCharPtr                 GetField(
00475                                                 EmaiConstUniCharPtr inFieldName,
00476                                                 EmaiOptions inOptions = EmaiNullOptions);
00477 
00487     MessagePart                         GetRootPart(
00488                                                 EmaiOptions inOptions = EmaiNullOptions);
00489 
00490     void                                GetData(
00491                                                 const void** outData,       
00492                                                 EmaiUint32* outHeaderSize,  
00493                                                 EmaiUint32* outDataSize,    
00494                                                 EmaiOptions inOptions = EmaiNullOptions);
00495 
00506     void                                    GetReceivedDateTime(
00507                                                 tm* outDateTime,
00508                                                 EmaiOptions inOptions = EmaiNullOptions);
00509 };
00510 
00511 
00512 /*
00513 // StringList class implemetation
00514 */
00515 //constructors
00516 inline
00517 StringList::StringList(
00518         EmaiOptions inOptions /*= EmaiNullOptions*/
00519     )
00520 {
00521     CheckErrorCode(EmaiStringListCreate(&mObject, inOptions));
00522 }
00523 
00524 inline
00525 StringList::StringList(
00526         EmaiStringList inStringList,
00527         bool inAddRef
00528     ):
00529     Parent(inStringList, inAddRef)
00530 {
00531 }
00532 
00533 inline
00534 StringList::StringList(
00535         const StringList& inCopy
00536     ):
00537     Parent(inCopy)
00538 {
00539 }
00540 
00541 inline StringList&
00542 StringList::operator = (
00543         const StringList& inCopy
00544     )
00545 {
00546     Parent::operator = (inCopy);
00547     return *this;
00548 }
00549 
00550 inline void
00551 StringList::AddString(
00552         EmaiConstUniCharPtr inString,
00553         EmaiOptions inOptions /*= EmaiNullOptions*/
00554     )
00555 {
00556     CheckErrorCode(EmaiStringListAddString(mObject, inString, inOptions));
00557 }
00558 
00559 inline EmaiUint32
00560 StringList::GetCount(
00561         EmaiOptions inOptions /*= EmaiNullOptions*/
00562     )
00563 {
00564     EmaiUint32 count = 0;
00565     CheckErrorCode(EmaiStringListGetCount(mObject, &count, inOptions));
00566     return count;
00567 }
00568 
00569 inline EmaiConstUniCharPtr
00570 StringList::GetString(
00571         EmaiUint32 inIndex,
00572         EmaiOptions inOptions /*= EmaiNullOptions*/
00573     )
00574 {
00575     EmaiConstUniCharPtr name = EmaiStringListGetString(mObject,
00576                                 inIndex, inOptions);
00577     if (name == NULL)
00578         CheckErrorCode(EmaiErrIncorrectParameter);
00579 
00580     return name;
00581 }
00582 
00583 
00584 /*
00585 // ContactList class implemetation
00586 */
00587 //constructors
00588 inline
00589 ContactList::ContactList(
00590         EmaiOptions inOptions /*= EmaiNullOptions*/
00591     )
00592 {
00593     CheckErrorCode(EmaiContactListCreate(&mObject, inOptions));
00594 }
00595 
00596 inline
00597 ContactList::ContactList(
00598         EmaiContactList inContactList,
00599         bool inAddRef
00600     ):
00601     Parent(inContactList, inAddRef)
00602 {
00603 }
00604 
00605 inline
00606 ContactList::ContactList(
00607         const ContactList& inCopy
00608     ):
00609     Parent(inCopy)
00610 {
00611 }
00612 
00613 inline ContactList&
00614 ContactList::operator = (
00615         const ContactList& inCopy
00616     )
00617 {
00618     Parent::operator = (inCopy);
00619     return *this;
00620 }
00621 
00622 inline void
00623 ContactList::AddContact(
00624         EmaiConstUniCharPtr inName,
00625         EmaiConstUniCharPtr inAddress,
00626         EmaiOptions inOptions /*= EmaiNullOptions*/
00627     )
00628 {
00629     CheckErrorCode(EmaiContactListAddContact(mObject, inName, inAddress,
00630                             NULL, inOptions));
00631 }
00632 
00633 inline EmaiUint32
00634 ContactList::GetCount(
00635         EmaiOptions inOptions /*= EmaiNullOptions*/
00636     )
00637 {
00638     EmaiUint32 count = 0;
00639     CheckErrorCode(EmaiContactListGetCount(mObject, &count, inOptions));
00640     return count;
00641 }
00642 
00643 inline EmaiConstUniCharPtr
00644 ContactList::GetName(
00645         EmaiUint32 inIndex,
00646         EmaiOptions inOptions /*= EmaiNullOptions*/
00647     )
00648 {
00649     EmaiConstUniCharPtr name = EmaiContactListGetContactName(mObject,
00650                                 inIndex, inOptions);
00651     if (name == NULL)
00652         CheckErrorCode(EmaiErrIncorrectParameter);
00653 
00654     return name;
00655 }
00656 
00657 inline EmaiConstUniCharPtr
00658 ContactList::GetAddress(
00659         EmaiUint32 inIndex,
00660         EmaiOptions inOptions /*= EmaiNullOptions*/
00661     )
00662 {
00663     EmaiConstUniCharPtr address = EmaiContactListGetContactAddress(mObject,
00664                                 inIndex, inOptions);
00665     if (address == NULL)
00666         CheckErrorCode(EmaiErrIncorrectParameter);
00667 
00668     return address;
00669 }
00670 
00671 /*
00672 // ContentField class implemetation
00673 */
00674 //constructors
00675 inline
00676 ContentField::ContentField(
00677         EmaiConstUniCharPtr inValue,
00678         EmaiOptions inOptions /*= EmaiNullOptions*/
00679     )
00680 {
00681     CheckErrorCode(EmaiContentFieldCreate(&mObject, inValue, inOptions));
00682 }
00683 
00684 inline
00685 ContentField::ContentField(
00686         EmaiContentField inContentField,
00687         bool inAddRef
00688     ):
00689     Parent(inContentField, inAddRef)
00690 {
00691 }
00692 
00693 inline
00694 ContentField::ContentField(
00695         const ContentField& inCopy
00696     ):
00697     Parent(inCopy)
00698 {
00699 }
00700 
00701 inline ContentField&
00702 ContentField::operator = (
00703         const ContentField& inCopy
00704     )
00705 {
00706     Parent::operator = (inCopy);
00707     return *this;
00708 }
00709 
00710 inline void
00711 ContentField::AddParameter(
00712         EmaiConstUniCharPtr inParamName,
00713         EmaiConstUniCharPtr inParamValue,
00714         EmaiOptions inOptions /*= EmaiNullOptions*/
00715     )
00716 {
00717     CheckErrorCode(EmaiContentFieldAddParameter(mObject, inParamName,
00718                             inParamValue, inOptions));
00719 }
00720 
00721 inline EmaiConstUniCharPtr
00722 ContentField::GetValue(
00723         EmaiOptions inOptions /*= EmaiNullOptions*/
00724     )
00725 {
00726     EmaiConstUniCharPtr value = EmaiContentFieldGetValue(mObject, inOptions);
00727     if (value == NULL)
00728         CheckErrorCode(EmaiErrIncorrectParameter);
00729 
00730     return value;
00731 }
00732 
00733 inline EmaiUint32
00734 ContentField::GetParameterCount(
00735         EmaiOptions inOptions /*= EmaiNullOptions*/
00736     )
00737 {
00738     EmaiUint32 count = 0;
00739     CheckErrorCode(EmaiContentFieldGetParameterCount(mObject, &count, inOptions));
00740     return count;
00741 }
00742 
00743 inline EmaiConstUniCharPtr
00744 ContentField::GetParameterName(
00745         EmaiUint32 inIndex,
00746         EmaiOptions inOptions /*= EmaiNullOptions*/
00747     )
00748 {
00749     EmaiConstUniCharPtr name = EmaiContentFieldGetParameterName(mObject,
00750                                 inIndex, inOptions);
00751     if (name == NULL)
00752         CheckErrorCode(EmaiErrIncorrectParameter);
00753 
00754     return name;
00755 }
00756 
00757 inline EmaiConstUniCharPtr
00758 ContentField::GetParameterValue(
00759         EmaiUint32 inIndex,
00760         EmaiOptions inOptions /*= EmaiNullOptions*/
00761     )
00762 {
00763     EmaiConstUniCharPtr value = EmaiContentFieldGetParameterValue(mObject,
00764                                 inIndex, inOptions);
00765     if (value == NULL)
00766         CheckErrorCode(EmaiErrIncorrectParameter);
00767 
00768     return value;
00769 }
00770 
00771 inline EmaiConstUniCharPtr
00772 ContentField::FindParameterValue(
00773         EmaiConstUniCharPtr inParamName,
00774         EmaiOptions inOptions /*= EmaiNullOptions*/
00775     )
00776 {
00777     return EmaiContentFieldFindParameterValue(mObject,
00778                                 inParamName, inOptions);
00779 }
00780 
00781 
00782 /*
00783 // MessagePart class implemetation
00784 */
00785 //constructors
00786 inline
00787 MessagePart::MessagePart(
00788         const EmaiPartData& inData,
00789         EmaiOptions inOptions /*= EmaiNullOptions*/
00790     )
00791 {
00792     CheckErrorCode(EmaiMessagePartCreate(&mObject,
00793                         &inData, inOptions));
00794 }
00795 
00796 inline
00797 MessagePart::MessagePart(
00798         EmaiMessagePart inMessagePart,
00799         bool inAddRef
00800     ):
00801     Parent(inMessagePart, inAddRef)
00802 {
00803 }
00804 
00805 inline
00806 MessagePart::MessagePart(
00807         const MessagePart& inCopy
00808     ):
00809     Parent(inCopy)
00810 {
00811 }
00812 
00813 inline
00814 MessagePart::~MessagePart()
00815 {
00816 }
00817 
00818 inline MessagePart&
00819 MessagePart::operator = (
00820         const MessagePart& inCopy
00821     )
00822 {
00823     Parent::operator = (inCopy);
00824     return *this;
00825 }
00826 
00827 inline void
00828 MessagePart::AddSubParts(
00829         const EmaiMessagePart inSubPart[],
00830         EmaiUint32 inSubPartCount,
00831         EmaiOptions inOptions /*= EmaiNullOptions*/)
00832 {
00833     CheckErrorCode(EmaiMessagePartAddSubParts(
00834                 mObject, inSubPart, inSubPartCount, inOptions));
00835 }
00836 
00837 inline void
00838 MessagePart::GetSubParts(
00839         EmaiMessagePart outSubParts[],
00840         EmaiUint32* ioSubPartCount,
00841         EmaiOptions inOptions /*= EmaiNullOptions*/)
00842 {
00843     CheckErrorCode(EmaiMessagePartGetSubParts(
00844                 mObject, outSubParts, ioSubPartCount, inOptions));
00845 }
00846 
00847 inline void
00848 MessagePart::GetData(
00849         EmaiPartData& outData,
00850         EmaiOptions inOptions /*= EmaiNullOptions*/
00851     )
00852 {
00853     CheckErrorCode(EmaiMessagePartGetData(
00854                 mObject, &outData, inOptions));
00855 }
00856 
00857 
00858 /*
00859 // Message class implemetation
00860 */
00861 inline
00862 Message::Message(
00863         MessagePart& inRootPart,
00864         EmaiOptions inOptions /*= EmaiNullOptions*/
00865     )
00866 {
00867     CheckErrorCode(EmaiMessageCreate(&mObject, inRootPart, inOptions));
00868 }
00869 
00870 inline
00871 Message::Message(
00872         const void* inData,
00873         EmaiUint32 inDataSize,
00874         EmaiOptions inOptions /*= EmaiNullOptions*/
00875     )
00876 {
00877     CheckErrorCode(EmaiMessageCreateFromData(
00878                 &mObject, inData, inDataSize, inOptions));
00879 }
00880 
00881 inline
00882 Message::Message(
00883         EmaiMessage inMessage,
00884         bool inAddRef
00885     ):
00886     Parent(inMessage, inAddRef)
00887 {
00888 }
00889 
00890 inline
00891 Message::Message(
00892         const Message& inCopy
00893     ):
00894     Parent(inCopy)
00895 {
00896 }
00897 
00898 inline
00899 Message::~Message()
00900 {
00901 }
00902 
00903 inline Message&
00904 Message::operator = (
00905         const Message& inCopy
00906     )
00907 {
00908     Parent::operator = (inCopy);
00909     return *this;
00910 }
00911 
00912 inline void
00913 Message::SetContactList(
00914         const Emai::ContactList& inContactList,
00915         EmaiOptions inOptions
00916     )
00917 {
00918     CheckErrorCode(EmaiMessageSetContactList(mObject, inContactList, inOptions));
00919 }
00920 
00921 inline void
00922 Message::SetField(
00923         EmaiConstUniCharPtr inFieldName,
00924         EmaiConstUniCharPtr inFieldValue,
00925         EmaiOptions inOptions /*= EmaiNullOptions*/
00926     )
00927 {
00928     CheckErrorCode(EmaiMessageSetField(mObject,
00929                     inFieldName, inFieldValue, inOptions));
00930 }
00931 
00932 inline ContactList
00933 Message::CopyContactList(
00934         EmaiOptions inOptions
00935     )
00936 {
00937     EmaiContactList list = NULL;
00938     EmaiError error = EmaiMessageCopyContactList(mObject, &list, inOptions);
00939     if (error == EmaiErrNoSuchField)
00940         list = NULL;
00941     else
00942         CheckErrorCode(error);
00943 
00944     return ContactList(list, false);
00945 }
00946 
00947 inline EmaiConstUniCharPtr
00948 Message::GetField(
00949         EmaiConstUniCharPtr inFieldName,
00950         EmaiOptions inOptions /*= EmaiNullOptions*/
00951     )
00952 {
00953     EmaiConstUniCharPtr fieldValue = NULL;
00954     EmaiError error = EmaiMessageGetFieldByName(mObject,
00955                     inFieldName, &fieldValue, inOptions);
00956     if (error == EmaiErrNoSuchField)
00957         fieldValue = NULL;
00958     else
00959         CheckErrorCode(error);
00960 
00961     return fieldValue;
00962 }
00963 
00964 inline MessagePart
00965 Message::GetRootPart(
00966         EmaiOptions inOptions /*= EmaiNullOptions*/
00967     )
00968 {
00969     EmaiMessagePart rootPart = NULL;
00970     CheckErrorCode(EmaiMessageGetRootPart(mObject, &rootPart, inOptions));
00971     return MessagePart(rootPart, true);
00972 }
00973 
00974 inline void
00975 Message::GetData(
00976         const void** outData,       
00977         EmaiUint32* outHeaderSize,  
00978         EmaiUint32* outDataSize,    
00979         EmaiOptions inOptions /*= EmaiNullOptions*/
00980     )
00981 {
00982     CheckErrorCode(EmaiMessageGetData(mObject, outData, outHeaderSize,
00983                 outDataSize, inOptions));
00984 }
00985 
00986 inline void
00987 Message::GetReceivedDateTime(
00988         tm* outDateTime,
00989         EmaiOptions inOptions /*= EmaiNullOptions*/
00990     )
00991 {
00992     CheckErrorCode(EmaiMessageGetReceivedDateTime(mObject, outDateTime, inOptions));
00993 }
00994 
00995 }
00996 #endif /*__EMAIMESSAGE_H__*/