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();
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();
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
00450
00451
00452
00453
00454
00455
00456
00457
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
00514
00515
00516 inline
00517 StringList::StringList(
00518 EmaiOptions inOptions
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
00554 )
00555 {
00556 CheckErrorCode(EmaiStringListAddString(mObject, inString, inOptions));
00557 }
00558
00559 inline EmaiUint32
00560 StringList::GetCount(
00561 EmaiOptions inOptions
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
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
00586
00587
00588 inline
00589 ContactList::ContactList(
00590 EmaiOptions inOptions
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
00627 )
00628 {
00629 CheckErrorCode(EmaiContactListAddContact(mObject, inName, inAddress,
00630 NULL, inOptions));
00631 }
00632
00633 inline EmaiUint32
00634 ContactList::GetCount(
00635 EmaiOptions inOptions
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
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
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
00673
00674
00675 inline
00676 ContentField::ContentField(
00677 EmaiConstUniCharPtr inValue,
00678 EmaiOptions inOptions
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
00715 )
00716 {
00717 CheckErrorCode(EmaiContentFieldAddParameter(mObject, inParamName,
00718 inParamValue, inOptions));
00719 }
00720
00721 inline EmaiConstUniCharPtr
00722 ContentField::GetValue(
00723 EmaiOptions inOptions
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
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
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
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
00775 )
00776 {
00777 return EmaiContentFieldFindParameterValue(mObject,
00778 inParamName, inOptions);
00779 }
00780
00781
00782
00783
00784
00785
00786 inline
00787 MessagePart::MessagePart(
00788 const EmaiPartData& inData,
00789 EmaiOptions inOptions
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 )
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 )
00842 {
00843 CheckErrorCode(EmaiMessagePartGetSubParts(
00844 mObject, outSubParts, ioSubPartCount, inOptions));
00845 }
00846
00847 inline void
00848 MessagePart::GetData(
00849 EmaiPartData& outData,
00850 EmaiOptions inOptions
00851 )
00852 {
00853 CheckErrorCode(EmaiMessagePartGetData(
00854 mObject, &outData, inOptions));
00855 }
00856
00857
00858
00859
00860
00861 inline
00862 Message::Message(
00863 MessagePart& inRootPart,
00864 EmaiOptions inOptions
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
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
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
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
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
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
00990 )
00991 {
00992 CheckErrorCode(EmaiMessageGetReceivedDateTime(mObject, outDateTime, inOptions));
00993 }
00994
00995 }
00996 #endif